You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by bo...@apache.org on 2001/07/11 10:03:12 UTC
cvs commit: jakarta-ant/src/main/org/apache/tools/ant/util/regexp Jdk14RegexpMatcher.java RegexpMatcherFactory.java
bodewig 01/07/11 01:03:12
Modified: . WHATSNEW
docs/manual/CoreTypes mapper.html
src/main/org/apache/tools/ant/util/regexp
RegexpMatcherFactory.java
Added: src/testcases/org/apache/tools/ant/util/regexp
Jdk14RegexpMatcherTest.java
src/main/org/apache/tools/ant/util/regexp
Jdk14RegexpMatcher.java
Log:
support java.util.regex package of JDK 1.4 in regexp mapper.
Revision Changes Path
1.123 +2 -0 jakarta-ant/WHATSNEW
Index: WHATSNEW
===================================================================
RCS file: /home/cvs/jakarta-ant/WHATSNEW,v
retrieving revision 1.122
retrieving revision 1.123
diff -u -r1.122 -r1.123
--- WHATSNEW 2001/07/10 15:39:47 1.122
+++ WHATSNEW 2001/07/11 08:03:06 1.123
@@ -100,6 +100,8 @@
and the OS shell, either directly or through the auxillary antRun
scripts is used.
+* regexp mapper now supports the java.util.regex package of JDK 1.4.
+
Fixed bugs:
-----------
1.4 +3 -2 jakarta-ant/docs/manual/CoreTypes/mapper.html
Index: mapper.html
===================================================================
RCS file: /home/cvs/jakarta-ant/docs/manual/CoreTypes/mapper.html,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- mapper.html 2001/03/09 08:54:35 1.3
+++ mapper.html 2001/07/11 08:03:08 1.4
@@ -229,6 +229,7 @@
<p>The regexp mapper needs a supporting library and an implementation
of <code>org.apache.tools.ant.util.regexp.RegexpMatcher</code> that
hides the specifics of the library. Ant comes with implementations for
+<a href="http://java.sun.com/j2se/1.4/docs/api/java/util/regex/package-summary.html" target="_top">the java.util.regex package of JDK 1.4</a>,
<a href="http://jakarta.apache.org/regexp/" target="_top">jakarta-regexp</a> and <a
href="http://jakarta.apache.org/oro/" target="_top">jakarta-ORO</a>. If you compile
from sources and plan to use one of them, make sure the libraries are
@@ -245,8 +246,8 @@
name of the class implementing
<code>org.apache.tools.ant.util.regexp.RegexpMatcher</code> that
should be used.</li>
-<li>If it has not been set, first try jakarta-ORO; if that
-cannot be found, try jakarta-regexp.</li>
+<li>If it has not been set, first try the JDK 1.4 classes, then
+jakarta-ORO and finally try jakarta-regexp.</li>
</ul>
<b>Examples:</b>
1.1 jakarta-ant/src/testcases/org/apache/tools/ant/util/regexp/Jdk14RegexpMatcherTest.java
Index: Jdk14RegexpMatcherTest.java
===================================================================
/*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2001 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Ant", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
package org.apache.tools.ant.util.regexp;
/**
* Tests for the JDK 1.4 implementation of the RegexpMatcher interface.
*
* @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
*/
public class Jdk14RegexpMatcherTest extends RegexpMatcherTest {
public RegexpMatcher getImplementation() {
return new Jdk14RegexpMatcher();
}
public Jdk14RegexpMatcherTest(String name) {
super(name);
}
}
1.2 +4 -0 jakarta-ant/src/main/org/apache/tools/ant/util/regexp/RegexpMatcherFactory.java
Index: RegexpMatcherFactory.java
===================================================================
RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/util/regexp/RegexpMatcherFactory.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- RegexpMatcherFactory.java 2000/11/29 11:50:08 1.1
+++ RegexpMatcherFactory.java 2001/07/11 08:03:11 1.2
@@ -80,6 +80,10 @@
}
try {
+ return createInstance("org.apache.tools.ant.util.regexp.Jdk14RegexpMatcher");
+ } catch (BuildException be) {}
+
+ try {
return createInstance("org.apache.tools.ant.util.regexp.JakartaOroMatcher");
} catch (BuildException be) {}
1.1 jakarta-ant/src/main/org/apache/tools/ant/util/regexp/Jdk14RegexpMatcher.java
Index: Jdk14RegexpMatcher.java
===================================================================
/*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2001 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Ant", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
package org.apache.tools.ant.util.regexp;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
import org.apache.tools.ant.BuildException;
import java.util.Vector;
/**
* Implementation of RegexpMatcher for the built-in regexp matcher of
* JDK 1.4.
*
* @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
*/
public class Jdk14RegexpMatcher implements RegexpMatcher {
private Pattern pattern;
/**
* Set the regexp pattern from the String description.
*/
public void setPattern(String pattern) throws BuildException {
try {
this.pattern = Pattern.compile(pattern);
} catch (PatternSyntaxException e) {
throw new BuildException(e);
}
}
/**
* Get a String representation of the regexp pattern
*/
public String getPattern() {
return pattern.pattern();
}
/**
* Does the given argument match the pattern?
*/
public boolean matches(String argument) {
return pattern.matcher(argument).find();
}
/**
* Returns a Vector of matched groups found in the argument.
*
* <p>Group 0 will be the full match, the rest are the
* parenthesized subexpressions</p>.
*/
public Vector getGroups(String argument) {
Matcher matcher = pattern.matcher(argument);
if (!matcher.find()) {
return null;
}
Vector v = new Vector();
for (int i=0; i<=matcher.groupCount(); i++) {
v.addElement(matcher.group(i));
}
return v;
}
}