diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/Jython27ClassLoader.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/Jython27ClassLoader.java index 6308592a8d6d3d7f1da1cefce7811d573fd64531..e90254e2a4235c95f9137aa603094e0095f8f99c 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/Jython27ClassLoader.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/Jython27ClassLoader.java @@ -22,8 +22,10 @@ import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import java.net.URLClassLoader; +import java.util.Arrays; import java.util.Enumeration; import java.util.HashMap; +import java.util.List; import java.util.Map; import org.apache.commons.io.IOUtils; @@ -47,6 +49,7 @@ import ch.systemsx.cisd.common.exceptions.EnvironmentFailureException; */ public class Jython27ClassLoader extends ClassLoader { + private static final List<String> EXCLUDED_PACKAGES_STARTS = Arrays.asList("java", "sun.", "com.sun."); private final URLClassLoader jythonJarClassLoader; private final Map<String, Class<?>> cachedClasses = new HashMap<>(); @@ -75,7 +78,7 @@ public class Jython27ClassLoader extends ClassLoader Class<?> clazz = cachedClasses.get(name); if (clazz == null) { - if (name.startsWith("sun.") == false && name.startsWith("java") == false) + if (excludedPackageStart(name) == false) { clazz = tryLoadClass(jythonJarClassLoader, name); } @@ -103,6 +106,18 @@ public class Jython27ClassLoader extends ClassLoader return clazz; } + private boolean excludedPackageStart(String className) + { + for (String packageStart : EXCLUDED_PACKAGES_STARTS) + { + if (className.startsWith(packageStart)) + { + return true; + } + } + return false; + } + private void definePackage(String className) { String packageName = getPackageName(className);