public OptimizationResult optimizeFile()

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;

    }