protected void doPost()

in src/main/java/org/apache/sling/thumbnails/internal/DynamicTransformServlet.java [72:118]


    protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response)
            throws ServletException, IOException {
        log.trace("doPost");

        try {

            Resource resource = request.getResourceResolver()
                    .getResource(Optional.ofNullable(request.getParameter("resource"))
                            .orElseThrow(() -> new BadRequestException("Parameter resource must be supplied")));

            if (resource == null) {
                response.sendError(404, "No resource found at: " + request.getParameter("resource"));
                return;
            }

            OutputFileFormat format = OutputFileFormat
                    .forValue(Optional.ofNullable(request.getParameter("format")).orElse("jpeg"));
            response.setHeader("Content-Disposition", "filename=" + resource.getName());
            response.setContentType(format.getMimeType());

            Transformation transformation = getTransformation(request);

            log.debug("Transforming resource: {} with transformation: {} to {}", resource, transformation, format);
            ByteArrayOutputStream baos = transform(resource, response, format.toString(), transformation);

            String renditionName = request.getParameter("renditionName");
            if (renditionName != null) {
                if (StringUtils.isBlank(renditionName) && transformation.getName() != null) {
                    renditionName = transformation.getName() + "." + format.toString().toLowerCase();
                }
                log.debug("Setting rendition: {}", renditionName);
                if (renditionSupport.supportsRenditions(resource)) {
                    renditionSupport.setRendition(resource, renditionName,
                            new ByteArrayInputStream(baos.toByteArray()));
                } else {
                    throw new BadRequestException(
                            "Type " + resource.getResourceType() + " does not support persisting renditions");
                }
            }
        } catch (BadRequestException e) {
            log.error("Could not render thumbnail due to bad request", e);
            response.sendError(400, "Could not render thumbnail due to bad request: " + e.getMessage());
        } catch (Exception e) {
            log.error("Failed to render thumbnail", e);
            response.sendError(500, "Failed to render thumbnail");
        }
    }