This is an automated email from the ASF dual-hosted git repository. reschke pushed a commit to branch OAK-11657 in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git
commit c8e988ce5c45bd479e4d7a815b3a84cf08c7910c Author: Julian Reschke <[email protected]> AuthorDate: Mon Apr 14 14:26:00 2025 +0100 OAK-11657: JackrabbitSession.getExpandedName/Path need to return stable expanded names --- .../apache/jackrabbit/oak/namepath/impl/GlobalNameMapper.java | 6 +++--- .../jackrabbit/oak/jcr/session/JackrabbitSessionTest.java | 10 ++++++---- 2 files changed, 9 insertions(+), 7 deletions(-) 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..0baa70bbf7 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 @@ -143,11 +143,11 @@ public class GlobalNameMapper implements NameMapper { int colon = oakName.indexOf(':'); if (colon > 0) { String oakPrefix = oakName.substring(0, colon); + uri = getNamespacesProperty(oakPrefix); // local mapping must take precedence... - uri = getSessionLocalMappings().get(oakPrefix); if (uri == null) { - // ...over global mappings - uri = getNamespacesProperty(oakPrefix); + // ...over local mappings + uri = getSessionLocalMappings().get(oakPrefix); } if (uri == null) { throw new IllegalStateException( diff --git a/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/session/JackrabbitSessionTest.java b/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/session/JackrabbitSessionTest.java index f7c86562ad..3c0b1808a4 100644 --- a/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/session/JackrabbitSessionTest.java +++ b/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/session/JackrabbitSessionTest.java @@ -86,9 +86,11 @@ public class JackrabbitSessionTest extends AbstractJCRTest { assertEquals("{}testroot", s.getExpandedName(testRootNode)); Node n = testRootNode.addNode("test:bar"); assertEquals("{http://www.apache.org/jackrabbit/test}bar", s.getExpandedName(n)); - // now remap namespace uri + // now remap namespace uri - should not affect expanded name + assertEquals("prefix 'test' has unexpected mapping", + "http://www.apache.org/jackrabbit/test", s.getNamespaceURI("test")); s.setNamespacePrefix("test", "urn:foo"); - assertEquals("{urn:foo}bar", s.getExpandedName(n)); + assertEquals("{http://www.apache.org/jackrabbit/test}bar", s.getExpandedName(n)); // use special namespace uri n = testRootNode.addNode("rep:bar"); assertEquals("{internal}bar", s.getExpandedName(n)); @@ -98,8 +100,8 @@ public class JackrabbitSessionTest extends AbstractJCRTest { assertEquals("/{}testroot", s.getExpandedPath(testRootNode)); Node n = testRootNode.addNode("test:bar").addNode("rep:bar"); assertEquals("/{}testroot/{http://www.apache.org/jackrabbit/test}bar/{internal}bar", s.getExpandedPath(n)); - // now remap namespace uri + // now remap namespace uri - should not affect expanded name s.setNamespacePrefix("test", "urn:foo"); - assertEquals("/{}testroot/{urn:foo}bar/{internal}bar", s.getExpandedPath(n)); + assertEquals("/{}testroot/{http://www.apache.org/jackrabbit/test}bar/{internal}bar", s.getExpandedPath(n)); } } \ No newline at end of file
