Repository: brooklyn-server
Updated Branches:
  refs/heads/master 68babc6f2 -> ed25e5e39


Fix BrooklynYamlTypeInstantiatorTest.testLoadPolicySpecWithBrooklynConfig

Previously it relied on ServiceRestarter to have a constructor that 
took a Map or ConfigBag. Now we check if the type implements
Configurable, to handle no-arg constructors as well.

Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/260c80f9
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/260c80f9
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/260c80f9

Branch: refs/heads/master
Commit: 260c80f95e6a62c5526d81b1f0db0cc3352d3434
Parents: 0fac0d6
Author: Aled Sage <[email protected]>
Authored: Sun Jun 11 15:52:29 2017 +0100
Committer: Aled Sage <[email protected]>
Committed: Sun Jun 11 16:06:46 2017 +0100

----------------------------------------------------------------------
 .../brooklyn/spi/creation/BrooklynYamlTypeInstantiator.java | 9 +++++++++
 1 file changed, 9 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/260c80f9/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynYamlTypeInstantiator.java
----------------------------------------------------------------------
diff --git 
a/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynYamlTypeInstantiator.java
 
b/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynYamlTypeInstantiator.java
index 5852139..aa1dfe9 100644
--- 
a/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynYamlTypeInstantiator.java
+++ 
b/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynYamlTypeInstantiator.java
@@ -24,7 +24,9 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
 import org.apache.brooklyn.api.mgmt.classloading.BrooklynClassLoadingContext;
+import org.apache.brooklyn.api.objs.Configurable;
 import org.apache.brooklyn.camp.brooklyn.BrooklynCampReservedKeys;
+import 
org.apache.brooklyn.core.objs.BrooklynObjectInternal.ConfigurationSupportInternal;
 import org.apache.brooklyn.util.collections.MutableMap;
 import org.apache.brooklyn.util.core.config.ConfigBag;
 import org.apache.brooklyn.util.exceptions.Exceptions;
@@ -141,6 +143,13 @@ public abstract class BrooklynYamlTypeInstantiator {
                 result = Reflections.invokeConstructorFromArgs(type);
                 if (result.isPresent()) 
                     return result.get();
+            } else if (Configurable.class.isAssignableFrom(type)) {
+                result = Reflections.invokeConstructorFromArgs(type);
+                if (result.isPresent()) {
+                    ConfigurationSupportInternal configSupport = 
(ConfigurationSupportInternal) ((Configurable)result.get()).config();
+                    configSupport.putAll(cfg);
+                    return result.get();
+                }
             }
             
             throw new IllegalStateException("No known mechanism for 
constructing type "+type+" in "+factory.contextForLogging);

Reply via email to