You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by pe...@apache.org on 2003/07/23 13:32:14 UTC

cvs commit: ant/src/main/org/apache/tools/ant/util Tokenizer.java LineTokenizer.java FileUtils.java

peterreilly    2003/07/23 04:32:13

  Modified:    docs/manual/CoreTypes filterchain.html
               src/main/org/apache/tools/ant/filters HeadFilter.java
                        TailFilter.java TokenFilter.java
               src/main/org/apache/tools/ant/taskdefs/optional/i18n
                        Translate.java
               src/main/org/apache/tools/ant/util FileUtils.java
  Added:       src/main/org/apache/tools/ant/util Tokenizer.java
                        LineTokenizer.java
  Log:
  Refactor: move LineTokenizer out of TokenFilter
  
  Revision  Changes    Path
  1.12      +1 -1      ant/docs/manual/CoreTypes/filterchain.html
  
  Index: filterchain.html
  ===================================================================
  RCS file: /home/cvs/ant/docs/manual/CoreTypes/filterchain.html,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- filterchain.html	5 Jun 2003 18:00:36 -0000	1.11
  +++ filterchain.html	23 Jul 2003 11:32:12 -0000	1.12
  @@ -1256,7 +1256,7 @@
   
   Custom string filters and tokenizers may be plugged in by
   extending the interfaces org.apache.tools.ant.filters.TokenFilter.Filter
  -and org.apache.tools.ant.filters.TokenFilter.Tokenizer respectly.
  +and org.apache.tools.ant.util.Tokenizer respectly.
   
   They are defined the build file using <typedef/>. For
   example a string filter that capitalizes words may be declared as:
  
  
  
  1.12      +3 -2      ant/src/main/org/apache/tools/ant/filters/HeadFilter.java
  
  Index: HeadFilter.java
  ===================================================================
  RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/filters/HeadFilter.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- HeadFilter.java	18 Jul 2003 14:21:21 -0000	1.11
  +++ HeadFilter.java	23 Jul 2003 11:32:12 -0000	1.12
  @@ -55,6 +55,7 @@
   
   import java.io.IOException;
   import java.io.Reader;
  +import org.apache.tools.ant.util.LineTokenizer;
   import org.apache.tools.ant.types.Parameter;
   
   /**
  @@ -91,7 +92,7 @@
       private long skip = 0;
   
       /** A line tokenizer */
  -    private TokenFilter.LineTokenizer lineTokenizer = null;
  +    private LineTokenizer lineTokenizer = null;
   
       /** the current line from the input stream */
       private String    line      = null;
  @@ -115,7 +116,7 @@
        */
       public HeadFilter(final Reader in) {
           super(in);
  -        lineTokenizer = new TokenFilter.LineTokenizer();
  +        lineTokenizer = new LineTokenizer();
           lineTokenizer.setIncludeDelims(true);
       }
   
  
  
  
  1.13      +3 -2      ant/src/main/org/apache/tools/ant/filters/TailFilter.java
  
  Index: TailFilter.java
  ===================================================================
  RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/filters/TailFilter.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- TailFilter.java	18 Jul 2003 14:21:21 -0000	1.12
  +++ TailFilter.java	23 Jul 2003 11:32:12 -0000	1.13
  @@ -57,6 +57,7 @@
   import java.io.Reader;
   import java.util.LinkedList;
   import org.apache.tools.ant.types.Parameter;
  +import org.apache.tools.ant.util.LineTokenizer;
   
   /**
    * Reads the last <code>n</code> lines of a stream. (Default is last10 lines.)
  @@ -100,7 +101,7 @@
       private int bufferPos = 0;
   
       /** A line tokenizer */
  -    private TokenFilter.LineTokenizer lineTokenizer = null;
  +    private LineTokenizer lineTokenizer = null;
   
       /** the current line from the input stream */
       private String    line      = null;
  @@ -126,7 +127,7 @@
        */
       public TailFilter(final Reader in) {
           super(in);
  -        lineTokenizer = new TokenFilter.LineTokenizer();
  +        lineTokenizer = new LineTokenizer();
           lineTokenizer.setIncludeDelims(true);
       }
   
  
  
  
  1.10      +2 -112    ant/src/main/org/apache/tools/ant/filters/TokenFilter.java
  
  Index: TokenFilter.java
  ===================================================================
  RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/filters/TokenFilter.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- TokenFilter.java	6 Jul 2003 09:03:17 -0000	1.9
  +++ TokenFilter.java	23 Jul 2003 11:32:12 -0000	1.10
  @@ -63,6 +63,8 @@
   import org.apache.tools.ant.types.RegularExpression;
   import org.apache.tools.ant.types.Substitution;
   import org.apache.tools.ant.util.FileUtils;
  +import org.apache.tools.ant.util.Tokenizer;
  +import org.apache.tools.ant.util.LineTokenizer;
   import org.apache.tools.ant.util.regexp.Regexp;
   
   /**
  @@ -78,28 +80,6 @@
   public class TokenFilter extends BaseFilterReader
       implements ChainableReader {
       /**
  -     * input stream tokenizers implement this interface
  -     */
  -    public interface Tokenizer {
  -        /**
  -         * get the next token from the input stream
  -         * @param in the input stream
  -         * @return the next token, or null for the end
  -         *         of the stream
  -         * @throws IOException if an error occurs
  -         */
  -        String getToken(Reader in)
  -            throws IOException;
  -
  -        /**
  -         * return the string between tokens, after the
  -         * previous token.
  -         * @return the intra-token string
  -         */
  -        String getPostToken();
  -    }
  -
  -    /**
        * string filters implement this interface
        */
       public interface Filter {
  @@ -359,96 +339,6 @@
           public String getPostToken() {
               return "";
           }
  -    }
  -
  -
  -    /**
  -     * class to tokenize the input as lines seperated
  -     * by \r (mac style), \r\n (dos/windows style) or \n (unix style)
  -     */
  -    public static class LineTokenizer extends ProjectComponent
  -        implements Tokenizer {
  -        private String  lineEnd = "";
  -        private int     pushed = -2;
  -        private boolean includeDelims = false;
  -
  -        /**
  -         * attribute includedelims - whether to include
  -         * the line ending with the line, or to return
  -         * it in the posttoken
  -         * default false
  -         * @param includeDelims if true include /r and /n in the line
  -         */
  -
  -        public void setIncludeDelims(boolean includeDelims) {
  -            this.includeDelims = includeDelims;
  -        }
  -
  -        /**
  -         * get the next line from the input
  -         *
  -         * @param in the input reader
  -         * @return the line excluding /r or /n, unless includedelims is set
  -         * @exception IOException if an error occurs reading
  -         */
  -        public String getToken(Reader in) throws IOException {
  -            int ch = -1;
  -            if (pushed != -2) {
  -                ch = pushed;
  -                pushed = -2;
  -            } else {
  -                ch = in.read();
  -            }
  -            if (ch == -1) {
  -                return null;
  -            }
  -
  -            lineEnd = "";
  -            StringBuffer line = new StringBuffer();
  -
  -            int state = 0;
  -            while (ch != -1) {
  -                if (state == 0) {
  -                    if (ch == '\r') {
  -                        state = 1;
  -                    } else if (ch == '\n') {
  -                        lineEnd = "\n";
  -                        break;
  -                    } else {
  -                        line.append((char) ch);
  -                    }
  -                } else {
  -                    state = 0;
  -                    if (ch == '\n') {
  -                        lineEnd = "\r\n";
  -                    } else {
  -                        pushed = ch;
  -                        lineEnd = "\r";
  -                    }
  -                    break;
  -                }
  -                ch = in.read();
  -            }
  -            if (ch == -1 && state == 1) {
  -                lineEnd = "\r";
  -            }
  -
  -            if (includeDelims) {
  -                line.append(lineEnd);
  -            }
  -            return line.toString();
  -        }
  -
  -        /**
  -         * @return the line ending character(s) for the current line
  -         */
  -        public String getPostToken() {
  -            if (includeDelims) {
  -                return "";
  -            }
  -            return lineEnd;
  -        }
  -
       }
   
       /**
  
  
  
  1.30      +2 -1      ant/src/main/org/apache/tools/ant/taskdefs/optional/i18n/Translate.java
  
  Index: Translate.java
  ===================================================================
  RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/i18n/Translate.java,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- Translate.java	19 Jul 2003 15:44:57 -0000	1.29
  +++ Translate.java	23 Jul 2003 11:32:13 -0000	1.30
  @@ -71,6 +71,7 @@
   import org.apache.tools.ant.taskdefs.MatchingTask;
   import org.apache.tools.ant.types.FileSet;
   import org.apache.tools.ant.util.FileUtils;
  +import org.apache.tools.ant.util.LineTokenizer;
   
   /**
    * Translates text embedded in files using Resource Bundle files.
  @@ -573,7 +574,7 @@
                           BufferedReader in
                               = new BufferedReader(new InputStreamReader(fis, srcEncoding));
                           String line;
  -                        TokenFilter.LineTokenizer lineTokenizer = new TokenFilter.LineTokenizer();
  +                        LineTokenizer lineTokenizer = new LineTokenizer();
                           lineTokenizer.setIncludeDelims(true);
                           line = lineTokenizer.getToken(in);
                           while ((line) != null) {
  
  
  
  1.53      +2 -2      ant/src/main/org/apache/tools/ant/util/FileUtils.java
  
  Index: FileUtils.java
  ===================================================================
  RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/util/FileUtils.java,v
  retrieving revision 1.52
  retrieving revision 1.53
  diff -u -r1.52 -r1.53
  --- FileUtils.java	22 Jul 2003 14:58:48 -0000	1.52
  +++ FileUtils.java	23 Jul 2003 11:32:13 -0000	1.53
  @@ -583,7 +583,7 @@
                           in = new BufferedReader(rdr);
                       }
   
  -                    TokenFilter.LineTokenizer lineTokenizer = new TokenFilter.LineTokenizer();
  +                    LineTokenizer lineTokenizer = new LineTokenizer();
                       lineTokenizer.setIncludeDelims(true);
                       String newline = null;
                       String line = lineTokenizer.getToken(in);
  
  
  
  1.1                  ant/src/main/org/apache/tools/ant/util/Tokenizer.java
  
  Index: Tokenizer.java
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2003 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 "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;
  
  import java.io.Reader;
  import java.io.IOException;
  
  /**
   * input stream tokenizers implement this interface
   *
   * @author Peter Reilly
   * @version Ant 1.6
   */
  public interface Tokenizer {
      /**
       * get the next token from the input stream
       * @param in the input stream
       * @return the next token, or null for the end
       *         of the stream
       * @throws IOException if an error occurs
       */
      String getToken(Reader in)
          throws IOException;
  
      /**
       * return the string between tokens, after the
       * previous token.
       * @return the intra-token string
       */
      String getPostToken();
  }
  
  
  
  1.1                  ant/src/main/org/apache/tools/ant/util/LineTokenizer.java
  
  Index: LineTokenizer.java
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2003 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 "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;
  
  import java.io.Reader;
  import java.io.IOException;
  
  import org.apache.tools.ant.ProjectComponent;
  
  /**
   * class to tokenize the input as lines seperated
   * by \r (mac style), \r\n (dos/windows style) or \n (unix style)
   * @author Peter Reilly
   * @since Ant 1.6
   */
  public class LineTokenizer extends ProjectComponent
      implements Tokenizer {
      private String  lineEnd = "";
      private int     pushed = -2;
      private boolean includeDelims = false;
  
      /**
       * attribute includedelims - whether to include
       * the line ending with the line, or to return
       * it in the posttoken
       * default false
       * @param includeDelims if true include /r and /n in the line
       */
  
      public void setIncludeDelims(boolean includeDelims) {
          this.includeDelims = includeDelims;
      }
  
      /**
       * get the next line from the input
       *
       * @param in the input reader
       * @return the line excluding /r or /n, unless includedelims is set
       * @exception IOException if an error occurs reading
       */
      public String getToken(Reader in) throws IOException {
          int ch = -1;
          if (pushed != -2) {
              ch = pushed;
              pushed = -2;
          } else {
              ch = in.read();
          }
          if (ch == -1) {
              return null;
          }
  
          lineEnd = "";
          StringBuffer line = new StringBuffer();
  
          int state = 0;
          while (ch != -1) {
              if (state == 0) {
                  if (ch == '\r') {
                      state = 1;
                  } else if (ch == '\n') {
                      lineEnd = "\n";
                      break;
                  } else {
                      line.append((char) ch);
                  }
              } else {
                  state = 0;
                  if (ch == '\n') {
                      lineEnd = "\r\n";
                  } else {
                      pushed = ch;
                      lineEnd = "\r";
                  }
                  break;
              }
              ch = in.read();
          }
          if (ch == -1 && state == 1) {
              lineEnd = "\r";
          }
  
          if (includeDelims) {
              line.append(lineEnd);
          }
          return line.toString();
      }
  
      /**
       * @return the line ending character(s) for the current line
       */
      public String getPostToken() {
          if (includeDelims) {
              return "";
          }
          return lineEnd;
      }
  
  }
  
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org