public JobExecutionResult doProcess()

in core/src/main/java/org/apache/sling/cms/core/internal/jobs/OptimizeFilesJob.java [69:105]


    public JobExecutionResult doProcess(Job job, JobExecutionContext context, ResourceResolver resolver) {
        String path = job.getProperty(SlingConstants.PROPERTY_PATH, "");

        Resource root = resolver.getResource(path);
        if (root != null) {
            List<File> files = new ArrayList<>();
            if (CMSConstants.NT_FILE.equals(root.getResourceType())) {
                files.add(root.adaptTo(File.class));
            } else {
                collectFiles(root, files);
            }
            context.log("Found {0} files to optimize", files.size());

            context.initProgress(files.size(), -1);

            int processed = 1;
            for (File file : files) {
                try {
                    
                    if(optimizer.canOptimize(file.getResource())) {
                        optimizer.optimizeFile(file.getContentResource(), true);
                    }
                    context.incrementProgressCount(processed++);
                    context.log("Optimized file {0}", file.getPath());
                } catch (Throwable t) {
                    context.log("Failed to optimize file {0}", file.getPath());
                    context.incrementProgressCount(processed++);
                    context.log("Exception {0}", t.getMessage());
                    log.warn("Failed to extract metadata for " + file.getPath(), t);
                }
            }

            return context.result().message("File(s) optimized").succeeded();
        } else {
            return context.result().message("No file found at " + path).failed();
        }
    }