antoine 2004/08/13 02:14:20
Modified: src/main/org/apache/tools/ant/types Tag: ANT_16_BRANCH
RegularExpression.java
docs/manual/OptionalTasks Tag: ANT_16_BRANCH
replaceregexp.html
docs/manual Tag: ANT_16_BRANCH conceptstypeslist.html
. Tag: ANT_16_BRANCH WHATSNEW
Added: docs/manual/CoreTypes Tag: ANT_16_BRANCH regexp.html
Log:
Merge the solution to PR 15390 from HEAD (allow choice of regular expression
implementation)
PR: 15390
PR: 30185
Revision Changes Path
No revision
No revision
1.4.2.1 +0 -0 ant/docs/manual/CoreTypes/regexp.html
Index: regexp.html
===================================================================
RCS file: /home/cvs/ant/docs/manual/CoreTypes/regexp.html,v
retrieving revision 1.4
retrieving revision 1.4.2.1
diff -u -r1.4 -r1.4.2.1
No revision
No revision
1.15.2.5 +45 -6
ant/src/main/org/apache/tools/ant/types/RegularExpression.java
Index: RegularExpression.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/types/RegularExpression.java,v
retrieving revision 1.15.2.4
retrieving revision 1.15.2.5
diff -u -r1.15.2.4 -r1.15.2.5
--- RegularExpression.java 9 Mar 2004 17:01:55 -0000 1.15.2.4
+++ RegularExpression.java 13 Aug 2004 09:14:20 -0000 1.15.2.5
@@ -61,42 +61,81 @@
public class RegularExpression extends DataType {
/** Name of this data type */
public static final String DATA_TYPE_NAME = "regexp";
+ private boolean alreadyInit = false;
// The regular expression factory
- private static final RegexpFactory factory = new RegexpFactory();
+ private static final RegexpFactory FACTORY = new RegexpFactory();
- private Regexp regexp;
+ private Regexp regexp = null;
+ // temporary variable
+ private String myPattern;
+ private boolean setPatternPending = false;
+ /**
+ * default constructor
+ */
public RegularExpression() {
- this.regexp = factory.newRegexp();
}
+ private void init(Project p) {
+ if (!alreadyInit) {
+ this.regexp = FACTORY.newRegexp(p);
+ alreadyInit = true;
+ }
+ }
+ private void setPattern() {
+ if (setPatternPending) {
+ regexp.setPattern(myPattern);
+ setPatternPending = false;
+ }
+ }
+ /**
+ * sets the regular expression pattern
+ * @param pattern regular expression pattern
+ */
public void setPattern(String pattern) {
- this.regexp.setPattern(pattern);
+ if (regexp == null) {
+ myPattern = pattern;
+ setPatternPending = true;
+ } else {
+ regexp.setPattern(pattern);
+ }
}
/***
* Gets the pattern string for this RegularExpression in the
* given project.
+ * @param p project
+ * @return pattern
*/
public String getPattern(Project p) {
+ init(p);
if (isReference()) {
return getRef(p).getPattern(p);
}
-
+ setPattern();
return regexp.getPattern();
}
+ /**
+ * provides a reference to the Regexp contained in this
+ * @param p project
+ * @return Regexp instance associated with this RegularExpression
instance
+ */
public Regexp getRegexp(Project p) {
+ init(p);
if (isReference()) {
return getRef(p).getRegexp(p);
}
+ setPattern();
return this.regexp;
}
/***
* Get the RegularExpression this reference refers to in
* the given project. Check for circular references too
+ * @param p project
+ * @return resolved RegularExpression instance
*/
public RegularExpression getRef(Project p) {
if (!isChecked()) {
@@ -109,7 +148,7 @@
Object o = getRefid().getReferencedObject(p);
if (!(o instanceof RegularExpression)) {
String msg = getRefid().getRefId() + " doesn\'t denote a "
- + DATA_TYPE_NAME;
+ + DATA_TYPE_NAME;
throw new BuildException(msg);
} else {
return (RegularExpression) o;
No revision
No revision
1.16.2.4 +4 -43 ant/docs/manual/OptionalTasks/replaceregexp.html
Index: replaceregexp.html
===================================================================
RCS file: /home/cvs/ant/docs/manual/OptionalTasks/replaceregexp.html,v
retrieving revision 1.16.2.3
retrieving revision 1.16.2.4
diff -u -r1.16.2.3 -r1.16.2.4
--- replaceregexp.html 9 Feb 2004 22:12:11 -0000 1.16.2.3
+++ replaceregexp.html 13 Aug 2004 09:14:20 -0000 1.16.2.4
@@ -20,7 +20,8 @@
<p>Similar to <a href="../CoreTypes/mapper.html#regexp-mapper">regexp
type mappers</a> this task needs a supporting regular expression
library and an implementation of
-<code>org.apache.tools.ant.util.regexp.Regexp</code>. See details <a
href="#implementation">below</a>. </p>
+<code>org.apache.tools.ant.util.regexp.Regexp</code>.
+See details in the documentation of the <a
href=../CoreTypes/regexp.html#implementation">Regexp Type</a>. </p>
<h3>Parameters</h3>
<table border="1" cellpadding="2" cellspacing="0">
@@ -80,51 +81,11 @@
<p>replaces occurrences of the property name "OldProperty"
with "NewProperty" in a properties file, preserving the existing
value, in the file <code>${src}/build.properties</code></p>
-<a name="implementation"/>
-<h3>Choice of regular expression implementation</h3>
-<p>
-Ant comes with
-wrappers 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>,
-See <a href="../install.html#librarydependencies">installation
dependencies</a>
- concerning the supporting libraries.</p>
-<p>
-The system property <code>ant.regexp.regexpimpl</code> governs which regular
expression implementation will be chosen.
-Possible values for this property are :
-<ul>
-<li>
-org.apache.tools.ant.util.regexp.Jdk14RegexpRegexp
-</li>
-<li>
-org.apache.tools.ant.util.regexp.JakartaOroRegexp
-</li>
-<li>
-org.apache.tools.ant.util.regexp.JakartaRegexpRegexp
-</li>
-</ul>
-It can also be another implementation of the interface
<code>org.apache.tools.ant.util.regexp.Regexp</code>.
-If <code>ant.regexp.regexpimpl</code> is not defined, ant checks in the
order Jdk14Regexp, JakartaOroRegexp,
- JakartaRegexp for the availability of the corresponding library. The first
of these 3 which is found will be used.</p>
-<p>
-There are cross-platform issues for matches related to line terminator.
-For example if you use $ to anchor your regular expression on the end of a
line
-the results might be very different depending on both your platform and the
regular
-expression library you use. It is 'highly recommended' that you test your
pattern on
-both Unix and Windows platforms before you rely on it.
-<ul>
- <li>Jakarta Oro defines a line terminator as '\n' and is consistent with
Perl.</li>
- <li>Jakarta RegExp uses a system-dependant line terminator.</li>
- <li>JDK 1.4 uses '\n', '\r\n', '\u0085', '\u2028', '\u2029' as a default
- but is configured in the wrapper to use only '\n' (UNIX_LINE)</li>
-</ul>
-<em>We <b>strongly</b> recommend that you use Jakarta Oro.</em>
-</p>
+
<h3>Parameters specified as nested elements</h3>
<p>This task supports a nested <a
href="../CoreTypes/fileset.html">FileSet</a>
element.</p>
-<p>This task supports a nested <i>Regexp</i> element to specify
+<p>This task supports a nested <i><a
href="../CoreTypes/regexp.html">Regexp</a></i> element to specify
the regular expression. You can use this element to refer to a previously
defined regular expression datatype instance.</p>
<blockquote>
No revision
No revision
1.13.2.5 +1 -0 ant/docs/manual/conceptstypeslist.html
Index: conceptstypeslist.html
===================================================================
RCS file: /home/cvs/ant/docs/manual/conceptstypeslist.html,v
retrieving revision 1.13.2.4
retrieving revision 1.13.2.5
diff -u -r1.13.2.4 -r1.13.2.5
--- conceptstypeslist.html 23 Jun 2004 19:17:12 -0000 1.13.2.4
+++ conceptstypeslist.html 13 Aug 2004 09:14:20 -0000 1.13.2.5
@@ -30,6 +30,7 @@
<a href="CoreTypes/permissions.html">Permissions</a><br>
<a href="CoreTypes/propertyset.html">PropertySet</a><br>
<a href="CoreTypes/redirector.html">I/O Redirectors</a><br>
+<a href="CoreTypes/regexp.html">Regexp</a><br>
<a href="CoreTypes/selectors.html">Selectors</a><br>
<a href="CoreTypes/xmlcatalog.html">XMLCatalog</a><br>
<a href="CoreTypes/zipfileset.html">ZipFileSet</a><br>
No revision
No revision
1.503.2.124 +3 -0 ant/WHATSNEW
Index: WHATSNEW
===================================================================
RCS file: /home/cvs/ant/WHATSNEW,v
retrieving revision 1.503.2.123
retrieving revision 1.503.2.124
diff -u -r1.503.2.123 -r1.503.2.124
--- WHATSNEW 27 Jul 2004 07:15:10 -0000 1.503.2.123
+++ WHATSNEW 13 Aug 2004 09:14:20 -0000 1.503.2.124
@@ -24,6 +24,9 @@
when Ant core loader != Java application loader and Path.systemClassPath
taken from ${java.class.path}
Bugzilla 30161.
+* Enable to choose the regexp implementation without system property.
+ Bugzilla Report 15390.
+
Changes from Ant 1.6.1 to Ant 1.6.2
===================================
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]