@Override protected void writeLayer( SlingHttpServletRequest req, SlingHttpServletResponse resp, ImageContext c, Layer layer) throws IOException, RepositoryException { Image image = new Image(c.resource); if (!image.hasContent()) { resp.sendError(HttpServletResponse.SC_NOT_FOUND); return; } // get style and set constraints image.loadStyleData(c.style); // get pure layer layer = image.getLayer(false, false, false); boolean modified = false; if (layer != null) { // crop modified = image.crop(layer) != null; // rotate modified |= image.rotate(layer) != null; // resize modified |= image.resize(layer) != null; // apply diff if needed (because we create the layer inline) modified |= applyDiff(layer, c); } // don't cache images on authoring instances // Cache-Control: no-cache allows caching (e.g. in the browser cache) but // will force revalidation using If-Modified-Since or If-None-Match every time, // avoiding aggressive browser caching if (!WCMMode.DISABLED.equals(WCMMode.fromRequest(req))) { resp.setHeader("Cache-Control", "no-cache"); } if (modified) { String mimeType = image.getMimeType(); if (ImageHelper.getExtensionFromType(mimeType) == null) { // get default mime type mimeType = "image/png"; } resp.setContentType(mimeType); layer.write(mimeType, mimeType.equals("image/gif") ? 255 : 1.0, resp.getOutputStream()); } else { // do not re-encode layer, just spool Property data = image.getData(); InputStream in = data.getStream(); resp.setContentLength((int) data.getLength()); resp.setContentType(image.getMimeType()); IOUtils.copy(in, resp.getOutputStream()); in.close(); } resp.flushBuffer(); }
@Override protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException { RequestParameter p = request.getRequestParameter("p"); if (p == null) { // Send out the categories. sendIndex(response); } else if ("style".equals(p.getString())) { // Send out the CSS file if (style == null) { InputStream in = this.getClass().getResourceAsStream("style.css"); style = IOUtils.toByteArray(in); in.close(); } response.setContentType("text/css; charset=UTF-8"); response.setContentLength(style.length); response.getOutputStream().write(style); } }