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");
}
}