You are viewing a plain text version of this content. The canonical link for it is here.
Posted to xbean-scm@geronimo.apache.org by db...@apache.org on 2011/03/27 03:13:27 UTC
svn commit: r1085848 - in
/geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder:
UrlSet.java filter/Filters.java
Author: dblevins
Date: Sun Mar 27 01:13:27 2011
New Revision: 1085848
URL: http://svn.apache.org/viewvc?rev=1085848&view=rev
Log:
Cleaned up the UrlSet so that it now can use a Filter
Some of the internal implementations of filtering were removed and now reuse Filters
Filters.invert(Filter) method added which can flip the meaning of a filter, and safely unflip it.
Modified:
geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/UrlSet.java
geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/filter/Filters.java
Modified: geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/UrlSet.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/UrlSet.java?rev=1085848&r1=1085847&r2=1085848&view=diff
==============================================================================
--- geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/UrlSet.java (original)
+++ geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/UrlSet.java Sun Mar 27 01:13:27 2011
@@ -16,6 +16,10 @@
*/
package org.apache.xbean.finder;
+import org.apache.xbean.finder.filter.Filter;
+import org.apache.xbean.finder.filter.Filters;
+import org.apache.xbean.finder.filter.RegexFilter;
+
import java.net.URL;
import java.net.MalformedURLException;
import java.util.Collection;
@@ -28,6 +32,9 @@ import java.util.Arrays;
import java.io.IOException;
import java.io.File;
+import static org.apache.xbean.finder.filter.Filters.invert;
+import static org.apache.xbean.finder.filter.Filters.patterns;
+
/**
* @version $Rev$ $Date$
*/
@@ -96,7 +103,7 @@ public class UrlSet {
}
public UrlSet exclude(String pattern) throws MalformedURLException {
- return exclude(matching(pattern));
+ return filter(invert(patterns(pattern)));
}
/**
@@ -142,17 +149,21 @@ public class UrlSet {
return urlSet;
}
- public UrlSet matching(String pattern) {
+ public UrlSet filter(Filter filter) {
Map<String, URL> urls = new HashMap<String, URL>();
for (Map.Entry<String, URL> entry : this.urls.entrySet()) {
String url = entry.getKey();
- if (url.matches(pattern)){
+ if (filter.accept(url)){
urls.put(url, entry.getValue());
}
}
return new UrlSet(urls);
}
+ public UrlSet matching(String pattern) {
+ return filter(patterns(pattern));
+ }
+
public UrlSet relative(File file) throws MalformedURLException {
String urlPath = file.toURI().toURL().toExternalForm();
Map<String, URL> urls = new HashMap<String, URL>();
Modified: geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/filter/Filters.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/filter/Filters.java?rev=1085848&r1=1085847&r2=1085848&view=diff
==============================================================================
--- geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/filter/Filters.java (original)
+++ geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/filter/Filters.java Sun Mar 27 01:13:27 2011
@@ -86,6 +86,26 @@ public class Filters {
return new FilterList(unwrapped);
}
+ /**
+ * Will invert the meaning of this filter by wrapping it with
+ * a filter that negates the return of the accept method.
+ *
+ * If the passed in filter is already wrapped, it will be
+ * unwrapped and returned. This is to prevent endless wrapping
+ * if the invert method is called many times.
+ *
+ * @param filter
+ * @return
+ */
+ public static Filter invert(Filter filter) {
+ if (filter instanceof NegativeFilter) {
+ NegativeFilter negativeFilter = (NegativeFilter) filter;
+ return negativeFilter.getFilter();
+ }
+
+ return new NegativeFilter(filter);
+ }
+
private static void unwrap(List<Filter> filters, Set<Filter> unwrapped) {
for (Filter filter : filters) {
if (filter instanceof FilterList) {
@@ -97,5 +117,21 @@ public class Filters {
}
}
+ private static final class NegativeFilter implements Filter {
+ private final Filter filter;
+
+ public NegativeFilter(Filter filter) {
+ this.filter = filter;
+ }
+
+ @Override
+ public boolean accept(String name) {
+ return !filter.accept(name);
+ }
+
+ public Filter getFilter() {
+ return filter;
+ }
+ }
}