Browse Source

1. Provide a mechanism by which filter readers recognized by Ant's core (FilterreaderSet) can have a better syntax.

2.  Remove double-quotes from javadoc and replace with "


git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271584 13f79535-47bb-0310-9956-ffa450edef68
master
Magesh Umasankar 23 years ago
parent
commit
6067cc8261
10 changed files with 538 additions and 67 deletions
  1. +6
    -6
      proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/HeadFilter.java
  2. +67
    -5
      proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/LineContains.java
  3. +55
    -4
      proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/PrefixLines.java
  4. +96
    -5
      proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/ReplaceTokens.java
  5. +25
    -1
      proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/StripJavaComments.java
  6. +65
    -17
      proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/StripLineBreaks.java
  7. +78
    -14
      proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/StripLineComments.java
  8. +52
    -8
      proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/TabsToSpaces.java
  9. +51
    -7
      proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/TailFilter.java
  10. +43
    -0
      proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/types/FilterReaderSet.java

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

@@ -67,12 +67,12 @@ import org.apache.tools.ant.types.Parameterizable;
* Example:
* =======
*
* <headfilter lines="3"/>
* <headfilter lines="3"/>
*
* Or:
*
* <filterreader classname="org.apache.tools.ant.filters.HeadFilter">
* <param name="lines" value="3"/>
* <filterreader classname="org.apache.tools.ant.filters.HeadFilter">
* <param name="lines" value="3"/>
* </filterreader>
*
* @author <a href="mailto:umagesh@apache.org">Magesh Umasankar</a>
@@ -180,15 +180,15 @@ public final class HeadFilter
this.lines = lines;
}

public final long getLines() {
private final long getLines() {
return lines;
}

public final void setInitialized(final boolean initialized) {
private final void setInitialized(final boolean initialized) {
this.initialized = initialized;
}

public final boolean getInitialized() {
private final boolean getInitialized() {
return initialized;
}



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

@@ -3,6 +3,7 @@ package org.apache.tools.ant.filters;
import java.io.FilterReader;
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
import java.util.Vector;

import org.apache.tools.ant.types.Parameter;
@@ -15,6 +16,13 @@ import org.apache.tools.ant.types.Parameterizable;
* Example:
* =======
*
* &lt;linecontains&gt;
* &lt;contains value=&quot;foo&quot;&gt;
* &lt;contains value=&quot;bar&quot;&gt;
* &lt;/linecontains&gt;
*
* Or:
*
* &lt;filterreader classname="org.apache.tools.ant.filters.LineContains"&gt;
* &lt;param type="contains" value="foo"/&gt;
* &lt;param type="contains" value="bar"/&gt;
@@ -26,7 +34,7 @@ import org.apache.tools.ant.types.Parameterizable;
*/
public final class LineContains
extends FilterReader
implements Parameterizable
implements Parameterizable, CloneableReader
{
private static final String CONTAINS_KEY = "contains";

@@ -34,12 +42,26 @@ public final class LineContains

private boolean initialized = false;

private final Vector contains = new Vector();

private int containsSize = 0;
private Vector contains = new Vector();

private String line = null;

/**
* 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 LineContains() {
// Dummy constructor to be invoked by Ant's Introspector
super(new StringReader(new String()));
try {
close();
} catch (IOException ioe) {
// Ignore
}
}

/**
* Create a new filtered reader.
*
@@ -78,9 +100,11 @@ public final class LineContains
}

if (line != null) {
int containsSize = contains.size();
for (int i = 0; i < containsSize; i++) {
String containsStr = (String) contains.elementAt(i);
if (line.indexOf(containsStr) == -1) {
System.out.println("Hello");
line = null;
break;
}
@@ -116,6 +140,33 @@ public final class LineContains
return n;
}

public final void addConfiguredContains(final Contains contains) {
this.contains.addElement(contains.getValue());
}

private void setContains(final Vector contains) {
this.contains = contains;
}

private final Vector getContains() {
return contains;
}

private final void setInitialized(final boolean initialized) {
this.initialized = initialized;
}

private final boolean getInitialized() {
return initialized;
}

public final Reader clone(final Reader rdr) {
LineContains newFilter = new LineContains(rdr);
newFilter.setContains(getContains());
newFilter.setInitialized(true);
return newFilter;
}

/**
* Set Parameters
*/
@@ -131,7 +182,18 @@ public final class LineContains
contains.addElement(parameters[i].getValue());
}
}
containsSize = contains.size();
}
}

