This is an automated email from the ASF dual-hosted git repository.

heneveld pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/brooklyn-server.git


The following commit(s) were added to refs/heads/master by this push:
     new d26428f56f add 'not' predicate keyword
d26428f56f is described below

commit d26428f56fab17184a8675f2ad53f16be4ff5a82
Author: Alex Heneveld <[email protected]>
AuthorDate: Mon Aug 22 11:00:52 2022 +0100

    add 'not' predicate keyword
---
 .../brooklyn/util/core/predicates/DslPredicates.java       |  2 ++
 .../brooklyn/util/core/predicates/DslPredicateTest.java    | 14 ++++++++++++++
 2 files changed, 16 insertions(+)

diff --git 
a/core/src/main/java/org/apache/brooklyn/util/core/predicates/DslPredicates.java
 
b/core/src/main/java/org/apache/brooklyn/util/core/predicates/DslPredicates.java
index 64bcf08117..369676a7a1 100644
--- 
a/core/src/main/java/org/apache/brooklyn/util/core/predicates/DslPredicates.java
+++ 
b/core/src/main/java/org/apache/brooklyn/util/core/predicates/DslPredicates.java
@@ -192,6 +192,7 @@ public class DslPredicates {
 
         /** nested check */
         public DslPredicate check;
+        public DslPredicate not;
         public List<DslPredicate> any;
         public List<DslPredicate> all;
 
@@ -396,6 +397,7 @@ public class DslPredicates {
                 return nestedPredicateCheck(test, Maybe.of(computedSize));
             });
 
+            checker.checkTest(not, test -> !nestedPredicateCheck(test, 
result));
             checker.checkTest(check, test -> nestedPredicateCheck(test, 
result));
             checker.checkTest(any, test -> test.stream().anyMatch(p -> 
nestedPredicateCheck(p, result)));
             checker.checkTest(all, test -> test.stream().allMatch(p -> 
nestedPredicateCheck(p, result)));
diff --git 
a/core/src/test/java/org/apache/brooklyn/util/core/predicates/DslPredicateTest.java
 
b/core/src/test/java/org/apache/brooklyn/util/core/predicates/DslPredicateTest.java
index 957c3e23cf..00440c2076 100644
--- 
a/core/src/test/java/org/apache/brooklyn/util/core/predicates/DslPredicateTest.java
+++ 
b/core/src/test/java/org/apache/brooklyn/util/core/predicates/DslPredicateTest.java
@@ -272,6 +272,20 @@ public class DslPredicateTest extends 
BrooklynMgmtUnitTestSupport {
         Asserts.assertFalse(p.test(MutableList.of("Astrid", 
MutableMap.of("name", "Carver"))));
     }
 
+    @Test
+    public void testNotAndNotEmpty() {
+        DslPredicates.DslPredicate p = 
TypeCoercions.coerce(MutableMap.of("not", "foo"), 
DslPredicates.DslPredicate.class);
+        Asserts.assertTrue(p.test("bar"));
+        Asserts.assertTrue(p.test(null));
+        Asserts.assertFalse(p.test("foo"));
+
+        p = TypeCoercions.coerce(MutableMap.of("not", MutableMap.of("size", 
"0")), DslPredicates.DslPredicate.class);
+        Asserts.assertTrue(p.test(MutableMap.of("id", 123, "name", "Bob")));
+        Asserts.assertFalse(p.test(MutableMap.of()));
+        Asserts.assertTrue(p.test(MutableList.of("Astrid", "Bob")));
+        Asserts.assertFalse(p.test(MutableList.of()));
+    }
+
     @Test
     public void testJsonpath() {
         DslPredicates.DslPredicate p = 
TypeCoercions.coerce(MutableMap.of("jsonpath", "name", "regex", "[Bb].*"), 
DslPredicates.DslPredicate.class);

Reply via email to