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 <[email protected]> Authored: Sun Oct 26 08:25:59 2014 +0100 Committer: Romain Manni-Bucau <[email protected]> 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); }
