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 82f89af6b..5867dee80 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 @@ -66,9 +66,9 @@ import org.apache.tools.ant.types.Parameterizable; * Example: * ======= * - * - * - * + * <filterreader classname="org.apache.tools.ant.filters.HeadFilter"> + * <param name="lines" value="3"/> + * </filterreader> * * @author Magesh Umasankar */ 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 new file mode 100644 index 000000000..63d592a66 --- /dev/null +++ b/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/LineContains.java @@ -0,0 +1,137 @@ +package org.apache.tools.ant.filters; + +import java.io.FilterReader; +import java.io.IOException; +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 + * strings. + * + * Example: + * ======= + * + * <filterreader classname="org.apache.tools.ant.filters.LineContains"> + * <param type="contains" value="foo"/> + * <param type="contains" value="bar"/> + * </filterreader> + * + * This will fetch all those lines that contain foo and bar + * + * @author Magesh Umasankar + */ +public final class LineContains + extends FilterReader + implements Parameterizable +{ + private static final String CONTAINS_KEY = "contains"; + + private Parameter[] parameters; + + private boolean initialized = false; + + private final Vector contains = new Vector(); + + private int containsSize = 0; + + private String line = null; + + /** + * Create a new filtered reader. + * + * @param in a Reader object providing the underlying stream. + */ + public LineContains(final Reader in) { + super(in); + } + + public final int read() throws IOException { + if (!initialized) { + initialize(); + initialized = true; + } + + int ch = -1; + + if (line != null) { + ch = line.charAt(0); + if (line.length() == 1) { + line = null; + } else { + 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) { + for (int i = 0; i < containsSize; i++) { + String containsStr = (String) contains.elementAt(i); + if (line.indexOf(containsStr) == -1) { + line = null; + break; + } + } + + return read(); + } + } + + return ch; + } + + public final int read(final char cbuf[], final int off, + final int len) throws IOException { + for (int i = 0; i < len; i++) { + final int ch = read(); + if (ch == -1) { + if (i == 0) { + return -1; + } else { + return i; + } + } + cbuf[off + i] = (char) ch; + } + return len; + } + + public final long skip(final long n) throws IOException { + for (long i = 0; i < n; i++) { + if (in.read() == -1) return i; + } + return n; + } + + /** + * Set Parameters + */ + public final void setParameters(final Parameter[] parameters) { + this.parameters = parameters; + initialized = false; + } + + 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()); + } + } + containsSize = contains.size(); + } + } +} 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 cc470abb0..061356123 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 @@ -66,11 +66,11 @@ import org.apache.tools.ant.types.Parameterizable; * * Example Usage: * ============= - * - * - * - * - * + * <filterreader classname="org.apache.tools.ant.filters.ReplaceTokens"> + * <param type="tokenchar" name="begintoken" value="#"/> + * <param type="tokenchar" name="endtoken" value="#"/> + * <param type="token" name="DATE" value="${DATE}"/> + * </filterreader> * * @author Magesh Umasankar */ 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 95bb3c43c..871a1be31 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 @@ -14,13 +14,13 @@ import org.apache.tools.ant.types.Parameterizable; * Example: * ======= * - * - * - * - * - * - * - * + * <filterreader classname="org.apache.tools.ant.filters.StripLineComments"> + * <param type="comment" value="#"/> + * <param type="comment" value="--"/> + * <param type="comment" value="REM "/> + * <param type="comment" value="rem "/> + * <param type="comment" value="//"/> + * </filterreader> * * @author Magesh Umasankar */ 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 faac9717d..65a92c7b6 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 @@ -66,9 +66,9 @@ import org.apache.tools.ant.types.Parameterizable; * Example: * ======= * - * - * - * + * <filterreader classname="org.apache.tools.ant.filters.TailFilter"> + * <param name="lines" value="3"/> + * </filterreader> * * @author Magesh Umasankar */ 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/util/ChainReaderHelper.java index b27bf1022..d5619bbdc 100644 --- a/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/util/ChainReaderHelper.java +++ b/proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/util/ChainReaderHelper.java @@ -154,7 +154,6 @@ public final class ChainReaderHelper { if (classpath == null) { clazz = Class.forName(className); } else { - System.out.println(project + " " + classpath); AntClassLoader al = new AntClassLoader(project, classpath); clazz = al.loadClass(className);