in src/main/java/org/apache/sling/fileoptim/impl/FileOptimizerServiceImpl.java [218:242]
public OptimizationResult optimizeFile(Resource fileResource, boolean autoCommit) throws IOException {
OptimizationResult result = getOptimizedContents(fileResource);
ModifiableValueMap mvm = fileResource.adaptTo(ModifiableValueMap.class);
Set<String> mixins = new HashSet<>(Arrays.asList(mvm.get(JcrConstants.JCR_MIXINTYPES, new String[0])));
mixins.add(FileOptimizerConstants.MT_OPTIMIZED);
mvm.put(JcrConstants.JCR_MIXINTYPES, mixins.toArray(new String[] {}));
mvm.put(FileOptimizerConstants.PN_ALGORITHM, result.getAlgorithm());
mvm.put(FileOptimizerConstants.PN_HASH, calculateHash(result.getOptimizedContents()));
mvm.put(FileOptimizerConstants.PN_ORIGINAL, mvm.get(JcrConstants.JCR_DATA, InputStream.class));
mvm.put(FileOptimizerConstants.PN_SAVINGS, result.getSavings());
mvm.put(JcrConstants.JCR_DATA, new ByteArrayInputStream(result.getOptimizedContents()));
if (autoCommit) {
log.debug("Persisting changes...");
fileResource.getResourceResolver().commit();
}
return result;
}