You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by st...@apache.org on 2013/04/23 14:25:46 UTC
svn commit: r1470917 - in /sling/trunk/contrib/extensions/discovery/impl/src:
main/java/org/apache/sling/discovery/impl/topology/TopologyViewImpl.java
test/java/org/apache/sling/discovery/impl/topology/TopologyViewImplTest.java
Author: stefanegli
Date: Tue Apr 23 12:25:45 2013
New Revision: 1470917
URL: http://svn.apache.org/r1470917
Log:
SLING-2827 : fixed erroneous PROPERTIES_CHANGED being sent even though an instance 'down the line' changed
Modified:
sling/trunk/contrib/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/topology/TopologyViewImpl.java
sling/trunk/contrib/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/topology/TopologyViewImplTest.java
Modified: sling/trunk/contrib/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/topology/TopologyViewImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/topology/TopologyViewImpl.java?rev=1470917&r1=1470916&r2=1470917&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/topology/TopologyViewImpl.java (original)
+++ sling/trunk/contrib/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/topology/TopologyViewImpl.java Tue Apr 23 12:25:45 2013
@@ -70,6 +70,7 @@ public class TopologyViewImpl implements
if (this.instances.size() != other.instances.size()) {
return Type.TOPOLOGY_CHANGED;
}
+ boolean propertiesChanged = false;
for (Iterator<InstanceDescription> it = instances.iterator(); it
.hasNext();) {
InstanceDescription instance = it.next();
@@ -92,10 +93,14 @@ public class TopologyViewImpl implements
}
if (!instance.getProperties().equals(
matchingInstance.getProperties())) {
- return Type.PROPERTIES_CHANGED;
+ propertiesChanged = true;
}
}
- return null;
+ if (propertiesChanged) {
+ return Type.PROPERTIES_CHANGED;
+ } else {
+ return null;
+ }
}
@Override
Modified: sling/trunk/contrib/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/topology/TopologyViewImplTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/topology/TopologyViewImplTest.java?rev=1470917&r1=1470916&r2=1470917&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/topology/TopologyViewImplTest.java (original)
+++ sling/trunk/contrib/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/topology/TopologyViewImplTest.java Tue Apr 23 12:25:45 2013
@@ -23,13 +23,17 @@ import static org.junit.Assert.assertNot
import static org.junit.Assert.assertNull;
import static org.junit.Assert.fail;
+import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
+import junitx.util.PrivateAccessor;
+
import org.apache.sling.discovery.InstanceDescription;
import org.apache.sling.discovery.InstanceFilter;
import org.apache.sling.discovery.TopologyEvent.Type;
+import org.apache.sling.discovery.impl.common.DefaultClusterViewImpl;
import org.apache.sling.discovery.impl.common.DefaultInstanceDescriptionImpl;
import org.junit.Test;
@@ -92,6 +96,19 @@ public class TopologyViewImplTest {
p.remove("a");
p.put("a", "B");
assertNull(newView.compareTopology(oldView));
+
+ // now change the properties of the first instance but modify the second instance' cluster
+ Iterator<InstanceDescription> it = newView.getInstances().iterator();
+ DefaultInstanceDescriptionImpl firstInstance = (DefaultInstanceDescriptionImpl) it.next();
+ assertNotNull(firstInstance);
+ DefaultInstanceDescriptionImpl secondInstance = (DefaultInstanceDescriptionImpl) it.next();
+ assertNotNull(secondInstance);
+ TopologyTestHelper.getWriteableProperties(
+ firstInstance).put("c", "d");
+ DefaultClusterViewImpl cluster = new DefaultClusterViewImpl(UUID.randomUUID().toString());
+ PrivateAccessor.setField(secondInstance, "clusterView", null);
+ cluster.addInstanceDescription(secondInstance);
+ assertEquals(Type.TOPOLOGY_CHANGED, newView.compareTopology(oldView));
}
@Test