You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by cz...@apache.org on 2009/01/26 21:12:55 UTC
svn commit: r737809 -
/cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/util/WildcardMatcherHelper.java
Author: cziegeler
Date: Mon Jan 26 20:12:55 2009
New Revision: 737809
URL: http://svn.apache.org/viewvc?rev=737809&view=rev
Log:
COCOON3-15 : Replace use of internal Sun classes with java.util.regex
Modified:
cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/util/WildcardMatcherHelper.java
Modified: cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/util/WildcardMatcherHelper.java
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/util/WildcardMatcherHelper.java?rev=737809&r1=737808&r2=737809&view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/util/WildcardMatcherHelper.java (original)
+++ cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/util/WildcardMatcherHelper.java Mon Jan 26 20:12:55 2009
@@ -18,14 +18,11 @@
import java.util.HashMap;
import java.util.Map;
-
-import com.sun.org.apache.regexp.internal.RE;
-import com.sun.org.apache.regexp.internal.RECompiler;
-import com.sun.org.apache.regexp.internal.REProgram;
+import java.util.regex.Pattern;
/**
* This class is an utility class that perform wildcard-patterns matching and isolation.
- *
+ *
* @version $Id$
*/
public class WildcardMatcherHelper {
@@ -45,7 +42,7 @@
/**
* Match a pattern agains a string and isolates wildcard replacement into a <code>Map</code>. <br>
* Here is how the matching algorithm works:
- *
+ *
* <ul>
* <li> The '*' character, meaning that zero or more characters (excluding the path separator '/') are to be
* matched. </li>
@@ -64,10 +61,10 @@
* <dd>foo/bar/baz/bug</dt>
* </dl>
* The first '**' in the pattern will suck up as much as possible without making the match fail.
- *
+ *
* @param pat The pattern string.
* @param str The string to math agains the pattern
- *
+ *
* @return a <code>Map</code> containing the representation of the extracted pattern. The extracted patterns are
* keys in the <code>Map</code> from left to right beginning with "1" for te left most, "2" for the next,
* a.s.o. The key "0" is the string itself. If the return value is null, string does not match to the
@@ -108,13 +105,13 @@
private static class Matcher {
/** Regexp to split constant parts from front and back leaving wildcards in the middle. */
- private static final REProgram splitter;
+ private static final Pattern splitter;
static {
final String fixedRE = "([^*\\\\]*)";
final String wcardRE = "(.*[*\\\\])";
final String splitRE = "^" + fixedRE + wcardRE + fixedRE + "$";
- splitter = new RECompiler().compile(splitRE);
+ splitter = Pattern.compile(splitRE);
}
/** Wildcard types to short-cut simple '*' and "**' matches. */
@@ -140,26 +137,26 @@
private final int wctype;
/** Compiled regexp equivalent to wildcard pattern between prefix and suffix. */
- private final REProgram regexp;
+ private final Pattern regexp;
// ~ Constructors ---------------------------------------------------------------------------
/**
* Creates a new Matcher object.
- *
+ *
* @param pat The pattern
* @param str The string
*/
Matcher(final String pat) {
- RE re = new RE(splitter);
+ java.util.regex.Matcher re = splitter.matcher(pat);
- if (re.match(pat)) {
+ if (re.matches()) {
// Split pattern into (foo/)(*)(/bar).
- this.prefix = re.getParen(1);
- String wildcard = re.getParen(2);
- String tail = re.getParen(3);
+ this.prefix = re.group(1);
+ String wildcard = re.group(2);
+ String tail = re.group(3);
// If wildcard ends with \ then add the first char of postfix to wildcard.
if (tail.length() != 0 && wildcard.charAt(wildcard.length() - 1) == ESC) {
@@ -196,7 +193,7 @@
/**
* Match string against pattern.
- *
+ *
* @param str The string
* @return list of wildcard matches, null if match failed
*/
@@ -218,16 +215,16 @@
String infix = str.substring(this.prefix.length(), str.length() - this.suffix.length());
if (this.wctype == WC_REGEXP) {
- RE re = new RE(this.regexp);
- if (!re.match(infix)) {
+ java.util.regex.Matcher re = this.regexp.matcher(infix);
+ if (!re.matches()) {
return null;
}
- int n = re.getParenCount();
- String[] list = new String[n];
+ int n = re.groupCount();
+ String[] list = new String[n+1];
list[0] = str;
- for (int i = 1; i < n; i++) {
- list[i] = re.getParen(i);
+ for (int i = 1; i <= n; i++) {
+ list[i] = re.group(i);
}
return list;
}
@@ -251,11 +248,11 @@
/**
* Compile wildcard pattern into regexp pattern.
- *
+ *
* @param pat The wildcard pattern
* @return compiled regexp program.
*/
- private static REProgram compileRegexp(String pat) {
+ private static Pattern compileRegexp(String pat) {
StringBuffer repat = new StringBuffer(pat.length() * 6);
repat.append('^');
@@ -299,6 +296,6 @@
}
repat.append('$');
- return new RECompiler().compile(repat.toString());
+ return Pattern.compile(repat.toString());
}
}