Repository: brooklyn-server
Updated Branches:
  refs/heads/master 215c02cb5 -> 374e01f41


Convenience predicates to test attributes + config by name.


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

Branch: refs/heads/master
Commit: f3f39938d75aaa4ebb1132952493a186399ad30f
Parents: 3364786
Author: Alasdair Hodge <git...@alasdairhodge.co.uk>
Authored: Fri Aug 5 14:26:20 2016 +0100
Committer: Alasdair Hodge <git...@alasdairhodge.co.uk>
Committed: Fri Aug 5 15:46:48 2016 +0100

----------------------------------------------------------------------
 .../brooklyn/core/entity/EntityPredicates.java  | 72 +++++++++++++++++---
 .../core/entity/EntityPredicatesTest.java       | 58 +++++++++++++---
 2 files changed, 112 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/f3f39938/core/src/main/java/org/apache/brooklyn/core/entity/EntityPredicates.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/brooklyn/core/entity/EntityPredicates.java 
b/core/src/main/java/org/apache/brooklyn/core/entity/EntityPredicates.java
index a618784..41f016c 100644
--- a/core/src/main/java/org/apache/brooklyn/core/entity/EntityPredicates.java
+++ b/core/src/main/java/org/apache/brooklyn/core/entity/EntityPredicates.java
@@ -29,6 +29,8 @@ import org.apache.brooklyn.api.location.Location;
 import org.apache.brooklyn.api.sensor.AttributeSensor;
 import org.apache.brooklyn.config.ConfigKey;
 import org.apache.brooklyn.config.ConfigKey.HasConfigKey;
+import org.apache.brooklyn.core.config.ConfigKeys;
+import org.apache.brooklyn.core.sensor.Sensors;
 import org.apache.brooklyn.util.collections.CollectionFunctionals;
 import org.apache.brooklyn.util.guava.SerializablePredicate;
 import org.apache.brooklyn.util.javalang.Reflections;
@@ -171,11 +173,35 @@ public class EntityPredicates {
     }
 
     // ---------------------------
-    
+
+    public static Predicate<Entity> attributeNotNull(final String 
attributeName) {
+        return attributeSatisfies(attributeName, Predicates.notNull());
+    }
+
+    public static <T> Predicate<Entity> attributeNotNull(final 
AttributeSensor<T> attribute) {
+        return attributeSatisfies(attribute, Predicates.<T>notNull());
+    }
+
+    public static Predicate<Entity> attributeEqualTo(final String 
attributeName, final Object val) {
+        return attributeSatisfies(attributeName, Predicates.equalTo(val));
+    }
+
     public static <T> Predicate<Entity> attributeEqualTo(final 
AttributeSensor<T> attribute, final T val) {
         return attributeSatisfies(attribute, Predicates.equalTo(val));
     }
-    
+
+    public static <T> Predicate<Entity> attributeNotEqualTo(final String 
attributeName, final Object val) {
+        return attributeSatisfies(attributeName, 
Predicates.not(Predicates.equalTo(val)));
+    }
+
+    public static <T> Predicate<Entity> attributeNotEqualTo(final 
AttributeSensor<T> attribute, final T val) {
+        return attributeSatisfies(attribute, 
Predicates.not(Predicates.equalTo(val)));
+    }
+
+    public static Predicate<Entity> attributeSatisfies(final String 
attributeName, final Predicate<Object> condition) {
+        return new AttributeSatisfies<Object>(Sensors.newSensor(Object.class, 
attributeName), condition);
+    }
+
     public static <T> Predicate<Entity> attributeSatisfies(final 
AttributeSensor<T> attribute, final Predicate<T> condition) {
         return new AttributeSatisfies<T>(attribute, condition);
     }
@@ -208,24 +234,52 @@ public class EntityPredicates {
         };
     }
     
