JsonCnd { public static JsonObject toJson(final @NotNull List<QNodeTypeDefinition> ntDefs, final @NotNull NamespaceMapping mapping) { final NamePathResolver resolver = new DefaultNamePathResolver(mapping); return ntDefs.stream() .map(def -> toEntry(def, NodeTypeDefinitionKey.writeAllJson(def, resolver))) .filter(testValue(JavaxJson::nonEmptyValue)) .map(mapKey(compose1(QNodeTypeDefinition::getName, uncheck1(jcrNameOrResidual(resolver))))) .sorted(Map.Entry.comparingByKey()) .collect(JsonCollectors.toJsonObject()); } private  JsonCnd(); @SuppressWarnings("WeakerAccess") static List<QNodeTypeDefinition> getQTypesFromJson(final @NotNull JsonObject json,
                      final @NotNull NamespaceMapping mapping); @SuppressWarnings("WeakerAccess") static List<PrivilegeDefinition> getPrivilegesFromJson(final @NotNull JsonValue json,
                          final @NotNull NamespaceMapping mapping); static JsonObject toJson(final @NotNull List<QNodeTypeDefinition> ntDefs,
                                    final @NotNull NamespaceMapping mapping); static JsonValue privilegesToJson(final @NotNull List<PrivilegeDefinition> privDefs,
                                             final @NotNull NamespaceMapping mapping); static List<JcrNs> toJcrNsList(final @NotNull NamespaceMapping mapping,
                                          final @NotNull NamespaceMappingRequest request); static Function<NodeTypeDefinition, QNodeTypeDefinition> adaptToQ(final @NotNull Session session); static Stream<Name> namedBy(final @NotNull QNodeTypeDefinition def); static Stream<Name> namedBy(final @NotNull PrivilegeDefinition def); static NamespaceMapping toNamespaceMapping(final List<JcrNs> jcrNsList); static @NotNull Stream<String> streamNsPrefix(final @NotNull String name); static List<Result<NodeTypeSet>> readNodeTypes(final @NotNull NamespaceMapping mapping,
                                                          final @NotNull List<URL> cndUrls); static NodeTypeSet aggregateNodeTypes(final @NotNull NamespaceMapping mapping,
                                                 final @NotNull List<NodeTypeSet> nodeTypeSets); static final NamespaceMapping BUILTIN_MAPPINGS; static final List<String> BUILTIN_NODETYPES; static final List<String> BUILTIN_PRIVILEGES; }
@Test public void testToJson() { assertEquals("empty list to empty object", 0, JsonCnd.toJson(Collections.emptyList(), getMapping()).size()); JsonObject qJson = key("nt:foo", key("@", arr("mixin"))).get(); List<QNodeTypeDefinition> nts = JsonCnd.getQTypesFromJson(qJson, JsonCnd.BUILTIN_MAPPINGS); JsonObject toJson = JsonCnd.toJson(nts, getMapping()); assertEquals("json meets json", qJson, toJson); }