This is an automated email from the ASF dual-hosted git repository. kwin pushed a commit to branch feature/support-expanded-name-for-internal-OAK-9584 in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git
commit f09ae687ada7eac0aa2084c12abf2a406fd2779a Author: Konrad Windszus <[email protected]> AuthorDate: Mon Apr 28 15:12:54 2025 +0200 OAK-9584: Support expanded names in JCR method arguments for prefix "rep:" Treat "{internal}" as namespace although it is no proper URI --- .../jackrabbit/oak/namepath/impl/GlobalNameMapper.java | 3 +++ oak-jcr/pom.xml | 1 - .../org/apache/jackrabbit/oak/jcr/JackrabbitNodeTest.java | 15 +++++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/impl/GlobalNameMapper.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/impl/GlobalNameMapper.java index 45ca3ffc52..546d9aab13 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/impl/GlobalNameMapper.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/impl/GlobalNameMapper.java @@ -194,6 +194,9 @@ public class GlobalNameMapper implements NameMapper { String uri = expandedName.substring(1, brace); if (uri.isEmpty()) { return expandedName.substring(2); // special case: {}name + } else if (uri.equals(NamespaceConstants.NAMESPACE_REP)) { + // special case: {internal}name -> no proper URI + return NamespaceConstants.PREFIX_REP + ':' + expandedName.substring(brace + 1); } else if (uri.indexOf(':') != -1) { // It's an expanded name, look up the namespace prefix String oakPrefix = getOakPrefixOrNull(uri); diff --git a/oak-jcr/pom.xml b/oak-jcr/pom.xml index c939c6bce6..d72fd64813 100644 --- a/oak-jcr/pom.xml +++ b/oak-jcr/pom.xml @@ -54,7 +54,6 @@ org.apache.jackrabbit.test.api.WorkspaceMoveSameNameSibsTest#testMoveNodesOrderingSupportedByParent <!-- OAK-118 --> org.apache.jackrabbit.test.api.WorkspaceMoveTest#testMoveNodesLocked <!-- OAK-118 --> org.apache.jackrabbit.test.api.NamespaceRemappingTest#testPrefixRemapping <!-- OAK-10544 --> - org.apache.jackrabbit.oak.jcr.ValidNamesTest#testRepNamespaceUri <!-- OAK-74 --> <!-- Locking : not fully implemented --> org.apache.jackrabbit.test.api.lock.LockTest#testNodeLocked <!-- OAK-3482 --> diff --git a/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/JackrabbitNodeTest.java b/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/JackrabbitNodeTest.java index 223102839a..6510a3daf8 100644 --- a/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/JackrabbitNodeTest.java +++ b/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/JackrabbitNodeTest.java @@ -336,4 +336,19 @@ public class JackrabbitNodeTest extends AbstractJCRTest { assertNotNull(jn.getPropertyOrNull(JcrConstants.JCR_PRIMARYTYPE)); assertNotNull(jn.getPropertyOrNull("a/aa/p")); } + + public void testGetNodeWithExpandedName() throws Exception { + JackrabbitNode jn = (JackrabbitNode) testRootNode; + Node a = jn.addNode(nodeName1, NodeTypeConstants.NT_OAK_UNSTRUCTURED); + // namespace prefix with valid URI + a.addNode("test:aa", NodeTypeConstants.NT_OAK_UNSTRUCTURED); + assertNotNull(a.getNode("test:aa")); + assertNotNull(a.getNode("{http://www.apache.org/jackrabbit/test}aa")); + + // special namespace prefix having an invalid URI + a.addNode("rep:aa", NodeTypeConstants.NT_OAK_UNSTRUCTURED); + assertNotNull(a.getNode("rep:aa")); + assertNotNull(a.getNode("{internal}aa")); + + } }
