You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2021/04/15 10:13:17 UTC
[brooklyn-server] 02/03: add convenience for ResourceUtils using a
registered type, and add api, and make sure it's used for api
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 <al...@cloudsoftcorp.com>
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:",