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);
}