You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by an...@apache.org on 2011/06/15 10:09:50 UTC

svn commit: r1135950 - /jackrabbit/trunk/jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/nodetype/AddMixinTest.java

Author: angela
Date: Wed Jun 15 08:09:50 2011
New Revision: 1135950

URL: http://svn.apache.org/viewvc?rev=1135950&view=rev
Log:
tests

Modified:
    jackrabbit/trunk/jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/nodetype/AddMixinTest.java

Modified: jackrabbit/trunk/jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/nodetype/AddMixinTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/nodetype/AddMixinTest.java?rev=1135950&r1=1135949&r2=1135950&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/nodetype/AddMixinTest.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/nodetype/AddMixinTest.java Wed Jun 15 08:09:50 2011
@@ -21,8 +21,11 @@ import java.util.List;
 
 import javax.jcr.Node;
 import javax.jcr.RepositoryException;
+import javax.jcr.nodetype.ConstraintViolationException;
+import javax.jcr.nodetype.NodeDefinitionTemplate;
 import javax.jcr.nodetype.NodeType;
 import javax.jcr.nodetype.NodeTypeManager;
+import javax.jcr.nodetype.NodeTypeTemplate;
 
 import org.apache.jackrabbit.test.AbstractJCRTest;
 import org.apache.jackrabbit.test.NotExecutableException;
@@ -168,4 +171,84 @@ public class AddMixinTest extends Abstra
         List<NodeType> mixins = Arrays.asList(node.getMixinNodeTypes());
         assertTrue("Adding 2 mixins at once -> both must be present.", mixins.contains(ntMgr.getNodeType(mixReferenceable)) && mixins.contains(ntMgr.getNodeType(mixLockable)));
     }
+
+    public void testAddItemsDefinedByMixin() throws NotExecutableException, RepositoryException {
+        // register mixin
+        NodeTypeManager ntm = superuser.getWorkspace().getNodeTypeManager();
+        NodeTypeTemplate ntd = ntm.createNodeTypeTemplate();
+        ntd.setName("testMixin");
+        ntd.setMixin(true);
+        NodeDefinitionTemplate nodeDef = ntm.createNodeDefinitionTemplate();
+        nodeDef.setName("child");
+        nodeDef.setRequiredPrimaryTypeNames(new String[] {"nt:folder"});
+        ntd.getNodeDefinitionTemplates().add(nodeDef);
+        ntm.registerNodeType(ntd, true);
+
+        // create node and add mixin
+        Node node = testRootNode.addNode(nodeName1, "nt:resource");
+        node.setProperty("jcr:data", "abc");
+        node.addMixin("testMixin");
+        superuser.save();
+
+        // create a child node defined by the mixin
+        node.addNode("child", "nt:folder");
+        node.save();
+    }
+
+
+    public void testAddItemsDefinedByMixin2() throws NotExecutableException, RepositoryException {
+        // register mixin
+        NodeTypeManager ntm = superuser.getWorkspace().getNodeTypeManager();
+        NodeTypeTemplate ntd = ntm.createNodeTypeTemplate();
+        ntd.setName("testMixin");
+        ntd.setMixin(true);
+        NodeDefinitionTemplate nodeDef = ntm.createNodeDefinitionTemplate();
+        nodeDef.setName("child");
+        nodeDef.setRequiredPrimaryTypeNames(new String[] {"nt:folder"});
+        ntd.getNodeDefinitionTemplates().add(nodeDef);
+        ntm.registerNodeType(ntd, true);
+
+        // create node and add mixin
+        Node node = testRootNode.addNode(nodeName1, "nt:resource");
+        node.setProperty("jcr:data", "abc");
+        node.addMixin("testMixin");
+        superuser.save();
+
+        // create a child node defined by the mixin without specifying the
+        // node type
+        try {
+            node.addNode("child");
+            fail();
+        } catch (ConstraintViolationException e) {
+            // success as ChildNode Definition doesn't specify a default primary
+            // type -> see comment in ItemDefinitionProvider#getQNodeDefinition
+        }
+    }
+
+    public void testAddItemsDefinedByMixin3() throws NotExecutableException, RepositoryException {
+        // register mixin
+        NodeTypeManager ntm = superuser.getWorkspace().getNodeTypeManager();
+        NodeTypeTemplate ntd = ntm.createNodeTypeTemplate();
+        ntd.setName("testMixin");
+        ntd.setMixin(true);
+        NodeDefinitionTemplate nodeDef = ntm.createNodeDefinitionTemplate();
+        nodeDef.setName("child");
+        nodeDef.setRequiredPrimaryTypeNames(new String[] {"nt:folder"});
+        nodeDef.setDefaultPrimaryTypeName("nt:folder");
+        ntd.getNodeDefinitionTemplates().add(nodeDef);
+        ntm.registerNodeType(ntd, true);
+
+        // create node and add mixin
+        Node node = testRootNode.addNode(nodeName1, "nt:resource");
+        node.setProperty("jcr:data", "abc");
+        node.addMixin("testMixin");
+        superuser.save();
+
+        // create a child node defined by the mixin without specifying the
+        // node type -> must succeed since default primary type is specified
+        // in the child node def
+        Node c = node.addNode("child");
+        assertEquals("nt:folder", c.getPrimaryNodeType().getName());
+        superuser.save();
+    }
 }
\ No newline at end of file