http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/50ebfafb/usage/rest-server/src/main/java/org/apache/brooklyn/rest/transform/EntityTransformer.java ---------------------------------------------------------------------- diff --git a/usage/rest-server/src/main/java/org/apache/brooklyn/rest/transform/EntityTransformer.java b/usage/rest-server/src/main/java/org/apache/brooklyn/rest/transform/EntityTransformer.java index 7bd36f6..4e6e15b 100644 --- a/usage/rest-server/src/main/java/org/apache/brooklyn/rest/transform/EntityTransformer.java +++ b/usage/rest-server/src/main/java/org/apache/brooklyn/rest/transform/EntityTransformer.java @@ -28,7 +28,6 @@ import java.util.Map; import org.apache.brooklyn.api.catalog.CatalogConfig; import org.apache.brooklyn.api.entity.Application; import org.apache.brooklyn.api.entity.Entity; -import org.apache.brooklyn.api.entity.EntityLocal; import org.apache.brooklyn.config.ConfigKey; import org.apache.brooklyn.core.config.render.RendererHints; import org.apache.brooklyn.rest.domain.EntityConfigSummary; @@ -104,7 +103,7 @@ public class EntityTransformer { /** generates a representation for a given config key, * with label inferred from annoation in the entity class, * and links pointing to the entity and the applicaiton */ - public static EntityConfigSummary entityConfigSummary(EntityLocal entity, ConfigKey<?> config) { + public static EntityConfigSummary entityConfigSummary(Entity entity, ConfigKey<?> config) { /* * following code nearly there to get the @CatalogConfig annotation * in the class and use that to populate a label
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/50ebfafb/usage/rest-server/src/main/java/org/apache/brooklyn/rest/transform/PolicyTransformer.java ---------------------------------------------------------------------- diff --git a/usage/rest-server/src/main/java/org/apache/brooklyn/rest/transform/PolicyTransformer.java b/usage/rest-server/src/main/java/org/apache/brooklyn/rest/transform/PolicyTransformer.java index 39bc783..b29e010 100644 --- a/usage/rest-server/src/main/java/org/apache/brooklyn/rest/transform/PolicyTransformer.java +++ b/usage/rest-server/src/main/java/org/apache/brooklyn/rest/transform/PolicyTransformer.java @@ -22,7 +22,6 @@ import java.net.URI; import java.util.Map; import org.apache.brooklyn.api.entity.Entity; -import org.apache.brooklyn.api.entity.EntityLocal; import org.apache.brooklyn.api.policy.Policy; import org.apache.brooklyn.config.ConfigKey; import org.apache.brooklyn.core.policy.Policies; @@ -56,7 +55,7 @@ public class PolicyTransformer { return new PolicySummary(policy.getId(), policy.getDisplayName(), policy.getCatalogItemId(), ApplicationTransformer.statusFromLifecycle(Policies.getPolicyStatus(policy)), links); } - public static PolicyConfigSummary policyConfigSummary(BrooklynRestResourceUtils utils, ApplicationSummary application, EntityLocal entity, Policy policy, ConfigKey<?> config) { + public static PolicyConfigSummary policyConfigSummary(BrooklynRestResourceUtils utils, ApplicationSummary application, Entity entity, Policy policy, ConfigKey<?> config) { PolicyConfigSummary summary = policyConfigSummary(utils, entity, policy, config); // TODO // if (!entity.getApplicationId().equals(application.getInstance().getId())) @@ -64,7 +63,7 @@ public class PolicyTransformer { return summary; } - public static PolicyConfigSummary policyConfigSummary(BrooklynRestResourceUtils utils, EntityLocal entity, Policy policy, ConfigKey<?> config) { + public static PolicyConfigSummary policyConfigSummary(BrooklynRestResourceUtils utils, Entity entity, Policy policy, ConfigKey<?> config) { String applicationUri = "/v1/applications/" + entity.getApplicationId(); String entityUri = applicationUri + "/entities/" + entity.getId(); String policyUri = entityUri + "/policies/" + policy.getId(); http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/50ebfafb/usage/rest-server/src/main/java/org/apache/brooklyn/rest/util/BrooklynRestResourceUtils.java ---------------------------------------------------------------------- diff --git a/usage/rest-server/src/main/java/org/apache/brooklyn/rest/util/BrooklynRestResourceUtils.java b/usage/rest-server/src/main/java/org/apache/brooklyn/rest/util/BrooklynRestResourceUtils.java index f30c7ec..2d9054a 100644 --- a/usage/rest-server/src/main/java/org/apache/brooklyn/rest/util/BrooklynRestResourceUtils.java +++ b/usage/rest-server/src/main/java/org/apache/brooklyn/rest/util/BrooklynRestResourceUtils.java @@ -23,6 +23,7 @@ import static org.apache.brooklyn.rest.util.WebResourceUtils.notFound; import java.lang.reflect.Constructor; import java.util.ArrayList; +import java.util.Collection; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -36,26 +37,28 @@ import org.apache.brooklyn.api.catalog.BrooklynCatalog; import org.apache.brooklyn.api.catalog.CatalogItem; import org.apache.brooklyn.api.entity.Application; import org.apache.brooklyn.api.entity.Entity; -import org.apache.brooklyn.api.entity.EntityLocal; import org.apache.brooklyn.api.location.Location; import org.apache.brooklyn.api.location.LocationRegistry; import org.apache.brooklyn.api.mgmt.ManagementContext; import org.apache.brooklyn.api.mgmt.Task; import org.apache.brooklyn.api.policy.Policy; +import org.apache.brooklyn.api.typereg.RegisteredType; import org.apache.brooklyn.camp.brooklyn.BrooklynCampConstants; import org.apache.brooklyn.camp.brooklyn.spi.dsl.methods.DslComponent; import org.apache.brooklyn.camp.brooklyn.spi.dsl.methods.DslComponent.Scope; import org.apache.brooklyn.config.ConfigKey; +import org.apache.brooklyn.core.catalog.CatalogPredicates; +import org.apache.brooklyn.core.catalog.internal.CatalogItemComparator; import org.apache.brooklyn.core.catalog.internal.CatalogUtils; import org.apache.brooklyn.core.entity.Attributes; import org.apache.brooklyn.core.entity.Entities; import org.apache.brooklyn.core.entity.EntityInternal; -import org.apache.brooklyn.core.entity.factory.ApplicationBuilder; import org.apache.brooklyn.core.entity.trait.Startable; import org.apache.brooklyn.core.mgmt.BrooklynTaskTags; import org.apache.brooklyn.core.mgmt.entitlement.Entitlements; import org.apache.brooklyn.core.mgmt.entitlement.Entitlements.StringAndArgument; import org.apache.brooklyn.core.objs.BrooklynTypes; +import org.apache.brooklyn.core.typereg.RegisteredTypes; import org.apache.brooklyn.enricher.stock.Enrichers; import org.apache.brooklyn.entity.stock.BasicApplication; import org.apache.brooklyn.rest.domain.ApplicationSpec; @@ -73,7 +76,9 @@ import org.slf4j.LoggerFactory; import com.google.common.base.Function; import com.google.common.base.Preconditions; import com.google.common.base.Predicate; +import com.google.common.base.Predicates; import com.google.common.collect.ImmutableSet; +import com.google.common.collect.ImmutableSortedSet; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import com.google.common.collect.Maps; @@ -137,10 +142,10 @@ public class BrooklynRestResourceUtils { * in which case names will be searched recursively (and the application is required). * * @throws 404 or 412 (unless input is null in which case output is null) */ - public EntityLocal getEntity(String application, String entity) { + public Entity getEntity(String application, String entity) { if (entity==null) return null; Application app = application!=null ? getApplication(application) : null; - EntityLocal e = (EntityLocal) mgmt.getEntityManager().getEntity(entity); + Entity e = (Entity) mgmt.getEntityManager().getEntity(entity); if (e!=null) { if (!Entitlements.isEntitled(mgmt.getEntitlementManager(), Entitlements.SEE_ENTITY, e)) { @@ -195,11 +200,11 @@ public class BrooklynRestResourceUtils { /** walks the hierarchy (depth-first) at root (often an Application) looking for * an entity matching the given ID or name; returns the first such entity, or null if none found **/ - public EntityLocal searchForEntityNamed(Entity root, String entity) { - if (root.getId().equals(entity) || entity.equals(root.getDisplayName())) return (EntityLocal) root; + public Entity searchForEntityNamed(Entity root, String entity) { + if (root.getId().equals(entity) || entity.equals(root.getDisplayName())) return (Entity) root; for (Entity child: root.getChildren()) { Entity result = searchForEntityNamed(child, entity); - if (result!=null) return (EntityLocal) result; + if (result!=null) return (Entity) result; } return null; } @@ -208,14 +213,16 @@ public class BrooklynRestResourceUtils { String catalogItemId; Class<? extends Entity> clazz; - @SuppressWarnings("unchecked") + @SuppressWarnings({ "unchecked" }) private FindItemAndClass inferFrom(String type) { - BrooklynCatalog catalog = getCatalog(); - CatalogItem<?, ?> item = CatalogUtils.getCatalogItemOptionalVersion(mgmt, type); + RegisteredType item = mgmt.getTypeRegistry().get(type); if (item==null) { - // although the method was deprecated in 0.7.0, its use here was not warned until 0.9.0; - // therefore this behaviour should not be changed until after 0.9.0 - item = catalog.getCatalogItemForType(type); + // deprecated attempt to load an item not in the type registry + + // although the method called was deprecated in 0.7.0, its use here was not warned until 0.9.0; + // therefore this behaviour should not be changed until after 0.9.0; + // at which point it should try a pojo load (see below) + item = getCatalogItemForType(type); if (item!=null) { log.warn("Creating application for requested type `"+type+" using item "+item+"; " + "the registered type name ("+item.getSymbolicName()+") should be used from the spec instead, " @@ -226,12 +233,12 @@ public class BrooklynRestResourceUtils { if (item != null) { return setAs( - catalog.createSpec((CatalogItem<Entity,org.apache.brooklyn.api.entity.EntitySpec<Entity>>)item).getType(), + mgmt.getTypeRegistry().createSpec(item, null, org.apache.brooklyn.api.entity.EntitySpec.class).getType(), item.getId()); } else { try { setAs( - (Class<? extends Entity>) catalog.getRootClassLoader().loadClass(type), + (Class<? extends Entity>) getCatalog().getRootClassLoader().loadClass(type), null); log.info("Catalog does not contain item for type {}; loaded class directly instead", type); return this; @@ -247,6 +254,50 @@ public class BrooklynRestResourceUtils { this.catalogItemId = catalogItemId; return this; } + + @Deprecated // see caller + private RegisteredType getCatalogItemForType(String typeName) { + final RegisteredType resultI; + if (CatalogUtils.looksLikeVersionedId(typeName)) { + //All catalog identifiers of the form xxxx:yyyy are composed of symbolicName+version. + //No javaType is allowed as part of the identifier. + resultI = mgmt.getTypeRegistry().get(typeName); + } else { + //Usually for catalog items with javaType (that is items from catalog.xml) + //the symbolicName and javaType match because symbolicName (was ID) + //is not specified explicitly. But could be the case that there is an item + //whose symbolicName is explicitly set to be different from the javaType. + //Note that in the XML the attribute is called registeredTypeName. + Iterable<CatalogItem<Object,Object>> resultL = mgmt.getCatalog().getCatalogItems(CatalogPredicates.javaType(Predicates.equalTo(typeName))); + if (!Iterables.isEmpty(resultL)) { + //Push newer versions in front of the list (not that there should + //be more than one considering the items are coming from catalog.xml). + resultI = RegisteredTypes.of(sortVersionsDesc(resultL).iterator().next()); + if (log.isDebugEnabled() && Iterables.size(resultL)>1) { + log.debug("Found "+Iterables.size(resultL)+" matches in catalog for type "+typeName+"; returning the result with preferred version, "+resultI); + } + } else { + //As a last resort try searching for items with the same symbolicName supposedly + //different from the javaType. + resultI = mgmt.getTypeRegistry().get(typeName, BrooklynCatalog.DEFAULT_VERSION); + if (resultI != null) { + if (resultI.getJavaType() == null) { + //Catalog items scanned from the classpath (using reflection and annotations) now + //get yaml spec rather than a java type. Can't use those when creating apps from + //the legacy app spec format. + log.warn("Unable to find catalog item for type "+typeName + + ". There is an existing catalog item with ID " + resultI.getId() + + " but it doesn't define a class type."); + return null; + } + } + } + } + return resultI; + } + private <T,SpecT> Collection<CatalogItem<T,SpecT>> sortVersionsDesc(Iterable<CatalogItem<T,SpecT>> versions) { + return ImmutableSortedSet.orderedBy(CatalogItemComparator.<T,SpecT>getInstance()).addAll(versions).build(); + } } @SuppressWarnings({ "deprecation" }) @@ -281,11 +332,11 @@ public class BrooklynRestResourceUtils { } try { - if (ApplicationBuilder.class.isAssignableFrom(itemAndClass.clazz)) { + if (org.apache.brooklyn.core.entity.factory.ApplicationBuilder.class.isAssignableFrom(itemAndClass.clazz)) { // warning only added in 0.9.0 log.warn("Using deprecated ApplicationBuilder "+itemAndClass.clazz+"; callers must migrate to use of Application"); Constructor<?> constructor = itemAndClass.clazz.getConstructor(); - ApplicationBuilder appBuilder = (ApplicationBuilder) constructor.newInstance(); + org.apache.brooklyn.core.entity.factory.ApplicationBuilder appBuilder = (org.apache.brooklyn.core.entity.factory.ApplicationBuilder) constructor.newInstance(); if (!Strings.isEmpty(name)) appBuilder.appDisplayName(name); if (entities.size() > 0) log.warn("Cannot supply additional entities when using an ApplicationBuilder; ignoring in spec {}", spec); @@ -342,7 +393,7 @@ public class BrooklynRestResourceUtils { } public Task<?> start(Application app, List<? extends Location> locations) { - return Entities.invokeEffector((EntityLocal)app, app, Startable.START, + return Entities.invokeEffector((Entity)app, app, Startable.START, MutableMap.of("locations", locations)); } @@ -381,7 +432,8 @@ public class BrooklynRestResourceUtils { return result; } - protected void configureRenderingMetadata(ApplicationSpec spec, ApplicationBuilder appBuilder) { + @SuppressWarnings("deprecation") + protected void configureRenderingMetadata(ApplicationSpec spec, org.apache.brooklyn.core.entity.factory.ApplicationBuilder appBuilder) { appBuilder.configure(getRenderingConfigurationFor(spec.getType())); } @@ -395,7 +447,7 @@ public class BrooklynRestResourceUtils { protected Map<?, ?> getRenderingConfigurationFor(String catalogId) { MutableMap<Object, Object> result = MutableMap.of(); - CatalogItem<?,?> item = CatalogUtils.getCatalogItemOptionalVersion(mgmt, catalogId); + RegisteredType item = mgmt.getTypeRegistry().get(catalogId); if (item==null) return result; result.addIfNotNull("iconUrl", item.getIconUrl()); @@ -527,7 +579,7 @@ public class BrooklynRestResourceUtils { public Iterable<Entity> descendantsOfAnyType(String application, String entity) { List<Entity> result = Lists.newArrayList(); - EntityLocal e = getEntity(application, entity); + Entity e = getEntity(application, entity); gatherAllDescendants(e, result); return result; } http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/50ebfafb/usage/rest-server/src/test/java/org/apache/brooklyn/rest/domain/ApplicationTest.java ---------------------------------------------------------------------- diff --git a/usage/rest-server/src/test/java/org/apache/brooklyn/rest/domain/ApplicationTest.java b/usage/rest-server/src/test/java/org/apache/brooklyn/rest/domain/ApplicationTest.java index c992ec2..7e9c910 100644 --- a/usage/rest-server/src/test/java/org/apache/brooklyn/rest/domain/ApplicationTest.java +++ b/usage/rest-server/src/test/java/org/apache/brooklyn/rest/domain/ApplicationTest.java @@ -27,7 +27,6 @@ import java.io.IOException; import java.net.URI; import java.util.Map; -import org.apache.brooklyn.api.entity.Entity; import org.apache.brooklyn.api.mgmt.ManagementContext; import org.apache.brooklyn.core.entity.Entities; import org.apache.brooklyn.core.test.entity.LocalManagementContextForTests; @@ -84,7 +83,7 @@ public class ApplicationTest { ManagementContext mgmt = LocalManagementContextForTests.newInstance(); try { TestApplication app = mgmt.getEntityManager().createEntity(org.apache.brooklyn.api.entity.EntitySpec.create(TestApplication.class)); - TestApplication e2 = app.addChild(org.apache.brooklyn.api.entity.EntitySpec.create(TestApplication.class)); + app.addChild(org.apache.brooklyn.api.entity.EntitySpec.create(TestApplication.class)); Asserts.assertEqualsIgnoringOrder(mgmt.getApplications(), ImmutableList.of(app)); } finally { Entities.destroyAll(mgmt); http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/50ebfafb/usage/rest-server/src/test/java/org/apache/brooklyn/rest/resources/CatalogResetTest.java ---------------------------------------------------------------------- diff --git a/usage/rest-server/src/test/java/org/apache/brooklyn/rest/resources/CatalogResetTest.java b/usage/rest-server/src/test/java/org/apache/brooklyn/rest/resources/CatalogResetTest.java index 6adfdb5..0b5daf5 100644 --- a/usage/rest-server/src/test/java/org/apache/brooklyn/rest/resources/CatalogResetTest.java +++ b/usage/rest-server/src/test/java/org/apache/brooklyn/rest/resources/CatalogResetTest.java @@ -27,6 +27,7 @@ import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; import org.apache.brooklyn.api.catalog.BrooklynCatalog; +import org.apache.brooklyn.api.typereg.BrooklynTypeRegistry; import org.apache.brooklyn.core.test.TestHttpRequestHandler; import org.apache.brooklyn.core.test.TestHttpServer; import org.apache.brooklyn.rest.testing.BrooklynRestResourceTest; @@ -104,9 +105,9 @@ public class CatalogResetTest extends BrooklynRestResourceTest { } private void assertItems() { - BrooklynCatalog catalog = getManagementContext().getCatalog(); - assertNotNull(catalog.getCatalogItem("org.apache.brooklyn.entity.stock.BasicApplication", BrooklynCatalog.DEFAULT_VERSION)); - assertNotNull(catalog.getCatalogItem("org.apache.brooklyn.test.osgi.entities.SimpleApplication", BrooklynCatalog.DEFAULT_VERSION)); + BrooklynTypeRegistry types = getManagementContext().getTypeRegistry(); + assertNotNull(types.get("org.apache.brooklyn.entity.stock.BasicApplication", BrooklynCatalog.DEFAULT_VERSION)); + assertNotNull(types.get("org.apache.brooklyn.test.osgi.entities.SimpleApplication", BrooklynCatalog.DEFAULT_VERSION)); } } http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/50ebfafb/usage/rest-server/src/test/java/org/apache/brooklyn/rest/resources/CatalogResourceTest.java ---------------------------------------------------------------------- diff --git a/usage/rest-server/src/test/java/org/apache/brooklyn/rest/resources/CatalogResourceTest.java b/usage/rest-server/src/test/java/org/apache/brooklyn/rest/resources/CatalogResourceTest.java index 3ce0e56..3883ce8 100644 --- a/usage/rest-server/src/test/java/org/apache/brooklyn/rest/resources/CatalogResourceTest.java +++ b/usage/rest-server/src/test/java/org/apache/brooklyn/rest/resources/CatalogResourceTest.java @@ -33,8 +33,8 @@ import java.util.Set; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; -import org.apache.brooklyn.api.catalog.CatalogItem; -import org.apache.brooklyn.api.catalog.CatalogItem.CatalogBundle; +import org.apache.brooklyn.api.typereg.OsgiBundleWithUrl; +import org.apache.brooklyn.api.typereg.RegisteredType; import org.apache.brooklyn.core.catalog.internal.CatalogUtils; import org.apache.brooklyn.core.mgmt.osgi.OsgiStandaloneTest; import org.apache.brooklyn.policy.autoscaling.AutoScalerPolicy; @@ -113,9 +113,9 @@ public class CatalogResourceTest extends BrooklynRestResourceTest { assertEquals(entityItem.getVersion(), TEST_VERSION); // and internally let's check we have libraries - CatalogItem<?, ?> item = getManagementContext().getCatalog().getCatalogItem(symbolicName, TEST_VERSION); + RegisteredType item = getManagementContext().getTypeRegistry().get(symbolicName, TEST_VERSION); Assert.assertNotNull(item); - Collection<CatalogBundle> libs = item.getLibraries(); + Collection<OsgiBundleWithUrl> libs = item.getLibraries(); assertEquals(libs.size(), 1); assertEquals(Iterables.getOnlyElement(libs).getUrl(), bundleUrl); http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/50ebfafb/usage/rest-server/src/test/java/org/apache/brooklyn/rest/test/entity/brooklynnode/DeployBlueprintTest.java ---------------------------------------------------------------------- diff --git a/usage/rest-server/src/test/java/org/apache/brooklyn/rest/test/entity/brooklynnode/DeployBlueprintTest.java b/usage/rest-server/src/test/java/org/apache/brooklyn/rest/test/entity/brooklynnode/DeployBlueprintTest.java index 980e844..2ab62a9 100644 --- a/usage/rest-server/src/test/java/org/apache/brooklyn/rest/test/entity/brooklynnode/DeployBlueprintTest.java +++ b/usage/rest-server/src/test/java/org/apache/brooklyn/rest/test/entity/brooklynnode/DeployBlueprintTest.java @@ -24,7 +24,6 @@ import java.net.URI; import java.util.List; import java.util.Map; -import org.apache.brooklyn.api.entity.EntityLocal; import org.apache.brooklyn.api.entity.EntitySpec; import org.apache.brooklyn.api.mgmt.EntityManager; import org.apache.brooklyn.entity.brooklynnode.BrooklynNode; @@ -63,7 +62,7 @@ public class DeployBlueprintTest extends BrooklynRestApiLauncherTestFixture { EntitySpec<BrooklynNode> spec = EntitySpec.create(BrooklynNode.class); EntityManager mgr = getManagementContextFromJettyServerAttributes(server).getEntityManager(); BrooklynNode node = mgr.createEntity(spec); - ((EntityLocal)node).sensors().set(BrooklynNode.WEB_CONSOLE_URI, webConsoleUri); + node.sensors().set(BrooklynNode.WEB_CONSOLE_URI, webConsoleUri); mgr.manage(node); Map<String, String> params = ImmutableMap.of(DeployBlueprintEffector.BLUEPRINT_CAMP_PLAN.getName(), "{ services: [ serviceType: \"java:"+BasicApplication.class.getName()+"\" ] }"); String id = node.invoke(BrooklynNode.DEPLOY_BLUEPRINT, params).getUnchecked(); http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/50ebfafb/usage/rest-server/src/test/java/org/apache/brooklyn/rest/testing/mocks/CapitalizePolicy.java ---------------------------------------------------------------------- diff --git a/usage/rest-server/src/test/java/org/apache/brooklyn/rest/testing/mocks/CapitalizePolicy.java b/usage/rest-server/src/test/java/org/apache/brooklyn/rest/testing/mocks/CapitalizePolicy.java index 412ab7e..7d80a6f 100644 --- a/usage/rest-server/src/test/java/org/apache/brooklyn/rest/testing/mocks/CapitalizePolicy.java +++ b/usage/rest-server/src/test/java/org/apache/brooklyn/rest/testing/mocks/CapitalizePolicy.java @@ -21,6 +21,7 @@ package org.apache.brooklyn.rest.testing.mocks; import org.apache.brooklyn.api.entity.EntityLocal; import org.apache.brooklyn.core.policy.AbstractPolicy; +@SuppressWarnings("deprecation") public class CapitalizePolicy extends AbstractPolicy { @Override http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/50ebfafb/usage/rest-server/src/test/java/org/apache/brooklyn/rest/util/BrooklynRestResourceUtilsTest.java ---------------------------------------------------------------------- diff --git a/usage/rest-server/src/test/java/org/apache/brooklyn/rest/util/BrooklynRestResourceUtilsTest.java b/usage/rest-server/src/test/java/org/apache/brooklyn/rest/util/BrooklynRestResourceUtilsTest.java index 0c7e849..48908e3 100644 --- a/usage/rest-server/src/test/java/org/apache/brooklyn/rest/util/BrooklynRestResourceUtilsTest.java +++ b/usage/rest-server/src/test/java/org/apache/brooklyn/rest/util/BrooklynRestResourceUtilsTest.java @@ -27,24 +27,20 @@ import java.util.Map; import org.apache.brooklyn.api.catalog.Catalog; import org.apache.brooklyn.api.entity.Application; import org.apache.brooklyn.api.entity.Entity; -import org.apache.brooklyn.api.entity.EntityLocal; import org.apache.brooklyn.api.policy.Policy; import org.apache.brooklyn.core.catalog.internal.CatalogItemBuilder; import org.apache.brooklyn.core.catalog.internal.CatalogTemplateItemDto; import org.apache.brooklyn.core.catalog.internal.CatalogUtils; import org.apache.brooklyn.core.entity.AbstractApplication; -import org.apache.brooklyn.core.entity.Entities; import org.apache.brooklyn.core.mgmt.internal.LocalManagementContext; import org.apache.brooklyn.core.objs.proxy.EntityProxy; import org.apache.brooklyn.core.policy.AbstractPolicy; import org.apache.brooklyn.core.test.entity.LocalManagementContextForTests; import org.apache.brooklyn.core.test.entity.TestApplication; import org.apache.brooklyn.core.test.entity.TestEntity; -import org.apache.brooklyn.core.test.entity.TestEntityImpl; import org.apache.brooklyn.entity.stock.BasicEntity; import org.apache.brooklyn.rest.domain.ApplicationSpec; import org.apache.brooklyn.rest.domain.EntitySpec; -import org.apache.brooklyn.util.collections.MutableMap; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/50ebfafb/utils/common/src/main/java/org/apache/brooklyn/util/guava/IllegalStateExceptionSupplier.java ---------------------------------------------------------------------- diff --git a/utils/common/src/main/java/org/apache/brooklyn/util/guava/IllegalStateExceptionSupplier.java b/utils/common/src/main/java/org/apache/brooklyn/util/guava/IllegalStateExceptionSupplier.java index deaba53..a79a8c9 100644 --- a/utils/common/src/main/java/org/apache/brooklyn/util/guava/IllegalStateExceptionSupplier.java +++ b/utils/common/src/main/java/org/apache/brooklyn/util/guava/IllegalStateExceptionSupplier.java @@ -18,26 +18,38 @@ */ package org.apache.brooklyn.util.guava; +import org.apache.brooklyn.util.exceptions.Exceptions; + import com.google.common.base.Supplier; +import com.google.common.base.Suppliers; public class IllegalStateExceptionSupplier implements Supplier<RuntimeException> { public static final IllegalStateExceptionSupplier EMPTY_EXCEPTION = new IllegalStateExceptionSupplier(); - protected final String message; + protected final Supplier<String> message; protected final Throwable cause; - public IllegalStateExceptionSupplier() { this(null, null); } + public IllegalStateExceptionSupplier() { this((Supplier<String>)null, null); } public IllegalStateExceptionSupplier(String message) { this(message, null); } - public IllegalStateExceptionSupplier(Throwable cause) { this(cause!=null ? cause.getMessage() : null, cause); } - public IllegalStateExceptionSupplier(String message, Throwable cause) { + public IllegalStateExceptionSupplier(Throwable cause) { this(new CollapseTextSupplier(cause), cause); } + public IllegalStateExceptionSupplier(String message, Throwable cause) { this(Suppliers.ofInstance(message), cause); } + public IllegalStateExceptionSupplier(Supplier<String> message, Throwable cause) { this.message = message; this.cause = cause; } - + + private static class CollapseTextSupplier implements Supplier<String> { + final Throwable cause; + CollapseTextSupplier(Throwable cause) { this.cause = cause; } + @Override + public String get() { + return Exceptions.collapseText(cause); + } + } @Override public RuntimeException get() { - return new IllegalStateException(message, cause); + return new IllegalStateException(message==null ? null : message.get(), cause); } }
