diff --git a/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/BaseFilterReader.java b/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/BaseFilterReader.java index 357c2ba72..cbea49c33 100644 --- a/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/BaseFilterReader.java +++ b/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/BaseFilterReader.java @@ -66,6 +66,9 @@ import java.io.StringReader; public abstract class BaseFilterReader extends FilterReader { + /** Have the parameters passed been interpreted? */ + private boolean initialized = false; + /** * This constructor is a dummy constructor and is * not meant to be used by any class other than Ant's @@ -132,7 +135,7 @@ public abstract class BaseFilterReader * @exception IllegalArgumentException If n is negative. * @exception IOException If an I/O error occurs */ - public final long skip(long n) throws IOException { + public final long skip(final long n) throws IOException { if (n < 0L) { throw new IllegalArgumentException("skip value is negative"); } @@ -144,4 +147,34 @@ public abstract class BaseFilterReader } return n; } + + /** + * Set the initialized status. + */ + protected final void setInitialized(final boolean initialized) { + this.initialized = initialized; + } + + /** + * Get the initialized status. + */ + protected final boolean getInitialized() { + return initialized; + } + + /** + * Read till EOL + */ + protected final String readLine() throws IOException { + int ch = in.read(); + String line = (ch == -1) ? null : ""; + while (ch != -1) { + line += (char) ch; + if (ch == '\n') { + break; + } + ch = in.read(); + } + return line; + } } diff --git a/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/BaseParamFilterReader.java b/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/BaseParamFilterReader.java new file mode 100644 index 000000000..ff9109c48 --- /dev/null +++ b/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/BaseParamFilterReader.java @@ -0,0 +1,106 @@ +/* + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 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.filters; + +import java.io.FilterReader; +import java.io.IOException; +import java.io.Reader; +import java.io.StringReader; + +import org.apache.tools.ant.types.Parameter; +import org.apache.tools.ant.types.Parameterizable; + +/** + * Parameterized Base class for core filter readers. + * + * @author Magesh Umasankar + */ +public abstract class BaseParamFilterReader + extends BaseFilterReader + implements Parameterizable +{ + /** The passed in parameter array. */ + private Parameter[] parameters; + + /** + * This constructor is a dummy constructor and is + * not meant to be used by any class other than Ant's + * introspection mechanism. This will close the filter + * that is created making it useless for further operations. + */ + public BaseParamFilterReader() { + super(); + } + + /** + * Create a new filtered reader. + * + * @param in a Reader object providing the underlying stream. + */ + public BaseParamFilterReader(final Reader in) { + super(in); + } + + /** + * Set Parameters + */ + public final void setParameters(final Parameter[] parameters) { + this.parameters = parameters; + setInitialized(false); + } + + protected final Parameter[] getParameters() { + return parameters; + } +} diff --git a/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/HeadFilter.java b/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/HeadFilter.java index d445c3448..f0eb99847 100644 --- a/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/HeadFilter.java +++ b/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/HeadFilter.java @@ -57,7 +57,6 @@ import java.io.IOException; import java.io.Reader; import org.apache.tools.ant.types.Parameter; -import org.apache.tools.ant.types.Parameterizable; /** * Read the first n lines (Default is first 10 lines) @@ -76,27 +75,18 @@ import org.apache.tools.ant.types.Parameterizable; * @author Magesh Umasankar */ public final class HeadFilter - extends BaseFilterReader - implements Parameterizable, ChainableReader + extends BaseParamFilterReader + implements ChainableReader { /** Lines key to represent the number of lines to be returned. */ private static final String LINES_KEY = "lines"; - /** The passed in parameter array. */ - private Parameter[] parameters; - - /** Have the parameters passed been interpreted? */ - private boolean initialized = false; - /** Number of lines currently read in. */ private long linesRead = 0; /** Default number of lines returned. */ private long lines = 10; - /** If the next character being read is a linefeed, must it be ignored? */ - private boolean ignoreLineFeed = false; - /** * This constructor is a dummy constructor and is * not meant to be used by any class other than Ant's @@ -131,21 +121,8 @@ public final class HeadFilter ch = in.read(); - if (ignoreLineFeed) { - if (ch == '\n') { - ch = in.read(); - } - ignoreLineFeed = false; - } - - switch (ch) { - case '\r': - ch = '\n'; - ignoreLineFeed = true; - //fall through - case '\n': - linesRead++; - break; + if (ch == '\n') { + linesRead++; } } @@ -166,20 +143,6 @@ public final class HeadFilter return lines; } - /** - * Set the initialized status. - */ - private final void setInitialized(final boolean initialized) { - this.initialized = initialized; - } - - /** - * Get the initialized status. - */ - private final boolean getInitialized() { - return initialized; - } - /** * Create a new HeadFilter using the passed in * Reader for instantiation. @@ -191,22 +154,15 @@ public final class HeadFilter return newFilter; } - /** - * Set Parameters - */ - public final void setParameters(final Parameter[] parameters) { - this.parameters = parameters; - setInitialized(false); - } - /** * Scan for the lines parameter. */ private final void initialize() { - if (parameters != null) { - for (int i = 0; i < parameters.length; i++) { - if (LINES_KEY.equals(parameters[i].getName())) { - lines = new Long(parameters[i].getValue()).longValue(); + Parameter[] params = getParameters(); + if (params != null) { + for (int i = 0; i < params.length; i++) { + if (LINES_KEY.equals(params[i].getName())) { + lines = new Long(params[i].getValue()).longValue(); break; } } diff --git a/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/LineContains.java b/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/LineContains.java index 77a29a20a..8e9fd6b0d 100644 --- a/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/LineContains.java +++ b/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/LineContains.java @@ -58,7 +58,6 @@ import java.io.Reader; import java.util.Vector; import org.apache.tools.ant.types.Parameter; -import org.apache.tools.ant.types.Parameterizable; /** * Filter Reader to fetch only those lines that contain user specified @@ -84,18 +83,12 @@ import org.apache.tools.ant.types.Parameterizable; * @author Magesh Umasankar */ public final class LineContains - extends BaseFilterReader - implements Parameterizable, ChainableReader + extends BaseParamFilterReader + implements ChainableReader { /** contains key */ private static final String CONTAINS_KEY = "contains"; - /** The passed in parameter array. */ - private Parameter[] parameters; - - /** Have the parameters passed been interpreted? */ - private boolean initialized = false; - /** Vector that holds the strings that input lines must contain. */ private Vector contains = new Vector(); @@ -126,9 +119,9 @@ public final class LineContains * user defined values. */ public final int read() throws IOException { - if (!initialized) { + if (!getInitialized()) { initialize(); - initialized = true; + setInitialized(true); } int ch = -1; @@ -141,19 +134,10 @@ public final class LineContains line = line.substring(1); } } else { - ch = in.read(); - while (ch != -1) { - if (line == null) { - line = ""; - } - line = line + (char) ch; - if (ch == '\n') { - break; - } - ch = in.read(); - } - - if (line != null) { + line = readLine(); + if (line == null) { + ch = -1; + } else { int containsSize = contains.size(); for (int i = 0; i < containsSize; i++) { String containsStr = (String) contains.elementAt(i); @@ -191,20 +175,6 @@ public final class LineContains return contains; } - /** - * Set the initialized status. - */ - private final void setInitialized(final boolean initialized) { - this.initialized = initialized; - } - - /** - * Get the initialized status. - */ - private final boolean getInitialized() { - return initialized; - } - /** * Create a new LineContains using the passed in * Reader for instantiation. @@ -216,22 +186,15 @@ public final class LineContains return newFilter; } - /** - * Set Parameters - */ - public final void setParameters(final Parameter[] parameters) { - this.parameters = parameters; - initialized = false; - } - /** * Parse params to add user defined contains strings. */ private final void initialize() { - if (parameters != null) { - for (int i = 0; i < parameters.length; i++) { - if (CONTAINS_KEY.equals(parameters[i].getType())) { - contains.addElement(parameters[i].getValue()); + Parameter[] params = getParameters(); + if (params != null) { + for (int i = 0; i < params.length; i++) { + if (CONTAINS_KEY.equals(params[i].getType())) { + contains.addElement(params[i].getValue()); } } } diff --git a/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/PrefixLines.java b/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/PrefixLines.java index 2988dc86c..6ba85a936 100644 --- a/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/PrefixLines.java +++ b/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/PrefixLines.java @@ -57,7 +57,6 @@ import java.io.IOException; import java.io.Reader; import org.apache.tools.ant.types.Parameter; -import org.apache.tools.ant.types.Parameterizable; /** * Attach a prefix to every line @@ -76,18 +75,12 @@ import org.apache.tools.ant.types.Parameterizable; * @author Magesh Umasankar */ public final class PrefixLines - extends BaseFilterReader - implements Parameterizable, ChainableReader + extends BaseParamFilterReader + implements ChainableReader { /** prefix key */ private static final String PREFIX_KEY = "prefix"; - /** The passed in parameter array. */ - private Parameter[] parameters; - - /** Have the parameters passed been interpreted? */ - private boolean initialized = false; - /** The prefix to be used. */ private String prefix = null; @@ -135,22 +128,13 @@ public final class PrefixLines queuedData = null; } } else { - ch = in.read(); - while (ch != -1) { - if (queuedData == null) { - if (prefix != null) { - queuedData = prefix; - } else { - queuedData = ""; - } + queuedData = readLine(); + if (queuedData == null) { + ch = -1; + } else { + if (prefix != null) { + queuedData = prefix + queuedData; } - queuedData += (char) ch; - if (ch == '\n') { - break; - } - ch = in.read(); - } - if (queuedData != null) { return read(); } } @@ -171,20 +155,6 @@ public final class PrefixLines return prefix; } - /** - * Set the initialized status. - */ - private final void setInitialized(final boolean initialized) { - this.initialized = initialized; - } - - /** - * Get the initialized status. - */ - private final boolean getInitialized() { - return initialized; - } - /** * Create a new PrefixLines using the passed in * Reader for instantiation. @@ -196,22 +166,15 @@ public final class PrefixLines return newFilter; } - /** - * Set Parameters - */ - public final void setParameters(final Parameter[] parameters) { - this.parameters = parameters; - setInitialized(false); - } - /** * Initialize prefix if available from the param element. */ private final void initialize() { - if (parameters != null) { - for (int i = 0; i < parameters.length; i++) { - if (PREFIX_KEY.equals(parameters[i].getName())) { - prefix = parameters[i].getValue(); + Parameter[] params = getParameters(); + if (params != null) { + for (int i = 0; i < params.length; i++) { + if (PREFIX_KEY.equals(params[i].getName())) { + prefix = params[i].getValue(); break; } } diff --git a/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/ReplaceTokens.java b/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/ReplaceTokens.java index 6a791774f..fd7ab0a50 100644 --- a/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/ReplaceTokens.java +++ b/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/ReplaceTokens.java @@ -58,7 +58,6 @@ import java.io.Reader; import java.util.Hashtable; import org.apache.tools.ant.types.Parameter; -import org.apache.tools.ant.types.Parameterizable; /** * Replace tokens with user supplied values @@ -81,8 +80,8 @@ import org.apache.tools.ant.types.Parameterizable; * @author Magesh Umasankar */ public final class ReplaceTokens - extends BaseFilterReader - implements Parameterizable, ChainableReader + extends BaseParamFilterReader + implements ChainableReader { /** Default begin token character. */ private static final char DEFAULT_BEGIN_TOKEN = '@'; @@ -93,15 +92,9 @@ public final class ReplaceTokens /** Data that must be read from, if not null. */ private String queuedData = null; - /** The passed in parameter array. */ - private Parameter[] parameters; - /** Hashtable to hold the replacee-replacer pairs. */ private Hashtable hash = new Hashtable(); - /** Have the parameters passed been interpreted? */ - private boolean initialized; - /** Begin token. */ private char beginToken = DEFAULT_BEGIN_TOKEN; @@ -225,20 +218,6 @@ public final class ReplaceTokens return hash; } - /** - * Set the initialized status. - */ - private final void setInitialized(final boolean initialized) { - this.initialized = initialized; - } - - /** - * Get the initialized status. - */ - private final boolean getInitialized() { - return initialized; - } - /** * Create a new ReplaceTokens using the passed in * Reader for instantiation. @@ -252,32 +231,25 @@ public final class ReplaceTokens return newFilter; } - /** - * Set Parameters - */ - public final void setParameters(final Parameter[] parameters) { - this.parameters = parameters; - setInitialized(false); - } - /** * Initialize tokens and load the replacee-replacer hashtable. */ private final void initialize() { - if (parameters != null) { - for (int i = 0; i < parameters.length; i++) { - if (parameters[i] != null) { - final String type = parameters[i].getType(); + Parameter[] params = getParameters(); + if (params != null) { + for (int i = 0; i < params.length; i++) { + if (params[i] != null) { + final String type = params[i].getType(); if ("tokenchar".equals(type)) { - final String name = parameters[i].getName(); + final String name = params[i].getName(); if ("begintoken".equals(name)) { - beginToken = parameters[i].getValue().charAt(0); + beginToken = params[i].getValue().charAt(0); } else if ("endtoken".equals(name)) { - endToken = parameters[i].getValue().charAt(0); + endToken = params[i].getValue().charAt(0); } } else if ("token".equals(type)) { - final String name = parameters[i].getName(); - final String value = parameters[i].getValue(); + final String name = params[i].getName(); + final String value = params[i].getValue(); hash.put(name, value); } } diff --git a/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/StripLineBreaks.java b/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/StripLineBreaks.java index b2d1136ec..e448bcd31 100644 --- a/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/StripLineBreaks.java +++ b/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/StripLineBreaks.java @@ -57,7 +57,6 @@ import java.io.IOException; import java.io.Reader; import org.apache.tools.ant.types.Parameter; -import org.apache.tools.ant.types.Parameterizable; /** * Filter to flatten the stream to a single line. @@ -72,8 +71,8 @@ import org.apache.tools.ant.types.Parameterizable; * @author Magesh Umasankar */ public final class StripLineBreaks - extends BaseFilterReader - implements Parameterizable, ChainableReader + extends BaseParamFilterReader + implements ChainableReader { /** * Linebreaks. What do to on funny IBM mainframes with odd line endings? @@ -86,15 +85,10 @@ public final class StripLineBreaks */ private static final String LINE_BREAKS_KEY = "linebreaks"; - /** The passed in parameter array. */ - private Parameter[] parameters; /** Holds the characters that are recognized as line breaks. */ private String lineBreaks = DEFAULT_LINE_BREAKS; - /** Have the parameters passed been interpreted? */ - private boolean initialized = false; - /** * This constructor is a dummy constructor and is * not meant to be used by any class other than Ant's @@ -120,7 +114,7 @@ public final class StripLineBreaks * next one. */ public final int read() throws IOException { - if (!initialized) { + if (!getInitialized()) { initialize(); setInitialized(true); } @@ -150,20 +144,6 @@ public final class StripLineBreaks return lineBreaks; } - /** - * Set the initialized status. - */ - private final void setInitialized(final boolean initialized) { - this.initialized = initialized; - } - - /** - * Get the initialized status. - */ - private final boolean getInitialized() { - return initialized; - } - /** * Create a new StripLineBreaks object using the passed in * Reader for instantiation. @@ -175,23 +155,16 @@ public final class StripLineBreaks return newFilter; } - /** - * Set Parameters - */ - public final void setParameters(final Parameter[] parameters) { - this.parameters = parameters; - setInitialized(false); - } - /** * Line break characters set using the param element. */ private final void initialize() { String userDefinedLineBreaks = null; - if (parameters != null) { - for (int i = 0; i < parameters.length; i++) { - if (LINE_BREAKS_KEY.equals(parameters[i].getName())) { - userDefinedLineBreaks = parameters[i].getValue(); + Parameter[] params = getParameters(); + if (params != null) { + for (int i = 0; i < params.length; i++) { + if (LINE_BREAKS_KEY.equals(params[i].getName())) { + userDefinedLineBreaks = params[i].getValue(); break; } } diff --git a/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/StripLineComments.java b/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/StripLineComments.java index 825d966a9..f9521c65b 100644 --- a/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/StripLineComments.java +++ b/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/StripLineComments.java @@ -58,7 +58,6 @@ import java.io.Reader; import java.util.Vector; import org.apache.tools.ant.types.Parameter; -import org.apache.tools.ant.types.Parameterizable; /** * This is a line comment stripper reader @@ -87,18 +86,12 @@ import org.apache.tools.ant.types.Parameterizable; * @author Magesh Umasankar */ public final class StripLineComments - extends BaseFilterReader - implements Parameterizable, ChainableReader + extends BaseParamFilterReader + implements ChainableReader { /** The type that param recognizes to set the comments. */ private static final String COMMENTS_KEY = "comment"; - /** The passed in parameter array. */ - private Parameter[] parameters; - - /** Have the parameters passed been interpreted? */ - private boolean initialized = false; - /** Vector that holds comments. */ private Vector comments = new Vector(); @@ -144,19 +137,10 @@ public final class StripLineComments line = line.substring(1); } } else { - ch = in.read(); - while (ch != -1) { - if (line == null) { - line = ""; - } - line = line + (char) ch; - if (ch == '\n') { - break; - } - ch = in.read(); - } - - if (line != null) { + line = readLine(); + if (line == null) { + ch = -1; + } else { int commentsSize = comments.size(); for (int i = 0; i < commentsSize; i++) { String comment = (String) comments.elementAt(i); @@ -193,20 +177,6 @@ public final class StripLineComments return comments; } - /** - * Set the initialized status. - */ - private final void setInitialized(final boolean initialized) { - this.initialized = initialized; - } - - /** - * Get the initialized status. - */ - private final boolean getInitialized() { - return initialized; - } - /** * Create a new StripLineComments object using the passed in * Reader for instantiation. @@ -218,22 +188,15 @@ public final class StripLineComments return newFilter; } - /** - * Set Parameters - */ - public final void setParameters(final Parameter[] parameters) { - this.parameters = parameters; - setInitialized(false); - } - /** * Comments set using the param element. */ private final void initialize() { - if (parameters != null) { - for (int i = 0; i < parameters.length; i++) { - if (COMMENTS_KEY.equals(parameters[i].getType())) { - comments.addElement(parameters[i].getValue()); + Parameter[] params = getParameters(); + if (params != null) { + for (int i = 0; i < params.length; i++) { + if (COMMENTS_KEY.equals(params[i].getType())) { + comments.addElement(params[i].getValue()); } } } diff --git a/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/TabsToSpaces.java b/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/TabsToSpaces.java index bcbc6fc38..8c91aa286 100644 --- a/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/TabsToSpaces.java +++ b/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/TabsToSpaces.java @@ -57,7 +57,6 @@ import java.io.IOException; import java.io.Reader; import org.apache.tools.ant.types.Parameter; -import org.apache.tools.ant.types.Parameterizable; /** * Converts tabs to spaces. @@ -76,8 +75,8 @@ import org.apache.tools.ant.types.Parameterizable; * @author Magesh Umasankar */ public final class TabsToSpaces - extends BaseFilterReader - implements Parameterizable, ChainableReader + extends BaseParamFilterReader + implements ChainableReader { /** The default tab length is 8 */ private static final int DEFAULT_TAB_LENGTH = 8; @@ -85,12 +84,6 @@ public final class TabsToSpaces /** The name that param recognizes to set the tablength. */ private static final String TAB_LENGTH_KEY = "tablength"; - /** The passed in parameter array. */ - private Parameter[] parameters; - - /** Have the parameters passed been interpreted? */ - private boolean initialized; - /** Default tab length. */ private int tabLength = DEFAULT_TAB_LENGTH; @@ -154,20 +147,6 @@ public final class TabsToSpaces return tabLength; } - /** - * Set the initialized status. - */ - private final void setInitialized(final boolean initialized) { - this.initialized = initialized; - } - - /** - * Get the initialized status. - */ - private final boolean getInitialized() { - return initialized; - } - /** * Create a new TabsToSpaces object using the passed in * Reader for instantiation. @@ -179,24 +158,17 @@ public final class TabsToSpaces return newFilter; } - /** - * Set Parameters - */ - public final void setParameters(final Parameter[] parameters) { - this.parameters = parameters; - setInitialized(false); - } - /** * Initialize tokens */ private final void initialize() { - if (parameters != null) { - for (int i = 0; i < parameters.length; i++) { - if (parameters[i] != null) { - if (TAB_LENGTH_KEY.equals(parameters[i].getName())) { + Parameter[] params = getParameters(); + if (params != null) { + for (int i = 0; i < params.length; i++) { + if (params[i] != null) { + if (TAB_LENGTH_KEY.equals(params[i].getName())) { tabLength = - new Integer(parameters[i].getValue()).intValue(); + new Integer(params[i].getValue()).intValue(); break; } } diff --git a/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/TailFilter.java b/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/TailFilter.java index dbf839322..f3d7f0fd6 100644 --- a/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/TailFilter.java +++ b/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/TailFilter.java @@ -57,7 +57,6 @@ import java.io.IOException; import java.io.Reader; import org.apache.tools.ant.types.Parameter; -import org.apache.tools.ant.types.Parameterizable; /** * Read the last n lines. Default is last 10 lines. @@ -76,27 +75,18 @@ import org.apache.tools.ant.types.Parameterizable; * @author Magesh Umasankar */ public final class TailFilter - extends BaseFilterReader - implements Parameterizable, ChainableReader + extends BaseParamFilterReader + implements ChainableReader { /** The name that param recognizes to set the number of lines. */ private static final String LINES_KEY = "lines"; - /** The passed in parameter array. */ - private Parameter[] parameters; - - /** Have the parameters passed been interpreted? */ - private boolean initialized = false; - /** Number of lines currently read in. */ private long linesRead = 0; /** Default number of lines returned. */ private long lines = 10; - /** If the next character being read is a linefeed, must it be ignored? */ - private boolean ignoreLineFeed = false; - /** Buffer to hold in characters read ahead. */ private char[] buffer = new char[4096]; @@ -156,31 +146,17 @@ public final class TailFilter } } - if (ignoreLineFeed) { - if (ch == '\n') { - ch = in.read(); - } - ignoreLineFeed = false; - } - - switch (ch) { - case '\r': - ch = '\n'; - ignoreLineFeed = true; - //fall through - case '\n': - linesRead++; + if (ch == '\n') { + ++linesRead; - if (linesRead == lines + 1) { - int i = 0; - for (i = returnedCharPos + 1; buffer[i] != '\n'; i++) { - } - returnedCharPos = i; - linesRead--; + if (linesRead == lines) { + int i = 0; + for (i = returnedCharPos + 1; buffer[i] != '\n'; i++) { } - break; - } - if (ch == -1) { + returnedCharPos = i; + --linesRead; + } + } else if (ch == -1) { break; } @@ -212,20 +188,6 @@ public final class TailFilter return lines; } - /** - * Set the initialized status. - */ - private final void setInitialized(final boolean initialized) { - this.initialized = initialized; - } - - /** - * Get the initialized status. - */ - private final boolean getInitialized() { - return initialized; - } - /** * Create a new TailFilter using the passed in * Reader for instantiation. @@ -237,22 +199,15 @@ public final class TailFilter return newFilter; } - /** - * Set Parameters - */ - public final void setParameters(final Parameter[] parameters) { - this.parameters = parameters; - setInitialized(false); - } - /** * Scan for the lines parameter. */ private final void initialize() { - if (parameters != null) { - for (int i = 0; i < parameters.length; i++) { - if (LINES_KEY.equals(parameters[i].getName())) { - setLines(new Long(parameters[i].getValue()).longValue()); + Parameter[] params = getParameters(); + if (params != null) { + for (int i = 0; i < params.length; i++) { + if (LINES_KEY.equals(params[i].getName())) { + setLines(new Long(params[i].getValue()).longValue()); break; } } diff --git a/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/util/ChainReaderHelper.java b/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/util/ChainReaderHelper.java similarity index 99% rename from proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/util/ChainReaderHelper.java rename to proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/util/ChainReaderHelper.java index ba423bde2..0a1a7ba38 100644 --- a/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/util/ChainReaderHelper.java +++ b/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/util/ChainReaderHelper.java @@ -51,7 +51,7 @@ * information on the Apache Software Foundation, please see * . */ -package org.apache.tools.ant.util; +package org.apache.tools.ant.filters.util; import org.apache.tools.ant.AntClassLoader; import org.apache.tools.ant.BuildException; diff --git a/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/taskdefs/LoadFile.java b/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/taskdefs/LoadFile.java index ca569c691..66f7c3b8c 100644 --- a/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/taskdefs/LoadFile.java +++ b/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/taskdefs/LoadFile.java @@ -57,7 +57,7 @@ import org.apache.tools.ant.Task; import org.apache.tools.ant.Project; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.types.FilterChain; -import org.apache.tools.ant.util.ChainReaderHelper; +import org.apache.tools.ant.filters.util.ChainReaderHelper; import java.io.*; import java.util.Vector; @@ -197,12 +197,14 @@ public final class LoadFile extends Task { String text = crh.processStream(); - if(evaluateProperties) { - text = project.replaceProperties(text); + if (text != null) { + if(evaluateProperties) { + text = project.replaceProperties(text); + } + project.setNewProperty(property, text); + log("loaded " + text.length() + " characters",Project.MSG_VERBOSE); + log(property+" := "+text,Project.MSG_DEBUG); } - project.setNewProperty(property, text); - log("loaded " + text.length() + " characters",Project.MSG_VERBOSE); - log(property+" := "+text,Project.MSG_DEBUG); } catch (final IOException ioe) { final String message = "Unable to load file: " + ioe.toString(); diff --git a/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/taskdefs/LoadProperties.java b/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/taskdefs/LoadProperties.java index b7251fa2d..0306dc548 100644 --- a/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/taskdefs/LoadProperties.java +++ b/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/taskdefs/LoadProperties.java @@ -57,7 +57,7 @@ import org.apache.tools.ant.Task; import org.apache.tools.ant.Project; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.types.FilterChain; -import org.apache.tools.ant.util.ChainReaderHelper; +import org.apache.tools.ant.filters.util.ChainReaderHelper; import java.io.*; import java.util.Vector;