You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by al...@apache.org on 2014/07/18 12:00:40 UTC

[04/10] git commit: Split spec creation in separate steps to allow re-use.

Split spec creation in separate steps to allow re-use.


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

Branch: refs/heads/master
Commit: b982e6fea941b499b21736f12bddaa55437f3e38
Parents: 918a268
Author: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Authored: Wed Jul 16 11:22:16 2014 +0300
Committer: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Committed: Wed Jul 16 13:20:22 2014 +0300

----------------------------------------------------------------------
 .../creation/BrooklynComponentTemplateResolver.java  | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/b982e6fe/usage/camp/src/main/java/io/brooklyn/camp/brooklyn/spi/creation/BrooklynComponentTemplateResolver.java
----------------------------------------------------------------------
diff --git a/usage/camp/src/main/java/io/brooklyn/camp/brooklyn/spi/creation/BrooklynComponentTemplateResolver.java b/usage/camp/src/main/java/io/brooklyn/camp/brooklyn/spi/creation/BrooklynComponentTemplateResolver.java
index 7bd71f6..9d3f43c 100644
--- a/usage/camp/src/main/java/io/brooklyn/camp/brooklyn/spi/creation/BrooklynComponentTemplateResolver.java
+++ b/usage/camp/src/main/java/io/brooklyn/camp/brooklyn/spi/creation/BrooklynComponentTemplateResolver.java
@@ -218,11 +218,18 @@ public class BrooklynComponentTemplateResolver {
     }
 
     /** resolves the spec, updating the loader if a catalog item is loaded */
-    @SuppressWarnings("unchecked")
     public <T extends Entity> EntitySpec<T> resolveSpec() {
         if (alreadyBuilt.getAndSet(true))
             throw new IllegalStateException("Spec can only be used once: "+this);
+        
+        EntitySpec<T> spec = createSpec();
+        populateSpec(spec);
+        
+        return spec;
+    }
 
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    private <T extends Entity> EntitySpec<T> createSpec() {
         // ensure loader is updated
         getCatalogItem();
         
@@ -238,7 +245,11 @@ public class BrooklynComponentTemplateResolver {
             List<Class<?>> additionalInterfaceClazzes = Reflections.getAllInterfaces(type);
             spec = EntitySpec.create(interfaceclazz).impl(type).additionalInterfaces(additionalInterfaceClazzes);
         }
+        return spec;
+    }
 
+    //called from BrooklynAssemblyTemplateInstantiator as well
+    protected <T extends Entity> void populateSpec(EntitySpec<T> spec) {
         String name, templateId=null, planId=null;
         if (template.isPresent()) {
             name = template.get().getName();
@@ -262,8 +273,6 @@ public class BrooklynComponentTemplateResolver {
             spec.locations(childLocations);
         
         decorateSpec(spec);
-        
-        return spec;
     }
 
     protected <T extends Entity> void decorateSpec(EntitySpec<T> spec) {