You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by re...@apache.org on 2021/12/15 10:59:05 UTC

svn commit: r1895979 - in /jackrabbit/branches/2.20: ./ jackrabbit-core/src/test/java/org/apache/jackrabbit/core/data/NodeTypeTest.java

Author: reschke
Date: Wed Dec 15 10:59:05 2021
New Revision: 1895979

URL: http://svn.apache.org/viewvc?rev=1895979&view=rev
Log:
JCR-4740: add test coverage for mandatory residual child nodes (merged r1894976 into 2.20)

Modified:
    jackrabbit/branches/2.20/   (props changed)
    jackrabbit/branches/2.20/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/data/NodeTypeTest.java

Propchange: jackrabbit/branches/2.20/
------------------------------------------------------------------------------
  Merged /jackrabbit/trunk:r1894976

Modified: jackrabbit/branches/2.20/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/data/NodeTypeTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.20/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/data/NodeTypeTest.java?rev=1895979&r1=1895978&r2=1895979&view=diff
==============================================================================
--- jackrabbit/branches/2.20/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/data/NodeTypeTest.java (original)
+++ jackrabbit/branches/2.20/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/data/NodeTypeTest.java Wed Dec 15 10:59:05 2021
@@ -20,6 +20,7 @@ import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.io.Reader;
+import java.io.StringReader;
 
 import javax.jcr.Node;
 import javax.jcr.PropertyType;
@@ -74,4 +75,27 @@ public class NodeTypeTest extends Abstra
         assertEquals(def, value.getString());
     }
 
+    public void testMandatoryResidualChildNode() throws RepositoryException, ParseException, IOException {
+        Node root = superuser.getRootNode();
+
+        String cnd = "<'test'='http://www.apache.org/jackrabbit/test'>\n" +
+                "[test:MyType] > nt:unstructured\n" +
+                " + * (nt:folder) mandatory";
+
+        CndImporter.registerNodeTypes(new StringReader(cnd), superuser);
+
+        // add with missing mandatory residual child node
+        Node n = root.addNode("test", "test:MyType");
+        superuser.save();
+        // must not fail as residual mandatory child names are not enforced according to https://s.apache.org/jcr-2.0-spec/3_Repository_Model.html#3.7.2.4%20Mandatory
+
+        // add mandatory residual child node
+        Node mandatoryChildNode = n.addNode("child", "nt:folder");
+        superuser.save();
+        assertTrue("Mandatory child node not detected as such", mandatoryChildNode.getDefinition().isMandatory());
+
+        // remove mandatory residual child node
+        mandatoryChildNode.remove();
+        superuser.save();
+    }
 }