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