Browse Source

1. Addition of new filter reader "LineContains"

2.  Javadoc changes to use &lt; and &gt; instead of < and > characters
3.  Removal of debug statement from ChainReaderHelper


git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271526 13f79535-47bb-0310-9956-ffa450edef68
master
Magesh Umasankar 23 years ago
parent
commit
9cdb3c6908
6 changed files with 155 additions and 19 deletions
  1. +3
    -3
      proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/HeadFilter.java
  2. +137
    -0
      proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/LineContains.java
  3. +5
    -5
      proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/ReplaceTokens.java
  4. +7
    -7
      proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/StripLineComments.java
  5. +3
    -3
      proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/TailFilter.java
  6. +0
    -1
      proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/util/ChainReaderHelper.java

+ 3
- 3
proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/HeadFilter.java View File

@@ -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>
* &lt;filterreader classname="org.apache.tools.ant.filters.HeadFilter"&gt;
* &lt;param name="lines" value="3"/&gt;
* &lt;/filterreader&gt;
*
* @author <a href="mailto:umagesh@apache.org">Magesh Umasankar</a>
*/


+ 137
- 0
proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/LineContains.java View File

@@ -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:
* =======
*
* &lt;filterreader classname="org.apache.tools.ant.filters.LineContains"&gt;
* &lt;param type="contains" value="foo"/&gt;
* &lt;param type="contains" value="bar"/&gt;
* &lt;/filterreader&gt;
*
* This will fetch all those lines that contain foo and bar
*
* @author <a href="mailto:umagesh@apache.org">Magesh Umasankar</a>
*/
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();
}
}
}

+ 5
- 5
proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/ReplaceTokens.java View File

@@ -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>
* &lt;filterreader classname="org.apache.tools.ant.filters.ReplaceTokens"&gt;
* &lt;param type="tokenchar" name="begintoken" value="#"/&gt;
* &lt;param type="tokenchar" name="endtoken" value="#"/&gt;
* &lt;param type="token" name="DATE" value="${DATE}"/&gt;
* &lt;/filterreader&gt;
*
* @author <a href="mailto:umagesh@apache.org">Magesh Umasankar</a>
*/


+ 7
- 7
proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/StripLineComments.java View File

@@ -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>
* &lt;filterreader classname="org.apache.tools.ant.filters.StripLineComments"&gt;
* &lt;param type="comment" value="#"/&gt;
* &lt;param type="comment" value="--"/&gt;
* &lt;param type="comment" value="REM "/&gt;
* &lt;param type="comment" value="rem "/&gt;
* &lt;param type="comment" value="//"/&gt;
* &lt;/filterreader&gt;
*
* @author <a href="mailto:umagesh@apache.org">Magesh Umasankar</a>
*/


+ 3
- 3
proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/TailFilter.java View File

@@ -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>
* &lt;filterreader classname="org.apache.tools.ant.filters.TailFilter"&gt;
* &lt;param name="lines" value="3"/&gt;
* &lt;/filterreader&gt;
*
* @author <a href="mailto:umagesh@apache.org">Magesh Umasankar</a>
*/


+ 0
- 1
proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/util/ChainReaderHelper.java View File

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


Loading…
Cancel
Save