SLING-8352 sling-mock-oak: Register "sling" namespace before adding oak index definitions
diff --git a/src/main/java/org/apache/sling/testing/mock/sling/oak/ExtraSlingContent.java b/src/main/java/org/apache/sling/testing/mock/sling/oak/ExtraSlingContent.java
index fef8790..3df0254 100644
--- a/src/main/java/org/apache/sling/testing/mock/sling/oak/ExtraSlingContent.java
+++ b/src/main/java/org/apache/sling/testing/mock/sling/oak/ExtraSlingContent.java
@@ -19,9 +19,13 @@
package org.apache.sling.testing.mock.sling.oak;
import static java.util.Collections.singleton;
+import static org.apache.jackrabbit.JcrConstants.JCR_SYSTEM;
import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_DEFINITIONS_NAME;
import static org.apache.jackrabbit.oak.plugins.index.IndexUtils.createIndexDefinition;
+import static org.apache.jackrabbit.oak.spi.namespace.NamespaceConstants.REP_NAMESPACES;
+import static org.apache.sling.jcr.resource.JcrResourceConstants.SLING_NAMESPACE_URI;
+import org.apache.jackrabbit.oak.plugins.name.Namespaces;
import org.apache.jackrabbit.oak.spi.lifecycle.RepositoryInitializer;
import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
import org.jetbrains.annotations.NotNull;
@@ -34,6 +38,19 @@
@Override
public void initialize(@NotNull NodeBuilder root) {
+
+ // register sling namespace
+ String slingNs = "sling";
+ if (root.hasChildNode(JCR_SYSTEM)) {
+ NodeBuilder jcrSystem = root.getChildNode(JCR_SYSTEM);
+ if (jcrSystem.hasChildNode(REP_NAMESPACES)) {
+ NodeBuilder namespaces = jcrSystem.getChildNode(REP_NAMESPACES);
+ slingNs = Namespaces.addCustomMapping(namespaces, SLING_NAMESPACE_URI, slingNs);
+ Namespaces.buildIndexNode(namespaces);
+ }
+ }
+
+ // add useful index definitions
if (root.hasChildNode(INDEX_DEFINITIONS_NAME)) {
NodeBuilder index = root.child(INDEX_DEFINITIONS_NAME);
@@ -42,10 +59,10 @@
property(index, "jcrLockOwner", "jcr:lockOwner");
// sling:
- property(index, "slingAlias", "sling:alias");
- property(index, "slingResource", "sling:resource");
- property(index, "slingResourceType", "sling:resourceType");
- property(index, "slingVanityPath", "sling:vanityPath");
+ property(index, "slingAlias", slingNs + ":alias");
+ property(index, "slingResource", slingNs + ":resource");
+ property(index, "slingResourceType", slingNs + ":resourceType");
+ property(index, "slingVanityPath", slingNs + ":vanityPath");
}
}