private void registerNamespaces()

in core/src/main/java/org/apache/sling/testing/mock/sling/NodeTypeDefinitionScanner.java [116:147]


    private void registerNamespaces(Session session, List<String> nodeTypeResources) throws RepositoryException {
        ClassLoader classLoader = getClass().getClassLoader();
        Workspace workspace = session.getWorkspace();
        NamespaceRegistry namespaceRegistry = workspace.getNamespaceRegistry();
        ValueFactory valueFactory = session.getValueFactory();

        DefinitionBuilderFactory<NodeTypeTemplate, NamespaceRegistry> factory =
                new TemplateBuilderFactory(new DummyNodeTypeManager(), valueFactory, namespaceRegistry);

        for (String nodeTypeResource : nodeTypeResources) {
            try (InputStream is = classLoader.getResourceAsStream(nodeTypeResource)) {
                if (is == null) {
                    continue;
                }
                Reader reader = new InputStreamReader(is);
                CompactNodeTypeDefReader<NodeTypeTemplate, NamespaceRegistry> cndReader = new CompactNodeTypeDefReader<
                        NodeTypeTemplate, NamespaceRegistry>(reader, nodeTypeResource, factory);
                NamespaceRegistry mapping = cndReader.getNamespaceMapping();
                for (int i = 0; i < mapping.getURIs().length; i++) {
                    String uri = mapping.getURIs()[i];
                    String prefix = mapping.getPrefix(uri);
                    try {
                        namespaceRegistry.registerNamespace(prefix, uri);
                    } catch (RepositoryException ex) {
                        // ignore
                    }
                }
            } catch (Throwable ex) {
                log.warn("Unable to parse node type definition: " + nodeTypeResource, ex);
            }
        }
    }