private void writeExtension()

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


    private void writeExtension(final JsonGenerator generator,
        final Extension ext,
        final Configurations allConfigs) throws IOException {
            
        final String state;
        switch (ext.getState()) {
            case OPTIONAL:
                state = "false";
                break;
            case REQUIRED:
                state = "true";
                break;
            default:
                state = ext.getState().name();
        }
        final String key = ext.getName().concat(":").concat(ext.getType().name()).concat("|").concat(state);
        if ( ext.getType() == ExtensionType.JSON ) {
            generator.write(key, ext.getJSONStructure());
        } else if ( ext.getType() == ExtensionType.TEXT ) {
            generator.writeStartArray(key);
            for(String line : ext.getText().split("\n")) {
                generator.write(line);
            }
            generator.writeEnd();
        } else {
            generator.writeStartArray(key);
            for(final Artifact artifact : ext.getArtifacts()) {
                final Configurations artifactCfgs = new Configurations();
                for(final Configuration cfg : allConfigs) {
                    final String artifactProp = (String)cfg.getProperties().get(Configuration.PROP_ARTIFACT_ID);
                    if (  artifact.getId().toMvnId().equals(artifactProp) ) {
                        artifactCfgs.add(cfg);
                    }
                }
                if ( artifact.getMetadata().isEmpty() && artifactCfgs.isEmpty() ) {
                    generator.write(artifact.getId().toMvnId());
                } else {
                    generator.writeStartObject();
                    generator.write(JSONConstants.ARTIFACT_ID, artifact.getId().toMvnId());

                    for(final Map.Entry<String, String> me : artifact.getMetadata().entrySet()) {
                        generator.write(me.getKey(), me.getValue());
                    }

                    writeConfigurations(generator, artifactCfgs);

                    generator.writeEnd();
                }
            }
            generator.writeEnd();
        }
    }