public static List convert()

in src/main/java/org/apache/sling/feature/modelconverter/ProvisioningToFeature.java [70:108]


    public static List<File> convert(File file, File outDir, Map<String, Object> options) {
        Model model = createModel(Collections.singletonList(file), null, true, false);

        String bareFileName = getBareFileName(file);
        final List<org.apache.sling.feature.Feature> features = buildFeatures(model, bareFileName, options);

        List<File> files = new ArrayList<>();
        for (org.apache.sling.feature.Feature f : features) {
            String id = f.getVariables().get(FeatureToProvisioning.PROVISIONING_MODEL_NAME_VARIABLE);
            if (id == null) {
                id = f.getId().getArtifactId();
            }
            id = id.replaceAll("[:]","");
            id = bareFileName + "_" + id;

            boolean noProvisioningModelName = getOption(options, "noProvisioningModelName", false);
            if(noProvisioningModelName) {
                // Provisioning Model Names create a conflict is provided in multiple PM files so it is dropped by request
                f.getVariables().remove(FeatureToProvisioning.PROVISIONING_MODEL_NAME_VARIABLE);
            }

            File outFile = new File(outDir, id + ".json");
            files.add(outFile);

            if (outFile.exists()) {
                // On a very fast computer the generated file might have the same timestamp if the file was previously copied
                if (outFile.lastModified() >= file.lastModified()) {
                    LOGGER.debug("Skipping the generation of {} as this file already exists and is not older.", outFile);
                    continue;
                } else {
                    LOGGER.debug("Deleting existing file {} as source is newer, modified: out: '{}', source: '{}'", outFile, outFile.lastModified(), file.lastModified());
                    outFile.delete();
                }
            }

            writeFeature(f, outFile.getAbsolutePath(), 0);
        }
        return files;
    }