Repository: brooklyn-server Updated Branches: refs/heads/master c3dc6e847 -> 12c645ecf
OSGi classloading: incorporate review comments Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/cde747f3 Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/cde747f3 Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/cde747f3 Branch: refs/heads/master Commit: cde747f39a2af547fd0d4c7da02ffdf168de3e1f Parents: 7735787 Author: Aled Sage <[email protected]> Authored: Thu Jul 7 23:40:28 2016 +0100 Committer: Aled Sage <[email protected]> Committed: Sat Jul 9 10:58:36 2016 +0100 ---------------------------------------------------------------------- .../brooklyn/camp/brooklyn/RebindOsgiTest.java | 20 ++++++++++++++++++-- .../brooklyn/util/core/ClassLoaderUtils.java | 11 +++++++---- .../mgmt/persist/XmlMementoSerializerTest.java | 2 +- .../util/core/ClassLoaderUtilsTest.java | 7 +++++++ 4 files changed, 33 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/cde747f3/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/RebindOsgiTest.java ---------------------------------------------------------------------- diff --git a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/RebindOsgiTest.java b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/RebindOsgiTest.java index 46387da..2f2f462 100644 --- a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/RebindOsgiTest.java +++ b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/RebindOsgiTest.java @@ -40,6 +40,7 @@ import org.apache.brooklyn.core.mgmt.osgi.OsgiStandaloneTest; import org.apache.brooklyn.core.mgmt.osgi.OsgiVersionMoreEntityTest; import org.apache.brooklyn.core.sensor.Sensors; import org.apache.brooklyn.core.test.entity.TestEntity; +import org.apache.brooklyn.test.support.TestResourceUnavailableException; import org.apache.brooklyn.util.core.osgi.Osgis; import org.apache.brooklyn.util.exceptions.Exceptions; import org.apache.brooklyn.util.guava.Maybe; @@ -62,8 +63,10 @@ import com.google.common.collect.Lists; public class RebindOsgiTest extends AbstractYamlRebindTest { + @SuppressWarnings("unused") private static final Logger LOG = LoggerFactory.getLogger(RebindOsgiTest.class); + private static final String OSGI_BUNDLE_PATH = OsgiStandaloneTest.BROOKLYN_TEST_OSGI_ENTITIES_PATH; private static final String OSGI_BUNDLE_URL = OsgiStandaloneTest.BROOKLYN_TEST_OSGI_ENTITIES_URL; private static final String OSGI_BUNDLE_SYMBOLIC_NAME = "org.apache.brooklyn.test.resources.osgi.brooklyn-test-osgi-entities"; private static final String OSGI_ENTITY_TYPE = OsgiTestResources.BROOKLYN_TEST_OSGI_ENTITIES_SIMPLE_ENTITY; @@ -155,6 +158,8 @@ public class RebindOsgiTest extends AbstractYamlRebindTest { @Test public void testValInEntityFromOtherBundle() throws Exception { + TestResourceUnavailableException.throwIfResourceUnavailable(getClass(), OSGI_BUNDLE_PATH); + installBundle(mgmt(), OSGI_BUNDLE_URL); bundleUrlsToInstallOnRebind.add(OSGI_BUNDLE_URL); @@ -180,6 +185,8 @@ public class RebindOsgiTest extends AbstractYamlRebindTest { @Test public void testEntityAndPolicyFromCatalogOsgi() throws Exception { + TestResourceUnavailableException.throwIfResourceUnavailable(getClass(), OSGI_BUNDLE_PATH); + String appSymbolicName = "my.catalog.app.id.load"; String appVersion = "0.1.0"; String appCatalogFormat = Joiner.on("\n").join( @@ -228,6 +235,8 @@ public class RebindOsgiTest extends AbstractYamlRebindTest { @Test public void testJavaPojoFromCatalogOsgi() throws Exception { + TestResourceUnavailableException.throwIfResourceUnavailable(getClass(), OSGI_BUNDLE_PATH); + String appSymbolicName = "my.catalog.app.id.load"; String appVersion = "0.1.0"; String appCatalogFormat = Joiner.on("\n").join( @@ -270,6 +279,8 @@ public class RebindOsgiTest extends AbstractYamlRebindTest { @Test public void testBrooklynObjectDslFromCatalogOsgi() throws Exception { + TestResourceUnavailableException.throwIfResourceUnavailable(getClass(), OSGI_BUNDLE_PATH); + String appSymbolicName = "my.catalog.app.id.load"; String appVersion = "0.1.0"; String appCatalogFormat = Joiner.on("\n").join( @@ -329,6 +340,9 @@ public class RebindOsgiTest extends AbstractYamlRebindTest { */ @Test public void testUsesCatalogBundleVersion() throws Exception { + TestResourceUnavailableException.throwIfResourceUnavailable(getClass(), OsgiVersionMoreEntityTest.BROOKLYN_TEST_MORE_ENTITIES_V1_PATH); + TestResourceUnavailableException.throwIfResourceUnavailable(getClass(), OsgiVersionMoreEntityTest.BROOKLYN_TEST_MORE_ENTITIES_V2_PATH); + String bundleV1Url = OsgiVersionMoreEntityTest.BROOKLYN_TEST_MORE_ENTITIES_V1_URL; String bundleV2Url = OsgiVersionMoreEntityTest.BROOKLYN_TEST_MORE_ENTITIES_V2_URL; String bundleEntityType = "org.apache.brooklyn.test.osgi.entities.more.MoreEntity"; @@ -382,6 +396,8 @@ public class RebindOsgiTest extends AbstractYamlRebindTest { // Need to reproduce that in a simpler use-case. @Test public void testBrooklynObjectDslFromCatalogOsgiInPolicy() throws Exception { + TestResourceUnavailableException.throwIfResourceUnavailable(getClass(), OSGI_BUNDLE_PATH); + String appSymbolicName = "my.catalog.app.id.load"; String appVersion = "0.1.0"; String appCatalogFormat = Joiner.on("\n").join( @@ -429,7 +445,7 @@ public class RebindOsgiTest extends AbstractYamlRebindTest { private Object newOsgiSimpleObject(String val) throws Exception { Class<?> osgiObjectClazz = getBundle(mgmt(), OSGI_BUNDLE_SYMBOLIC_NAME).loadClass(OSGI_OBJECT_TYPE); - return Reflections.invokeConstructorWithArgs(osgiObjectClazz, val).get(); + return Reflections.invokeConstructorFromArgs(osgiObjectClazz, val).get(); } private void assertOsgiSimpleObjectsEqual(Object val1, Object val2) throws Exception { @@ -444,7 +460,7 @@ public class RebindOsgiTest extends AbstractYamlRebindTest { private String getOsgiSimpleObjectsVal(Object val) throws Exception { assertNotNull(val); - return (String) Reflections.invokeMethodWithArgs(val, "getVal", ImmutableList.of()).get(); + return (String) Reflections.invokeMethodFromArgs(val, "getVal", ImmutableList.of()).get(); } private Bundle installBundle(ManagementContext mgmt, String bundleUrl) throws Exception { http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/cde747f3/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 b6d39e9..179cc4f 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 @@ -72,7 +72,8 @@ public class ClassLoaderUtils { } public ClassLoaderUtils(Class<?> callingClass) { - this.classLoader = checkNotNull(callingClass, "callingClass").getClassLoader(); + checkNotNull(callingClass, "callingClass"); + this.classLoader = (callingClass.getClassLoader() != null) ? callingClass.getClassLoader() : getClass().getClassLoader(); this.entity = null; this.mgmt = null; } @@ -90,13 +91,15 @@ public class ClassLoaderUtils { } public ClassLoaderUtils(Class<?> callingClass, Entity entity) { - this.classLoader = checkNotNull(callingClass, "callingClass").getClassLoader(); + checkNotNull(callingClass, "callingClass"); + this.classLoader = (callingClass.getClassLoader() != null) ? callingClass.getClassLoader() : getClass().getClassLoader(); this.entity = checkNotNull(entity, "entity"); this.mgmt = ((EntityInternal)entity).getManagementContext(); } public ClassLoaderUtils(Class<?> callingClass, @Nullable ManagementContext mgmt) { - this.classLoader = checkNotNull(callingClass, "callingClass").getClassLoader(); + checkNotNull(callingClass, "callingClass"); + this.classLoader = (callingClass.getClassLoader() != null) ? callingClass.getClassLoader() : getClass().getClassLoader(); this.entity = null; this.mgmt = checkNotNull(mgmt, "mgmt"); } @@ -180,7 +183,7 @@ public class ClassLoaderUtils { } } - Class<?> cls = tryLoadFromBundleWhiteList(name); + Class<?> cls = tryLoadFromBundleWhiteList(className); if (cls != null) { return cls; } http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/cde747f3/core/src/test/java/org/apache/brooklyn/core/mgmt/persist/XmlMementoSerializerTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/brooklyn/core/mgmt/persist/XmlMementoSerializerTest.java b/core/src/test/java/org/apache/brooklyn/core/mgmt/persist/XmlMementoSerializerTest.java index e26983b..069416e 100644 --- a/core/src/test/java/org/apache/brooklyn/core/mgmt/persist/XmlMementoSerializerTest.java +++ b/core/src/test/java/org/apache/brooklyn/core/mgmt/persist/XmlMementoSerializerTest.java @@ -411,7 +411,7 @@ public class XmlMementoSerializerTest { String classname = OsgiTestResources.BROOKLYN_TEST_OSGI_ENTITIES_SIMPLE_OBJECT; Class<?> osgiObjectClazz = bundle.loadClass(classname); - Object obj = Reflections.invokeConstructorWithArgs(osgiObjectClazz, "myval").get(); + Object obj = Reflections.invokeConstructorFromArgs(osgiObjectClazz, "myval").get(); assertSerializeAndDeserialize(obj); http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/cde747f3/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 98a93ef..b5bfbc2 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 @@ -31,6 +31,7 @@ import org.apache.brooklyn.core.mgmt.internal.ManagementContextInternal; import org.apache.brooklyn.core.mgmt.osgi.OsgiStandaloneTest; import org.apache.brooklyn.core.test.entity.LocalManagementContextForTests; import org.apache.brooklyn.test.Asserts; +import org.apache.brooklyn.test.support.TestResourceUnavailableException; import org.apache.brooklyn.util.core.osgi.Osgis; import org.apache.brooklyn.util.guava.Maybe; import org.apache.brooklyn.util.osgi.OsgiTestResources; @@ -77,9 +78,12 @@ public class ClassLoaderUtilsTest { @Test public void testLoadClassInOsgi() 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).disableOsgi(false).build(); Bundle bundle = installBundle(mgmt, bundleUrl); @@ -92,9 +96,12 @@ public class ClassLoaderUtilsTest { @Test public void testLoadClassInOsgiWhiteList() 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).disableOsgi(false).build(); Bundle bundle = installBundle(mgmt, bundleUrl);
