You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by gn...@apache.org on 2008/10/09 11:27:24 UTC

svn commit: r703109 - /servicemix/smx4/kernel/trunk/testing/support/src/main/java/org/apache/servicemix/kernel/testing/support/SmxKernelPlatform.java

Author: gnodet
Date: Thu Oct  9 02:27:23 2008
New Revision: 703109

URL: http://svn.apache.org/viewvc?rev=703109&view=rev
Log:
SMX4KNL-117: The Smx testing platform should take into account the boot delegation packages specified in the configuration file

Modified:
    servicemix/smx4/kernel/trunk/testing/support/src/main/java/org/apache/servicemix/kernel/testing/support/SmxKernelPlatform.java

Modified: servicemix/smx4/kernel/trunk/testing/support/src/main/java/org/apache/servicemix/kernel/testing/support/SmxKernelPlatform.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/kernel/trunk/testing/support/src/main/java/org/apache/servicemix/kernel/testing/support/SmxKernelPlatform.java?rev=703109&r1=703108&r2=703109&view=diff
==============================================================================
--- servicemix/smx4/kernel/trunk/testing/support/src/main/java/org/apache/servicemix/kernel/testing/support/SmxKernelPlatform.java (original)
+++ servicemix/smx4/kernel/trunk/testing/support/src/main/java/org/apache/servicemix/kernel/testing/support/SmxKernelPlatform.java Thu Oct  9 02:27:23 2008
@@ -275,6 +275,7 @@
     }
 
     public class GuardClassLoader extends URLClassLoader {
+        private Set<String> bootDelegationPackages = new HashSet<String>();
         private Set<String> packages = new HashSet<String>();
         private List<ClassLoader> parents = new ArrayList<ClassLoader>();
 
@@ -295,6 +296,15 @@
             if (additionalPackages != null) {
                 packages.addAll(additionalPackages);
             }
+            prop = props.getProperty("org.osgi.framework.bootdelegation");
+            ps = prop.split(",");
+            for (String p : ps) {
+                p = p.trim();
+                if (p.endsWith("*")) {
+                    p = p.substring(0, p.length() - 1);
+                }
+                bootDelegationPackages.add(p);
+            }
             ClassLoader cl = getParent();
             while (cl != null) {
                 parents.add(0, cl);
@@ -308,7 +318,16 @@
             Class c = findLoadedClass(name);
             if (c == null) {
                 String pkg = name.substring(0, name.lastIndexOf('.'));
-                if (name.startsWith("java.") || packages.contains(pkg)) {
+                boolean match = name.startsWith("java.") || packages.contains(pkg);
+                if (!match) {
+                    for (String p : bootDelegationPackages) {
+                        if (pkg.startsWith(p)) {
+                            match = true;
+                            break;
+                        }
+                    }
+                }
+                if (match) {
                     for (ClassLoader cl : parents) {
                         try {
                             c = cl.loadClass(name);