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 md...@apache.org on 2012/07/25 15:07:41 UTC

svn commit: r1365564 [2/2] - in /jackrabbit/oak/trunk: oak-core/src/main/java/org/apache/jackrabbit/oak/core/ oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ oak-jcr/src/test/java/or...

Modified: jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java?rev=1365564&r1=1365563&r2=1365564&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java Wed Jul 25 13:07:40 2012
@@ -1482,84 +1482,101 @@ public class RepositoryTest extends Abst
 
         final List<Event> failedEvents = new ArrayList<Event>();
         final AtomicReference<CountDownLatch> eventCount = new AtomicReference<CountDownLatch>();
-
-        ObservationManager obsMgr = getSession().getWorkspace().getObservationManager();
-        obsMgr.addEventListener(new EventListener() {
-                @Override
-                public void onEvent(EventIterator events) {
-                    while (events.hasNext()) {
-                        Event event = events.nextEvent();
-                        try {
-                            String path = event.getPath();
-                            if (path.startsWith("/jcr:system")) {
-                            		// ignore changes in jcr:system
-                            		continue;
-                            }
-                            switch (event.getType()) {
-                                case Event.NODE_ADDED:
-                                    if (!addNodes.remove(path)) {
-                                        failedEvents.add(event);
-                                    }
-                                    break;
-                                case Event.NODE_REMOVED:
-                                    if (!removeNodes.remove(path)) {
-                                        failedEvents.add(event);
-                                    }
-                                    break;
-                                case Event.PROPERTY_ADDED:
-                                    if (!addProperties.remove(path)) {
-                                        failedEvents.add(event);
-                                    }
-                                    break;
-                                case Event.PROPERTY_CHANGED:
-                                    if (!setProperties.remove(path)) {
-                                        failedEvents.add(event);
-                                    }
-                                    break;
-                                case Event.PROPERTY_REMOVED:
-                                    if (!removeProperties.remove(path)) {
+        final Session observingSession = createAnonymousSession();
+        try {
+            ObservationManager obsMgr = observingSession.getWorkspace().getObservationManager();
+            obsMgr.addEventListener(new EventListener() {
+                    @Override
+                    public void onEvent(EventIterator events) {
+                        while (events.hasNext()) {
+                            Event event = events.nextEvent();
+                            try {
+                                String path = event.getPath();
+                                if (path.startsWith("/jcr:system")) {
+                                        // ignore changes in jcr:system
+                                        continue;
+                                }
+                                switch (event.getType()) {
+                                    case Event.NODE_ADDED:
+                                        if (!addNodes.remove(path)) {
+                                            failedEvents.add(event);
+                                        }
+                                        if (!observingSession.nodeExists(path)) {
+                                            failedEvents.add(event);
+                                        }
+                                        break;
+                                    case Event.NODE_REMOVED:
+                                        if (!removeNodes.remove(path)) {
+                                            failedEvents.add(event);
+                                        }
+                                        if (observingSession.nodeExists(path)) {
+                                            failedEvents.add(event);
+                                        }
+                                        break;
+                                    case Event.PROPERTY_ADDED:
+                                        if (!addProperties.remove(path)) {
+                                            failedEvents.add(event);
+                                        }
+                                        if (!observingSession.propertyExists(path)) {
+                                            failedEvents.add(event);
+                                        }
+                                        break;
+                                    case Event.PROPERTY_CHANGED:
+                                        if (!setProperties.remove(path)) {
+                                            failedEvents.add(event);
+                                        }
+                                        break;
+                                    case Event.PROPERTY_REMOVED:
+                                        if (!removeProperties.remove(path)) {
+                                            failedEvents.add(event);
+                                        }
+                                        if (observingSession.propertyExists(path)) {
+                                            failedEvents.add(event);
+                                        }
+                                        break;
+                                    default:
                                         failedEvents.add(event);
-                                    }
-                                    break;
-                                default:
-                                    failedEvents.add(event);
+                                }
                             }
+                            catch (RepositoryException e) {
+                                failedEvents.add(event);
+                            }
+                            eventCount.get().countDown();
                         }
-                        catch (RepositoryException e) {
-                            failedEvents.add(event);
-                        }
-                        eventCount.get().countDown();
                     }
-                }
-            },
-            Event.NODE_ADDED | Event.NODE_REMOVED | Event.NODE_MOVED | Event.PROPERTY_ADDED |
-            Event.PROPERTY_REMOVED | Event.PROPERTY_CHANGED | Event.PERSIST, "/", true, null, null, false);
-
-        eventCount.set(new CountDownLatch(7));
-        Node n = getNode(TEST_PATH);
-        n.setProperty("prop0", "val0");
-        Node n1 = n.addNode("1");
-        n1.setProperty("prop1", "val1");
-        n1.setProperty("prop2", "val2");
-        n.addNode("2");
-        getSession().save();
-        assertTrue(eventCount.get().await(2, TimeUnit.SECONDS));
-
-        eventCount.set(new CountDownLatch(8));
-        n.setProperty("property", 42);
-        n.addNode("3").setProperty("prop3", "val3");
-        n1.setProperty("prop1", "val1 new");
-        n1.getProperty("prop2").remove();
-        n.getNode("2").remove();
-        getSession().save();
-        assertTrue(eventCount.get().await(2, TimeUnit.SECONDS));
-
-        assertTrue("failedEvents not empty: " + failedEvents, failedEvents.isEmpty());
-        assertTrue("addNodes not empty: " + addNodes, addNodes.isEmpty());
-        assertTrue("removeNodes not empty: " + removeNodes, removeNodes.isEmpty());
-        assertTrue("addProperties not empty: " + addProperties, addProperties.isEmpty());
-        assertTrue("removeProperties not empty: " + removeProperties, removeProperties.isEmpty());
-        assertTrue("setProperties not empty: " + setProperties, setProperties.isEmpty());
+                },
+                Event.NODE_ADDED | Event.NODE_REMOVED | Event.NODE_MOVED | Event.PROPERTY_ADDED |
+                Event.PROPERTY_REMOVED | Event.PROPERTY_CHANGED | Event.PERSIST, "/", true, null, null, false);
+
+            eventCount.set(new CountDownLatch(7));
+            Node n = getNode(TEST_PATH);
+            n.setProperty("prop0", "val0");
+            Node n1 = n.addNode("1");
+            n1.setProperty("prop1", "val1");
+            n1.setProperty("prop2", "val2");
+            n.addNode("2");
+            getSession().save();
+            assertTrue(eventCount.get().await(2, TimeUnit.SECONDS));
+
+            eventCount.set(new CountDownLatch(8));
+            n.setProperty("property", 42);
+            n.addNode("3").setProperty("prop3", "val3");
+            n1.setProperty("prop1", "val1 new");
+            n1.getProperty("prop2").remove();
+            n.getNode("2").remove();
+            getSession().save();
+            assertTrue(eventCount.get().await(2, TimeUnit.SECONDS));
+
+            assertTrue("failedEvents not empty: " + failedEvents, failedEvents.isEmpty());
+            assertTrue("addNodes not empty: " + addNodes, addNodes.isEmpty());
+            assertTrue("removeNodes not empty: " + removeNodes, removeNodes.isEmpty());
+            assertTrue("addProperties not empty: " + addProperties, addProperties.isEmpty());
+            assertTrue("removeProperties not empty: " + removeProperties, removeProperties.isEmpty());
+            assertTrue("setProperties not empty: " + setProperties, setProperties.isEmpty());
+        }
+        finally {
+            observingSession.logout();
+        }
     }
 
     @Test
@@ -1581,70 +1598,88 @@ public class RepositoryTest extends Abst
         final List<Event> failedEvents = new ArrayList<Event>();
         final AtomicReference<CountDownLatch> eventCount = new AtomicReference<CountDownLatch>();
 
-        ObservationManager obsMgr = getSession().getWorkspace().getObservationManager();
-        obsMgr.addEventListener(new EventListener() {
-                @Override
-                public void onEvent(EventIterator events) {
-                    while (events.hasNext()) {
-                        Event event = events.nextEvent();
-                        try {
-                            String path = event.getPath();
-                            if (path.startsWith("/jcr:system")) {
-                            		// ignore changes in jcr:system
-                            		continue;
-                            }
-                            switch (event.getType()) {
-                                case Event.NODE_ADDED:
-                                    if (!addNodes.remove(path)) {
-                                        failedEvents.add(event);
-                                    }
-                                    break;
-                                case Event.NODE_REMOVED:
-                                    if (!removeNodes.remove(path)) {
-                                        failedEvents.add(event);
-                                    }
-                                    break;
-                                case Event.PROPERTY_ADDED:
-                                    if (!addProperties.remove(path)) {
-                                        failedEvents.add(event);
-                                    }
-                                    break;
-                                case Event.PROPERTY_REMOVED:
-                                    if (!removeProperties.remove(path)) {
+        final Session observingSession = createAnonymousSession();
+        try {
+            ObservationManager obsMgr = observingSession.getWorkspace().getObservationManager();
+            obsMgr.addEventListener(new EventListener() {
+                    @Override
+                    public void onEvent(EventIterator events) {
+                        while (events.hasNext()) {
+                            Event event = events.nextEvent();
+                            try {
+                                String path = event.getPath();
+                                if (path.startsWith("/jcr:system")) {
+                                        // ignore changes in jcr:system
+                                        continue;
+                                }
+                                switch (event.getType()) {
+                                    case Event.NODE_ADDED:
+                                        if (!addNodes.remove(path)) {
+                                            failedEvents.add(event);
+                                        }
+                                        if (!observingSession.nodeExists(path)) {
+                                            failedEvents.add(event);
+                                        }
+                                        break;
+                                    case Event.NODE_REMOVED:
+                                        if (!removeNodes.remove(path)) {
+                                            failedEvents.add(event);
+                                        }
+                                        if (observingSession.nodeExists(path)) {
+                                            failedEvents.add(event);
+                                        }
+                                        break;
+                                    case Event.PROPERTY_ADDED:
+                                        if (!addProperties.remove(path)) {
+                                            failedEvents.add(event);
+                                        }
+                                        if (!observingSession.propertyExists(path)) {
+                                            failedEvents.add(event);
+                                        }
+                                        break;
+                                    case Event.PROPERTY_REMOVED:
+                                        if (!removeProperties.remove(path)) {
+                                            failedEvents.add(event);
+                                        }
+                                        if (observingSession.propertyExists(path)) {
+                                            failedEvents.add(event);
+                                        }
+                                        break;
+                                    default:
                                         failedEvents.add(event);
-                                    }
-                                    break;
-                                default:
-                                    failedEvents.add(event);
+                                }
                             }
+                            catch (RepositoryException e) {
+                                failedEvents.add(event);
+                            }
+                            eventCount.get().countDown();
                         }
-                        catch (RepositoryException e) {
-                            failedEvents.add(event);
-                        }
-                        eventCount.get().countDown();
                     }
-                }
-            },
-            Event.NODE_ADDED | Event.NODE_REMOVED | Event.NODE_MOVED | Event.PROPERTY_ADDED |
-            Event.PROPERTY_REMOVED | Event.PROPERTY_CHANGED | Event.PERSIST, "/", true, null, null, false);
-
-        eventCount.set(new CountDownLatch(2));
-        Node n = getNode(TEST_PATH);
-        n.addNode("1");
-        getSession().save();
-        assertTrue(eventCount.get().await(2, TimeUnit.SECONDS));
-
-        eventCount.set(new CountDownLatch(4));
-        n.addNode("2");
-        n.getNode("1").remove();
-        getSession().save();
-        assertTrue(eventCount.get().await(2, TimeUnit.SECONDS));
-
-        assertTrue("failedEvents not empty: " + failedEvents, failedEvents.isEmpty());
-        assertTrue("addNodes not empty: " + addNodes, addNodes.isEmpty());
-        assertTrue("removeNodes not empty: " + removeNodes, removeNodes.isEmpty());
-        assertTrue("addProperties not empty: " + addProperties, addProperties.isEmpty());
-        assertTrue("removeProperties not empty: " + removeProperties, removeProperties.isEmpty());
+                },
+                Event.NODE_ADDED | Event.NODE_REMOVED | Event.NODE_MOVED | Event.PROPERTY_ADDED |
+                Event.PROPERTY_REMOVED | Event.PROPERTY_CHANGED | Event.PERSIST, "/", true, null, null, false);
+
+            eventCount.set(new CountDownLatch(2));
+            Node n = getNode(TEST_PATH);
+            n.addNode("1");
+            getSession().save();
+            assertTrue(eventCount.get().await(2, TimeUnit.SECONDS));
+
+            eventCount.set(new CountDownLatch(4));
+            n.addNode("2");
+            n.getNode("1").remove();
+            getSession().save();
+            assertTrue(eventCount.get().await(2, TimeUnit.SECONDS));
+
+            assertTrue("failedEvents not empty: " + failedEvents, failedEvents.isEmpty());
+            assertTrue("addNodes not empty: " + addNodes, addNodes.isEmpty());
+            assertTrue("removeNodes not empty: " + removeNodes, removeNodes.isEmpty());
+            assertTrue("addProperties not empty: " + addProperties, addProperties.isEmpty());
+            assertTrue("removeProperties not empty: " + removeProperties, removeProperties.isEmpty());
+        }
+        finally {
+            observingSession.logout();
+        }
     }
 
     @Test