in src/main/java/org/apache/sling/capabilities/internal/JSONCapabilitiesWriter.java [39:80]
void writeJson(ResourceResolver resolver, Writer w, Collection<CapabilitiesSource> sources, RegexFilter namespacePatterns) throws IOException {
final Set<String> namespaces = new HashSet<>();
final JSONWriter jw = new JSONWriter(w);
jw.object();
jw.key(CAPS_KEY);
jw.object();
jw.key(DATA_KEY);
jw.object();
Map<String, Object> values = null;
for(CapabilitiesSource s : sources) {
final String namespace = s.getNamespace();
if(!namespacePatterns.accept(namespace)) {
continue;
}
if(namespaces.contains(namespace)) {
throw new DuplicateNamespaceException(namespace);
}
namespaces.add(namespace);
try {
values = s.getCapabilities(resolver);
} catch(Exception e) {
values = new HashMap<>();
values.put("_EXCEPTION_", e.getClass().getName() + ":" + e.getMessage());
}
jw.key(namespace);
jw.object();
for(Map.Entry<String, Object> e : values.entrySet()) {
jw.key(e.getKey());
jw.value(e.getValue());
}
jw.endObject();
}
jw.endObject();
jw.endObject();
jw.endObject();
}