private void registerNamespaces()

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


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

    }