out.append(currentIndentation+tab+tab+"catalogItemId = "+e.getCatalogItemId()+"\n"); final List<String> searchPath = e.getCatalogItemIdSearchPath(); if (!searchPath.isEmpty()) { out.append(currentIndentation + tab + tab + "searchPath = [");
public static void setCatalogItemIdOnAddition(Entity entity, BrooklynObject itemBeingAdded) { if (entity.getCatalogItemId()!=null) { if (itemBeingAdded.getCatalogItemId()==null) { if (log.isDebugEnabled()) BrooklynLogging.log(log, BrooklynLogging.levelDebugOrTraceIfReadOnly(entity), "Catalog item addition: "+entity+" from "+entity.getCatalogItemId()+" applying its catalog item ID to "+itemBeingAdded); final BrooklynObjectInternal addInternal = (BrooklynObjectInternal) itemBeingAdded; addInternal.setCatalogItemIdAndSearchPath(entity.getCatalogItemId(), entity.getCatalogItemIdSearchPath()); } else { if (!itemBeingAdded.getCatalogItemId().equals(entity.getCatalogItemId())) { // not a problem, but something to watch out for log.debug("Cross-catalog item detected: "+entity+" from "+entity.getCatalogItemId()+" has "+itemBeingAdded+" from "+itemBeingAdded.getCatalogItemId()); } } } else if (itemBeingAdded.getCatalogItemId()!=null) { if (log.isDebugEnabled()) BrooklynLogging.log(log, BrooklynLogging.levelDebugOrTraceIfReadOnly(entity), "Catalog item addition: "+entity+" without catalog item ID has "+itemBeingAdded+" from "+itemBeingAdded.getCatalogItemId()); } }
@Test public void testCatalogItemIdInReferencedItems() throws Exception { String symbolicNameInner = "my.catalog.app.id.inner"; String symbolicNameOuter = "my.catalog.app.id.outer"; addCatalogItems( "brooklyn.catalog:", " version: " + TEST_VERSION, " items:", " - id: " + symbolicNameInner, " item: " + TestEntity.class.getName(), " - id: " + symbolicNameOuter, " item: " + symbolicNameInner); String yaml = "name: " + symbolicNameOuter + "\n" + "services: \n" + " - serviceType: "+ver(symbolicNameOuter); Entity app = createAndStartApplication(yaml); Entity entity = app.getChildren().iterator().next(); assertEquals(entity.getCatalogItemId(), ver(symbolicNameOuter)); assertEquals(entity.getCatalogItemIdSearchPath(), ImmutableList.of(ver(symbolicNameInner)), "should have just " + symbolicNameInner + " in search path"); deleteCatalogEntity(symbolicNameInner); deleteCatalogEntity(symbolicNameOuter); }
@Test public void testCatalogItemIdInReferencedItems() throws Exception { TestResourceUnavailableException.throwIfResourceUnavailable(getClass(), OsgiStandaloneTest.BROOKLYN_TEST_OSGI_ENTITIES_PATH); String symbolicNameInner = "my.catalog.app.id.inner"; String symbolicNameOuter = "my.catalog.app.id.outer"; addCatalogItems( "brooklyn.catalog:", " version: " + TEST_VERSION, " items:", " - id: " + symbolicNameInner, " name: My Catalog App", " description: My description", " icon_url: classpath://path/to/myicon.jpg", " brooklyn.libraries:", " - url: " + OsgiStandaloneTest.BROOKLYN_TEST_OSGI_ENTITIES_URL, " item: " + SIMPLE_ENTITY_TYPE, " - id: " + symbolicNameOuter, " item: " + symbolicNameInner); String yaml = "name: " + symbolicNameOuter + "\n" + "services: \n" + " - serviceType: " + ver(symbolicNameOuter); Entity app = createAndStartApplication(yaml); Entity entity = app.getChildren().iterator().next(); assertEquals(entity.getCatalogItemId(), ver(symbolicNameOuter)); assertEquals(entity.getCatalogItemIdSearchPath(), ImmutableList.of(ver(symbolicNameInner)), "should have just " + symbolicNameInner + " in search path"); deleteCatalogEntity(symbolicNameInner); deleteCatalogEntity(symbolicNameOuter); } @Test
entity.getCatalogItemIdSearchPath()) ); cls = dispatcher.tryLoadFrom(loader, className); if (cls.isPresent()) {