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

Reply via email to