Search in sources :

Example 91 with Event

use of javax.jcr.observation.Event in project jackrabbit by apache.

the class WorkspaceOperationTest method testCopy.

/**
     * Tests if {@link javax.jcr.Workspace#copy(String, String)} triggers
     * the correct events.
     */
public void testCopy() throws RepositoryException {
    Node n1 = testRootNode.addNode(nodeName1, testNodeType);
    n1.addNode(nodeName2, testNodeType);
    testRootNode.getSession().save();
    EventResult listener = new EventResult(log);
    addEventListener(listener, Event.NODE_ADDED);
    superuser.getWorkspace().copy(testRoot + "/" + nodeName1, testRoot + "/" + nodeName3);
    Event[] events = listener.getEvents(DEFAULT_WAIT_TIMEOUT);
    removeEventListener(listener);
    checkNodeAdded(events, new String[] { nodeName3, nodeName3 + "/" + nodeName2 }, null);
}
Also used : Node(javax.jcr.Node) Event(javax.jcr.observation.Event)

Example 92 with Event

use of javax.jcr.observation.Event in project jackrabbit by apache.

the class NodeAddedTest method testMultipleNodeAdded2.

/**
     * Tests if {@link javax.jcr.observation.Event#NODE_ADDED} is triggered
     * when nodes are created on multiple levels.
     */
public void testMultipleNodeAdded2() throws RepositoryException {
    EventResult result = new EventResult(log);
    addEventListener(result, Event.NODE_ADDED);
    Node n1 = testRootNode.addNode(nodeName1, testNodeType);
    n1.addNode(nodeName2, testNodeType);
    testRootNode.getSession().save();
    Event[] events = result.getEvents(DEFAULT_WAIT_TIMEOUT);
    removeEventListener(result);
    checkNodeAdded(events, new String[] { nodeName1, nodeName1 + "/" + nodeName2 }, null);
}
Also used : Node(javax.jcr.Node) Event(javax.jcr.observation.Event)

Example 93 with Event

use of javax.jcr.observation.Event in project jackrabbit by apache.

the class NodeAddedTest method testTransientNodeAddedRemoved.

/**
     * Tests if events are only created for changes that are persisted.
     */
public void testTransientNodeAddedRemoved() throws RepositoryException {
    EventResult result = new EventResult(log);
    addEventListener(result, Event.NODE_ADDED);
    testRootNode.addNode(nodeName1, testNodeType);
    Node n2 = testRootNode.addNode(nodeName2, testNodeType);
    n2.remove();
    testRootNode.getSession().save();
    Event[] events = result.getEvents(DEFAULT_WAIT_TIMEOUT);
    removeEventListener(result);
    checkNodeAdded(events, new String[] { nodeName1 }, null);
}
Also used : Node(javax.jcr.Node) Event(javax.jcr.observation.Event)

Example 94 with Event

use of javax.jcr.observation.Event in project jackrabbit by apache.

the class NodeMovedTest method testMoveTree.

/**
     * Tests if node removed and node added event is triggered when a tree
     * is moved.
     */
public void testMoveTree() throws RepositoryException {
    /**
         * Initial tree:
         *  + testroot
         *      + nodename1
         *          + nodename2
         *
         * After move:
         *  + testroot
         *      + nodename3
         *          + nodename2
         */
    Node n1 = testRootNode.addNode(nodeName1, testNodeType);
    n1.addNode(nodeName2, testNodeType);
    testRootNode.getSession().save();
    EventResult addNodeListener = new EventResult(log);
    EventResult removeNodeListener = new EventResult(log);
    EventResult moveNodeListener = new EventResult(log);
    addEventListener(addNodeListener, Event.NODE_ADDED);
    addEventListener(removeNodeListener, Event.NODE_REMOVED);
    addEventListener(moveNodeListener, Event.NODE_MOVED);
    superuser.move(n1.getPath(), testRoot + "/" + nodeName3);
    testRootNode.getSession().save();
    Event[] added = addNodeListener.getEvents(DEFAULT_WAIT_TIMEOUT);
    Event[] removed = removeNodeListener.getEvents(DEFAULT_WAIT_TIMEOUT);
    Event[] moved = moveNodeListener.getEvents(DEFAULT_WAIT_TIMEOUT);
    removeEventListener(addNodeListener);
    removeEventListener(removeNodeListener);
    removeEventListener(moveNodeListener);
    checkNodeAdded(added, new String[] { nodeName3 }, new String[] { nodeName3 + "/" + nodeName2 });
    checkNodeRemoved(removed, new String[] { nodeName1 }, new String[] { nodeName1 + "/" + nodeName2 });
    checkNodeMoved(moved, nodeName1, nodeName3);
}
Also used : Node(javax.jcr.Node) Event(javax.jcr.observation.Event)

