diff --git a/bootstrap.sh b/bootstrap.sh index 0cefbaea5..58c57f944 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -49,10 +49,10 @@ mkdir -p ${CLASSDIR} echo ... Compiling Ant Classes ${JAVAC} -d ${CLASSDIR} ${TOOLS}/tar/*.java +${JAVAC} -d ${CLASSDIR} ${TOOLS}/ant/util/regexp/RegexpMatcher.java ${TOOLS}/ant/util/regexp/RegexpMatcherFactory.java +${JAVAC} -d ${CLASSDIR} ${TOOLS}/ant/util/*.java ${JAVAC} -d ${CLASSDIR} ${TOOLS}/ant/types/*.java ${JAVAC} -d ${CLASSDIR} ${TOOLS}/ant/*.java -${JAVAC} -d ${CLASSDIR} ${TOOLS}/ant/util/regexp/RegexpMatcher.java -${JAVAC} -d ${CLASSDIR} ${TOOLS}/ant/util/*.java ${JAVAC} -d ${CLASSDIR} ${TOOLS}/ant/taskdefs/*.java echo ... Copying Required Files diff --git a/build.xml b/build.xml index ad8d63ba8..a534801e5 100644 --- a/build.xml +++ b/build.xml @@ -41,6 +41,7 @@ + @@ -96,7 +97,7 @@ destdir="${build.classes}" debug="on" deprecation="off" - optimize="on" > + optimize="${javac.optimize}" > diff --git a/docs/P4desc.html b/docs/P4desc.html deleted file mode 100644 index 298c510ae..000000000 --- a/docs/P4desc.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - -

Perforce

- -

Description

- -

Handles packages/modules retrieved from a Perforce repository.

- -

Parameters

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
AttributeDescriptionRequired
localpathThe local path of the file/directory to - write file(s) to.Yes
userSpecifies the user name, overriding the value of $P4USER, - $USER, and $USERNAME in the environment.

No

-
portSpecifies the server's listen address, overriding the - value of $P4PORT in the environment and the default (perforce:1666).

No

-
versionThe revision number of the file being - extracted.No
dateGet files as of this date. Either [yyyy/mm/dd] - or [yyyy/mm/dd:hh:mm:ss]. Note that [yyyy/mm/dd] means [yyyy/mm/dd:00:00:00], - so if you want to include all events on that day refer to - the next day.No
labelA label from which to check out files.No
force"[true|false]". Forces - resynchronization even if the client already has the - file, and clobbers writable files. This flag doesn't - affect open files.No, default "false"
changeGets the file(s) as they were when a specified change - number was applied.

No

-
- -

Examples

- -
  <perforce localpath="//path/to/source/..."
-       force="true"
-       change="4513"
-  />
- -

syncs the files in the source directory that are in the -Perforce repository, as of change number 4513, overwriting any -modified files in the current source tree is needed.

- -
  <perforce localpath="//path/to/source/..." />
- -

Syncs with the latest version of the file in the repository.

- - diff --git a/docs/index.html b/docs/index.html index f93bbc3fb..aaa8b73ce 100644 --- a/docs/index.html +++ b/docs/index.html @@ -27,7 +27,7 @@
  • Dave Walend (dwalend@cs.tufts.edu)
  • -

    Version 1.3 - 2000/11/14

    +

    Version 1.3 - 2000/11/29


    Table of Contents

    @@ -4550,7 +4550,6 @@ it had been located at htdocs/manual/ChangeLog.txt.

  • JUnit
  • Native2Ascii
  • NetRexxC
  • -
  • Perforce
  • PropertyFile
  • RenameExtensions
  • Script
  • diff --git a/src/main/org/apache/tools/ant/util/RegexpPatternMapper.java b/src/main/org/apache/tools/ant/util/RegexpPatternMapper.java index 2e73812a6..8ec4f4d14 100644 --- a/src/main/org/apache/tools/ant/util/RegexpPatternMapper.java +++ b/src/main/org/apache/tools/ant/util/RegexpPatternMapper.java @@ -56,6 +56,7 @@ package org.apache.tools.ant.util; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.util.regexp.RegexpMatcher; +import org.apache.tools.ant.util.regexp.RegexpMatcherFactory; import java.util.Enumeration; import java.util.Vector; @@ -70,30 +71,23 @@ public class RegexpPatternMapper implements FileNameMapper { protected RegexpMatcher reg = null; protected char[] to = null; protected StringBuffer result = new StringBuffer(); - protected Class regexpMatcherClass = null; public RegexpPatternMapper() throws BuildException { - try { - regexpMatcherClass = Class.forName("org.apache.tools.ant.util.regexp.JakartaOroMatcher"); - - if (regexpMatcherClass == null) { - regexpMatcherClass = Class.forName("org.apache.tools.ant.util.regexp.JakartaRegexpMatcher"); - - } - } catch (ClassNotFoundException ce) { - } catch (NoClassDefFoundError ne) { - } - - if (regexpMatcherClass == null) { - throw new BuildException("No supported regular expression matcher found"); - } + reg = (new RegexpMatcherFactory()).newRegexpMatcher(); } /** * Sets the "from" pattern. Required. */ public void setFrom(String from) throws BuildException { - reg = createMatcher(from); + try { + reg.setPattern(from); + } catch (NoClassDefFoundError e) { + // depending on the implementation the actual RE won't + // get instantiated in the constructor. + throw new BuildException("Cannot load regular expression matcher", + e); + } } /** @@ -144,19 +138,4 @@ public class RegexpPatternMapper implements FileNameMapper { return result.toString(); } - /** - * Create an implementation of RegexpMatcher based on the classes - * that can be loaded. - */ - protected RegexpMatcher createMatcher(String pattern) - throws BuildException { - try { - RegexpMatcher rm = (RegexpMatcher) regexpMatcherClass.newInstance(); - rm.setPattern(pattern); - return rm; - } catch (Throwable t) { - throw new BuildException(t); - } - - } } diff --git a/src/main/org/apache/tools/ant/util/regexp/RegexpMatcherFactory.java b/src/main/org/apache/tools/ant/util/regexp/RegexpMatcherFactory.java new file mode 100644 index 000000000..76c55361b --- /dev/null +++ b/src/main/org/apache/tools/ant/util/regexp/RegexpMatcherFactory.java @@ -0,0 +1,102 @@ +/* + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2000 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 + * . + */ + +package org.apache.tools.ant.util.regexp; + +import org.apache.tools.ant.BuildException; + +/** + * Simple Factory Class that produces an implementation of + * RegexpMatcher based on the system property + * ant.regexp.matcherimpl and the classes + * available. + * + *

    In a more general framework this class would be abstract and + * have a static newInstance method.

    + * + * @author Stefan Bodewig + */ +public class RegexpMatcherFactory { + + public RegexpMatcherFactory() {} + + public RegexpMatcher newRegexpMatcher() throws BuildException { + String systemDefault = System.getProperty("ant.regexp.matcherimpl"); + if (systemDefault != null) { + return createInstance(systemDefault); + // XXX should we silently possible exceptions and try to + // load a different implementation? + } + + try { + return createInstance("org.apache.tools.ant.util.regexp.JakartaOroMatcher"); + } catch (BuildException be) {} + + try { + return createInstance("org.apache.tools.ant.util.regexp.JakartaRegexpMatcher"); + } catch (BuildException be) {} + + throw new BuildException("No supported regular expression matcher found"); + } + + protected RegexpMatcher createInstance(String className) + throws BuildException { + try { + Class implClass = Class.forName(className); + return (RegexpMatcher) implClass.newInstance(); + } catch (Throwable t) { + throw new BuildException(t); + } + } +}