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

Reply via email to