This is an automated email from the ASF dual-hosted git repository.

reschke pushed a commit to branch OAK-10544b
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git

commit f9226844905a381505fddd6edd9c7684db2f12a7
Author: Julian Reschke <[email protected]>
AuthorDate: Tue Jan 23 16:51:57 2024 +0100

    OAK-10544: oak-jcr: remapping a namespace prefix leaves namespace resolver 
in broken state
---
 .../org/apache/jackrabbit/oak/jcr/session/SessionNamespaces.java   | 7 +++++++
 .../src/test/java/org/apache/jackrabbit/oak/jcr/NamePathTest.java  | 1 -
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git 
a/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/SessionNamespaces.java
 
b/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/SessionNamespaces.java
index 8a217e2cc8..d64d600cbf 100644
--- 
a/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/SessionNamespaces.java
+++ 
b/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/SessionNamespaces.java
@@ -72,6 +72,8 @@ public class SessionNamespaces extends LocalNameMapper {
                     "Prefix is not a valid XML NCName: " + prefix);
         }
 
+        String previouslyMappedUri = getOakURIOrNull(prefix);
+
         // remove the possible existing mapping for the given prefix
         local.remove(prefix);
 
@@ -86,6 +88,11 @@ public class SessionNamespaces extends LocalNameMapper {
 
         // add the new mapping
         local.put(prefix, uri);
+
+        // make sure the previously mapped URI has a prefix
+        if (previouslyMappedUri != null) {
+            getNamespacePrefix(previouslyMappedUri);
+        }
     }
 
     /**
diff --git 
a/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/NamePathTest.java 
b/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/NamePathTest.java
index 556a41f7ad..6224f87d43 100644
--- a/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/NamePathTest.java
+++ b/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/NamePathTest.java
@@ -220,7 +220,6 @@ public class NamePathTest {
     }
 
     @Test
-    @Ignore("OAK-10544")
     public void testPrefixRemapping() throws NamespaceException, 
RepositoryException {
         Random r = new Random();
         int i1 = r.nextInt();

Reply via email to