Repository: brooklyn-server
Updated Branches:
  refs/heads/master 6f6763c30 -> fea8a6e6a


DynamicGroup filters entities in its app, not the management context


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/ebdadc3d
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/ebdadc3d
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/ebdadc3d

Branch: refs/heads/master
Commit: ebdadc3d806a1c83bfa595f038c8c8ec8c9dd524
Parents: b9dfdaa
Author: Sam Corbett <sam.corb...@cloudsoftcorp.com>
Authored: Wed Oct 5 12:16:27 2016 +0100
Committer: Sam Corbett <sam.corb...@cloudsoftcorp.com>
Committed: Wed Oct 5 12:16:27 2016 +0100

----------------------------------------------------------------------
 .../apache/brooklyn/entity/group/DynamicGroupImpl.java |  3 ++-
 .../apache/brooklyn/entity/group/DynamicGroupTest.java | 13 +++++++++++--
 2 files changed, 13 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/ebdadc3d/core/src/main/java/org/apache/brooklyn/entity/group/DynamicGroupImpl.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/brooklyn/entity/group/DynamicGroupImpl.java 
b/core/src/main/java/org/apache/brooklyn/entity/group/DynamicGroupImpl.java
index 7f56a03..b8789bb 100644
--- a/core/src/main/java/org/apache/brooklyn/entity/group/DynamicGroupImpl.java
+++ b/core/src/main/java/org/apache/brooklyn/entity/group/DynamicGroupImpl.java
@@ -30,6 +30,7 @@ import org.apache.brooklyn.api.sensor.SensorEvent;
 import org.apache.brooklyn.api.sensor.SensorEventListener;
 import org.apache.brooklyn.core.BrooklynLogging;
 import org.apache.brooklyn.core.BrooklynLogging.LoggingLevel;
+import org.apache.brooklyn.core.entity.Entities;
 import org.apache.brooklyn.core.mgmt.internal.CollectionChangeListener;
 import org.apache.brooklyn.core.mgmt.internal.ManagementContextInternal;
 import org.apache.brooklyn.util.core.task.Tasks;
@@ -210,7 +211,7 @@ public class DynamicGroupImpl extends AbstractGroupImpl 
implements DynamicGroup
             Collection<Entity> currentMembers = getMembers();
             Collection<Entity> toRemove = 
Sets.newLinkedHashSet(currentMembers);
 
-            for (Entity it : 
Iterables.filter(getManagementContext().getEntityManager().getEntities(), 
entityFilter())) {
+            for (Entity it : 
Iterables.filter(Entities.descendantsAndSelf(getApplication()), 
entityFilter())) {
                 toRemove.remove(it);
                 if (!currentMembers.contains(it)) {
                     if (log.isDebugEnabled()) log.debug("{} rescan detected 
new item {}", this, it);

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/ebdadc3d/core/src/test/java/org/apache/brooklyn/entity/group/DynamicGroupTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/brooklyn/entity/group/DynamicGroupTest.java 
b/core/src/test/java/org/apache/brooklyn/entity/group/DynamicGroupTest.java
index eefe4a3..321335e 100644
--- a/core/src/test/java/org/apache/brooklyn/entity/group/DynamicGroupTest.java
+++ b/core/src/test/java/org/apache/brooklyn/entity/group/DynamicGroupTest.java
@@ -169,9 +169,9 @@ public class DynamicGroupTest {
         final AttributeSensor<String> MY_ATTRIBUTE = 
Sensors.newStringSensor("test.myAttribute", "My test attribute");
         group.setEntityFilter(new Predicate<Entity>() {
             @Override public boolean apply(Entity input) {
-                if (!(input.getAttribute(MY_ATTRIBUTE) == "yes")) 
+                if (!("yes".equals(input.getAttribute(MY_ATTRIBUTE)))) {
                     return false;
-                if (input.equals(e1)) {
+                } else if (input.equals(e1)) {
                     LOG.info("testGroupDetectsChangedEntitiesMatchingFilter 
scanned e1 when MY_ATTRIBUTE is yes; not a bug, but indicates things may be 
running slowly");
                     return false;
                 }
@@ -541,6 +541,15 @@ public class DynamicGroupTest {
         }
     }
 
+    @Test
+    public void testOnlyMatchesEntitiesInSameApplication() {
+        TestApplication app2 = 
TestApplication.Factory.newManagedInstanceForTests(app.getManagementContext());
+        TestEntity irrelevant = 
app2.createAndManageChild(EntitySpec.create(TestEntity.class));
+        group.setEntityFilter(Predicates.instanceOf(TestEntity.class));
+        Collection<Entity> members = group.getMembers();
+        assertFalse(members.contains(irrelevant), "collection should not 
contain " + irrelevant + ": " + members);
+    }
+
     private <T> void assertContainsEventually(final Collection<? extends T> 
vals, final T val) {
         Asserts.succeedsEventually(new Runnable() {
             public void run() {

Reply via email to