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