Author: stefanegli
Date: Thu Jan 28 12:44:40 2016
New Revision: 1727323

URL: http://svn.apache.org/viewvc?rev=1727323&view=rev
Log:
SLING-5464 : fixed regression introduced in onlyDiffersInProperties - and added 
a proper JUnit test which would have avoided the problem in the first place

Modified:
    
sling/trunk/bundles/extensions/discovery/commons/src/main/java/org/apache/sling/discovery/commons/providers/base/ViewStateManagerImpl.java
    
sling/trunk/bundles/extensions/discovery/commons/src/test/java/org/apache/sling/discovery/commons/providers/base/TestViewStateManager.java

Modified: 
sling/trunk/bundles/extensions/discovery/commons/src/main/java/org/apache/sling/discovery/commons/providers/base/ViewStateManagerImpl.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/commons/src/main/java/org/apache/sling/discovery/commons/providers/base/ViewStateManagerImpl.java?rev=1727323&r1=1727322&r2=1727323&view=diff
==============================================================================
--- 
sling/trunk/bundles/extensions/discovery/commons/src/main/java/org/apache/sling/discovery/commons/providers/base/ViewStateManagerImpl.java
 (original)
+++ 
sling/trunk/bundles/extensions/discovery/commons/src/main/java/org/apache/sling/discovery/commons/providers/base/ViewStateManagerImpl.java
 Thu Jan 28 12:44:40 2016
@@ -633,7 +633,7 @@ public class ViewStateManagerImpl implem
             if (oldInstance.isLeader() != newInstance.isLeader()) {
                 return false;
             }
-            if (oldInstance.getClusterView().getId() != 
newInstance.getClusterView().getId()) {
+            if 
(!oldInstance.getClusterView().getId().equals(newInstance.getClusterView().getId()))
 {
                 return false;
             }
         }

Modified: 
sling/trunk/bundles/extensions/discovery/commons/src/test/java/org/apache/sling/discovery/commons/providers/base/TestViewStateManager.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/commons/src/test/java/org/apache/sling/discovery/commons/providers/base/TestViewStateManager.java?rev=1727323&r1=1727322&r2=1727323&view=diff
==============================================================================
--- 
sling/trunk/bundles/extensions/discovery/commons/src/test/java/org/apache/sling/discovery/commons/providers/base/TestViewStateManager.java
 (original)
+++ 
sling/trunk/bundles/extensions/discovery/commons/src/test/java/org/apache/sling/discovery/commons/providers/base/TestViewStateManager.java
 Thu Jan 28 12:44:40 2016
@@ -32,7 +32,11 @@ import java.util.concurrent.locks.Reentr
 
 import org.apache.log4j.Level;
 import org.apache.log4j.LogManager;
+import org.apache.sling.discovery.ClusterView;
+import org.apache.sling.discovery.DiscoveryService;
+import org.apache.sling.discovery.InstanceDescription;
 import org.apache.sling.discovery.TopologyEvent;
+import org.apache.sling.discovery.TopologyView;
 import org.apache.sling.discovery.commons.providers.BaseTopologyView;
 import org.apache.sling.discovery.commons.providers.DefaultClusterView;
 import org.apache.sling.discovery.commons.providers.DefaultInstanceDescription;
@@ -131,6 +135,35 @@ public class TestViewStateManager {
     }
     
     @Test
+    public void testChangedPropertiesChanged() throws Exception {
+        final DummyListener listener = new DummyListener();
+        mgr.installMinEventDelayHandler(new DiscoveryService() {
+            
+            @Override
+            public TopologyView getTopology() {
+                throw new IllegalStateException("not yet impl");
+            }
+        }, new DummyScheduler(), 1);
+        mgr.handleActivated();
+        TestHelper.assertNoEvents(listener);
+        mgr.bind(listener);
+        TestHelper.assertNoEvents(listener);
+        mgr.handleChanging();
+        TestHelper.assertNoEvents(listener);
+        final BaseTopologyView view1 = new DummyTopologyView().addInstance();
+        InstanceDescription instance1 = view1.getInstances().iterator().next();
+        ClusterView cluster1 = instance1.getClusterView();
+        mgr.handleNewView(view1);
+        assertEvents(listener, EventHelper.newInitEvent(view1));
+        DefaultClusterView cluster2 = new DefaultClusterView(new 
String(cluster1.getId()));
+        final BaseTopologyView view2 = new 
DummyTopologyView(view1.getLocalClusterSyncTokenId()).addInstance(instance1.getSlingId(),
 cluster2, instance1.isLeader(), instance1.isLocal());
+        DefaultInstanceDescription instance2 = (DefaultInstanceDescription) 
view2.getLocalInstance();
+        instance2.setProperty("foo", "bar");
+        mgr.handleNewView(view2);
+        assertEvents(listener, EventHelper.newPropertiesChangedEvent(view1, 
view2));
+    }
+
+    @Test
     public void testDuplicateListeners() throws Exception {
         final DummyListener listener = new DummyListener();
         mgr.bind(listener);


Reply via email to