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