This is an automated email from the ASF dual-hosted git repository. rombert pushed a commit to annotated tag org.apache.sling.discovery.commons-1.0.10 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-discovery-commons.git
commit 8468d76eec3dfa0b2d7446171f98c600fd42e3b1 Author: Stefan Egli <[email protected]> AuthorDate: Thu Jan 28 12:44:40 2016 +0000 SLING-5464 : fixed regression introduced in onlyDiffersInProperties - and added a proper JUnit test which would have avoided the problem in the first place git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/bundles/extensions/discovery/commons@1727323 13f79535-47bb-0310-9956-ffa450edef68 --- .../providers/base/ViewStateManagerImpl.java | 2 +- .../providers/base/TestViewStateManager.java | 33 ++++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/apache/sling/discovery/commons/providers/base/ViewStateManagerImpl.java b/src/main/java/org/apache/sling/discovery/commons/providers/base/ViewStateManagerImpl.java index 6757912..b9f9fc7 100644 --- a/src/main/java/org/apache/sling/discovery/commons/providers/base/ViewStateManagerImpl.java +++ b/src/main/java/org/apache/sling/discovery/commons/providers/base/ViewStateManagerImpl.java @@ -633,7 +633,7 @@ public class ViewStateManagerImpl implements ViewStateManager { if (oldInstance.isLeader() != newInstance.isLeader()) { return false; } - if (oldInstance.getClusterView().getId() != newInstance.getClusterView().getId()) { + if (!oldInstance.getClusterView().getId().equals(newInstance.getClusterView().getId())) { return false; } } diff --git a/src/test/java/org/apache/sling/discovery/commons/providers/base/TestViewStateManager.java b/src/test/java/org/apache/sling/discovery/commons/providers/base/TestViewStateManager.java index e7cbcc5..4e73bc7 100644 --- a/src/test/java/org/apache/sling/discovery/commons/providers/base/TestViewStateManager.java +++ b/src/test/java/org/apache/sling/discovery/commons/providers/base/TestViewStateManager.java @@ -32,7 +32,11 @@ import java.util.concurrent.locks.ReentrantLock; 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); -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
