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/26 08:26:16 UTC

git commit: TOMEE-1428 avoid arraylist allocation if possible

Repository: tomee
Updated Branches:
  refs/heads/develop e517d63af -> bd7fd6809


TOMEE-1428 avoid arraylist allocation if possible


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/bd7fd680
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/bd7fd680
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/bd7fd680

Branch: refs/heads/develop
Commit: bd7fd6809311df814333f46c31c1995b0945fdc0
Parents: e517d63
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Sun Oct 26 08:25:59 2014 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Sun Oct 26 08:25:59 2014 +0100

----------------------------------------------------------------------
 .../org/apache/openejb/core/TempClassLoader.java  | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/bd7fd680/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 8efb348..10b1ee1 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
@@ -31,6 +31,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
 import java.net.URLClassLoader;
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.Enumeration;
@@ -83,14 +84,21 @@ public class TempClassLoader extends URLClassLoader {
     public URL getResource(final String name) {
         if (!name.startsWith("java/") && !name.startsWith("javax/") && name.endsWith(".class")) {
             try {
-                final List<URL> urls = Collections.list(getResources(name));
-                if (urls.isEmpty()) {
+                final Enumeration<URL> resources = getResources(name);
+                if (!resources.hasMoreElements()) {
                     return null;
                 }
-                if (urls.size() > 1) {
-                    Collections.sort(urls, new ResourceComparator(getParent(), name));
+                final URL url = resources.nextElement();
+                if (resources.hasMoreElements()) { // avoid useless allocations
+                    final List<URL> l = new ArrayList<>(2);
+                    l.add(url);
+                    while (resources.hasMoreElements()) {
+                        l.add(resources.nextElement());
+                    }
+                    Collections.sort(l, new ResourceComparator(getParent(), name));
+                    return l.iterator().next();
                 }
-                return urls.iterator().next();
+                return url;
             } catch (final IOException e) {
                 return super.getResource(name);
             }