You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by re...@apache.org on 2009/05/05 14:38:46 UTC
svn commit: r771698 - in /jackrabbit/trunk:
jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/observation/
jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/observation/
Author: reschke
Date: Tue May 5 12:38:32 2009
New Revision: 771698
URL: http://svn.apache.org/viewvc?rev=771698&view=rev
Log:
JCR-2085: move integrate new tests from NodeMovedtest and NodeReorderTest into jackrabbit-jcr-tests
Removed:
jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/observation/NodeMovedTest.java
jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/observation/NodeReorderTest.java
Modified:
jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/observation/TestAll.java
jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/observation/NodeMovedTest.java
jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/observation/NodeReorderTest.java
Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/observation/TestAll.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/observation/TestAll.java?rev=771698&r1=771697&r2=771698&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/observation/TestAll.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/observation/TestAll.java Tue May 5 12:38:32 2009
@@ -30,8 +30,6 @@
TestSuite suite = new TestSuite("javax.jcr.observation tests");
suite.addTestSuite(EventJournalTest.class);
- suite.addTestSuite(NodeMovedTest.class);
- suite.addTestSuite(NodeReorderTest.class);
return suite;
}
Modified: jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/observation/NodeMovedTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/observation/NodeMovedTest.java?rev=771698&r1=771697&r2=771698&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/observation/NodeMovedTest.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/observation/NodeMovedTest.java Tue May 5 12:38:32 2009
@@ -16,10 +16,15 @@
*/
package org.apache.jackrabbit.test.api.observation;
+import java.util.Map;
+
import javax.jcr.RepositoryException;
import javax.jcr.Node;
import javax.jcr.observation.Event;
+import org.apache.jackrabbit.test.api.observation.AbstractObservationTest;
+import org.apache.jackrabbit.test.api.observation.EventResult;
+
/**
* Tests if {@link javax.jcr.Session#move} operations trigger the appropriate
* observation events.
@@ -39,6 +44,16 @@
public class NodeMovedTest extends AbstractObservationTest {
/**
+ * The key <code>srcAbsPath</code> in the info map.
+ */
+ private static final String SRC_ABS_PATH = "srcAbsPath";
+
+ /**
+ * The key <code>destAbsPath</code> in the info map.
+ */
+ private static final String DEST_ABS_PATH = "destAbsPath";
+
+ /**
* Tests if node removed and node added event is triggered when a tree
* is moved.
*/
@@ -60,16 +75,21 @@
testRootNode.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.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);
}
/**
@@ -94,16 +114,21 @@
testRootNode.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(n2.getPath(), testRoot + "/" + nodeName2);
testRootNode.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[]{nodeName2}, null);
checkNodeRemoved(removed, new String[]{nodeName1 + "/" + nodeName2}, null);
+ checkNodeMoved(moved, nodeName1 + "/" + nodeName2, nodeName2);
}
/**
@@ -129,8 +154,10 @@
testRootNode.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);
// move n2
superuser.move(n2.getPath(), n3.getPath() + "/" + nodeName2);
// remove n1
@@ -138,9 +165,47 @@
testRootNode.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 + "/" + nodeName2}, null);
checkNodeRemoved(removed, new String[]{nodeName1 + "/" + nodeName2, nodeName1}, null);
+ checkNodeMoved(moved, nodeName1 + "/" + nodeName2, nodeName3 + "/" + nodeName2);
+ }
+
+ /**
+ * TODO: move to base class once JSR 283 is final
+ * Checks <code>Events</code> for paths. All <code>relPaths</code> are
+ * relative to {@link #testRoot}.
+ *
+ * @param events the <code>Event</code>s.
+ * @param from the source path where the node was moved from.
+ * @param to the destination path where the node was moved to.
+ * @throws RepositoryException if an error occurs while retrieving the nodes
+ * from event instances.
+ */
+ protected void checkNodeMoved(Event[] events, String from, String to)
+ throws RepositoryException {
+ checkNodes(events, new String[]{to}, null, Event.NODE_MOVED);
+ assertEquals("Wrong number of events", 1, events.length);
+ Map info = events[0].getInfo();
+ checkInfoEntry(info, SRC_ABS_PATH, testRoot + "/" + from);
+ checkInfoEntry(info, DEST_ABS_PATH, testRoot + "/" + to);
+ }
+
+ /**
+ * TODO: move to base class once JSR 283 is final
+ * Checks if the info map contains the given <code>key</code> with the
+ * <code>expected</code> value.
+ *
+ * @param info the event info map.
+ * @param key the name of the key.
+ * @param expected the expected value.
+ */
+ protected void checkInfoEntry(Map info, String key, String expected) {
+ String value = (String) info.get(key);
+ assertNotNull("Missing event info key: " + key, value);
+ assertEquals("Wrong event info value for: " + key, expected, value);
}
}
Modified: jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/observation/NodeReorderTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/observation/NodeReorderTest.java?rev=771698&r1=771697&r2=771698&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/observation/NodeReorderTest.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/observation/NodeReorderTest.java Tue May 5 12:38:32 2009
@@ -16,7 +16,11 @@
*/
package org.apache.jackrabbit.test.api.observation;
+import java.util.Map;
+
import org.apache.jackrabbit.test.NotExecutableException;
+import org.apache.jackrabbit.test.api.observation.AbstractObservationTest;
+import org.apache.jackrabbit.test.api.observation.EventResult;
import javax.jcr.RepositoryException;
import javax.jcr.Node;
@@ -43,6 +47,16 @@
public class NodeReorderTest extends AbstractObservationTest {
/**
+ * The key <code>srcChildRelPath</code> in the info map.
+ */
+ private static final String SRC_CHILD_REL_PATH = "srcChildRelPath";
+
+ /**
+ * The key <code>destChildRelPath</code> in the info map.
+ */
+ private static final String DEST_CHILD_REL_PATH = "destChildRelPath";
+
+ /**
* Tests if reordering a child node triggers a {@link Event#NODE_REMOVED}
* and a {@link Event#NODE_ADDED} event.
*/
@@ -71,14 +85,18 @@
testRootNode.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);
testRootNode.orderBefore(nodeName3, nodeName2);
testRootNode.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);
// either
// 1) nodename2 has been reordered to the end
// or:
@@ -99,9 +117,11 @@
if (reorderEnd) {
checkNodeAdded(added, new String[]{nodeName2}, null);
checkNodeRemoved(removed, new String[]{nodeName2}, null);
+ checkNodeReordered(moved, nodeName2, nodeName2, null);
} else {
checkNodeAdded(added, new String[]{nodeName3}, null);
checkNodeRemoved(removed, new String[]{nodeName3}, null);
+ checkNodeReordered(moved, nodeName3, nodeName3, nodeName2);
}
}
@@ -137,15 +157,19 @@
testRootNode.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);
testRootNode.orderBefore(nodeName1 + "[3]", nodeName1 + "[2]");
//testRootNode.orderBefore(nodeName1 + "[2]", null);
testRootNode.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);
// either
// 1) nodename1[2] has been reordered to the end
// or:
@@ -166,9 +190,11 @@
if (reorderEnd) {
checkNodeAdded(added, new String[]{nodeName1 + "[3]"}, null);
checkNodeRemoved(removed, new String[]{nodeName1 + "[2]"}, null);
+ checkNodeReordered(moved, nodeName1 + "[2]", nodeName1 + "[3]", null);
} else {
checkNodeAdded(added, new String[]{nodeName1 + "[2]"}, null);
checkNodeRemoved(removed, new String[]{nodeName1 + "[3]"}, null);
+ checkNodeReordered(moved, nodeName1 + "[3]", nodeName1 + "[2]", nodeName1 + "[2]");
}
}
@@ -210,15 +236,19 @@
testRootNode.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);
testRootNode.orderBefore(nodeName1 + "[2]", null);
testRootNode.getNode(nodeName3).remove();
testRootNode.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);
// either
// 1) nodename1[2] has been reordered to the end
// or:
@@ -240,9 +270,46 @@
if (reorderEnd) {
checkNodeAdded(added, new String[]{nodeName1 + "[3]"}, null);
checkNodeRemoved(removed, new String[]{nodeName1 + "[2]", nodeName3}, null);
+ checkNodeReordered(moved, nodeName1 + "[2]", nodeName1 + "[3]", null);
} else {
checkNodeAdded(added, new String[]{nodeName1 + "[2]"}, null);
checkNodeRemoved(removed, new String[]{nodeName1 + "[3]", nodeName3}, null);
+ checkNodeReordered(moved, nodeName1 + "[3]", nodeName1 + "[2]", nodeName1 + "[2]");
}
}
+
+ /**
+ * Checks <code>Events</code> for paths. All <code>relPaths</code> are
+ * relative to {@link #testRoot}.
+ *
+ * @param events the <code>Event</code>s.
+ * @param src the source child path where the node was reordered from.
+ * @param dest the destination child path where the node was reordered to.
+ * @param before the destination child path where the node was reordered before.
+ * @throws RepositoryException if an error occurs while retrieving the nodes
+ * from event instances.
+ */
+ protected void checkNodeReordered(Event[] events, String src,
+ String dest, String before)
+ throws RepositoryException {
+ checkNodes(events, new String[]{dest}, null, Event.NODE_MOVED);
+ assertEquals("Wrong number of events", 1, events.length);
+ Map info = events[0].getInfo();
+ checkInfoEntry(info, SRC_CHILD_REL_PATH, src);
+ checkInfoEntry(info, DEST_CHILD_REL_PATH, before);
+ }
+
+ /**
+ * Checks if the info map contains the given <code>key</code> with the
+ * <code>expected</code> value.
+ *
+ * @param info the event info map.
+ * @param key the name of the key.
+ * @param expected the expected value.
+ */
+ protected void checkInfoEntry(Map info, String key, String expected) {
+ assertTrue("Missing event info key: " + key, info.containsKey(key));
+ assertEquals("Wrong event info value for: " + key,
+ expected, (String) info.get(key));
+ }
}