Example 95 with Event

use of javax.jcr.observation.Event in project jackrabbit-oak by apache.

the class ObservationTest method doIncludeAncestorsRemove_WithGlobs.

void doIncludeAncestorsRemove_WithGlobs(OakEventFilter oef) throws Exception {
    Node testNode = getNode(TEST_PATH);
    testNode.addNode("a").addNode("b").addNode("c").addNode("d.jsp").setProperty("e", 42);
    testNode.getSession().save();
    ObservationManagerImpl oManager = (ObservationManagerImpl) observationManager;
    final AtomicBoolean done = new AtomicBoolean(false);
    final AtomicBoolean unexpected = new AtomicBoolean(false);
    final AtomicBoolean failure = new AtomicBoolean(false);
    EventListener listener = new EventListener() {

        @Override
        public void onEvent(EventIterator events) {
            while (events.hasNext()) {
                Event event = events.nextEvent();
                System.out.println("got: " + event);
                String path = "";
                try {
                    path = event.getPath();
                } catch (RepositoryException e) {
                    e.printStackTrace();
                    failure.set(true);
                }
                if (path.equals(TEST_PATH + "/a/b") && event.getType() == NODE_REMOVED) {
                    done.set(true);
                } else if (path.equals(TEST_PATH + "/a/b/c/d.jsp") && event.getType() == NODE_REMOVED) {
                    done.set(true);
                } else if (path.equals(TEST_PATH + "/a/b/c/d.jsp/jcr:primaryType") && event.getType() == PROPERTY_REMOVED) {
                    done.set(true);
                } else {
                    System.out.println("Unexpected event: " + event);
                    unexpected.set(true);
                }
            }
        }
    };
    oManager.addEventListener(listener, oef);
    Node b = testNode.getNode("a").getNode("b");
    b.remove();
    testNode.getSession().save();
    Thread.sleep(1000);
    assertTrue("didnt get either event", done.get());
    assertFalse("did get unexpected events", unexpected.get());
    assertFalse("got an exception", failure.get());
    oManager.removeEventListener(listener);
    testNode.getNode("a").remove();
    testNode.getSession().save();
}
Also used : AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) JackrabbitNode(org.apache.jackrabbit.api.JackrabbitNode) Node(javax.jcr.Node) Event(javax.jcr.observation.Event) RepositoryException(javax.jcr.RepositoryException) EventListener(javax.jcr.observation.EventListener) EventIterator(javax.jcr.observation.EventIterator)

Aggregations

Event (javax.jcr.observation.Event)136 Node (javax.jcr.Node)103 Test (org.junit.Test)55 JackrabbitNode (org.apache.jackrabbit.api.JackrabbitNode)46 AbstractRepositoryTest (org.apache.jackrabbit.oak.jcr.AbstractRepositoryTest)40 RepositoryException (javax.jcr.RepositoryException)29 Session (javax.jcr.Session)20 JackrabbitEventFilter (org.apache.jackrabbit.api.observation.JackrabbitEventFilter)19 EventResult (org.apache.jackrabbit.test.api.observation.EventResult)17 EventIterator (javax.jcr.observation.EventIterator)15 Property (javax.jcr.Property)13 ObservationManager (javax.jcr.observation.ObservationManager)13 SlingRepository (org.apache.sling.jcr.api.SlingRepository)10 ArrayList (java.util.ArrayList)9 Scheduler (org.apache.sling.commons.scheduler.Scheduler)9 DistributionRequest (org.apache.sling.distribution.DistributionRequest)9 ResourceResolverFactory (org.apache.sling.api.resource.ResourceResolverFactory)8 PathNotFoundException (javax.jcr.PathNotFoundException)7 EventListener (javax.jcr.observation.EventListener)7 JackrabbitObservationManager (org.apache.jackrabbit.api.observation.JackrabbitObservationManager)7