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();
}
}