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-ffa450edef68master
| @@ -67,12 +67,12 @@ import org.apache.tools.ant.types.Parameterizable; | |||||
| * Example: | * Example: | ||||
| * ======= | * ======= | ||||
| * | * | ||||
| * <headfilter lines="3"/> | |||||
| * <headfilter lines="3"/> | |||||
| * | * | ||||
| * Or: | * 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> | * </filterreader> | ||||
| * | * | ||||
| * @author <a href="mailto:umagesh@apache.org">Magesh Umasankar</a> | * @author <a href="mailto:umagesh@apache.org">Magesh Umasankar</a> | ||||
| @@ -180,15 +180,15 @@ public final class HeadFilter | |||||
| this.lines = lines; | this.lines = lines; | ||||
| } | } | ||||
| public final long getLines() { | |||||
| private final long getLines() { | |||||
| return lines; | return lines; | ||||
| } | } | ||||
| public final void setInitialized(final boolean initialized) { | |||||
| private final void setInitialized(final boolean initialized) { | |||||
| this.initialized = initialized; | this.initialized = initialized; | ||||
| } | } | ||||
| public final boolean getInitialized() { | |||||
| private final boolean getInitialized() { | |||||
| return initialized; | return initialized; | ||||
| } | } | ||||
| @@ -3,6 +3,7 @@ package org.apache.tools.ant.filters; | |||||
| import java.io.FilterReader; | import java.io.FilterReader; | ||||
| import java.io.IOException; | import java.io.IOException; | ||||
| import java.io.Reader; | import java.io.Reader; | ||||
| import java.io.StringReader; | |||||
| import java.util.Vector; | import java.util.Vector; | ||||
| import org.apache.tools.ant.types.Parameter; | import org.apache.tools.ant.types.Parameter; | ||||
| @@ -15,6 +16,13 @@ import org.apache.tools.ant.types.Parameterizable; | |||||
| * Example: | * Example: | ||||
| * ======= | * ======= | ||||
| * | * | ||||
| * <linecontains> | |||||
| * <contains value="foo"> | |||||
| * <contains value="bar"> | |||||
| * </linecontains> | |||||
| * | |||||
| * Or: | |||||
| * | |||||
| * <filterreader classname="org.apache.tools.ant.filters.LineContains"> | * <filterreader classname="org.apache.tools.ant.filters.LineContains"> | ||||
| * <param type="contains" value="foo"/> | * <param type="contains" value="foo"/> | ||||
| * <param type="contains" value="bar"/> | * <param type="contains" value="bar"/> | ||||
| @@ -26,7 +34,7 @@ import org.apache.tools.ant.types.Parameterizable; | |||||
| */ | */ | ||||
| public final class LineContains | public final class LineContains | ||||
| extends FilterReader | extends FilterReader | ||||
| implements Parameterizable | |||||
| implements Parameterizable, CloneableReader | |||||
| { | { | ||||
| private static final String CONTAINS_KEY = "contains"; | private static final String CONTAINS_KEY = "contains"; | ||||
| @@ -34,12 +42,26 @@ public final class LineContains | |||||
| private boolean initialized = false; | private boolean initialized = false; | ||||
| private final Vector contains = new Vector(); | |||||
| private int containsSize = 0; | |||||
| private Vector contains = new Vector(); | |||||
| private String line = null; | 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. | * Create a new filtered reader. | ||||
| * | * | ||||
| @@ -78,9 +100,11 @@ public final class LineContains | |||||
| } | } | ||||
| if (line != null) { | if (line != null) { | ||||
| int containsSize = contains.size(); | |||||
| for (int i = 0; i < containsSize; i++) { | for (int i = 0; i < containsSize; i++) { | ||||
| String containsStr = (String) contains.elementAt(i); | String containsStr = (String) contains.elementAt(i); | ||||
| if (line.indexOf(containsStr) == -1) { | if (line.indexOf(containsStr) == -1) { | ||||
| System.out.println("Hello"); | |||||
| line = null; | line = null; | ||||
| break; | break; | ||||
| } | } | ||||
| @@ -116,6 +140,33 @@ public final class LineContains | |||||
| return n; | 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 | * Set Parameters | ||||
| */ | */ | ||||
| @@ -131,7 +182,18 @@ public final class LineContains | |||||
| contains.addElement(parameters[i].getValue()); | 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; | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -3,6 +3,7 @@ package org.apache.tools.ant.filters; | |||||
| import java.io.FilterReader; | import java.io.FilterReader; | ||||
| import java.io.IOException; | import java.io.IOException; | ||||
| import java.io.Reader; | import java.io.Reader; | ||||
| import java.io.StringReader; | |||||
| import org.apache.tools.ant.types.Parameter; | import org.apache.tools.ant.types.Parameter; | ||||
| import org.apache.tools.ant.types.Parameterizable; | import org.apache.tools.ant.types.Parameterizable; | ||||
| @@ -10,11 +11,22 @@ import org.apache.tools.ant.types.Parameterizable; | |||||
| /** | /** | ||||
| * Attach a prefix to every line | * Attach a prefix to every line | ||||
| * | * | ||||
| * Example: | |||||
| * ======= | |||||
| * | |||||
| * <prefixlines prefix="Foo"/> | |||||
| * | |||||
| * Or: | |||||
| * | |||||
| * <filterreader classname="org.apache.tools.ant.filters.PrefixLines"> | |||||
| * <param name="prefix" value="Foo"/> | |||||
| * </filterreader> | |||||
| * | |||||
| * @author <a href="mailto:umagesh@apache.org">Magesh Umasankar</a> | * @author <a href="mailto:umagesh@apache.org">Magesh Umasankar</a> | ||||
| */ | */ | ||||
| public final class PrefixLines | public final class PrefixLines | ||||
| extends FilterReader | extends FilterReader | ||||
| implements Parameterizable | |||||
| implements Parameterizable, CloneableReader | |||||
| { | { | ||||
| /** | /** | ||||
| * prefix key | * prefix key | ||||
| @@ -29,6 +41,22 @@ public final class PrefixLines | |||||
| private String queuedData = null; | 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. | * Create a new filtered reader. | ||||
| * | * | ||||
| @@ -39,9 +67,9 @@ public final class PrefixLines | |||||
| } | } | ||||
| public final int read() throws IOException { | public final int read() throws IOException { | ||||
| if (!initialized) { | |||||
| if (!getInitialized()) { | |||||
| initialize(); | initialize(); | ||||
| initialized = true; | |||||
| setInitialized(true); | |||||
| } | } | ||||
| int ch = -1; | int ch = -1; | ||||
| @@ -101,12 +129,35 @@ public final class PrefixLines | |||||
| return n; | 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 | * Set Parameters | ||||
| */ | */ | ||||
| public final void setParameters(final Parameter[] parameters) { | public final void setParameters(final Parameter[] parameters) { | ||||
| this.parameters = parameters; | this.parameters = parameters; | ||||
| initialized = false; | |||||
| setInitialized(false); | |||||
| } | } | ||||
| private final void initialize() { | private final void initialize() { | ||||
| @@ -56,6 +56,7 @@ package org.apache.tools.ant.filters; | |||||
| import java.io.FilterReader; | import java.io.FilterReader; | ||||
| import java.io.IOException; | import java.io.IOException; | ||||
| import java.io.Reader; | import java.io.Reader; | ||||
| import java.io.StringReader; | |||||
| import java.util.Hashtable; | import java.util.Hashtable; | ||||
| import org.apache.tools.ant.types.Parameter; | import org.apache.tools.ant.types.Parameter; | ||||
| @@ -66,17 +67,24 @@ import org.apache.tools.ant.types.Parameterizable; | |||||
| * | * | ||||
| * Example Usage: | * Example Usage: | ||||
| * ============= | * ============= | ||||
| * | |||||
| * <replacetokens begintoken="#" endtoken="#"> | |||||
| * <token key="DATE" value="${TODAY}"/> | |||||
| * </replacetokens> | |||||
| * | |||||
| * Or: | |||||
| * | |||||
| * <filterreader classname="org.apache.tools.ant.filters.ReplaceTokens"> | * <filterreader classname="org.apache.tools.ant.filters.ReplaceTokens"> | ||||
| * <param type="tokenchar" name="begintoken" value="#"/> | * <param type="tokenchar" name="begintoken" value="#"/> | ||||
| * <param type="tokenchar" name="endtoken" value="#"/> | * <param type="tokenchar" name="endtoken" value="#"/> | ||||
| * <param type="token" name="DATE" value="${DATE}"/> | |||||
| * <param type="token" name="DATE" value="${TODAY}"/> | |||||
| * </filterreader> | * </filterreader> | ||||
| * | * | ||||
| * @author <a href="mailto:umagesh@apache.org">Magesh Umasankar</a> | * @author <a href="mailto:umagesh@apache.org">Magesh Umasankar</a> | ||||
| */ | */ | ||||
| public final class ReplaceTokens | public final class ReplaceTokens | ||||
| extends FilterReader | extends FilterReader | ||||
| implements Parameterizable | |||||
| implements Parameterizable, CloneableReader | |||||
| { | { | ||||
| private static final char DEFAULT_BEGIN_TOKEN = '@'; | private static final char DEFAULT_BEGIN_TOKEN = '@'; | ||||
| @@ -94,6 +102,22 @@ public final class ReplaceTokens | |||||
| private char endToken = DEFAULT_END_TOKEN; | 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. | * Create a new filtered reader. | ||||
| * | * | ||||
| @@ -107,9 +131,9 @@ public final class ReplaceTokens | |||||
| * Replace tokens with values. | * Replace tokens with values. | ||||
| */ | */ | ||||
| public final int read() throws IOException { | public final int read() throws IOException { | ||||
| if (!initialized) { | |||||
| if (!getInitialized()) { | |||||
| initialize(); | initialize(); | ||||
| initialized = true; | |||||
| setInitialized(true); | |||||
| } | } | ||||
| if (queuedData != null && queuedData.length() > 0) { | if (queuedData != null && queuedData.length() > 0) { | ||||
| @@ -177,12 +201,57 @@ public final class ReplaceTokens | |||||
| return n; | 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 | * Set Parameters | ||||
| */ | */ | ||||
| public final void setParameters(final Parameter[] parameters) { | public final void setParameters(final Parameter[] parameters) { | ||||
| this.parameters = 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; | |||||
| } | |||||
| } | |||||
| } | } | ||||
| @@ -56,6 +56,7 @@ package org.apache.tools.ant.filters; | |||||
| import java.io.FilterReader; | import java.io.FilterReader; | ||||
| import java.io.IOException; | import java.io.IOException; | ||||
| import java.io.Reader; | import java.io.Reader; | ||||
| import java.io.StringReader; | |||||
| /** | /** | ||||
| * This is a java comment and string stripper reader that filters | * 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, | * Since this class heavily relies on the single char read function, | ||||
| * you are reccomended to make it work on top of a buffered reader. | * 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. | * Create a new filtered reader. | ||||
| @@ -147,4 +166,9 @@ public final class StripJavaComments extends FilterReader { | |||||
| } | } | ||||
| return n; | return n; | ||||
| } | } | ||||
| public final Reader clone(final Reader rdr) { | |||||
| StripJavaComments newFilter = new StripJavaComments(rdr); | |||||
| return newFilter; | |||||
| } | |||||
| } | } | ||||
| @@ -56,6 +56,7 @@ package org.apache.tools.ant.filters; | |||||
| import java.io.FilterReader; | import java.io.FilterReader; | ||||
| import java.io.IOException; | import java.io.IOException; | ||||
| import java.io.Reader; | import java.io.Reader; | ||||
| import java.io.StringReader; | |||||
| import org.apache.tools.ant.types.Parameter; | import org.apache.tools.ant.types.Parameter; | ||||
| import org.apache.tools.ant.types.Parameterizable; | 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. | * Filter to flatten the stream to a single line. | ||||
| * | * | ||||
| * <striplinebreaks/> | |||||
| * | |||||
| * Or: | |||||
| * | |||||
| * <filterreader classname="org.apache.tools.ant.filters.StripLineBreaks"/> | |||||
| * | |||||
| * @author Steve Loughran | * @author Steve Loughran | ||||
| * @author <a href="mailto:umagesh@apache.org">Magesh Umasankar</a> | * @author <a href="mailto:umagesh@apache.org">Magesh Umasankar</a> | ||||
| */ | */ | ||||
| public final class StripLineBreaks | public final class StripLineBreaks | ||||
| extends FilterReader | extends FilterReader | ||||
| implements Parameterizable | |||||
| implements Parameterizable, CloneableReader | |||||
| { | { | ||||
| /** | /** | ||||
| * Linebreaks. What do to on funny IBM mainframes with odd line endings? | * Linebreaks. What do to on funny IBM mainframes with odd line endings? | ||||
| @@ -87,6 +94,22 @@ public final class StripLineBreaks | |||||
| private boolean initialized = false; | 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. | * Create a new filtered reader. | ||||
| * | * | ||||
| @@ -98,21 +121,8 @@ public final class StripLineBreaks | |||||
| public final int read() throws IOException { | public final int read() throws IOException { | ||||
| if (!initialized) { | 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(); | int ch = in.read(); | ||||
| @@ -151,11 +161,49 @@ public final class StripLineBreaks | |||||
| return n; | 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 | * Set Parameters | ||||
| */ | */ | ||||
| public final void setParameters(final Parameter[] parameters) { | public final void setParameters(final Parameter[] parameters) { | ||||
| this.parameters = 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; | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| @@ -3,6 +3,7 @@ package org.apache.tools.ant.filters; | |||||
| import java.io.FilterReader; | import java.io.FilterReader; | ||||
| import java.io.IOException; | import java.io.IOException; | ||||
| import java.io.Reader; | import java.io.Reader; | ||||
| import java.io.StringReader; | |||||
| import java.util.Vector; | import java.util.Vector; | ||||
| import org.apache.tools.ant.types.Parameter; | import org.apache.tools.ant.types.Parameter; | ||||
| @@ -14,19 +15,29 @@ import org.apache.tools.ant.types.Parameterizable; | |||||
| * Example: | * 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="//"/> | |||||
| * <striplinecomments> | |||||
| * <comment value="#"/> | |||||
| * <comment value="--"/> | |||||
| * <comment value="REM "/> | |||||
| * <comment value="rem "/> | |||||
| * <comment value="//"/> | |||||
| * </striplinecomments> | |||||
| * | |||||
| * Or: | |||||
| * | |||||
| * <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> | * </filterreader> | ||||
| * | * | ||||
| * @author <a href="mailto:umagesh@apache.org">Magesh Umasankar</a> | * @author <a href="mailto:umagesh@apache.org">Magesh Umasankar</a> | ||||
| */ | */ | ||||
| public final class StripLineComments | public final class StripLineComments | ||||
| extends FilterReader | extends FilterReader | ||||
| implements Parameterizable | |||||
| implements Parameterizable, CloneableReader | |||||
| { | { | ||||
| private static final String COMMENTS_KEY = "comment"; | private static final String COMMENTS_KEY = "comment"; | ||||
| @@ -34,12 +45,26 @@ public final class StripLineComments | |||||
| private boolean initialized = false; | private boolean initialized = false; | ||||
| private final Vector comments = new Vector(); | |||||
| private int commentsSize = 0; | |||||
| private Vector comments = new Vector(); | |||||
| private String line = null; | 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. | * Create a new filtered reader. | ||||
| * | * | ||||
| @@ -50,9 +75,9 @@ public final class StripLineComments | |||||
| } | } | ||||
| public final int read() throws IOException { | public final int read() throws IOException { | ||||
| if (!initialized) { | |||||
| if (!getInitialized()) { | |||||
| initialize(); | initialize(); | ||||
| initialized = true; | |||||
| setInitialized(true); | |||||
| } | } | ||||
| int ch = -1; | int ch = -1; | ||||
| @@ -78,6 +103,7 @@ public final class StripLineComments | |||||
| } | } | ||||
| if (line != null) { | if (line != null) { | ||||
| int commentsSize = comments.size(); | |||||
| for (int i = 0; i < commentsSize; i++) { | for (int i = 0; i < commentsSize; i++) { | ||||
| String comment = (String) comments.elementAt(i); | String comment = (String) comments.elementAt(i); | ||||
| if (line.startsWith(comment)) { | if (line.startsWith(comment)) { | ||||
| @@ -115,12 +141,39 @@ public final class StripLineComments | |||||
| return n; | 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 | * Set Parameters | ||||
| */ | */ | ||||
| public final void setParameters(final Parameter[] parameters) { | public final void setParameters(final Parameter[] parameters) { | ||||
| this.parameters = parameters; | this.parameters = parameters; | ||||
| initialized = false; | |||||
| setInitialized(false); | |||||
| } | } | ||||
| private final void initialize() { | private final void initialize() { | ||||
| @@ -130,7 +183,18 @@ public final class StripLineComments | |||||
| comments.addElement(parameters[i].getValue()); | 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; | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -56,7 +56,7 @@ package org.apache.tools.ant.filters; | |||||
| import java.io.FilterReader; | import java.io.FilterReader; | ||||
| import java.io.IOException; | import java.io.IOException; | ||||
| import java.io.Reader; | 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.Parameter; | ||||
| import org.apache.tools.ant.types.Parameterizable; | import org.apache.tools.ant.types.Parameterizable; | ||||
| @@ -66,15 +66,20 @@ import org.apache.tools.ant.types.Parameterizable; | |||||
| * | * | ||||
| * Example Usage: | * Example Usage: | ||||
| * ============= | * ============= | ||||
| * <filterreader classname="org.apache.tools.ant.filters.TabsToSpaces"> | |||||
| * <param name="tablength" value="8"/> | |||||
| * | |||||
| * <tabtospaces tablength="8"/> | |||||
| * | |||||
| * Or: | |||||
| * | |||||
| * <filterreader classname="org.apache.tools.ant.filters.TabsToSpaces"> | |||||
| * <param name="tablength" value="8"/> | |||||
| * </filterreader> | * </filterreader> | ||||
| * | * | ||||
| * @author <a href="mailto:umagesh@apache.org">Magesh Umasankar</a> | * @author <a href="mailto:umagesh@apache.org">Magesh Umasankar</a> | ||||
| */ | */ | ||||
| public final class TabsToSpaces | public final class TabsToSpaces | ||||
| extends FilterReader | extends FilterReader | ||||
| implements Parameterizable | |||||
| implements Parameterizable, CloneableReader | |||||
| { | { | ||||
| private static final int DEFAULT_TAB_LENGTH = 8; | private static final int DEFAULT_TAB_LENGTH = 8; | ||||
| @@ -88,6 +93,22 @@ public final class TabsToSpaces | |||||
| private int spacesRemaining = 0; | 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. | * Create a new filtered reader. | ||||
| * | * | ||||
| @@ -101,9 +122,9 @@ public final class TabsToSpaces | |||||
| * Convert tabs with spaces | * Convert tabs with spaces | ||||
| */ | */ | ||||
| public final int read() throws IOException { | public final int read() throws IOException { | ||||
| if (!initialized) { | |||||
| if (!getInitialized()) { | |||||
| initialize(); | initialize(); | ||||
| initialized = true; | |||||
| setInitialized(true); | |||||
| } | } | ||||
| int ch = -1; | int ch = -1; | ||||
| @@ -146,16 +167,39 @@ public final class TabsToSpaces | |||||
| return n; | 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 | * Set Parameters | ||||
| */ | */ | ||||
| public final void setParameters(final Parameter[] parameters) { | public final void setParameters(final Parameter[] parameters) { | ||||
| this.parameters = parameters; | this.parameters = parameters; | ||||
| initialized = false; | |||||
| setInitialized(false); | |||||
| } | } | ||||
| /** | /** | ||||
| * Initialize tokens and load the replacee-replacer hashtable. | |||||
| * Initialize tokens | |||||
| */ | */ | ||||
| private final void initialize() { | private final void initialize() { | ||||
| if (parameters != null) { | if (parameters != null) { | ||||
| @@ -56,6 +56,7 @@ package org.apache.tools.ant.filters; | |||||
| import java.io.FilterReader; | import java.io.FilterReader; | ||||
| import java.io.IOException; | import java.io.IOException; | ||||
| import java.io.Reader; | import java.io.Reader; | ||||
| import java.io.StringReader; | |||||
| import org.apache.tools.ant.types.Parameter; | import org.apache.tools.ant.types.Parameter; | ||||
| import org.apache.tools.ant.types.Parameterizable; | import org.apache.tools.ant.types.Parameterizable; | ||||
| @@ -66,15 +67,19 @@ import org.apache.tools.ant.types.Parameterizable; | |||||
| * Example: | * Example: | ||||
| * ======= | * ======= | ||||
| * | * | ||||
| * <filterreader classname="org.apache.tools.ant.filters.TailFilter"> | |||||
| * <param name="lines" value="3"/> | |||||
| * <tailfilter lines="3"/> | |||||
| * | |||||
| * Or: | |||||
| * | |||||
| * <filterreader classname="org.apache.tools.ant.filters.TailFilter"> | |||||
| * <param name="lines" value="3"/> | |||||
| * </filterreader> | * </filterreader> | ||||
| * | * | ||||
| * @author <a href="mailto:umagesh@apache.org">Magesh Umasankar</a> | * @author <a href="mailto:umagesh@apache.org">Magesh Umasankar</a> | ||||
| */ | */ | ||||
| public final class TailFilter | public final class TailFilter | ||||
| extends FilterReader | extends FilterReader | ||||
| implements Parameterizable | |||||
| implements Parameterizable, CloneableReader | |||||
| { | { | ||||
| private static final String LINES_KEY = "lines"; | private static final String LINES_KEY = "lines"; | ||||
| @@ -96,6 +101,22 @@ public final class TailFilter | |||||
| private int bufferPos = 0; | 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. | * Create a new filtered reader. | ||||
| * | * | ||||
| @@ -110,9 +131,9 @@ public final class TailFilter | |||||
| * point. Grow buffer as needed. | * point. Grow buffer as needed. | ||||
| */ | */ | ||||
| public final int read() throws IOException { | public final int read() throws IOException { | ||||
| if (!initialized) { | |||||
| if (!getInitialized()) { | |||||
| initialize(); | initialize(); | ||||
| initialized = true; | |||||
| setInitialized(true); | |||||
| } | } | ||||
| if (!completedReadAhead) { | if (!completedReadAhead) { | ||||
| @@ -200,19 +221,42 @@ public final class TailFilter | |||||
| return n; | 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 | * Set Parameters | ||||
| */ | */ | ||||
| public final void setParameters(final Parameter[] parameters) { | public final void setParameters(final Parameter[] parameters) { | ||||
| this.parameters = parameters; | this.parameters = parameters; | ||||
| initialized = false; | |||||
| setInitialized(false); | |||||
| } | } | ||||
| private final void initialize() { | private final void initialize() { | ||||
| if (parameters != null) { | if (parameters != null) { | ||||
| for (int i = 0; i < parameters.length; i++) { | for (int i = 0; i < parameters.length; i++) { | ||||
| if (LINES_KEY.equals(parameters[i].getName())) { | if (LINES_KEY.equals(parameters[i].getName())) { | ||||
| lines = new Long(parameters[i].getValue()).longValue(); | |||||
| setLines(new Long(parameters[i].getValue()).longValue()); | |||||
| break; | break; | ||||
| } | } | ||||
| } | } | ||||
| @@ -56,6 +56,14 @@ package org.apache.tools.ant.types; | |||||
| import java.util.Vector; | import java.util.Vector; | ||||
| import org.apache.tools.ant.filters.HeadFilter; | 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 | * Set of FilterReaders | ||||
| @@ -77,4 +85,39 @@ public final class FilterReaderSet { | |||||
| public final void addHeadFilter(final HeadFilter headFilter) { | public final void addHeadFilter(final HeadFilter headFilter) { | ||||
| filterReaders.addElement(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); | |||||
| } | |||||
| } | } | ||||