You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2022/08/22 10:01:01 UTC

[brooklyn-server] branch master updated: add 'not' predicate keyword

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 <al...@cloudsoft.io>
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);