Author: stefanegli
Date: Mon Nov 28 18:04:09 2016
New Revision: 1771781

URL: http://svn.apache.org/viewvc?rev=1771781&view=rev
Log:
OAK-5153 : test cases added for mixin-hierarchy and filter-on-parent-mixin: 
deepNodeTypeMixinHierarchy

Modified:
    
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/observation/ObservationTest.java

Modified: 
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/observation/ObservationTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/observation/ObservationTest.java?rev=1771781&r1=1771780&r2=1771781&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/observation/ObservationTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/observation/ObservationTest.java
 Mon Nov 28 18:04:09 2016
@@ -69,6 +69,9 @@ import javax.jcr.ValueFormatException;
 import javax.jcr.lock.LockException;
 import javax.jcr.nodetype.ConstraintViolationException;
 import javax.jcr.nodetype.NoSuchNodeTypeException;
+import javax.jcr.nodetype.NodeDefinition;
+import javax.jcr.nodetype.NodeDefinitionTemplate;
+import javax.jcr.nodetype.NodeTypeDefinition;
 import javax.jcr.nodetype.NodeTypeManager;
 import javax.jcr.nodetype.NodeTypeTemplate;
 import javax.jcr.observation.Event;
@@ -889,6 +892,56 @@ public class ObservationTest extends Abs
         List<Expectation> missing = listener.getMissing(TIME_OUT, 
TimeUnit.SECONDS);
         assertTrue("Missing events: " + missing, missing.isEmpty());
         List<Event> unexpected = listener.getUnexpected();
+        assertTrue("Unexpected events: " + unexpected, unexpected.isEmpty());
+    }
+    
+    @Test
+    public void deepNodeTypeMixinHierarchy() throws Exception {
+        NodeTypeManager ntm = 
getAdminSession().getWorkspace().getNodeTypeManager();
+        NodeTypeTemplate parentMixin = ntm.createNodeTypeTemplate();
+        parentMixin.setName("parentmixin");
+        parentMixin.setMixin(true);
+        ntm.registerNodeType(parentMixin, false);
+        NodeTypeTemplate childMixin = ntm.createNodeTypeTemplate();
+        childMixin.setName("childmixin");
+        childMixin.setMixin(true);
+        childMixin.setDeclaredSuperTypeNames(new String[] {"parentmixin"});
+        ntm.registerNodeType(childMixin, false);
+        NodeTypeTemplate mytype = ntm.createNodeTypeTemplate();
+        mytype.setName("mytype");
+        mytype.setMixin(false);
+        mytype.setDeclaredSuperTypeNames(new String[] {"childmixin"});
+        NodeDefinitionTemplate child = ntm.createNodeDefinitionTemplate();
+        child.setName("*");
+        child.setDefaultPrimaryTypeName("nt:base");
+        child.setRequiredPrimaryTypeNames(new String[] {"nt:base"});
+        List<NodeDefinition> children = mytype.getNodeDefinitionTemplates();
+        children.add(child);
+        ntm.registerNodeType(mytype, false);
+        getAdminSession().save();
+        
+        // create a fresh session here to catch the above new node type 
definitions
+        observingSession = createAdminSession();
+        observationManager = 
observingSession.getWorkspace().getObservationManager();
+        JackrabbitObservationManager oManager = (JackrabbitObservationManager) 
observationManager;
+        ExpectationListener listener = new ExpectationListener();
+        JackrabbitEventFilter filter = new JackrabbitEventFilter()
+                .setAbsPath("/")
+                .setIsDeep(true)
+                .setNodeTypes(new String[] {"parentmixin"})
+                .setEventTypes(ALL_EVENTS);
+        oManager.addEventListener(listener, filter);
+
+        Node n = getNode(TEST_PATH).addNode("n", "mytype");
+        listener.expect(n.getPath() + "/jcr:primaryType", PROPERTY_ADDED);
+        Node m = n.addNode("m", "nt:unstructured");
+        listener.expect(m.getPath(), NODE_ADDED);
+        getAdminSession().save();
+
+        Thread.sleep(1000);
+        List<Expectation> missing = listener.getMissing(TIME_OUT, 
TimeUnit.SECONDS);
+        assertTrue("Missing events: " + missing, missing.isEmpty());
+        List<Event> unexpected = listener.getUnexpected();
         assertTrue("Unexpected events: " + unexpected, unexpected.isEmpty());
     }
 


Reply via email to