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);
         

Reply via email to