public void doFilter()

in src/main/java/org/apache/sling/fileoptim/impl/filters/FileOptimizerFilter.java [77:104]


    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        if (request instanceof SlingHttpServletRequest) {
            Resource resource = ((SlingHttpServletRequest) request).getResource();
            try {
                if (fileOptimizer.canOptimize(resource)) {
                    log.debug("Returning optimized file");
                    OptimizationResult res = fileOptimizer.getOptimizedContents(resource);
                    if (res.isOptimized()) {
                        OptimizedFile of = null;
                        if (!resource.getName().equals(JcrConstants.JCR_CONTENT)) {
                            of = resource.getChild(JcrConstants.JCR_CONTENT).adaptTo(OptimizedFile.class);
                        } else {
                            of = resource.adaptTo(OptimizedFile.class);
                        }
                        response.setContentType(of.getMimeType());
                        response.setContentLengthLong(res.getOptimizedSize());
                        ((HttpServletResponse) response).setHeader("Optimized-With", res.getAlgorithm());
                        IOUtils.copy(res.getOptimizedContentStream(), response.getOutputStream());
                        return;
                    }
                }
            } catch (Exception e) {
                log.warn("Unexpected exception attempting to optimize file response", e);
            }
        }
        chain.doFilter(request, response);
    }