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/09 23:47:02 UTC

[49/50] git commit: Support catalog type + java type name matching

Support catalog type + java type name matching


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

Branch: refs/heads/master
Commit: 6d0148606991f303f6a1bc37b45ade109c301a22
Parents: 69f5e8d
Author: Aled Sage <al...@gmail.com>
Authored: Wed Jul 9 22:04:34 2014 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Wed Jul 9 22:34:48 2014 +0100

----------------------------------------------------------------------
 .../BrooklynAssemblyTemplateInstantiator.java      | 17 ++++++++++-------
 .../rest/resources/CatalogBundleResourceTest.java  |  5 +++--
 2 files changed, 13 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/6d014860/usage/camp/src/main/java/io/brooklyn/camp/brooklyn/spi/creation/BrooklynAssemblyTemplateInstantiator.java
----------------------------------------------------------------------
diff --git a/usage/camp/src/main/java/io/brooklyn/camp/brooklyn/spi/creation/BrooklynAssemblyTemplateInstantiator.java b/usage/camp/src/main/java/io/brooklyn/camp/brooklyn/spi/creation/BrooklynAssemblyTemplateInstantiator.java
index 7b640c5..1921fb1 100644
--- a/usage/camp/src/main/java/io/brooklyn/camp/brooklyn/spi/creation/BrooklynAssemblyTemplateInstantiator.java
+++ b/usage/camp/src/main/java/io/brooklyn/camp/brooklyn/spi/creation/BrooklynAssemblyTemplateInstantiator.java
@@ -244,19 +244,22 @@ public class BrooklynAssemblyTemplateInstantiator implements AssemblyTemplateSpe
 
             String catalogIdOrJavaType = entityResolver.getCatalogIdOrJavaType();
             CatalogItem<Entity, EntitySpec<?>> item = entityResolver.getCatalogItem();
-            
+
+            boolean firstOccurrence = encounteredCatalogTypes.add(catalogIdOrJavaType);
+            boolean recursiveButTryJava = !firstOccurrence;
+                         
             if (log.isTraceEnabled()) log.trace("Building CAMP template services: type="+catalogIdOrJavaType+"; item="+item+"; loader="+loader+"; template="+template+"; encounteredCatalogTypes="+encounteredCatalogTypes);
 
             EntitySpec<?> spec;
             if (item == null || item.getJavaType() != null || entityResolver.isJavaTypePrefix()) {
                 spec = entityResolver.resolveSpec();
-            } else {
-                boolean firstOccurrence = encounteredCatalogTypes.add(catalogIdOrJavaType);
-                if (firstOccurrence) {
-                    spec = resolveCatalogYamlReferenceSpec(platform, mgmt, item, encounteredCatalogTypes);
-                } else {
-                    throw new IllegalStateException("Recursive reference to " + catalogIdOrJavaType);
+            } else if (recursiveButTryJava) {
+                if (entityResolver.tryLoadEntityClass().isAbsent()) {
+                    throw new IllegalStateException("Recursive reference to " + catalogIdOrJavaType + " (and cannot be resolved as a Java type)");
                 }
+                spec = entityResolver.resolveSpec();
+            } else {
+                spec = resolveCatalogYamlReferenceSpec(platform, mgmt, item, encounteredCatalogTypes);
             }
 
             BrooklynClassLoadingContext newLoader = entityResolver.loader;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/6d014860/usage/rest-server/src/test/java/brooklyn/rest/resources/CatalogBundleResourceTest.java
----------------------------------------------------------------------
diff --git a/usage/rest-server/src/test/java/brooklyn/rest/resources/CatalogBundleResourceTest.java b/usage/rest-server/src/test/java/brooklyn/rest/resources/CatalogBundleResourceTest.java
index ba6e3ea..f9910dc 100644
--- a/usage/rest-server/src/test/java/brooklyn/rest/resources/CatalogBundleResourceTest.java
+++ b/usage/rest-server/src/test/java/brooklyn/rest/resources/CatalogBundleResourceTest.java
@@ -69,9 +69,10 @@ public class CatalogBundleResourceTest extends BrooklynRestResourceTest {
     }
 
     @Test
-    public void testLaunchApplicationLoopWithJavaTypeNameInYamlFails() throws Exception {
+    public void testLaunchApplicationLoopWithJavaTypeNameInYaml() throws Exception {
         String registeredTypeName = SIMPLE_ENTITY_TYPE;
-        registerAndLaunchFailsWithRecursionError(registeredTypeName, registeredTypeName);
+        String serviceName = SIMPLE_ENTITY_TYPE;
+        registerAndLaunchAndAssertSimpleEntity(registeredTypeName, serviceName);
     }
 
     @Test