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