This is an automated email from the ASF dual-hosted git repository.

heneveld pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/brooklyn-server.git

commit 956ad1552407295cbf4985327567b844fe4d5fe0
Author: Alex Heneveld <[email protected]>
AuthorDate: Thu Apr 15 11:02:05 2021 +0100

    add convenience for ResourceUtils using a registered type, and add api, and 
make sure it's used for api
---
 .../brooklyn/core/mgmt/internal/AbstractManagementContext.java | 10 +++++++---
 .../main/java/org/apache/brooklyn/util/core/ResourceUtils.java |  6 ++++++
 .../java/org/apache/brooklyn/rest/resources/TypeResource.java  |  2 +-
 .../brooklyn/rest/resources/BundleAndTypeResourcesTest.java    | 10 +++++++++-
 4 files changed, 23 insertions(+), 5 deletions(-)

diff --git 
a/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/AbstractManagementContext.java
 
b/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/AbstractManagementContext.java
index 8de2dce..be1f97c 100644
--- 
a/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/AbstractManagementContext.java
+++ 
b/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/AbstractManagementContext.java
@@ -19,6 +19,7 @@
 package org.apache.brooklyn.core.mgmt.internal;
 
 import static com.google.common.base.Preconditions.checkNotNull;
+import org.apache.brooklyn.api.typereg.OsgiBundleWithUrl;
 import static 
org.apache.brooklyn.core.catalog.internal.CatalogUtils.newClassLoadingContextForCatalogItems;
 
 import java.lang.reflect.InvocationTargetException;
@@ -126,10 +127,13 @@ public abstract class AbstractManagementContext 
implements ManagementContextInte
                     return apply(internal.getManagementSupport());
                 }
                 
-                if (input instanceof EntityManagementSupport)
-                    return 
apply(((EntityManagementSupport)input).getManagementContext());
-                if (input instanceof ManagementContext)
+                if (input instanceof EntityManagementSupport) {
+                    return apply(((EntityManagementSupport) 
input).getManagementContext());
+                }
+
+                if (input instanceof ManagementContext) {
                     return 
JavaBrooklynClassLoadingContext.create((ManagementContext) input);
+                }
                 return null;
             }
         });
diff --git 
a/core/src/main/java/org/apache/brooklyn/util/core/ResourceUtils.java 
b/core/src/main/java/org/apache/brooklyn/util/core/ResourceUtils.java
index 4d76cc4..cea3ba8 100644
--- a/core/src/main/java/org/apache/brooklyn/util/core/ResourceUtils.java
+++ b/core/src/main/java/org/apache/brooklyn/util/core/ResourceUtils.java
@@ -38,10 +38,12 @@ import javax.annotation.Nullable;
 
 import org.apache.brooklyn.api.mgmt.ManagementContext;
 import org.apache.brooklyn.api.mgmt.classloading.BrooklynClassLoadingContext;
+import org.apache.brooklyn.api.typereg.RegisteredType;
 import 
org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog.BrooklynLoaderTracker;
 import org.apache.brooklyn.core.catalog.internal.CatalogUtils;
 import org.apache.brooklyn.core.internal.BrooklynInitialization;
 import 
org.apache.brooklyn.core.mgmt.classloading.JavaBrooklynClassLoadingContext;
+import 
org.apache.brooklyn.core.mgmt.classloading.OsgiBrooklynClassLoadingContext;
 import org.apache.brooklyn.location.ssh.SshMachineLocation;
 import org.apache.brooklyn.util.collections.MutableMap;
 import org.apache.brooklyn.util.core.text.DataUriSchemeParser;
@@ -135,6 +137,10 @@ public class ResourceUtils {
         return new ResourceUtils(contextObject);
     }
 
