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 {