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 2021/11/06 15:01:09 UTC

[jackrabbit-oak] branch OAK-9616 created (now 69d9dce)

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

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


      at 69d9dce  OAK-9616: support expanded names in setPrimaryType

This branch includes the following new commits:

     new 69d9dce  OAK-9616: support expanded names in setPrimaryType

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


[jackrabbit-oak] 01/01: OAK-9616: support expanded names in setPrimaryType

Posted by re...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 69d9dceee133228b368fb60cf94ea3af787b6e21
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 11cb0b0..934bf54 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
@@ -951,6 +951,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 {
@@ -962,7 +963,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 49acca3..cc953fd 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
@@ -1919,6 +1919,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());