accept toStrings in/as json
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/5fec2756 Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/5fec2756 Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/5fec2756 Branch: refs/heads/master Commit: 5fec2756f61b6bba1f37d96a04c07ef9229ec4de Parents: 0d6f572 Author: Alex Heneveld <alex.henev...@cloudsoftcorp.com> Authored: Fri Sep 21 12:32:55 2018 +0100 Committer: Alex Heneveld <alex.henev...@cloudsoftcorp.com> Committed: Fri Sep 21 12:32:55 2018 +0100 ---------------------------------------------------------------------- .../brooklyn/core/objs/ConstraintSerialization.java | 6 ++++++ .../brooklyn/core/objs/ConstraintSerializationTest.java | 12 ++++++++++++ 2 files changed, 18 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/5fec2756/core/src/main/java/org/apache/brooklyn/core/objs/ConstraintSerialization.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/brooklyn/core/objs/ConstraintSerialization.java b/core/src/main/java/org/apache/brooklyn/core/objs/ConstraintSerialization.java index 57258bc..6844a72 100644 --- a/core/src/main/java/org/apache/brooklyn/core/objs/ConstraintSerialization.java +++ b/core/src/main/java/org/apache/brooklyn/core/objs/ConstraintSerialization.java @@ -314,6 +314,12 @@ public class ConstraintSerialization { List<Object> args; if (o instanceof String) { key = (String)o; + if (key.indexOf("(")>=0) { + // it wasn't json; delegate to the parser again + StringConstraintParser parser = StringConstraintParser.forConstraint(this, key); + if (!parser.parse()) throw new IllegalStateException("cannot match: "+key); + return toPredicateFromJson(parser.result); + } args = MutableList.of(); } else if (o instanceof Map) { if (((Map<?,?>)o).size()!=1) { http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/5fec2756/core/src/test/java/org/apache/brooklyn/core/objs/ConstraintSerializationTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/brooklyn/core/objs/ConstraintSerializationTest.java b/core/src/test/java/org/apache/brooklyn/core/objs/ConstraintSerializationTest.java index 2065044..539fc87 100644 --- a/core/src/test/java/org/apache/brooklyn/core/objs/ConstraintSerializationTest.java +++ b/core/src/test/java/org/apache/brooklyn/core/objs/ConstraintSerializationTest.java @@ -67,6 +67,18 @@ public class ConstraintSerializationTest extends BrooklynMgmtUnitTestSupport { } @Test + public void testAcceptsMap() { + Predicate<String> p = StringPredicates.matchesGlob("???*"); + Assert.assertEquals(ConstraintSerialization.INSTANCE.toPredicateFromJson(MutableMap.of("matchesGlob", "???*")).toString(), p.toString()); + } + + @Test + public void testAcceptsString() { + Predicate<String> p = StringPredicates.matchesGlob("???*"); + Assert.assertEquals(ConstraintSerialization.INSTANCE.toPredicateFromJson("matchesGlob(\"???*\")").toString(), p.toString()); + } + + @Test public void testAltPred() { Predicate<?> p = Predicates.notNull(); Assert.assertEquals(ConstraintSerialization.INSTANCE.toJsonList(p),