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/11/28 17:01:10 UTC
[2/3] tomee git commit: trying to optimize our exclusion logic
trying to optimize our exclusion logic
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/b1b7acd9
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/b1b7acd9
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/b1b7acd9
Branch: refs/heads/develop
Commit: b1b7acd95ef4e210a8aafb270c7c37189b818743
Parents: b9bb90b
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Fri Nov 28 15:37:50 2014 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Fri Nov 28 15:37:50 2014 +0100
----------------------------------------------------------------------
.../apache/openejb/config/NewLoaderLogic.java | 37 +++++++++++---------
1 file changed, 20 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/b1b7acd9/container/openejb-core/src/main/java/org/apache/openejb/config/NewLoaderLogic.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/NewLoaderLogic.java b/container/openejb-core/src/main/java/org/apache/openejb/config/NewLoaderLogic.java
index 4bf16a3..73d1b64 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/NewLoaderLogic.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/NewLoaderLogic.java
@@ -34,7 +34,6 @@ import org.apache.xbean.finder.filter.Filter;
import org.apache.xbean.finder.filter.Filters;
import org.apache.xbean.finder.filter.IncludeExcludeFilter;
import org.apache.xbean.finder.filter.PatternFilter;
-import org.apache.xbean.finder.filter.PrefixFilter;
import java.io.BufferedReader;
import java.io.File;
@@ -54,6 +53,8 @@ import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
+import static java.util.Arrays.asList;
+
/**
* @version $Rev$ $Date$
*/
@@ -310,12 +311,11 @@ public class NewLoaderLogic {
@SuppressWarnings("unchecked")
public static Filter getFilter() {
if (filter == null) {
- final List<Filter> filters = new ArrayList<Filter>();
- for (final String s : getExclusions()) {
- filters.add(new PrefixOrStringFilter(s));
+ synchronized (NewLoaderLogic.class) {
+ if (filter == null) {
+ filter = new OptimizedExclusionFilter(getExclusions());
+ }
}
-
- filter = Filters.optimize(filters);
}
return filter;
}
@@ -563,23 +563,26 @@ public class NewLoaderLogic {
}
- private static class PrefixOrStringFilter extends PrefixFilter {
-
- protected final String simplePrefix;
+ private static class OptimizedExclusionFilter implements Filter {
+ private final Set<String> included = new HashSet<>();
- public PrefixOrStringFilter(final String s) {
- super(s);
- if (s.endsWith("-")) {
- simplePrefix = s.substring(0, s.length() - 1);
- } else {
- simplePrefix = s;
+ public OptimizedExclusionFilter(final String[] exclusions) {
+ included.addAll(asList(exclusions));
+ for (final String e : exclusions) {
+ if (e.endsWith("-")) {
+ included.add(e.substring(0, e.length() - 1) + ".jar");
+ }
}
}
@Override
public boolean accept(final String name) {
- return super.accept(name)
- || name.endsWith(".jar") && name.substring(0, name.length() - ".jar".length()).equals(simplePrefix);
+ for (int i = 1; i <= name.length(); i++) {
+ if (included.contains(name.substring(0, i))) {
+ return true;
+ }
+ }
+ return false;
}
}
}