You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by al...@apache.org on 2017/04/27 12:15:16 UTC

[1/2] brooklyn-server git commit: Don't fail white list loading if invalid bundles present

Repository: brooklyn-server
Updated Branches:
  refs/heads/master accdf944c -> 01141a722


Don't fail white list loading if invalid bundles present


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

Branch: refs/heads/master
Commit: 8298803c60698a251d34e4db9408b3e5dd3f792e
Parents: a23d42f
Author: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Authored: Thu Apr 20 19:05:36 2017 +0300
Committer: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Committed: Thu Apr 20 19:05:36 2017 +0300

----------------------------------------------------------------------
 .../brooklyn/util/core/ClassLoaderUtils.java    |  3 +-
 .../util/core/ClassLoaderUtilsTest.java         | 43 ++++++++++++++++++++
 2 files changed, 45 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/8298803c/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 afb45ba..cadc58a 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
@@ -336,7 +336,8 @@ public class ClassLoaderUtils {
 
         @Override
         public boolean apply(Bundle input) {
-            return symbolicName.matcher(input.getSymbolicName()).matches() &&
+            return input.getSymbolicName() != null && input.getVersion() != null &&
+                    symbolicName.matcher(input.getSymbolicName()).matches() &&
                     (version == null || version.matcher(input.getVersion().toString()).matches());
         }
     }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/8298803c/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 cee97ee..4eed36e 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
@@ -25,7 +25,13 @@ import static org.testng.Assert.assertNotNull;
 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;
+import java.util.jar.Manifest;
 
 import javax.annotation.Nullable;
 
@@ -55,6 +61,7 @@ import org.apache.brooklyn.util.maven.MavenArtifact;
 import org.apache.brooklyn.util.maven.MavenRetriever;
 import org.apache.brooklyn.util.osgi.OsgiTestResources;
 import org.apache.brooklyn.util.osgi.OsgiUtils;
+import org.apache.commons.io.output.ByteArrayOutputStream;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.launch.Framework;
 import org.testng.annotations.AfterMethod;
@@ -146,6 +153,42 @@ public class ClassLoaderUtilsTest {
     }
     
     @Test
+    public void testLoadClassInOsgiWhiteListWithInvalidBundlePresent() 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);
+        
+        Manifest manifest = new Manifest();
+        manifest.getMainAttributes().put(Attributes.Name.MANIFEST_VERSION, "1.0");
+        ByteArrayOutputStream buffer = new ByteArrayOutputStream();
+        JarOutputStream target = new JarOutputStream(buffer, manifest);
+        target.close();
+        
+        OsgiManager osgiManager = ((ManagementContextInternal)mgmt).getOsgiManager().get();
+        Framework framework = osgiManager.getFramework();
+        Bundle installedBundle = framework.getBundleContext().installBundle("stream://invalid", new ByteArrayInputStream(buffer.toByteArray()));
+        assertNotNull(installedBundle);
+        
+        Class<?> clazz = bundle.loadClass(classname);
+        Entity entity = createSimpleEntity(bundleUrl, clazz);
+        
+        String whileList = bundle.getSymbolicName()+":"+bundle.getVersion();
+        System.setProperty(ClassLoaderUtils.WHITE_LIST_KEY, whileList);
+        
+        ClassLoaderUtils cluMgmt = new ClassLoaderUtils(getClass(), mgmt);
+        ClassLoaderUtils cluClass = new ClassLoaderUtils(clazz);
+        ClassLoaderUtils cluEntity = new ClassLoaderUtils(getClass(), entity);
+        
+        assertLoadSucceeds(classname, clazz, cluMgmt, cluClass, cluEntity);
+        assertLoadSucceeds(bundle.getSymbolicName() + ":" + classname, clazz, cluMgmt, cluClass, cluEntity);
+    }
+    
+    @Test
     public void testLoadClassInOsgiCore() throws Exception {
         Class<?> clazz = BasicEntity.class;
         String classname = clazz.getName();


[2/2] brooklyn-server git commit: This closes #643

Posted by al...@apache.org.
This closes #643


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

Branch: refs/heads/master
Commit: 01141a722d7c3768e594423a5e5c65fbfa4a6209
Parents: accdf94 8298803
Author: Aled Sage <al...@gmail.com>
Authored: Thu Apr 27 13:15:00 2017 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Thu Apr 27 13:15:00 2017 +0100

----------------------------------------------------------------------
 .../brooklyn/util/core/ClassLoaderUtils.java    |  3 +-
 .../util/core/ClassLoaderUtilsTest.java         | 43 ++++++++++++++++++++
 2 files changed, 45 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/01141a72/core/src/main/java/org/apache/brooklyn/util/core/ClassLoaderUtils.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/01141a72/core/src/test/java/org/apache/brooklyn/util/core/ClassLoaderUtilsTest.java
----------------------------------------------------------------------