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);