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);