JsonCnd { public static @NotNull Stream<String> streamNsPrefix(final @NotNull String name) { final String[] parts = name.split(":"); return parts.length > 1 ? Stream.of(parts[0]) : Stream.empty(); } 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 testStreamNsPrefix() { assertEquals("empty string means empty stream", 0, JsonCnd.streamNsPrefix("").count()); assertEquals("colonless string means empty stream", 0, JsonCnd.streamNsPrefix("foo").count()); assertEquals("colon string means single prefix", 1, JsonCnd.streamNsPrefix("nt:foo").count()); assertEquals("colon string means captured prefix", "nt", JsonCnd.streamNsPrefix("nt:foo").findFirst().orElse("")); assertEquals("double-colon string still means single prefix", 1, JsonCnd.streamNsPrefix("nt:foo:bar").count()); assertEquals("double-colon string still means captured prefix", "nt", JsonCnd.streamNsPrefix("nt:foo:bar").findFirst().orElse("")); }