This is an automated email from the ASF dual-hosted git repository. reschke pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git
The following commit(s) were added to refs/heads/trunk by this push: new e2a3d46934 OAK-10545: oak-jcr: add test for observing effect of remapping a namespace prefix to a different namespace name (#1196) e2a3d46934 is described below commit e2a3d46934dfc52c6cf35244998ce36345abd388 Author: Julian Reschke <resc...@apache.org> AuthorDate: Fri Nov 10 08:53:00 2023 +0100 OAK-10545: oak-jcr: add test for observing effect of remapping a namespace prefix to a different namespace name (#1196) --- .../apache/jackrabbit/oak/jcr/NamePathTest.java | 47 ++++++++++++++++++++++ 1 file changed, 47 insertions(+) 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 b70f1693b3..88262e392d 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 @@ -17,11 +17,15 @@ package org.apache.jackrabbit.oak.jcr; import static org.apache.jackrabbit.oak.jcr.AbstractRepositoryTest.dispose; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; import java.util.List; +import java.util.Random; +import javax.jcr.NamespaceException; import javax.jcr.Node; import javax.jcr.Repository; import javax.jcr.RepositoryException; @@ -30,8 +34,10 @@ import javax.jcr.Session; import org.apache.jackrabbit.guava.common.collect.ImmutableList; import org.apache.jackrabbit.oak.spi.security.OpenSecurityProvider; +import org.apache.jackrabbit.spi.commons.conversion.DefaultNamePathResolver; import org.junit.After; import org.junit.Before; +import org.junit.Ignore; import org.junit.Test; public class NamePathTest { @@ -212,6 +218,47 @@ public class NamePathTest { session.getNode(n.getPath()); } + @Test + @Ignore("OAK-10544") + public void testPrefixRemapping() throws NamespaceException, RepositoryException { + Random r = new Random(); + int i1 = r.nextInt(); + int i2 = r.nextInt(); + String prefix = "nstest" + i1; + String uri1 = "foobar:1-" + i1; + String uri2 = "foobar:2-" + i2; + String testLocalName = "test"; + String expandedTestName ="{" + uri1 + "}" + testLocalName; + + DefaultNamePathResolver resolver = new DefaultNamePathResolver(session); + + try { + session.getWorkspace().getNamespaceRegistry().registerNamespace(prefix, uri1); + + Node testNode = session.getRootNode().addNode(prefix + ":" + testLocalName); + session.save(); + + // verify that name resolver finds correct namespaceURI + assertEquals(uri1, resolver.getQName(testNode.getName()).getNamespaceURI()); + + // check that expanded name works + Node n2 = session.getRootNode().getNode(expandedTestName); + assertTrue(testNode.isSame(n2)); + + // remap prefix1 to uri2 + session.setNamespacePrefix(prefix, uri2); + + // check that expanded name still works + Node n3 = session.getRootNode().getNode(expandedTestName); + assertTrue(testNode.isSame(n3)); + + // verify that name resolver still finds correct namespaceURI + assertEquals(uri1, resolver.getQName(testNode.getName()).getNamespaceURI()); + } finally { + session.getWorkspace().getNamespaceRegistry().unregisterNamespace(prefix); + } + } + private void testPaths(List<String> paths) throws RepositoryException { for (String path : paths) {