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 ch...@apache.org on 2013/08/08 06:58:01 UTC
svn commit: r1511584 -
/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/CompatibilityIssuesTest.java
Author: chetanm
Date: Thu Aug 8 04:58:00 2013
New Revision: 1511584
URL: http://svn.apache.org/r1511584
Log:
OAK-948 - Compatibility - Oak not generates property change event for touched properties
Adding testcase
Modified:
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/CompatibilityIssuesTest.java
Modified: jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/CompatibilityIssuesTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/CompatibilityIssuesTest.java?rev=1511584&r1=1511583&r2=1511584&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/CompatibilityIssuesTest.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/CompatibilityIssuesTest.java Thu Aug 8 04:58:00 2013
@@ -16,11 +16,17 @@
*/
package org.apache.jackrabbit.oak.jcr;
+import static javax.jcr.observation.Event.PROPERTY_CHANGED;
import static org.apache.jackrabbit.oak.jcr.RepositoryImpl.REFRESH_INTERVAL;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+import java.util.ArrayList;
import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
import javax.jcr.Credentials;
import javax.jcr.InvalidItemStateException;
@@ -29,6 +35,10 @@ import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.SimpleCredentials;
import javax.jcr.nodetype.ConstraintViolationException;
+import javax.jcr.observation.Event;
+import javax.jcr.observation.EventIterator;
+import javax.jcr.observation.EventListener;
+import javax.jcr.observation.ObservationManager;
import org.apache.jackrabbit.api.JackrabbitRepository;
import org.apache.jackrabbit.oak.api.CommitFailedException;
@@ -164,4 +174,53 @@ public class CompatibilityIssuesTest ext
}
}
+ /**
+ * OAK-948 - JR2 generates propertyChange event for touched properties while Oak does not
+ */
+ @Test
+ public void noEventsForTouchedProperties() throws RepositoryException, InterruptedException {
+ final String testNodeName = "test_touched_node";
+ final String testNodePath = '/' + testNodeName;
+
+ // Create the test node
+ Session session = getAdminSession();
+ Node testNode = session.getRootNode().addNode(testNodeName);
+ testNode.setProperty("foo", "bar");
+ testNode.setProperty("foo2", "bar0");
+ session.save();
+
+ Session observingSession = createAdminSession();
+ ObservationManager observationManager = observingSession.getWorkspace().getObservationManager();
+
+ try{
+ final List<Event> events = new ArrayList<Event>();
+ final CountDownLatch latch = new CountDownLatch(1);
+ EventListener listener = new EventListener() {
+ @Override
+ public void onEvent(EventIterator eventIt) {
+ while(eventIt.hasNext()){
+ events.add(eventIt.nextEvent());
+ }
+ if(!events.isEmpty()){
+ latch.countDown();
+ }
+ }
+ };
+
+ observationManager.addEventListener(listener, PROPERTY_CHANGED, testNodePath, true, null, null, false);
+
+ //Now touch foo and modify foo2
+ session.getNode(testNodePath).setProperty("foo","bar");
+ session.getNode(testNodePath).setProperty("foo2","bar2");
+ session.save();
+
+ latch.await(10,TimeUnit.SECONDS);
+
+ //Only one event is recorded for foo2 modification
+ assertEquals(1,events.size());
+ }finally{
+ observingSession.logout();
+ }
+ }
+
}