You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2014/10/27 08:14:09 UTC
git commit: try to keep getResource as specific as possible
Repository: tomee
Updated Branches:
refs/heads/develop fe8b087fd -> 2bb40b171
try to keep getResource as specific as possible
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/2bb40b17
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/2bb40b17
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/2bb40b17
Branch: refs/heads/develop
Commit: 2bb40b1710eb28c9eaa08dc07130532dcbc7a8a3
Parents: fe8b087
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Mon Oct 27 08:13:32 2014 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Mon Oct 27 08:13:32 2014 +0100
----------------------------------------------------------------------
.../org/apache/openejb/core/TempClassLoader.java | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/2bb40b17/container/openejb-core/src/main/java/org/apache/openejb/core/TempClassLoader.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/core/TempClassLoader.java b/container/openejb-core/src/main/java/org/apache/openejb/core/TempClassLoader.java
index 921a0ca..7756513 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/core/TempClassLoader.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/core/TempClassLoader.java
@@ -53,19 +53,22 @@ import java.util.Set;
// Note: this class is a fork from OpenJPA
public class TempClassLoader extends URLClassLoader {
private static final ClassLoader PARENT_LOADER = ParentClassLoaderFinder.Helper.get();
+ private static final URL[] EMPTY_URLS = new URL[0];
private final Set<Skip> skip;
private final ClassLoader system;
private final boolean embedded;
+ private final boolean parentURLClassLoader;
// 80% of class files are smaller then 6k
private final ByteArrayOutputStream bout = new ByteArrayOutputStream(6 * 1024);
public TempClassLoader(final ClassLoader parent) {
- super(new URL[0], parent);
+ super(EMPTY_URLS, parent);
this.skip = SystemInstance.get().getOptions().getAll("openejb.tempclassloader.skip", Skip.NONE);
this.system = ClassLoader.getSystemClassLoader();
this.embedded = this.getClass().getClassLoader() == this.system;
+ this.parentURLClassLoader = URLClassLoader.class.isInstance(parent);
}
/*
@@ -80,6 +83,16 @@ public class TempClassLoader extends URLClassLoader {
return this.loadClass(name, false);
}
+ @Override
+ public URL getResource(final String name) {
+ // try specific url first
+ final URL url = parentURLClassLoader ? URLClassLoader.class.cast(getParent()).findResource(name) : null;
+ if (url != null) {
+ return url;
+ }
+ return super.getResource(name);
+ }
+
public URL getInternalResource(final String name) {
if (!name.startsWith("java/") && !name.startsWith("javax/") && name.endsWith(".class")) {
try {