You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by re...@apache.org on 2022/01/24 15:44:00 UTC

[jackrabbit-oak] branch 1.8 updated: OAK-9616: support expanded names in setPrimaryType

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

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


The following commit(s) were added to refs/heads/1.8 by this push:
     new c524621  OAK-9616: support expanded names in setPrimaryType
c524621 is described below

commit c5246211adfe45566ae05f3f39fd1a1c0ec93342
Author: Julian Reschke <ju...@gmx.de>
AuthorDate: Sat Nov 6 16:00:16 2021 +0100

    OAK-9616: support expanded names in setPrimaryType
---
 .../apache/jackrabbit/oak/jcr/session/NodeImpl.java   |  3 ++-
 .../org/apache/jackrabbit/oak/jcr/RepositoryTest.java | 19 +++++++++++++++++++
 2 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/NodeImpl.java b/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/NodeImpl.java
index 5ebd576..5876ed1 100644
--- a/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/NodeImpl.java
+++ b/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/NodeImpl.java
@@ -936,6 +936,7 @@ public class NodeImpl<T extends NodeDelegate> extends ItemImpl<T> implements Nod
 
     @Override
     public void setPrimaryType(final String nodeTypeName) throws RepositoryException {
+        final String oakTypeName = getOakName(checkNotNull(nodeTypeName));
         sessionDelegate.performVoid(new ItemWriteOperation<Void>("setPrimaryType") {
             @Override
             public void checkPreconditions() throws RepositoryException {
@@ -947,7 +948,7 @@ public class NodeImpl<T extends NodeDelegate> extends ItemImpl<T> implements Nod
 
             @Override
             public void performVoid() throws RepositoryException {
-                internalSetPrimaryType(nodeTypeName);
+                internalSetPrimaryType(oakTypeName);
             }
         });
     }
diff --git a/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java b/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java
index 8bc1fac..9ec7275 100644
--- a/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java
+++ b/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java
@@ -1903,6 +1903,25 @@ public class RepositoryTest extends AbstractRepositoryTest {
     }
 
     @Test
+    public void setPrimaryTypeExpandedName() throws RepositoryException {
+        Node testNode = getNode(TEST_PATH);
+        assertEquals("nt:unstructured", testNode.getPrimaryNodeType().getName());
+        assertEquals("nt:unstructured", testNode.getProperty("jcr:primaryType").getString());
+
+        testNode.setPrimaryType("{http://www.jcp.org/jcr/nt/1.0}folder");
+        getAdminSession().save();
+
+        Session session2 = createAnonymousSession();
+        try {
+            testNode = session2.getNode(TEST_PATH);
+            assertEquals("nt:folder", testNode.getPrimaryNodeType().getName());
+            assertEquals("nt:folder", testNode.getProperty("jcr:primaryType").getString());
+        } finally {
+            session2.logout();
+        }
+    }
+
+    @Test
     public void setPrimaryTypeShouldFail() throws RepositoryException {
         Node testNode = getNode(TEST_PATH);
         assertEquals("nt:unstructured", testNode.getPrimaryNodeType().getName());