public static class Contains {
private String value;

public final void setValue(String contains) {
value = contains;
}

public final String getValue() {
return value;
}
}
}

+ 55
- 4
proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/PrefixLines.java View File

@@ -3,6 +3,7 @@ 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;
@@ -10,11 +11,22 @@ import org.apache.tools.ant.types.Parameterizable;
/**
* Attach a prefix to every line
*
* Example:
* =======
*
* &lt;prefixlines prefix=&quot;Foo&quot;/&gt;
*
* Or:
*
* &lt;filterreader classname=&quot;org.apache.tools.ant.filters.PrefixLines&quot;&gt;
* &lt;param name=&quot;prefix&quot; value=&quot;Foo&quot;/&gt;
* &lt;/filterreader&gt;
*
* @author <a href="mailto:umagesh@apache.org">Magesh Umasankar</a>
*/
public final class PrefixLines
extends FilterReader
implements Parameterizable
implements Parameterizable, CloneableReader
{
/**
* prefix key
@@ -29,6 +41,22 @@ public final class PrefixLines

private String queuedData = null;

/**
* 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 PrefixLines() {
// Dummy constructor to be invoked by Ant's Introspector
super(new StringReader(new String()));
try {
close();
} catch (IOException ioe) {
// Ignore
}
}

/**
* Create a new filtered reader.
*
@@ -39,9 +67,9 @@ public final class PrefixLines
}

public final int read() throws IOException {
if (!initialized) {
if (!getInitialized()) {
initialize();
initialized = true;
setInitialized(true);
}

int ch = -1;
@@ -101,12 +129,35 @@ public final class PrefixLines
return n;
}

public final void setPrefix(final String prefix) {
this.prefix = prefix;
}

private final String getPrefix() {
return prefix;
}

private final void setInitialized(final boolean initialized) {
this.initialized = initialized;
}

private final boolean getInitialized() {
return initialized;
}

public final Reader clone(final Reader rdr) {
PrefixLines newFilter = new PrefixLines(rdr);
newFilter.setPrefix(getPrefix());
newFilter.setInitialized(true);
return newFilter;
}

/**
* Set Parameters
*/
public final void setParameters(final Parameter[] parameters) {
this.parameters = parameters;
initialized = false;
setInitialized(false);
}

private final void initialize() {


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

@@ -56,6 +56,7 @@ package org.apache.tools.ant.filters;
import java.io.FilterReader;
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
import java.util.Hashtable;

import org.apache.tools.ant.types.Parameter;
@@ -66,17 +67,24 @@ import org.apache.tools.ant.types.Parameterizable;
*
* Example Usage:
* =============
*
* &lt;replacetokens begintoken=&quot;#&quot; endtoken=&quot;#&quot;&gt;
* &lt;token key=&quot;DATE&quot; value=&quot;${TODAY}&quot;/&gt;
* &lt;/replacetokens&gt;
*
* Or:
*
* &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;param type="token" name="DATE" value="${TODAY}"/&gt;
* &lt;/filterreader&gt;
*
* @author <a href="mailto:umagesh@apache.org">Magesh Umasankar</a>
*/
public final class ReplaceTokens
extends FilterReader
implements Parameterizable
implements Parameterizable, CloneableReader
{
private static final char DEFAULT_BEGIN_TOKEN = '@';

@@ -94,6 +102,22 @@ public final class ReplaceTokens

private char endToken = DEFAULT_END_TOKEN;

/**
* 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 ReplaceTokens() {
// Dummy constructor to be invoked by Ant's Introspector
super(new StringReader(new String()));
try {
close();
} catch (IOException ioe) {
// Ignore
}
}

/**
* Create a new filtered reader.
*
@@ -107,9 +131,9 @@ public final class ReplaceTokens
* Replace tokens with values.
*/
public final int read() throws IOException {
if (!initialized) {
if (!getInitialized()) {
initialize();
initialized = true;
setInitialized(true);
}

if (queuedData != null && queuedData.length() > 0) {
@@ -177,12 +201,57 @@ public final class ReplaceTokens
return n;
}

public final void setBeginToken(final char beginToken) {
this.beginToken = beginToken;
}

private final char getBeginToken() {
return beginToken;
}

public final void setEndToken(final char endToken) {
this.endToken = endToken;
}

private final char getEndToken() {
return endToken;
}

public final void addConfiguredToken(final Token token) {
hash.put(token.getKey(), token.getValue());
}

private void setTokens(final Hashtable hash) {
this.hash = hash;
}

private final Hashtable getTokens() {
return hash;
}

private final void setInitialized(final boolean initialized) {
this.initialized = initialized;
}

private final boolean getInitialized() {
return initialized;
}

public final Reader clone(final Reader rdr) {
ReplaceTokens newFilter = new ReplaceTokens(rdr);
newFilter.setBeginToken(getBeginToken());
newFilter.setEndToken(getEndToken());
newFilter.setTokens(getTokens());
newFilter.setInitialized(true);
return newFilter;
}

/**
* Set Parameters
*/
public final void setParameters(final Parameter[] parameters) {
this.parameters = parameters;
initialized = false;
setInitialized(false);
}

/**
@@ -209,4 +278,26 @@ public final class ReplaceTokens
}
}
}

public static class Token {
private String key;

private String value;

public final void setKey(String key) {
this.key = key;
}

public final void setValue(String value) {
this.value = value;
}

public final String getKey() {
return key;
}

public final String getValue() {
return value;
}
}
}

+ 25
- 1
proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/StripJavaComments.java View File

@@ -56,6 +56,7 @@ package org.apache.tools.ant.filters;
import java.io.FilterReader;
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;

/**
* This is a java comment and string stripper reader that filters
@@ -64,7 +65,25 @@ import java.io.Reader;
* Since this class heavily relies on the single char read function,
* you are reccomended to make it work on top of a buffered reader.
*/
public final class StripJavaComments extends FilterReader {
public final class StripJavaComments
extends FilterReader
implements CloneableReader
{
/**
* 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 StripJavaComments() {
// Dummy constructor to be invoked by Ant's Introspector
super(new StringReader(new String()));
try {
close();
} catch (IOException ioe) {
// Ignore
}
}

/**
* Create a new filtered reader.
@@ -147,4 +166,9 @@ public final class StripJavaComments extends FilterReader {
}
return n;
}

public final Reader clone(final Reader rdr) {
StripJavaComments newFilter = new StripJavaComments(rdr);
return newFilter;
}
}

+ 65
- 17
proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/StripLineBreaks.java View File

@@ -56,6 +56,7 @@ 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;
@@ -63,12 +64,18 @@ import org.apache.tools.ant.types.Parameterizable;
/**
* Filter to flatten the stream to a single line.
*
* &lt;striplinebreaks/&gt;
*
* Or:
*
* &lt;filterreader classname=&quot;org.apache.tools.ant.filters.StripLineBreaks&quot;/&gt;
*
* @author Steve Loughran
* @author <a href="mailto:umagesh@apache.org">Magesh Umasankar</a>
*/
public final class StripLineBreaks
extends FilterReader
implements Parameterizable
implements Parameterizable, CloneableReader
{
/**
* Linebreaks. What do to on funny IBM mainframes with odd line endings?
@@ -87,6 +94,22 @@ public final class StripLineBreaks

private boolean initialized = false;

/**
* 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 StripLineBreaks() {
// Dummy constructor to be invoked by Ant's Introspector
super(new StringReader(new String()));
try {
close();
} catch (IOException ioe) {
// Ignore
}
}

/**
* Create a new filtered reader.
*
@@ -98,21 +121,8 @@ public final class StripLineBreaks

public final int read() throws IOException {
if (!initialized) {
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();
break;
}
}
}

if (userDefinedLineBreaks != null) {
lineBreaks = userDefinedLineBreaks;
}

initialized = true;
initialize();
setInitialized(true);
}

int ch = in.read();
@@ -151,11 +161,49 @@ public final class StripLineBreaks
return n;
}

public final void setLineBreaks(final String lineBreaks) {
this.lineBreaks = lineBreaks;
}

private final String getLineBreaks() {
return lineBreaks;
}

private final void setInitialized(final boolean initialized) {
this.initialized = initialized;
}

private final boolean getInitialized() {
return initialized;
}

public final Reader clone(final Reader rdr) {
StripLineBreaks newFilter = new StripLineBreaks(rdr);
newFilter.setLineBreaks(getLineBreaks());
newFilter.setInitialized(true);
return newFilter;
}

/**
* Set Parameters
*/
public final void setParameters(final Parameter[] parameters) {
this.parameters = parameters;
initialized = false;
setInitialized(false);
}

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();
break;
}
}
}
if (userDefinedLineBreaks != null) {
lineBreaks = userDefinedLineBreaks;
}
}
}

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

@@ -3,6 +3,7 @@ package org.apache.tools.ant.filters;
import java.io.FilterReader;
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
import java.util.Vector;

import org.apache.tools.ant.types.Parameter;
@@ -14,19 +15,29 @@ import org.apache.tools.ant.types.Parameterizable;
* Example:
* =======
*
* &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;striplinecomments&gt;
* &lt;comment value=&quot;#&quot;/&gt;
* &lt;comment value=&quot;--&quot;/&gt;
* &lt;comment value=&quot;REM &quot;/&gt;
* &lt;comment value=&quot;rem &quot;/&gt;
* &lt;comment value=&quot;//&quot;/&gt;
* &lt;/striplinecomments&gt;
*
* Or:
*
* &lt;filterreader classname=&quot;org.apache.tools.ant.filters.StripLineComments&quot;&gt;
* &lt;param type=&quot;comment&quot; value="#&quot;/&gt;
* &lt;param type=&quot;comment&quot; value=&quot;--&quot;/&gt;
* &lt;param type=&quot;comment&quot; value=&quot;REM &quot;/&gt;
* &lt;param type=&quot;comment&quot; value=&quot;rem &quot;/&gt;
* &lt;param type=&quot;comment&quot; value=&quot;//&quot;/&gt;
* &lt;/filterreader&gt;
*
* @author <a href="mailto:umagesh@apache.org">Magesh Umasankar</a>
*/
public final class StripLineComments
extends FilterReader
implements Parameterizable
implements Parameterizable, CloneableReader
{
private static final String COMMENTS_KEY = "comment";

@@ -34,12 +45,26 @@ public final class StripLineComments

private boolean initialized = false;

private final Vector comments = new Vector();

private int commentsSize = 0;
private Vector comments = new Vector();

private String line = null;

/**
* 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 StripLineComments() {
// Dummy constructor to be invoked by Ant's Introspector
super(new StringReader(new String()));
try {
close();
} catch (IOException ioe) {
// Ignore
}
}

/**
* Create a new filtered reader.
*
@@ -50,9 +75,9 @@ public final class StripLineComments
}

public final int read() throws IOException {
if (!initialized) {
if (!getInitialized()) {
initialize();
initialized = true;
setInitialized(true);
}

int ch = -1;
@@ -78,6 +103,7 @@ public final class StripLineComments
}

if (line != null) {
int commentsSize = comments.size();
for (int i = 0; i < commentsSize; i++) {
String comment = (String) comments.elementAt(i);
if (line.startsWith(comment)) {
@@ -115,12 +141,39 @@ public final class StripLineComments
return n;
}

public final void addConfiguredComment(final Comment comment) {
comments.addElement(comment.getValue());
}

private void setComments(final Vector comments) {
this.comments = comments;
}

private final Vector getComments() {
return comments;
}

private final void setInitialized(final boolean initialized) {
this.initialized = initialized;
}

private final boolean getInitialized() {
return initialized;
}

public final Reader clone(final Reader rdr) {
StripLineComments newFilter = new StripLineComments(rdr);
newFilter.setComments(getComments());
newFilter.setInitialized(true);
return newFilter;
}

/**
* Set Parameters
*/
public final void setParameters(final Parameter[] parameters) {
this.parameters = parameters;
initialized = false;
setInitialized(false);
}

private final void initialize() {
@@ -130,7 +183,18 @@ public final class StripLineComments
comments.addElement(parameters[i].getValue());
}
}
commentsSize = comments.size();
}
}

public static class Comment {
private String value;

public final void setValue(String comment) {
value = comment;
}

public final String getValue() {
return value;
}
}
}

