Browse Source

support java.util.regex package of JDK 1.4 in regexp mapper.

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269311 13f79535-47bb-0310-9956-ffa450edef68
master
Stefan Bodewig 24 years ago
parent
commit
c51d45fd2c
5 changed files with 198 additions and 2 deletions
  1. +2
    -0
      WHATSNEW
  2. +3
    -2
      docs/manual/CoreTypes/mapper.html
  3. +117
    -0
      src/main/org/apache/tools/ant/util/regexp/Jdk14RegexpMatcher.java
  4. +4
    -0
      src/main/org/apache/tools/ant/util/regexp/RegexpMatcherFactory.java
  5. +72
    -0
      src/testcases/org/apache/tools/ant/util/regexp/Jdk14RegexpMatcherTest.java

+ 2
- 0
WHATSNEW View File

@@ -100,6 +100,8 @@ Other changes:
and the OS shell, either directly or through the auxillary antRun and the OS shell, either directly or through the auxillary antRun
scripts is used. scripts is used.


* regexp mapper now supports the java.util.regex package of JDK 1.4.

Fixed bugs: Fixed bugs:
----------- -----------




+ 3
- 2
docs/manual/CoreTypes/mapper.html View File

@@ -229,6 +229,7 @@ another dollar-sign in Ant.</p>
<p>The regexp mapper needs a supporting library and an implementation <p>The regexp mapper needs a supporting library and an implementation
of <code>org.apache.tools.ant.util.regexp.RegexpMatcher</code> that of <code>org.apache.tools.ant.util.regexp.RegexpMatcher</code> that
hides the specifics of the library. Ant comes with implementations for 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 <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 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 from sources and plan to use one of them, make sure the libraries are
@@ -245,8 +246,8 @@ following algorithm:</p>
name of the class implementing name of the class implementing
<code>org.apache.tools.ant.util.regexp.RegexpMatcher</code> that <code>org.apache.tools.ant.util.regexp.RegexpMatcher</code> that
should be used.</li> 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> </ul>


<b>Examples:</b> <b>Examples:</b>


+ 117
- 0
src/main/org/apache/tools/ant/util/regexp/Jdk14RegexpMatcher.java View File

@@ -0,0 +1,117 @@
/*
* 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;
}

}

+ 4
- 0
src/main/org/apache/tools/ant/util/regexp/RegexpMatcherFactory.java View File

@@ -79,6 +79,10 @@ public class RegexpMatcherFactory {
// load a different implementation? // load a different implementation?
} }


try {
return createInstance("org.apache.tools.ant.util.regexp.Jdk14RegexpMatcher");
} catch (BuildException be) {}
try { try {
return createInstance("org.apache.tools.ant.util.regexp.JakartaOroMatcher"); return createInstance("org.apache.tools.ant.util.regexp.JakartaOroMatcher");
} catch (BuildException be) {} } catch (BuildException be) {}


+ 72
- 0
src/testcases/org/apache/tools/ant/util/regexp/Jdk14RegexpMatcherTest.java View File

@@ -0,0 +1,72 @@
/*
* 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);
}

}

Loading…
Cancel
Save