You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by dr...@apache.org on 2017/05/03 10:01:12 UTC

[1/5] brooklyn-server git commit: change handling of icon url storage

Repository: brooklyn-server
Updated Branches:
  refs/heads/master f07b6f06a -> e247841dd


change handling of icon url storage

previously we'd set iconUrl from a flag in AbstractEntity, but that field was never persisted.
now:
* that field is removed (since it wasn't persisted this shouldn't affect rebind)
* iconUrl is done by looking up the catalog item if nothing special is found on the object (usual path)
* if a special iconUrl is wanted on an instance, it should be set as a tag; this means it's persisted, and it can be done for any brooklyn object


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

Branch: refs/heads/master
Commit: 40fdfaf200885fcad119dbcca55e9aa27c82a993
Parents: 00d8789
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Fri Apr 28 15:57:45 2017 +0100
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Tue May 2 11:43:47 2017 +0100

----------------------------------------------------------------------
 .../org/apache/brooklyn/api/entity/Entity.java  |  5 ++++
 .../internal/AbstractBrooklynObjectSpec.java    |  6 ++--
 .../BrooklynEntityDecorationResolver.java       | 31 ++++++++++----------
 .../spi/creation/BrooklynEntityMatcher.java     |  4 +++
 .../brooklyn/spi/creation/CampResolver.java     |  3 --
 .../core/catalog/internal/CatalogItemDo.java    |  5 ++++
 .../brooklyn/core/entity/AbstractEntity.java    | 15 ++++------
 .../core/entity/BrooklynConfigKeys.java         |  2 ++
 .../apache/brooklyn/core/mgmt/BrooklynTags.java |  5 ++++
 .../core/objs/AbstractBrooklynObject.java       |  1 +
 .../core/objs/BrooklynObjectInternal.java       |  3 ++
 .../brooklyn/core/typereg/RegisteredTypes.java  | 17 +++++++++++
 .../rest/resources/ApplicationResource.java     |  2 +-
 .../brooklyn/rest/resources/EntityResource.java |  2 +-
 .../rest/util/BrooklynRestResourceUtils.java    |  4 +--
 15 files changed, 71 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/40fdfaf2/api/src/main/java/org/apache/brooklyn/api/entity/Entity.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/entity/Entity.java b/api/src/main/java/org/apache/brooklyn/api/entity/Entity.java
index b8e13b7..da9169e 100644
--- a/api/src/main/java/org/apache/brooklyn/api/entity/Entity.java
+++ b/api/src/main/java/org/apache/brooklyn/api/entity/Entity.java
@@ -38,6 +38,7 @@ import org.apache.brooklyn.api.sensor.EnricherSpec;
 import org.apache.brooklyn.api.sensor.Feed;
 import org.apache.brooklyn.api.sensor.Sensor;
 import org.apache.brooklyn.api.sensor.SensorEvent;
+import org.apache.brooklyn.api.typereg.RegisteredType;
 import org.apache.brooklyn.config.ConfigKey;
 import org.apache.brooklyn.config.ConfigKey.HasConfigKey;
 import org.apache.brooklyn.util.guava.Maybe;