+ 52
- 8
proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/filters/TabsToSpaces.java View File

@@ -56,7 +56,7 @@ package org.apache.tools.ant.filters;
import java.io.FilterReader;
import java.io.IOException;
import java.io.Reader;
import java.util.Hashtable;
import java.io.StringReader;

import org.apache.tools.ant.types.Parameter;
import org.apache.tools.ant.types.Parameterizable;
@@ -66,15 +66,20 @@ import org.apache.tools.ant.types.Parameterizable;
*
* Example Usage:
* =============
* <filterreader classname="org.apache.tools.ant.filters.TabsToSpaces">
* <param name="tablength" value="8"/>
*
* &lt;tabtospaces tablength=&quot;8&quot;/&gt;
*
* Or:
*
* <filterreader classname=&quot;org.apache.tools.ant.filters.TabsToSpaces&quot;>
* <param name=&quot;tablength&quot; value=&quot;8&quot;/>
* </filterreader>
*
* @author <a href="mailto:umagesh@apache.org">Magesh Umasankar</a>
*/
public final class TabsToSpaces
extends FilterReader
implements Parameterizable
implements Parameterizable, CloneableReader
{
private static final int DEFAULT_TAB_LENGTH = 8;

@@ -88,6 +93,22 @@ public final class TabsToSpaces

private int spacesRemaining = 0;

/**
* 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 TabsToSpaces() {
// Dummy constructor to be invoked by Ant's Introspector
super(new StringReader(new String()));
try {
close();
} catch (IOException ioe) {
// Ignore
}
}

/**
* Create a new filtered reader.
*
@@ -101,9 +122,9 @@ public final class TabsToSpaces
* Convert tabs with spaces
*/
public final int read() throws IOException {
if (!initialized) {
if (!getInitialized()) {
initialize();
initialized = true;
setInitialized(true);
}

int ch = -1;
@@ -146,16 +167,39 @@ public final class TabsToSpaces
return n;
}

public final void setTablength(final int tabLength) {
this.tabLength = tabLength;
}

private final int getTablength() {
return tabLength;
}

private final void setInitialized(final boolean initialized) {
this.initialized = initialized;
}

private final boolean getInitialized() {
return initialized;
}

public final Reader clone(final Reader rdr) {
TabsToSpaces newFilter = new TabsToSpaces(rdr);
newFilter.setTablength(getTablength());
newFilter.setInitialized(true);
return newFilter;
}

/**
* Set Parameters
*/
public final void setParameters(final Parameter[] parameters) {
this.parameters = parameters;
initialized = false;
setInitialized(false);
}

/**
* Initialize tokens and load the replacee-replacer hashtable.
* Initialize tokens
*/
private final void initialize() {
if (parameters != null) {


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

@@ -56,6 +56,7 @@ 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;
@@ -66,15 +67,19 @@ import org.apache.tools.ant.types.Parameterizable;
* Example:
* =======
*
* &lt;filterreader classname="org.apache.tools.ant.filters.TailFilter"&gt;
* &lt;param name="lines" value="3"/&gt;
* &lt;tailfilter lines=&quot;3&quot;/&gt;
*
* Or:
*
* &lt;filterreader classname=&quot;org.apache.tools.ant.filters.TailFilter&quot;&gt;
* &lt;param name=&quot;lines&quot; value=&quot;3&quot;/&gt;
* &lt;/filterreader&gt;
*
* @author <a href="mailto:umagesh@apache.org">Magesh Umasankar</a>
*/
public final class TailFilter
extends FilterReader
implements Parameterizable
implements Parameterizable, CloneableReader
{
private static final String LINES_KEY = "lines";

@@ -96,6 +101,22 @@ public final class TailFilter

private int bufferPos = 0;

/**
* 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 TailFilter() {
// Dummy constructor to be invoked by Ant's Introspector
super(new StringReader(new String()));
try {
close();
} catch (IOException ioe) {
// Ignore
}
}

/**
* Create a new filtered reader.
*
@@ -110,9 +131,9 @@ public final class TailFilter
* point. Grow buffer as needed.
*/
public final int read() throws IOException {
if (!initialized) {
if (!getInitialized()) {
initialize();
initialized = true;
setInitialized(true);
}

if (!completedReadAhead) {
@@ -200,19 +221,42 @@ public final class TailFilter
return n;
}

public final void setLines(final long lines) {
this.lines = lines;
}

private final long getLines() {
return lines;
}

private final void setInitialized(final boolean initialized) {
this.initialized = initialized;
}

private final boolean getInitialized() {
return initialized;
}

public final Reader clone(final Reader rdr) {
TailFilter newFilter = new TailFilter(rdr);
newFilter.setLines(getLines());
newFilter.setInitialized(true);
return newFilter;
}

/**
* Set Parameters
*/
public final void setParameters(final Parameter[] parameters) {
this.parameters = parameters;
initialized = false;
setInitialized(false);
}

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();
setLines(new Long(parameters[i].getValue()).longValue());
break;
}
}


+ 43
- 0
proposal/sandbox/filterreaders/src/main/org/apache/tools/ant/types/FilterReaderSet.java View File

@@ -56,6 +56,14 @@ package org.apache.tools.ant.types;
import java.util.Vector;

import org.apache.tools.ant.filters.HeadFilter;
import org.apache.tools.ant.filters.LineContains;
import org.apache.tools.ant.filters.PrefixLines;
import org.apache.tools.ant.filters.ReplaceTokens;
import org.apache.tools.ant.filters.StripJavaComments;
import org.apache.tools.ant.filters.StripLineBreaks;
import org.apache.tools.ant.filters.StripLineComments;
import org.apache.tools.ant.filters.TabsToSpaces;
import org.apache.tools.ant.filters.TailFilter;

/**
* Set of FilterReaders
@@ -77,4 +85,39 @@ public final class FilterReaderSet {
public final void addHeadFilter(final HeadFilter headFilter) {
filterReaders.addElement(headFilter);
}

public final void addLineContains(final LineContains lineContains) {
filterReaders.addElement(lineContains);
}

public final void addPrefixLines(final PrefixLines prefixLines) {
filterReaders.addElement(prefixLines);
}

public final void addReplaceTokens(final ReplaceTokens replaceTokens) {
filterReaders.addElement(replaceTokens);
}

public final void addStripJavaComments(final StripJavaComments
stripJavaComments) {
filterReaders.addElement(stripJavaComments);
}

public final void addStripLineBreaks(final StripLineBreaks
stripLineBreaks) {
filterReaders.addElement(stripLineBreaks);
}

public final void addStripLineComments(final StripLineComments
stripLineComments) {
filterReaders.addElement(stripLineComments);
}

public final void addTabsToSpaces(final TabsToSpaces tabsToSpaces) {
filterReaders.addElement(tabsToSpaces);
}

public final void addTailFilter(final TailFilter tailFilter) {
filterReaders.addElement(tailFilter);
}
}

Loading…
Cancel
Save