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" +
