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

commit 4364509cd48e4fc01c6c1418974260116581c4ac
Author: zan-mateusz <[email protected]>
AuthorDate: Fri Oct 29 15:24:46 2021 +0100

    Allowing to define the reconfigurable property using a string or boolean - 
test added
---
 .../org/apache/brooklyn/core/objs/BasicSpecParameter.java     |  6 ++++--
 .../brooklyn/core/objs/BasicSpecParameterFromListTest.java    | 11 +++++++++++
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git 
a/core/src/main/java/org/apache/brooklyn/core/objs/BasicSpecParameter.java 
b/core/src/main/java/org/apache/brooklyn/core/objs/BasicSpecParameter.java
index 9bdc297..f38a1df 100644
--- a/core/src/main/java/org/apache/brooklyn/core/objs/BasicSpecParameter.java
+++ b/core/src/main/java/org/apache/brooklyn/core/objs/BasicSpecParameter.java
@@ -52,6 +52,7 @@ import org.apache.brooklyn.util.collections.MutableList;
 import org.apache.brooklyn.util.collections.MutableMap;
 import org.apache.brooklyn.util.collections.MutableSet;
 import org.apache.brooklyn.util.core.flags.BrooklynTypeNameResolution;
+import org.apache.brooklyn.util.core.flags.TypeCoercions;
 import org.apache.brooklyn.util.guava.Maybe;
 import org.apache.brooklyn.util.guava.TypeTokens;
 import org.slf4j.Logger;
@@ -248,7 +249,8 @@ public class BasicSpecParameter<T> implements 
SpecParameter<T>{
             boolean hasTypeInheritance = 
inputDef.containsKey("inheritance.type");
             ConfigInheritance typeInheritance = 
parseInheritance(inputDef.get("inheritance.type"), loader);
 
-            boolean isReconfigurable = inputDef.containsKey("reconfigurable") 
&& inputDef.get("reconfigurable").equals(true);
+            Boolean isReconfigurable = 
TypeCoercions.coerce(inputDef.get("reconfigurable"), Boolean.class);
+
             if (name == null) {
                 throw new IllegalArgumentException("'name' value missing from 
input definition " + obj + " but is required. Check for typos.");
             }
@@ -269,7 +271,7 @@ public class BasicSpecParameter<T> implements 
SpecParameter<T>{
                     .constraint(constraint)
                     .runtimeInheritance(runtimeInheritance)
                     .typeInheritance(typeInheritance)
-                    .reconfigurable(isReconfigurable);
+                    .reconfigurable((isReconfigurable!=null) ? 
isReconfigurable : false);
 
             if (TypeTokens.equalsRaw(PortRange.class, typeToken)) {
                 sensorType = new PortAttributeSensorAndConfigKey(builder);
diff --git 
a/core/src/test/java/org/apache/brooklyn/core/objs/BasicSpecParameterFromListTest.java
 
b/core/src/test/java/org/apache/brooklyn/core/objs/BasicSpecParameterFromListTest.java
index 1a846bb..fc6da56 100644
--- 
a/core/src/test/java/org/apache/brooklyn/core/objs/BasicSpecParameterFromListTest.java
+++ 
b/core/src/test/java/org/apache/brooklyn/core/objs/BasicSpecParameterFromListTest.java
@@ -198,6 +198,17 @@ public class BasicSpecParameterFromListTest extends 
BrooklynMgmtUnitTestSupport
         assertFalse(type.isReconfigurable());
     }
 
+    @Test
+    public void testReconfigurableCoercedFromString() {
+        String name = "reconfigurable coerced from string";
+        SpecParameter<?> input = parseSpecParameterDefinition(ImmutableMap.of(
+                "name", name,
+                "reconfigurable","true"));
+
+        ConfigKey<?> type = input.getConfigKey();
+        assertTrue(type.isReconfigurable());
+    }
+
     private SpecParameter<?> parseSpecParameterDefinition(Object def) {
         BrooklynClassLoadingContext loader = 
JavaBrooklynClassLoadingContext.create(mgmt);
         List<SpecParameter<?>> inputs = 
BasicSpecParameter.parseParameterDefinitionList(ImmutableList.of(def), null, 
loader);

Reply via email to