@@ -78,7 +79,11 @@ public interface Entity extends BrooklynObject {
     
     /** 
      * A URL pointing to an image which can be used to represent this entity.
+     * @deprecated since 0.12.0 look up the {@link RegisteredType} and use its
+     * {@link RegisteredType#getIconUrl()} or use conveniences such as 
+     * <code>RegisteredTypes.getIconUrl()</code>.
      */
+    @Deprecated
     @Nullable String getIconUrl();
     
     /**

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/40fdfaf2/api/src/main/java/org/apache/brooklyn/api/internal/AbstractBrooklynObjectSpec.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/internal/AbstractBrooklynObjectSpec.java b/api/src/main/java/org/apache/brooklyn/api/internal/AbstractBrooklynObjectSpec.java
index adbb48b..b53722d 100644
--- a/api/src/main/java/org/apache/brooklyn/api/internal/AbstractBrooklynObjectSpec.java
+++ b/api/src/main/java/org/apache/brooklyn/api/internal/AbstractBrooklynObjectSpec.java
@@ -195,14 +195,14 @@ public abstract class AbstractBrooklynObjectSpec<T, SpecT extends AbstractBrookl
     /**
      * adds the given tags
      */
-    public SpecT tags(Iterable<Object> tagsToAdd) {
+    public SpecT tags(Iterable<? extends Object> tagsToAdd) {
         return tagsAdd(tagsToAdd);
     }
 
     /**
      * adds the given tags
      */
-    public SpecT tagsAdd(Iterable<Object> tagsToAdd) {
+    public SpecT tagsAdd(Iterable<? extends Object> tagsToAdd) {
         Iterables.addAll(this.tags, tagsToAdd);
         return self();
     }
@@ -210,7 +210,7 @@ public abstract class AbstractBrooklynObjectSpec<T, SpecT extends AbstractBrookl
     /**
      * replaces tags with the given
      */
-    public SpecT tagsReplace(Iterable<Object> tagsToReplace) {
+    public SpecT tagsReplace(Iterable<? extends Object> tagsToReplace) {
         this.tags.clear();
         Iterables.addAll(this.tags, tagsToReplace);
         return self();

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/40fdfaf2/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynEntityDecorationResolver.java
----------------------------------------------------------------------
diff --git a/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynEntityDecorationResolver.java b/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynEntityDecorationResolver.java
index ca47f7e..181fa67 100644
--- a/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynEntityDecorationResolver.java
+++ b/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynEntityDecorationResolver.java
@@ -18,18 +18,12 @@
  */
 package org.apache.brooklyn.camp.brooklyn.spi.creation;
 
-import java.io.Serializable;
+import static com.google.common.base.Preconditions.checkArgument;
+
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
-import com.google.common.base.Function;
-import com.google.common.base.Predicate;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
-
-import com.google.common.collect.Iterables;
-import com.sun.org.apache.xpath.internal.operations.Bool;
 import org.apache.brooklyn.api.entity.EntityInitializer;
 import org.apache.brooklyn.api.entity.EntitySpec;
 import org.apache.brooklyn.api.mgmt.ManagementContext;
@@ -41,8 +35,7 @@ import org.apache.brooklyn.api.sensor.EnricherSpec;
 import org.apache.brooklyn.api.typereg.RegisteredType;
 import org.apache.brooklyn.camp.brooklyn.BrooklynCampReservedKeys;
 import org.apache.brooklyn.camp.brooklyn.spi.creation.BrooklynYamlTypeInstantiator.InstantiatorFromKey;
-import org.apache.brooklyn.camp.brooklyn.spi.dsl.DslAccessible;
-import org.apache.brooklyn.camp.brooklyn.spi.dsl.methods.BrooklynDslCommon;
+import org.apache.brooklyn.core.entity.BrooklynConfigKeys;
 import org.apache.brooklyn.core.mgmt.BrooklynTags;
 import org.apache.brooklyn.core.objs.BasicSpecParameter;
 import org.apache.brooklyn.core.typereg.RegisteredTypeLoadingContexts;
@@ -52,9 +45,11 @@ import org.apache.brooklyn.util.core.config.ConfigBag;
 import org.apache.brooklyn.util.core.task.DeferredSupplier;
 import org.apache.brooklyn.util.guava.Maybe;
 
-import javax.annotation.Nullable;
-
-import static com.google.common.base.Preconditions.checkArgument;
+import com.google.common.base.Function;
+import com.google.common.base.Predicate;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Iterables;
 
 /**
  * Pattern for resolving "decorations" on service specs / entity specs, such as policies, enrichers, etc.
@@ -254,6 +249,10 @@ public abstract class BrooklynEntityDecorationResolver<DT> {
             if (decorationAttributeJsonValue != null) {
                 entitySpec.tagsAdd(decorationAttributeJsonValue);
             }
+            String iconUrl = attrs.get(BrooklynConfigKeys.ICON_URL);
+            if (iconUrl!=null) {
+                entitySpec.tagsAdd(MutableList.of(BrooklynTags.newIconUrlTag(iconUrl)));
+            }
         }
 
         @Override
@@ -269,13 +268,15 @@ public abstract class BrooklynEntityDecorationResolver<DT> {
             } else if (!(brooklynTags instanceof List)) {
                 throw new IllegalArgumentException(BrooklynCampReservedKeys.BROOKLYN_TAGS + " should be a List of String elements. You supplied " + brooklynTags);
             } else {
-                checkArgument(Iterables.all((List) brooklynTags, new Predicate() {
+                checkArgument(Iterables.all((List<?>) brooklynTags, new Predicate<Object>() {
                     @Override
                     public boolean apply(Object input) {
                         return !(input instanceof DeferredSupplier);
                     }
                 }), BrooklynCampReservedKeys.BROOKLYN_TAGS + " should not contain DeferredSupplier. A DeferredSupplier is made when using $brooklyn:attributeWhenReady. You supplied " + brooklynTags);
-                return (List)brooklynTags;
+                @SuppressWarnings("unchecked")
+                List<Object> result = (List<Object>)brooklynTags;
+                return result;
             }
         }
 

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/40fdfaf2/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynEntityMatcher.java
----------------------------------------------------------------------
diff --git a/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynEntityMatcher.java b/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynEntityMatcher.java
index 091e760..3b6e04b 100644
--- a/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynEntityMatcher.java
+++ b/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynEntityMatcher.java
@@ -30,6 +30,7 @@ import org.apache.brooklyn.camp.spi.pdp.AssemblyTemplateConstructor;
 import org.apache.brooklyn.camp.spi.pdp.Service;
 import org.apache.brooklyn.camp.spi.resolve.PdpMatcher;
 import org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog;
+import org.apache.brooklyn.core.entity.BrooklynConfigKeys;
 import org.apache.brooklyn.core.mgmt.classloading.JavaBrooklynClassLoadingContext;
 import org.apache.brooklyn.util.collections.MutableMap;
 import org.apache.brooklyn.util.exceptions.UserFacingException;
@@ -113,6 +114,9 @@ public class BrooklynEntityMatcher implements PdpMatcher {
         Object locations = attrs.remove("locations");
         if (locations!=null)
             builder.customAttribute("locations", locations);
+        Object iconUrl = attrs.remove(BrooklynConfigKeys.ICON_URL.getName());
+        if (iconUrl!=null)
+            builder.customAttribute(BrooklynConfigKeys.ICON_URL.getName(), iconUrl);
 
         MutableMap<Object, Object> brooklynFlags = MutableMap.of();
         Object origBrooklynFlags = attrs.remove(BrooklynCampReservedKeys.BROOKLYN_FLAGS);

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/40fdfaf2/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampResolver.java
----------------------------------------------------------------------
diff --git a/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampResolver.java b/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampResolver.java
index 9ec8fd8..f68ffad 100644
--- a/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampResolver.java
+++ b/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampResolver.java
@@ -116,9 +116,6 @@ class CampResolver {
         }
 
         spec.stackCatalogItemId(item.getId());
-        if (!spec.getFlags().containsKey("iconUrl") && item.getIconUrl()!=null) {
-            spec.configure("iconUrl", item.getIconUrl());
-        }
 
         if (spec instanceof EntitySpec) {
             String name = spec.getDisplayName();

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/40fdfaf2/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogItemDo.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogItemDo.java b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogItemDo.java
index c263e59..90697fe 100644
--- a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogItemDo.java
+++ b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogItemDo.java
@@ -50,6 +50,11 @@ public class CatalogItemDo<T,SpecT> implements CatalogItem<T,SpecT>, BrooklynObj
         return itemDto;
     }
     
+    @Override
+    public ManagementContext getManagementContext() {
+        return catalog==null ? null : catalog.mgmt;
+    }
+    
     /**
      * @throws UnsupportedOperationException; Config not supported for catalog item. See {@link #getPlanYaml()}.
      */

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/40fdfaf2/core/src/main/java/org/apache/brooklyn/core/entity/AbstractEntity.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/entity/AbstractEntity.java b/core/src/main/java/org/apache/brooklyn/core/entity/AbstractEntity.java
index bbc57ec..6c15afc 100644
--- a/core/src/main/java/org/apache/brooklyn/core/entity/AbstractEntity.java
+++ b/core/src/main/java/org/apache/brooklyn/core/entity/AbstractEntity.java
@@ -30,7 +30,6 @@ import java.util.Set;
 import org.apache.brooklyn.api.effector.Effector;
 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.entity.EntitySpec;
 import org.apache.brooklyn.api.entity.EntityType;
 import org.apache.brooklyn.api.entity.Group;
@@ -92,6 +91,7 @@ import org.apache.brooklyn.core.sensor.AttributeMap;
 import org.apache.brooklyn.core.sensor.AttributeSensorAndConfigKey;
 import org.apache.brooklyn.core.sensor.BasicNotificationSensor;
 import org.apache.brooklyn.core.sensor.Sensors;
+import org.apache.brooklyn.core.typereg.RegisteredTypes;
 import org.apache.brooklyn.util.collections.MutableList;
 import org.apache.brooklyn.util.collections.MutableMap;
 import org.apache.brooklyn.util.collections.MutableSet;
@@ -222,7 +222,6 @@ public abstract class AbstractEntity extends AbstractBrooklynObject implements E
     private Reference<List<Location>> locations = new BasicReference<List<Location>>(ImmutableList.<Location>of()); // dups removed in addLocations
     private Reference<Long> creationTimeUtc = new BasicReference<Long>(System.currentTimeMillis());
     private Reference<String> displayName = new BasicReference<String>();
-    private Reference<String> iconUrl = new BasicReference<String>();
 
     private Collection<AbstractPolicy> policiesInternal = Lists.newCopyOnWriteArrayList();
     private Collection<AbstractEnricher> enrichersInternal = Lists.newCopyOnWriteArrayList();
@@ -384,8 +383,9 @@ public abstract class AbstractEntity extends AbstractBrooklynObject implements E
             displayNameAutoGenerated = true;
         }
 
-        if (flags.get("iconUrl") != null) {
-            iconUrl.set((String) flags.remove("iconUrl"));
+        if (flags.get(BrooklynConfigKeys.ICON_URL.getName()) != null) {
+            // shouldn't be used; CAMP parser leaves it as a top-level attribute which is converted to a tag
+            tags().addTag(BrooklynTags.newIconUrlTag((String) flags.remove(BrooklynConfigKeys.ICON_URL.getName())));
         }
         
         // allow config keys, and fields, to be set from these flags if they have a SetFromFlag annotation
@@ -514,7 +514,6 @@ public abstract class AbstractEntity extends AbstractBrooklynObject implements E
             AttributeMap oldAttribs = attributesInternal;
             long oldCreationTimeUtc = creationTimeUtc.get();
             String oldDisplayName = displayName.get();
-            String oldIconUrl = iconUrl.get();
 
             parent = managementContext.getStorage().getReference(getId()+"-parent");
             groupsInternal = SetFromLiveMap.create(managementContext.getStorage().<Group,Boolean>getMap(getId()+"-groups"));
@@ -522,7 +521,6 @@ public abstract class AbstractEntity extends AbstractBrooklynObject implements E
             locations = managementContext.getStorage().getNonConcurrentList(getId()+"-locations");
             creationTimeUtc = managementContext.getStorage().getReference(getId()+"-creationTime");
             displayName = managementContext.getStorage().getReference(getId()+"-displayName");
-            iconUrl = managementContext.getStorage().getReference(getId()+"-iconUrl");
 
             // Only override stored defaults if we have actual values. We might be in setManagementContext
             // because we are reconstituting an existing entity in a new brooklyn management-node (in which
@@ -540,7 +538,6 @@ public abstract class AbstractEntity extends AbstractBrooklynObject implements E
             } else {
                 displayNameAutoGenerated = false;
             }
-            if (iconUrl.isNull()) iconUrl.set(oldIconUrl);
 
             configsInternal = new EntityConfigMap(this, managementContext.getStorage().<ConfigKey<?>, Object>getMap(getId()+"-config"));
             if (!oldConfig.isEmpty()) {
@@ -572,9 +569,9 @@ public abstract class AbstractEntity extends AbstractBrooklynObject implements E
         return displayName.get();
     }
     
-    @Override
+    @Override @Deprecated
     public String getIconUrl() {
-        return iconUrl.get();
+        return RegisteredTypes.getIconUrl(this);
     }
     
     @Override

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/40fdfaf2/core/src/main/java/org/apache/brooklyn/core/entity/BrooklynConfigKeys.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/entity/BrooklynConfigKeys.java b/core/src/main/java/org/apache/brooklyn/core/entity/BrooklynConfigKeys.java
index 40baf65..0ae50d2 100644
--- a/core/src/main/java/org/apache/brooklyn/core/entity/BrooklynConfigKeys.java
+++ b/core/src/main/java/org/apache/brooklyn/core/entity/BrooklynConfigKeys.java
@@ -246,6 +246,8 @@ public class BrooklynConfigKeys {
             .runtimeInheritance(BasicConfigInheritance.NOT_REINHERITED_ELSE_DEEP_MERGE)
             .build();
 
+    public static final ConfigKey<String> ICON_URL = newStringConfigKey("iconUrl");
+
     private BrooklynConfigKeys() {}
 
 }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/40fdfaf2/core/src/main/java/org/apache/brooklyn/core/mgmt/BrooklynTags.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/BrooklynTags.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/BrooklynTags.java
index 7f8b0c8..c8248f1 100644
--- a/core/src/main/java/org/apache/brooklyn/core/mgmt/BrooklynTags.java
+++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/BrooklynTags.java
@@ -38,6 +38,7 @@ public class BrooklynTags {
     public static final String YAML_SPEC_KIND = "yaml_spec";
     public static final String NOTES_KIND = "notes";
     public static final String OWNER_ENTITY_ID = "owner_entity_id";
+    public static final String ICON_URL = "icon_url";
 
     public static class NamedStringTag implements Serializable {
         private static final long serialVersionUID = 7932098757009051348L;
@@ -134,6 +135,10 @@ public class BrooklynTags {
         return new NamedStringTag(OWNER_ENTITY_ID, ownerId);
     }
 
+    public static NamedStringTag newIconUrlTag(String iconUrl) {
+        return new NamedStringTag(ICON_URL, iconUrl);
+    }
+
     public static TraitsTag newTraitsTag(List<Class<?>> interfaces) {
         return new TraitsTag(interfaces);
     }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/40fdfaf2/core/src/main/java/org/apache/brooklyn/core/objs/AbstractBrooklynObject.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/objs/AbstractBrooklynObject.java b/core/src/main/java/org/apache/brooklyn/core/objs/AbstractBrooklynObject.java
index 9ba5a61..3d7b552 100644
--- a/core/src/main/java/org/apache/brooklyn/core/objs/AbstractBrooklynObject.java
+++ b/core/src/main/java/org/apache/brooklyn/core/objs/AbstractBrooklynObject.java
@@ -170,6 +170,7 @@ public abstract class AbstractBrooklynObject implements BrooklynObjectInternal {
         this.managementContext = managementContext;
     }
 
+    @Override
     public ManagementContext getManagementContext() {
         return managementContext;
     }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/40fdfaf2/core/src/main/java/org/apache/brooklyn/core/objs/BrooklynObjectInternal.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/objs/BrooklynObjectInternal.java b/core/src/main/java/org/apache/brooklyn/core/objs/BrooklynObjectInternal.java
index 44ed3b8..6ad42f4 100644
--- a/core/src/main/java/org/apache/brooklyn/core/objs/BrooklynObjectInternal.java
+++ b/core/src/main/java/org/apache/brooklyn/core/objs/BrooklynObjectInternal.java
@@ -21,6 +21,7 @@ package org.apache.brooklyn.core.objs;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.brooklyn.api.mgmt.ManagementContext;
 import org.apache.brooklyn.api.mgmt.rebind.RebindSupport;
 import org.apache.brooklyn.api.mgmt.rebind.Rebindable;
 import org.apache.brooklyn.api.objs.BrooklynObject;
@@ -51,6 +52,8 @@ public interface BrooklynObjectInternal extends BrooklynObject, Rebindable {
     @Override
     RebindSupport<?> getRebindSupport();
     
+    ManagementContext getManagementContext();
+    
     @Override
     ConfigurationSupportInternal config();
 

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/40fdfaf2/core/src/main/java/org/apache/brooklyn/core/typereg/RegisteredTypes.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/typereg/RegisteredTypes.java b/core/src/main/java/org/apache/brooklyn/core/typereg/RegisteredTypes.java
index cfc7ec4..b3886bd 100644
--- a/core/src/main/java/org/apache/brooklyn/core/typereg/RegisteredTypes.java
+++ b/core/src/main/java/org/apache/brooklyn/core/typereg/RegisteredTypes.java
@@ -31,6 +31,7 @@ import org.apache.brooklyn.api.catalog.CatalogItem;
 import org.apache.brooklyn.api.internal.AbstractBrooklynObjectSpec;
 import org.apache.brooklyn.api.mgmt.ManagementContext;
 import org.apache.brooklyn.api.objs.BrooklynObject;
+import org.apache.brooklyn.api.typereg.BrooklynTypeRegistry;
 import org.apache.brooklyn.api.typereg.BrooklynTypeRegistry.RegisteredTypeKind;
 import org.apache.brooklyn.api.typereg.RegisteredType;
 import org.apache.brooklyn.api.typereg.RegisteredType.TypeImplementationPlan;
@@ -38,6 +39,8 @@ import org.apache.brooklyn.api.typereg.RegisteredTypeLoadingContext;
 import org.apache.brooklyn.config.ConfigKey;
 import org.apache.brooklyn.core.catalog.internal.CatalogUtils;
 import org.apache.brooklyn.core.config.ConfigKeys;
+import org.apache.brooklyn.core.mgmt.BrooklynTags;
+import org.apache.brooklyn.core.mgmt.BrooklynTags.NamedStringTag;
 import org.apache.brooklyn.core.objs.BrooklynObjectInternal;
 import org.apache.brooklyn.core.typereg.JavaClassNameTypePlanTransformer.JavaClassNameTypeImplementationPlan;
 import org.apache.brooklyn.util.exceptions.Exceptions;
@@ -453,4 +456,18 @@ public class RegisteredTypes {
         return Maybe.of(object);
     }
 
+    public static String getIconUrl(BrooklynObject object) {
+        if (object==null) return null;
+        
+        NamedStringTag fromTag = BrooklynTags.findFirst(BrooklynTags.ICON_URL, object.tags().getTags());
+        if (fromTag!=null) return fromTag.getContents();
+        
+        ManagementContext mgmt = ((BrooklynObjectInternal)object).getManagementContext();
+        if (mgmt==null) return null;
+        BrooklynTypeRegistry registry = mgmt.getTypeRegistry();
+        if (registry==null) return null;
+        RegisteredType item = registry.get( object.getCatalogItemId() );
+        if (item==null) return null;
+        return item.getIconUrl();
+    }
 }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/40fdfaf2/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/ApplicationResource.java
----------------------------------------------------------------------
diff --git a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/ApplicationResource.java b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/ApplicationResource.java
index 4aec34b..5d8dfb6 100644
--- a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/ApplicationResource.java
+++ b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/ApplicationResource.java
@@ -107,7 +107,7 @@ public class ApplicationResource extends AbstractBrooklynRestResource implements
 
         Lifecycle serviceState = entity.getAttribute(Attributes.SERVICE_STATE_ACTUAL);
 
-        String iconUrl = entity.getIconUrl();
+        String iconUrl = RegisteredTypes.getIconUrl(entity);
         if (iconUrl!=null) {
             if (brooklyn().isUrlServerSideAndSafe(iconUrl))
                 // route to server if it is a server-side url

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/40fdfaf2/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/EntityResource.java
----------------------------------------------------------------------
diff --git a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/EntityResource.java b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/EntityResource.java
index efc8838..e914d1e 100644
--- a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/EntityResource.java
+++ b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/EntityResource.java
@@ -155,7 +155,7 @@ public class EntityResource extends AbstractBrooklynRestResource implements Enti
     @Override
     public Response getIcon(String applicationId, String entityId) {
         Entity entity = brooklyn().getEntity(applicationId, entityId);
-        String url = entity.getIconUrl();
+        String url = RegisteredTypes.getIconUrl(entity);
         if (url == null)
             return Response.status(Status.NO_CONTENT).build();
 

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/40fdfaf2/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/util/BrooklynRestResourceUtils.java
----------------------------------------------------------------------
diff --git a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/util/BrooklynRestResourceUtils.java b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/util/BrooklynRestResourceUtils.java
index 6645c5c..d9eb7ee 100644
--- a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/util/BrooklynRestResourceUtils.java
+++ b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/util/BrooklynRestResourceUtils.java
@@ -65,9 +65,9 @@ import org.apache.brooklyn.rest.domain.ApplicationSpec;
 import org.apache.brooklyn.rest.domain.EntitySpec;
 import org.apache.brooklyn.util.collections.MutableMap;
 import org.apache.brooklyn.util.collections.MutableSet;
-import org.apache.brooklyn.util.core.flags.TypeCoercions;
 import org.apache.brooklyn.util.exceptions.Exceptions;
 import org.apache.brooklyn.util.javalang.Reflections;
+import org.apache.brooklyn.util.javalang.coerce.PrimitiveStringTypeCoercions;
 import org.apache.brooklyn.util.net.Urls;
 import org.apache.brooklyn.util.text.Strings;
 import org.slf4j.Logger;
@@ -552,7 +552,7 @@ public class BrooklynRestResourceUtils {
             }
         }
         
-        if (TypeCoercions.isPrimitiveOrBoxer(value.getClass())) return value;
+        if (PrimitiveStringTypeCoercions.isPrimitiveOrBoxer(value.getClass())) return value;
         return value.toString();
     }
 


[4/5] brooklyn-server git commit: fix getResources() so it dedupes URLs, fixing test

Posted by dr...@apache.org.
fix getResources() so it dedupes URLs, fixing test

(exposed now that we load better things through osgi)


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

Branch: refs/heads/master
Commit: 8a6fc6e21ff35331b10af7c626b7ce58b298f588
Parents: 400a32d
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Fri Apr 28 17:20:04 2017 +0100
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Tue May 2 11:43:47 2017 +0100

----------------------------------------------------------------------
 .../BrooklynClassLoadingContextSequential.java  |  8 ++---
 .../util/core/ClassLoaderUtilsTest.java         | 35 ++++++++++++++++----
 2 files changed, 32 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/8a6fc6e2/core/src/main/java/org/apache/brooklyn/core/mgmt/classloading/BrooklynClassLoadingContextSequential.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/classloading/BrooklynClassLoadingContextSequential.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/classloading/BrooklynClassLoadingContextSequential.java
index ee55ae9..50a0509 100644
--- a/core/src/main/java/org/apache/brooklyn/core/mgmt/classloading/BrooklynClassLoadingContextSequential.java
+++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/classloading/BrooklynClassLoadingContextSequential.java
@@ -104,14 +104,14 @@ public final class BrooklynClassLoadingContextSequential extends AbstractBrookly
 
     @Override
     public Iterable<URL> getResources(String name) {
-        List<Iterable<URL>> resources = Lists.newArrayList();
+        MutableSet<URL> result = MutableSet.<URL>of();
         for (BrooklynClassLoadingContext target : primaries) {
-            resources.add(target.getResources(name));
+            result.addAll(target.getResources(name));
         }
         for (BrooklynClassLoadingContext target : secondaries) {
-            resources.add(target.getResources(name));
+            result.addAll(target.getResources(name));
         }
-        return Iterables.concat(resources);
+        return result;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/8a6fc6e2/core/src/test/java/org/apache/brooklyn/util/core/ClassLoaderUtilsTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/util/core/ClassLoaderUtilsTest.java b/core/src/test/java/org/apache/brooklyn/util/core/ClassLoaderUtilsTest.java
index dfe942b..a9ea938 100644
--- a/core/src/test/java/org/apache/brooklyn/util/core/ClassLoaderUtilsTest.java
+++ b/core/src/test/java/org/apache/brooklyn/util/core/ClassLoaderUtilsTest.java
@@ -26,8 +26,6 @@ import static org.testng.Assert.assertNull;
 import static org.testng.Assert.assertTrue;
 
 import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.FileOutputStream;
 import java.net.URL;
 import java.util.jar.Attributes;
 import java.util.jar.JarOutputStream;
@@ -127,9 +125,32 @@ public class ClassLoaderUtilsTest {
         assertLoadSucceeds(bundle.getSymbolicName() + ":" + bundle.getVersion()+":" + classname, clazz, cluMgmt, cluClass, cluEntity);
     }
 
+    @Test
+    public void testLoadJustOneClassInOsgiWhiteList() throws Exception {
+        String bundlePath = OsgiStandaloneTest.BROOKLYN_TEST_OSGI_ENTITIES_PATH;
+        String bundleUrl = OsgiStandaloneTest.BROOKLYN_TEST_OSGI_ENTITIES_URL;
+        String classname = OsgiTestResources.BROOKLYN_TEST_OSGI_ENTITIES_SIMPLE_ENTITY;
+        
+        TestResourceUnavailableException.throwIfResourceUnavailable(getClass(), bundlePath);
+
+        mgmt = LocalManagementContextForTests.builder(true).enableOsgiReusable().build();
+        Bundle bundle = installBundle(mgmt, bundleUrl);
+        Class<?> clazz = bundle.loadClass(classname);
+        Entity entity = createSimpleEntity(bundleUrl, clazz);
+        
+        String whiteList = bundle.getSymbolicName()+":"+bundle.getVersion();
+        System.setProperty(ClassLoaderUtils.WHITE_LIST_KEY, whiteList);
+        
+        ClassLoaderUtils cluEntity = new ClassLoaderUtils(getClass(), entity);
+
+        BundledName resource = new BundledName(classname).toResource();
+        BundledName bn = new BundledName(resource.bundle, resource.version, "/" + resource.name);
+        Asserts.assertSize(cluEntity.getResources(bn.toString()), 1);
+    }
+    
 
     @Test
-    public void testLoadClassInOsgiWhiteList() throws Exception {
+    public void testVariousLoadersLoadClassInOsgiWhiteList() throws Exception {
         String bundlePath = OsgiStandaloneTest.BROOKLYN_TEST_OSGI_ENTITIES_PATH;
         String bundleUrl = OsgiStandaloneTest.BROOKLYN_TEST_OSGI_ENTITIES_URL;
         String classname = OsgiTestResources.BROOKLYN_TEST_OSGI_ENTITIES_SIMPLE_ENTITY;
@@ -141,8 +162,8 @@ public class ClassLoaderUtilsTest {
         Class<?> clazz = bundle.loadClass(classname);
         Entity entity = createSimpleEntity(bundleUrl, clazz);
         
-        String whileList = bundle.getSymbolicName()+":"+bundle.getVersion();
-        System.setProperty(ClassLoaderUtils.WHITE_LIST_KEY, whileList);
+        String whiteList = bundle.getSymbolicName()+":"+bundle.getVersion();
+        System.setProperty(ClassLoaderUtils.WHITE_LIST_KEY, whiteList);
         
         ClassLoaderUtils cluMgmt = new ClassLoaderUtils(getClass(), mgmt);
         ClassLoaderUtils cluClass = new ClassLoaderUtils(clazz);
@@ -160,7 +181,7 @@ public class ClassLoaderUtilsTest {
         
         TestResourceUnavailableException.throwIfResourceUnavailable(getClass(), bundlePath);
 
-        mgmt = LocalManagementContextForTests.builder(true).disableOsgi(false).build();
+        mgmt = LocalManagementContextForTests.builder(true).enableOsgiReusable().build();
         Bundle bundle = installBundle(mgmt, bundleUrl);
         
         Manifest manifest = new Manifest();
@@ -328,7 +349,7 @@ public class ClassLoaderUtilsTest {
         String bundledResource = resource.toString();
         URL resourceUrl = cl.getResource(resource.name);
         assertEquals(clu.getResource(bundledResource), resourceUrl);
-        assertEquals(clu.getResources(bundledResource), ImmutableList.of(resourceUrl));
+        assertEquals(clu.getResources(bundledResource), ImmutableList.of(resourceUrl), "Loading with "+clu);
 
         BundledName rootResource = new BundledName(resource.bundle, resource.version, "/" + resource.name);
         String rootBundledResource = rootResource.toString();


[3/5] brooklyn-server git commit: fix but where osgi classpaths didn't load when using embedded framework

Posted by dr...@apache.org.
fix but where osgi classpaths didn't load when using embedded framework


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

Branch: refs/heads/master
Commit: 400a32d9886a0f19ece36d742a2d8d7cf044e790
Parents: 140631b
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Fri Apr 28 15:50:11 2017 +0100
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Tue May 2 11:43:47 2017 +0100

----------------------------------------------------------------------
 .../mgmt/classloading/JavaBrooklynClassLoadingContext.java     | 4 ++--
 .../apache/brooklyn/core/mgmt/persist/OsgiClassPrefixer.java   | 3 ---
 .../brooklyn/core/mgmt/persist/XmlMementoSerializer.java       | 6 +-----
 .../java/org/apache/brooklyn/util/core/ClassLoaderUtils.java   | 4 ++--
 4 files changed, 5 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/400a32d9/core/src/main/java/org/apache/brooklyn/core/mgmt/classloading/JavaBrooklynClassLoadingContext.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/classloading/JavaBrooklynClassLoadingContext.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/classloading/JavaBrooklynClassLoadingContext.java
index bd7c7da..e4cb55a 100644
--- a/core/src/main/java/org/apache/brooklyn/core/mgmt/classloading/JavaBrooklynClassLoadingContext.java
+++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/classloading/JavaBrooklynClassLoadingContext.java
@@ -130,11 +130,11 @@ public class JavaBrooklynClassLoadingContext extends AbstractBrooklynClassLoadin
 
     @Override
     public URL getResource(String name) {
-        return new ClassLoaderUtils(loader).getResource(name);
+        return new ClassLoaderUtils(loader, mgmt).getResource(name);
     }
 
     @Override
     public Iterable<URL> getResources(String name) {
-        return new ClassLoaderUtils(loader).getResources(name);
+        return new ClassLoaderUtils(loader, mgmt).getResources(name);
     }
 }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/400a32d9/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/OsgiClassPrefixer.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/OsgiClassPrefixer.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/OsgiClassPrefixer.java
index 90b7ee6..ac1b63f 100644
--- a/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/OsgiClassPrefixer.java
+++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/OsgiClassPrefixer.java
@@ -21,7 +21,6 @@ package org.apache.brooklyn.core.mgmt.persist;
 import javax.annotation.Nullable;
 
 import org.apache.brooklyn.core.mgmt.rebind.dto.MementosGenerators;
-import org.apache.brooklyn.util.core.ClassLoaderUtils;
 import org.apache.brooklyn.util.core.osgi.Osgis;
 import org.osgi.framework.Bundle;
 
@@ -43,7 +42,6 @@ public class OsgiClassPrefixer {
 
     public static final String DELIMITER = ":";
     
-    private final ClassLoaderUtils whiteListRetriever;
     private final Function<Class<?>, Optional<Bundle>> bundleRetriever;
     
     public OsgiClassPrefixer() {
@@ -52,7 +50,6 @@ public class OsgiClassPrefixer {
     
     @VisibleForTesting
     protected OsgiClassPrefixer(@Nullable Function<Class<?>, Optional<Bundle>> bundleRetriever) {
-        this.whiteListRetriever = new ClassLoaderUtils(getClass());
         this.bundleRetriever = bundleRetriever;
     }
     

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/400a32d9/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/XmlMementoSerializer.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/XmlMementoSerializer.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/XmlMementoSerializer.java
index 1bded8b..7f38611 100644
--- a/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/XmlMementoSerializer.java
+++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/XmlMementoSerializer.java
@@ -584,11 +584,7 @@ public class XmlMementoSerializer<T> extends XmlSerializer<T> implements Memento
         
         private void setCurrentClassLoader(ClassLoader classLoader) {
             currentClassLoader = checkNotNull(classLoader);
-            if (mgmt != null) {
-                currentLoader.set(new ClassLoaderUtils(currentClassLoader, mgmt));
-            } else {
-                currentLoader.set(new ClassLoaderUtils(currentClassLoader));
-            }
+            currentLoader.set(new ClassLoaderUtils(currentClassLoader, mgmt));
         }
         
         protected void acquireXstreamLock() {

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/400a32d9/core/src/main/java/org/apache/brooklyn/util/core/ClassLoaderUtils.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/util/core/ClassLoaderUtils.java b/core/src/main/java/org/apache/brooklyn/util/core/ClassLoaderUtils.java
index e402e72..f607939 100644
--- a/core/src/main/java/org/apache/brooklyn/util/core/ClassLoaderUtils.java
+++ b/core/src/main/java/org/apache/brooklyn/util/core/ClassLoaderUtils.java
@@ -96,7 +96,7 @@ public class ClassLoaderUtils {
     public ClassLoaderUtils(@Nullable ClassLoader cl, @Nullable ManagementContext mgmt) {
         this.classLoader = getValidClassLoader(cl);
         this.entity = null;
-        this.mgmt = checkNotNull(mgmt, "mgmt");
+        this.mgmt = mgmt;
     }
 
     public ClassLoaderUtils(Class<?> callingClass, Entity entity) {
@@ -303,7 +303,7 @@ public class ClassLoaderUtils {
             }
             return dispatcher.tryLoadFrom(bundle.get(), name);
         } else {
-            log.warn("Request for bundle '"+symbolicName+"' "+(Strings.isNonBlank(version) ? "("+version+") " : "")+"will be ignored, loading '"+name+"' as no framework available");
+            log.warn("Request for bundle '"+symbolicName+"' "+(Strings.isNonBlank(version) ? "("+version+") " : "")+"will be ignored as no framework available; will look for '"+name+"' in plain old classpath");
             return dispatcher.tryLoadFrom(classLoader, name);
         }
     }


[2/5] brooklyn-server git commit: fix bug where entity's search path isn't used when retrieving icon url's

Posted by dr...@apache.org.
fix bug where entity's search path isn't used when retrieving icon url's


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

Branch: refs/heads/master
Commit: 00d8789040bc4d67b2e787de81b3b8209e888c3a
Parents: 8a6fc6e
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Fri Apr 28 15:55:42 2017 +0100
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Tue May 2 11:43:47 2017 +0100

----------------------------------------------------------------------
 .../org/apache/brooklyn/rest/resources/EntityResource.java     | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/00d87890/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/EntityResource.java
----------------------------------------------------------------------
diff --git a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/EntityResource.java b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/EntityResource.java
index 1ebaad7..efc8838 100644
--- a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/EntityResource.java
+++ b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/EntityResource.java
@@ -21,6 +21,7 @@ package org.apache.brooklyn.rest.resources;
 import static javax.ws.rs.core.Response.created;
 import static javax.ws.rs.core.Response.status;
 import static javax.ws.rs.core.Response.Status.ACCEPTED;
+import static org.apache.brooklyn.rest.util.WebResourceUtils.serviceAbsoluteUriBuilder;
 
 import java.net.URI;
 import java.util.LinkedList;
@@ -45,6 +46,7 @@ import org.apache.brooklyn.core.mgmt.EntityManagementUtils;
 import org.apache.brooklyn.core.mgmt.EntityManagementUtils.CreationResult;
 import org.apache.brooklyn.core.mgmt.entitlement.EntitlementPredicates;
 import org.apache.brooklyn.core.mgmt.entitlement.Entitlements;
+import org.apache.brooklyn.core.typereg.RegisteredTypes;
 import org.apache.brooklyn.rest.api.EntityApi;
 import org.apache.brooklyn.rest.domain.EntitySummary;
 import org.apache.brooklyn.rest.domain.LocationSummary;
@@ -66,11 +68,11 @@ import com.google.common.collect.FluentIterable;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 import com.google.common.io.Files;
-import static org.apache.brooklyn.rest.util.WebResourceUtils.serviceAbsoluteUriBuilder;
 
 @HaHotStateRequired
 public class EntityResource extends AbstractBrooklynRestResource implements EntityApi {
 
+    @SuppressWarnings("unused")
     private static final Logger log = LoggerFactory.getLogger(EntityResource.class);
 
     @Context
@@ -162,7 +164,7 @@ public class EntityResource extends AbstractBrooklynRestResource implements Enti
             // paths (ie non-protocol) and
             // NB, for security, file URL's are NOT served
             MediaType mime = WebResourceUtils.getImageMediaTypeFromExtension(Files.getFileExtension(url));
-            Object content = ResourceUtils.create(brooklyn().getCatalogClassLoader()).getResourceFromUrl(url);
+            Object content = ResourceUtils.create(entity).getResourceFromUrl(url);
             return Response.ok(content, mime).build();
         }
 


[5/5] brooklyn-server git commit: This closes #661

Posted by dr...@apache.org.
This closes #661


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

Branch: refs/heads/master
Commit: e247841dd969d5cb150cd16f545d5f4a88d7de56
Parents: f07b6f0 40fdfaf
Author: Duncan Godwin <dr...@googlemail.com>
Authored: Wed May 3 11:00:43 2017 +0100
Committer: Duncan Godwin <dr...@googlemail.com>
Committed: Wed May 3 11:00:43 2017 +0100

----------------------------------------------------------------------
 .../org/apache/brooklyn/api/entity/Entity.java  |  5 +++
 .../internal/AbstractBrooklynObjectSpec.java    |  6 ++--
 .../BrooklynEntityDecorationResolver.java       | 31 ++++++++---------
 .../spi/creation/BrooklynEntityMatcher.java     |  4 +++
 .../brooklyn/spi/creation/CampResolver.java     |  3 --
 .../core/catalog/internal/CatalogItemDo.java    |  5 +++
 .../brooklyn/core/entity/AbstractEntity.java    | 15 ++++-----
 .../core/entity/BrooklynConfigKeys.java         |  2 ++
 .../apache/brooklyn/core/mgmt/BrooklynTags.java |  5 +++
 .../BrooklynClassLoadingContextSequential.java  |  8 ++---
 .../JavaBrooklynClassLoadingContext.java        |  4 +--
 .../core/mgmt/persist/OsgiClassPrefixer.java    |  3 --
 .../core/mgmt/persist/XmlMementoSerializer.java |  6 +---
 .../core/objs/AbstractBrooklynObject.java       |  1 +
 .../core/objs/BrooklynObjectInternal.java       |  3 ++
 .../brooklyn/core/typereg/RegisteredTypes.java  | 17 ++++++++++
 .../brooklyn/util/core/ClassLoaderUtils.java    |  4 +--
 .../util/core/ClassLoaderUtilsTest.java         | 35 ++++++++++++++++----
 .../rest/resources/ApplicationResource.java     |  2 +-
 .../brooklyn/rest/resources/EntityResource.java |  8 +++--
 .../rest/util/BrooklynRestResourceUtils.java    |  4 +--
 21 files changed, 112 insertions(+), 59 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e247841d/core/src/main/java/org/apache/brooklyn/core/entity/BrooklynConfigKeys.java
----------------------------------------------------------------------