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);
}
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);
}
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);
}
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);
}
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();
}
Aggregations