Repository: brooklyn-server
Updated Branches:
  refs/heads/master 30573a579 -> 33421d724


Propagate the catalog loading list


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

Branch: refs/heads/master
Commit: 2330de42c92dc725605f50be3ec445121d38d961
Parents: 48abd26
Author: Svetoslav Neykov <[email protected]>
Authored: Tue Jul 5 12:37:13 2016 +0300
Committer: Svetoslav Neykov <[email protected]>
Committed: Wed Jul 6 14:58:48 2016 +0300

----------------------------------------------------------------------
 .../spi/creation/CampInternalUtils.java         |  5 +++-
 .../brooklyn/catalog/CatalogYamlEntityTest.java | 24 ++++++++++++++++++++
 2 files changed, 28 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2330de42/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampInternalUtils.java
----------------------------------------------------------------------
diff --git 
a/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampInternalUtils.java
 
b/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampInternalUtils.java
index c2c6c40..8c9bf63 100644
--- 
a/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampInternalUtils.java
+++ 
b/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampInternalUtils.java
@@ -37,6 +37,7 @@ import org.apache.brooklyn.api.objs.SpecParameter;
 import org.apache.brooklyn.api.policy.Policy;
 import org.apache.brooklyn.api.policy.PolicySpec;
 import org.apache.brooklyn.api.typereg.RegisteredType;
+import org.apache.brooklyn.api.typereg.RegisteredTypeLoadingContext;
 import org.apache.brooklyn.camp.CampPlatform;
 import org.apache.brooklyn.camp.brooklyn.BrooklynCampConstants;
 import org.apache.brooklyn.camp.brooklyn.BrooklynCampReservedKeys;
@@ -47,6 +48,7 @@ import org.apache.brooklyn.camp.spi.pdp.DeploymentPlan;
 import org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog;
 import 
org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog.BrooklynLoaderTracker;
 import org.apache.brooklyn.core.objs.BasicSpecParameter;
+import org.apache.brooklyn.core.typereg.RegisteredTypeLoadingContexts;
 import org.apache.brooklyn.entity.stock.BasicApplicationImpl;
 import org.apache.brooklyn.util.collections.MutableMap;
 import org.apache.brooklyn.util.exceptions.Exceptions;
@@ -208,7 +210,8 @@ class CampInternalUtils {
         PolicySpec<? extends Policy> spec;
         RegisteredType item = 
loader.getManagementContext().getTypeRegistry().get(versionedId);
         if (item != null && 
!encounteredCatalogTypes.contains(item.getSymbolicName())) {
-            return 
loader.getManagementContext().getTypeRegistry().createSpec(item, null, 
PolicySpec.class);
+            RegisteredTypeLoadingContext context = 
RegisteredTypeLoadingContexts.alreadyEncountered(encounteredCatalogTypes);
+            return 
loader.getManagementContext().getTypeRegistry().createSpec(item, context, 
PolicySpec.class);
         } else {
             // TODO-type-registry pass the loader in to the above, and allow 
it to load with the loader
             spec = PolicySpec.create(loader.loadClass(versionedId, 
Policy.class));

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2330de42/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlEntityTest.java
----------------------------------------------------------------------
diff --git 
a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlEntityTest.java
 
b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlEntityTest.java
index 484c160..60eed64 100644
--- 
a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlEntityTest.java
+++ 
b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlEntityTest.java
@@ -868,6 +868,30 @@ public class CatalogYamlEntityTest extends 
AbstractYamlTest {
         mgmt().getCatalog().deleteCatalogItem(id, version);
     }
 
+    @Test
+    public void testCreateOsgiSpecFromRegistry() throws Exception {
+        
TestResourceUnavailableException.throwIfResourceUnavailable(getClass(), 
OsgiStandaloneTest.BROOKLYN_TEST_OSGI_ENTITIES_PATH);
+
+        String symbolicName = "my.catalog.app.id.registry.spec";
+        addCatalogItems(
+            "brooklyn.catalog:",
+            "  id: " + symbolicName,
+            "  name: My Catalog App",
+            "  description: My description",
+            "  icon_url: classpath://path/to/myicon.jpg",
+            "  version: " + TEST_VERSION,
+            "  libraries:",
+            "  - url: " + OsgiStandaloneTest.BROOKLYN_TEST_OSGI_ENTITIES_URL,
+            "  item: " + SIMPLE_ENTITY_TYPE);
+
+        BrooklynTypeRegistry registry = mgmt().getTypeRegistry();
+        RegisteredType item = registry.get(symbolicName, TEST_VERSION);
+        AbstractBrooklynObjectSpec<?, ?> spec = registry.createSpec(item, 
null, null);
+        assertEquals(spec.getCatalogItemId(), ver(symbolicName));
+
+        deleteCatalogEntity(symbolicName);
+    }
+
     private void registerAndLaunchAndAssertSimpleEntity(String symbolicName, 
String serviceType) throws Exception {
         addCatalogOSGiEntity(symbolicName, serviceType);
         String yaml = "name: simple-app-yaml\n" +

Reply via email to