-    public static <T> Predicate<Entity> attributeNotEqualTo(final 
AttributeSensor<T> attribute, final T val) {
-        return attributeSatisfies(attribute, 
Predicates.not(Predicates.equalTo(val)));
+    // ---------------------------
+
+    public static <T> Predicate<Entity> configNotNull(final String 
configKeyName) {
+        return configSatisfies(configKeyName, Predicates.notNull());
     }
 
-    // ---------------------------
+    public static <T> Predicate<Entity> configNotNull(final ConfigKey<T> 
configKey) {
+        return configSatisfies(configKey, Predicates.<T>notNull());
+    }
 
-    public static <T> Predicate<Entity> configEqualTo(final ConfigKey<T> 
configKey, final T val) {
-        return configSatisfies(configKey, Predicates.equalTo(val));
+    public static <T> Predicate<Entity> configNotNull(final HasConfigKey<T> 
configKey) {
+        return configNotNull(configKey.getConfigKey());
     }
 
-    public static <T> Predicate<Entity> configSatisfies(final ConfigKey<T> 
configKey, final Predicate<T> condition) {
-        return new ConfigKeySatisfies<T>(configKey, condition);
+    public static <T> Predicate<Entity> configEqualTo(final String 
configKeyName, final Object val) {
+        return configSatisfies(configKeyName, Predicates.equalTo(val));
+    }
+
+    public static <T> Predicate<Entity> configEqualTo(final ConfigKey<T> 
configKey, final T val) {
+        return configSatisfies(configKey, Predicates.equalTo(val));
     }
 
     public static <T> Predicate<Entity> configEqualTo(final HasConfigKey<T> 
configKey, final T val) {
         return configEqualTo(configKey.getConfigKey(), val);
     }
 
+    public static <T> Predicate<Entity> configNotEqualTo(final String 
configKeyName, final Object val) {
+        return configSatisfies(configKeyName, 
Predicates.not(Predicates.equalTo(val)));
+    }
+
+    public static <T> Predicate<Entity> configNotEqualTo(final ConfigKey<T> 
configKey, final T val) {
+        return configSatisfies(configKey, 
Predicates.not(Predicates.equalTo(val)));
+    }
+
+    public static <T> Predicate<Entity> configNotEqualTo(final HasConfigKey<T> 
configKey, final T val) {
+        return configNotEqualTo(configKey.getConfigKey(), val);
+    }
+
+    public static Predicate<Entity> configSatisfies(final String 
configKeyName, final Predicate<Object> condition) {
+        return new 
ConfigKeySatisfies<Object>(ConfigKeys.newConfigKey(Object.class, 
configKeyName), condition);
+    }
+
+    public static <T> Predicate<Entity> configSatisfies(final ConfigKey<T> 
configKey, final Predicate<T> condition) {
+        return new ConfigKeySatisfies<T>(configKey, condition);
+    }
+
     public static <T> Predicate<Entity> configSatisfies(final HasConfigKey<T> 
configKey, final Predicate<T> condition) {
         return new ConfigKeySatisfies<T>(configKey.getConfigKey(), condition);
     }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/f3f39938/core/src/test/java/org/apache/brooklyn/core/entity/EntityPredicatesTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/brooklyn/core/entity/EntityPredicatesTest.java 
b/core/src/test/java/org/apache/brooklyn/core/entity/EntityPredicatesTest.java
index 1b75876..4cf6df3 100644
--- 
a/core/src/test/java/org/apache/brooklyn/core/entity/EntityPredicatesTest.java
+++ 
b/core/src/test/java/org/apache/brooklyn/core/entity/EntityPredicatesTest.java
@@ -40,7 +40,7 @@ public class EntityPredicatesTest extends 
BrooklynAppUnitTestSupport {
     private TestEntity entity;
     private BasicGroup group;
     private Location loc;
-    
+
     @BeforeMethod(alwaysRun=true)
     @Override
     public void setUp() throws Exception {
@@ -55,33 +55,73 @@ public class EntityPredicatesTest extends 
BrooklynAppUnitTestSupport {
         
assertTrue(EntityPredicates.applicationIdEqualTo(app.getId()).apply(entity));
         
assertFalse(EntityPredicates.applicationIdEqualTo("wrongid").apply(entity));
     }
-    
+
     @Test
     public void testIdEqualTo() throws Exception {
         assertTrue(EntityPredicates.idEqualTo(entity.getId()).apply(entity));
         assertFalse(EntityPredicates.idEqualTo("wrongid").apply(entity));
     }
-    
+
+    @Test
+    public void testAttributeNotNull() throws Exception {
+        entity.sensors().set(TestEntity.NAME, "myname");
+        
assertTrue(EntityPredicates.attributeNotNull(TestEntity.NAME).apply(entity));
+        
assertTrue(EntityPredicates.attributeNotNull(TestEntity.NAME.getName()).apply(entity));
+        
assertFalse(EntityPredicates.attributeNotNull(TestEntity.SEQUENCE).apply(entity));
+        
assertFalse(EntityPredicates.attributeNotNull(TestEntity.SEQUENCE.getName()).apply(entity));
+    }
+
     @Test
     public void testAttributeEqualTo() throws Exception {
         entity.sensors().set(TestEntity.NAME, "myname");
         assertTrue(EntityPredicates.attributeEqualTo(TestEntity.NAME, 
"myname").apply(entity));
+        
assertTrue(EntityPredicates.attributeEqualTo(TestEntity.NAME.getName(), 
"myname").apply(entity));
         assertFalse(EntityPredicates.attributeEqualTo(TestEntity.NAME, 
"wrongname").apply(entity));
+        
assertFalse(EntityPredicates.attributeEqualTo(TestEntity.NAME.getName(), 
"wrongname").apply(entity));
     }
-    
+
+    @Test
+    public void testAttributeNotEqualTo() throws Exception {
+        entity.sensors().set(TestEntity.NAME, "myname");
+        assertFalse(EntityPredicates.attributeNotEqualTo(TestEntity.NAME, 
"myname").apply(entity));
+        
assertFalse(EntityPredicates.attributeNotEqualTo(TestEntity.NAME.getName(), 
"myname").apply(entity));
+        assertTrue(EntityPredicates.attributeNotEqualTo(TestEntity.NAME, 
"wrongname").apply(entity));
+        
assertTrue(EntityPredicates.attributeNotEqualTo(TestEntity.NAME.getName(), 
"wrongname").apply(entity));
+    }
+
+    @Test
+    public void testConfigNotNull() throws Exception {
+        entity.config().set(TestEntity.CONF_NAME, "myname");
+        
assertTrue(EntityPredicates.configNotNull(TestEntity.CONF_NAME).apply(entity));
+        
assertTrue(EntityPredicates.configNotNull(TestEntity.CONF_NAME.getName()).apply(entity));
+        
assertFalse(EntityPredicates.configNotNull(TestEntity.CONF_OBJECT).apply(entity));
+        
assertFalse(EntityPredicates.configNotNull(TestEntity.CONF_OBJECT.getName()).apply(entity));
+    }
+
     @Test
     public void testConfigEqualTo() throws Exception {
         entity.config().set(TestEntity.CONF_NAME, "myname");
         assertTrue(EntityPredicates.configEqualTo(TestEntity.CONF_NAME, 
"myname").apply(entity));
+        
assertTrue(EntityPredicates.configEqualTo(TestEntity.CONF_NAME.getName(), 
"myname").apply(entity));
         assertFalse(EntityPredicates.configEqualTo(TestEntity.CONF_NAME, 
"wrongname").apply(entity));
+        
assertFalse(EntityPredicates.configEqualTo(TestEntity.CONF_NAME.getName(), 
"wrongname").apply(entity));
     }
-    
+
+    @Test
+    public void testConfigNotEqualTo() throws Exception {
+        entity.config().set(TestEntity.CONF_NAME, "myname");
+        assertFalse(EntityPredicates.configNotEqualTo(TestEntity.CONF_NAME, 
"myname").apply(entity));
+        
assertFalse(EntityPredicates.configNotEqualTo(TestEntity.CONF_NAME.getName(), 
"myname").apply(entity));
+        assertTrue(EntityPredicates.configNotEqualTo(TestEntity.CONF_NAME, 
"wrongname").apply(entity));
+        
assertTrue(EntityPredicates.configNotEqualTo(TestEntity.CONF_NAME.getName(), 
"wrongname").apply(entity));
+    }
+
     @Test
     public void testDisplayNameEqualTo() throws Exception {
         
assertTrue(EntityPredicates.displayNameEqualTo("mydisplayname").apply(entity));
         
assertFalse(EntityPredicates.displayNameEqualTo("wrongname").apply(entity));
     }
-    
+
     @Test
     public void testDisplayNameSatisfies() throws Exception {
         
assertTrue(EntityPredicates.displayNameSatisfies(StringPredicates.matchesRegex("myd.*me")).apply(entity));
@@ -94,7 +134,7 @@ public class EntityPredicatesTest extends 
BrooklynAppUnitTestSupport {
         assertFalse(EntityPredicates.isChildOf(entity).apply(entity));
         assertFalse(EntityPredicates.isChildOf(entity).apply(app));
     }
-    
+
     @Test
     public void testIsMemberOf() throws Exception {
         group.addMember(entity);
@@ -102,14 +142,14 @@ public class EntityPredicatesTest extends 
BrooklynAppUnitTestSupport {
         assertFalse(EntityPredicates.isMemberOf(group).apply(app));
         assertFalse(EntityPredicates.isMemberOf(group).apply(group));
     }
-    
+
     @Test
     public void testManaged() throws Exception {
         assertTrue(EntityPredicates.isManaged().apply(entity));
         Entities.unmanage(entity);
         assertFalse(EntityPredicates.isManaged().apply(entity));
     }
-    
+
     @Test
     public void testWithLocation() throws Exception {
         entity.addLocations(ImmutableList.of(loc));

Reply via email to