private void writeFeature()

in src/main/java/org/apache/sling/feature/io/json/FeatureJSONWriter.java [364:428]


    private void writeFeature(final Writer writer, final Feature feature)
    throws IOException {
        JsonGenerator generator = newGenerator(writer);
        generator.writeStartObject();

        writeFeatureId(generator, feature);

        if (feature.isFinal()) {
            generator.write(JSONConstants.FEATURE_FINAL, true);
        }

        if (feature.isComplete()) {
            generator.write(JSONConstants.FEATURE_COMPLETE, true);
        }

        // title, description, vendor, license, docURL, scmInfo
        writeProperty(generator, JSONConstants.FEATURE_TITLE, feature.getTitle());
        writeProperty(generator, JSONConstants.FEATURE_DESCRIPTION, feature.getDescription());
        writeProperty(generator, JSONConstants.FEATURE_VENDOR, feature.getVendor());
        writeProperty(generator, JSONConstants.FEATURE_LICENSE, feature.getLicense());
        writeProperty(generator, JSONConstants.FEATURE_DOC_URL, feature.getDocURL());
        writeProperty(generator, JSONConstants.FEATURE_SCM_INFO, feature.getSCMInfo());

        // categories
        writeList(generator, JSONConstants.FEATURE_CATEGORIES, feature.getCategories());

        // variables
        writeVariables(generator, feature.getVariables());

        // prototype
        writePrototype(generator, feature.getPrototype());

        // requirements
        writeRequirements(generator, feature.getRequirements());

        // capabilities
        writeCapabilities(generator, feature.getCapabilities());

        // bundles
        writeBundles(generator, feature.getBundles(), feature.getConfigurations());

        // configurations
        final Configurations cfgs = new Configurations();
        for(final Configuration cfg : feature.getConfigurations()) {
            final String artifactProp = (String)cfg.getProperties().get(Configuration.PROP_ARTIFACT_ID);
            if (  artifactProp == null ) {
                cfgs.add(cfg);
            }
        }
        writeConfigurations(generator, cfgs);

        // framework properties
        writeFrameworkProperties(generator, feature.getFrameworkProperties());

        // write metadata for variables and framework properties
        if ( feature.getExtensions().getByName(Extension.EXTENSION_NAME_INTERNAL_DATA) != null ) {
            throw new IOException("Feature must not contain internal data extension");
        }
        writeInternalData(generator, feature);

        // extensions
        writeExtensions(generator, feature.getExtensions(), feature.getConfigurations());

        generator.writeEnd().close();
    }