+    public static final ResourceUtils create(RegisteredType type, 
ManagementContext mgmt) {
+        return create(new OsgiBrooklynClassLoadingContext(mgmt, type.getId(), 
type.getLibraries()));
+    }
+
     /**
      * Creates a {@link ResourceUtils} object with itself as the context.
      *
diff --git 
a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/TypeResource.java
 
b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/TypeResource.java
index 5a3ce2f..fbd717b 100644
--- 
a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/TypeResource.java
+++ 
b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/TypeResource.java
@@ -181,7 +181,7 @@ public class TypeResource extends 
AbstractBrooklynRestResource implements TypeAp
             
             MediaType mime = 
WebResourceUtils.getImageMediaTypeFromExtension(Files.getFileExtension(url));
             try {
-                Object content = 
ResourceUtils.create(CatalogUtils.newClassLoadingContext(mgmt, 
result)).getResourceFromUrl(url);
+                Object content = ResourceUtils.create(result, 
mgmt).getResourceFromUrl(url);
                 return Response.ok(content, mime).build();
             } catch (Exception e) {
                 Exceptions.propagateIfFatal(e);
diff --git 
a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/BundleAndTypeResourcesTest.java
 
b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/BundleAndTypeResourcesTest.java
index de93001..c093579 100644
--- 
a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/BundleAndTypeResourcesTest.java
+++ 
b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/BundleAndTypeResourcesTest.java
@@ -19,6 +19,8 @@
 package org.apache.brooklyn.rest.resources;
 
 import static com.google.common.base.Preconditions.checkNotNull;
+import static groovy.ui.Console.ICON_PATH;
+import static 
org.apache.brooklyn.util.osgi.OsgiTestResources.BROOKLYN_TEST_OSGI_ENTITIES_COM_EXAMPLE_ICON_PATH;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertTrue;
 
@@ -762,7 +764,7 @@ public class BundleAndTypeResourcesTest extends 
BrooklynRestResourceTest {
         final String version = 
OsgiTestResources.BROOKLYN_TEST_OSGI_ENTITIES_COM_EXAMPLE_VERSION;
         final String bundleUrl = 
OsgiTestResources.BROOKLYN_TEST_OSGI_ENTITIES_COM_EXAMPLE_URL;
         final String entityType = 
OsgiTestResources.BROOKLYN_TEST_OSGI_ENTITIES_COM_EXAMPLE_ENTITY;
-        final String iconPath = 
OsgiTestResources.BROOKLYN_TEST_OSGI_ENTITIES_COM_EXAMPLE_ICON_PATH;
+        final String iconPath = 
BROOKLYN_TEST_OSGI_ENTITIES_COM_EXAMPLE_ICON_PATH;
         BundleMaker bm = new BundleMaker(manager);
         File f = Os.newTempFile("osgi", "jar");
         
Files.copyFile(ResourceUtils.create(this).getResourceFromUrl(bundleUrl), f);
@@ -805,6 +807,9 @@ public class BundleAndTypeResourcesTest extends 
BrooklynRestResourceTest {
         OsgiBundleWithUrl lib = Iterables.getOnlyElement(libs);
         Assert.assertNull(lib.getUrl());
 
+        // check we can find it with ResourceUtils
+        ResourceUtils.create(item, 
getManagementContext()).checkUrlExists("classpath://"+BROOKLYN_TEST_OSGI_ENTITIES_COM_EXAMPLE_ICON_PATH);
+
         assertEquals(lib.getSymbolicName(), symbolicName);
         assertEquals(lib.getSuppliedVersionString(), version);
 
@@ -826,6 +831,9 @@ public class BundleAndTypeResourcesTest extends 
BrooklynRestResourceTest {
         byte[] iconData = client().path("/catalog/types/" + symbolicName + "/" 
+ version + "/icon").get(byte[].class);
         assertEquals(iconData.length, 43);
 
+        iconData = client().path("/catalog/bundles/"+symbolicName+"/"+version 
+ "/types/"+symbolicName+"/"+version + "/icon").get(byte[].class);
+        assertEquals(iconData.length, 43);
+
         // Check that the catalog item is useable (i.e. can deploy the entity)
         String appYaml = Joiner.on("\n").join(
                 "services:",

Reply via email to