Browse Source

ConcatFilter: rename attributes after->append and before->prepend; added documentation.

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@275266 13f79535-47bb-0310-9956-ffa450edef68
master
Jan Materne 22 years ago
parent
commit
d1bc937f76
4 changed files with 139 additions and 95 deletions
  1. +45
    -1
      docs/manual/CoreTypes/filterchain.html
  2. +21
    -21
      src/etc/testcases/filters/concat.xml
  3. +42
    -42
      src/main/org/apache/tools/ant/filters/ConcatFilter.java
  4. +31
    -31
      src/testcases/org/apache/tools/ant/filters/ConcatFilterTest.java

+ 45
- 1
docs/manual/CoreTypes/filterchain.html View File

@@ -103,6 +103,7 @@ nested elements.<BR>
<a href="#tabstospaces">TabsToSpaces</a><BR>
<a href="#tailfilter">TailFilter</a><BR>
<a href="#deletecharacters">DeleteCharacters</a><BR>
<a href="#concatfilter">ConcatFilter</a><BR>
<a href="#tokenfilter">TokenFilter</a><BR>

<H3><a name="filterreader">FilterReader</a></H3>
@@ -818,6 +819,49 @@ Delete tabs and returns from the data.
&lt;deletecharacters chars="\t\r"/&gt;
</PRE></BLOCKQUOTE>

<H3><a name="concatfilter">ConcatFilter</a></H3>
<p>This filter prepends or appends the content file to the filtered files.</p>
<p><em>since Ant 1.6</em></p>
<TABLE cellSpacing=0 cellPadding=2 border=1>
<TR>
<TD vAlign=top><B>Parameter Name</B></TD>
<TD vAlign=top><B>Parameter Value</B></TD>
<TD vAlign=top align="center"><B>Required</B></TD>
</TR>
<TR>
<TD vAlign=top>prepend</TD>
<TD vAlign=top>
The name of the file which content should be prepended to the file.
</TD>
<TD vAlign=top align="center">No</TD>
</TR>
<TR>
<TD vAlign=top>append</TD>
<TD vAlign=top>
The name of the file which content should be appended to the file.
</TD>
<TD vAlign=top align="center">No</TD>
</TR>
</TABLE>
<P>

<H4>Examples:</H4>

Do nothing:
<BLOCKQUOTE><PRE>
&lt;filterchain&gt;
&lt;concatfilter/&gt;
&lt;/filterchain&gt;
</PRE></BLOCKQUOTE>

Adds a license text before each java source:
<BLOCKQUOTE><PRE>
&lt;filterchain&gt;
&lt;concatfilter prepend="apache-license-java.txt"/&gt;
&lt;/filterchain&gt;
</PRE></BLOCKQUOTE>



<H3><a name="tokenfilter">TokenFilter</a></H3>
This filter tokenizes the inputstream into strings and passes these
@@ -1293,4 +1337,4 @@ This may be used as follows:
<HR>

<P align=center>Copyright &copy; 2002-2003 Apache Software Foundation. All rights
Reserved.</P></BODY></HTML>
Reserved.</P></BODY></HTML>

+ 21
- 21
src/etc/testcases/filters/concat.xml View File

@@ -3,8 +3,8 @@

<target name="init">
<mkdir dir="result" />
<echo file="result/before.txt" message="this-should-be-the-first-line${line.separator}"/>
<echo file="result/after.txt" message="this-should-be-the-last-line${line.separator}"/>
<echo file="result/prepend.txt" message="this-should-be-the-first-line${line.separator}"/>
<echo file="result/append.txt" message="this-should-be-the-last-line${line.separator}"/>
<copy file="input/head-tail.test" tofile="input/concatfilter.test"/>
<fixcrlf srcDir="input" includes="concatfilter.test"/>
</target>
@@ -26,35 +26,35 @@
</copy>
</target>

<target name="testFilterReaderBefore" depends="init">
<target name="testFilterReaderPrepend" depends="init">
<copy file="input/concatfilter.test"
tofile="result/concat.filterReaderBefore.test">
tofile="result/concat.filterReaderPrepend.test">
<filterchain>
<filterreader classname="org.apache.tools.ant.filters.ConcatFilter">
<param name="before" value="result/before.txt"/>
<param name="prepend" value="result/prepend.txt"/>
</filterreader>
</filterchain>
</copy>
</target>

<target name="testFilterReaderAfter" depends="init">
<target name="testFilterReaderAppend" depends="init">
<copy file="input/concatfilter.test"
tofile="result/concat.filterReaderAfter.test">
tofile="result/concat.filterReaderAppend.test">
<filterchain>
<filterreader classname="org.apache.tools.ant.filters.ConcatFilter">
<param name="after" value="result/after.txt"/>
<param name="append" value="result/append.txt"/>
</filterreader>
</filterchain>
</copy>
</target>

<target name="testFilterReaderBeforeAfter" depends="init">
<target name="testFilterReaderPrependAppend" depends="init">
<copy file="input/concatfilter.test"
tofile="result/concat.filterReaderBeforeAfter.test">
tofile="result/concat.filterReaderPrependAppend.test">
<filterchain>
<filterreader classname="org.apache.tools.ant.filters.ConcatFilter">
<param name="before" value="result/before.txt"/>
<param name="after" value="result/after.txt"/>
<param name="prepend" value="result/prepend.txt"/>
<param name="append" value="result/append.txt"/>
</filterreader>
</filterchain>
</copy>
@@ -70,32 +70,32 @@
</copy>
</target>

<target name="testConcatFilterBefore" depends="init">
<target name="testConcatFilterPrepend" depends="init">
<typedef name="concatfilter" classname="org.apache.tools.ant.filters.ConcatFilter"/>
<copy file="input/concatfilter.test"
tofile="result/concat.concatfilterBefore.test">
tofile="result/concat.concatfilterPrepend.test">
<filterchain>
<concatfilter before="result/before.txt"/>
<concatfilter prepend="result/prepend.txt"/>
</filterchain>
</copy>
</target>

<target name="testConcatFilterAfter" depends="init">
<target name="testConcatFilterAppend" depends="init">
<typedef name="concatfilter" classname="org.apache.tools.ant.filters.ConcatFilter"/>
<copy file="input/concatfilter.test"
tofile="result/concat.concatfilterAfter.test">
tofile="result/concat.concatfilterAppend.test">
<filterchain>
<concatfilter after="result/after.txt"/>
<concatfilter append="result/append.txt"/>
</filterchain>
</copy>
</target>

<target name="testConcatFilterBeforeAfter" depends="init">
<target name="testConcatFilterPrependAppend" depends="init">
<typedef name="concatfilter" classname="org.apache.tools.ant.filters.ConcatFilter"/>
<copy file="input/concatfilter.test"
tofile="result/concat.concatfilterBeforeAfter.test">
tofile="result/concat.concatfilterPrependAppend.test">
<filterchain>
<concatfilter before="result/before.txt" after="result/after.txt"/>
<concatfilter prepend="result/prepend.txt" append="result/append.txt"/>
</filterchain>
</copy>
</target>


+ 42
- 42
src/main/org/apache/tools/ant/filters/ConcatFilter.java View File

@@ -67,7 +67,7 @@ import org.apache.tools.ant.types.Parameter;
* <copy todir="build">
* <fileset dir="src" includes="*.java"/>
* <filterchain>
* <concatfilter before="apache-license-java.txt"/>
* <concatfilter prepend="apache-license-java.txt"/>
* </filterchain>
* </copy>
* </pre>
@@ -83,16 +83,16 @@ public final class ConcatFilter extends BaseParamFilterReader
implements ChainableReader {

/** File to add before the content. */
private File before;
private File prepend;

/** File to add after the content. */
private File after;
private File append;

/** Reader for before-file. */
private Reader beforeReader = new EmptyReader();
/** Reader for prepend-file. */
private Reader prependReader = new EmptyReader();

/** Reader for after-file. */
private Reader afterReader = new EmptyReader();
/** Reader for append-file. */
private Reader appendReader = new EmptyReader();

/**
* Constructor for "dummy" instances.
@@ -134,49 +134,49 @@ public final class ConcatFilter extends BaseParamFilterReader

int ch = -1;

// The readers return -1 if they end. So simply read the "before"
// after that the "content" and at the end the "after" file.
ch = beforeReader.read();
// The readers return -1 if they end. So simply read the "prepend"
// after that the "content" and at the end the "append" file.
ch = prependReader.read();
if (ch == -1) {
ch = super.read();
}
if (ch == -1) {
ch = afterReader.read();
ch = appendReader.read();
}

return ch;
}

/**
* Sets <i>before</i> attribute.
* @param before new value
* Sets <i>prepend</i> attribute.
* @param prepend new value
*/
public void setBefore(final File before) {
this.before = before;
public void setPrepend(final File prepend) {
this.prepend = prepend;
}

/**
* Returns <i>before</i> attribute.
* @return before attribute
* Returns <i>prepend</i> attribute.
* @return prepend attribute
*/
public File getBefore() {
return before;
public File getPrepend() {
return prepend;
}

/**
* Sets <i>after</i> attribute.
* @param after new value
* Sets <i>append</i> attribute.
* @param append new value
*/
public void setAfter(final File after) {
this.after = after;
public void setAppend(final File append) {
this.append = append;
}

/**
* Returns <i>after</i> attribute.
* @return after attribute
* Returns <i>append</i> attribute.
* @return append attribute
*/
public File getAfter() {
return after;
public File getAppend() {
return append;
}

/**
@@ -191,10 +191,10 @@ public final class ConcatFilter extends BaseParamFilterReader
*/
public Reader chain(final Reader rdr) {
ConcatFilter newFilter = new ConcatFilter(rdr);
newFilter.setBefore(getBefore());
newFilter.setAfter(getAfter());
newFilter.setPrepend(getPrepend());
newFilter.setAppend(getAppend());
// Usually the initialized is set to true. But here it must not.
// Because the before and after readers have to be instantiated
// Because the prepend and append readers have to be instantiated
// on runtime
//newFilter.setInitialized(true);
return newFilter;
@@ -210,27 +210,27 @@ public final class ConcatFilter extends BaseParamFilterReader
Parameter[] params = getParameters();
if (params != null) {
for (int i = 0; i < params.length; i++) {
if ("before".equals(params[i].getName())) {
setBefore(new File(params[i].getValue()));
if ("prepend".equals(params[i].getName())) {
setPrepend(new File(params[i].getValue()));
continue;
}
if ("after".equals(params[i].getName())) {
setAfter(new File(params[i].getValue()));
if ("append".equals(params[i].getName())) {
setAppend(new File(params[i].getValue()));
continue;
}
}
}
if (before != null) {
if (!before.isAbsolute()) {
before = new File(getProject().getBaseDir(), before.getPath());
if (prepend != null) {
if (!prepend.isAbsolute()) {
prepend = new File(getProject().getBaseDir(), prepend.getPath());
}
beforeReader = new BufferedReader(new FileReader(before));
prependReader = new BufferedReader(new FileReader(prepend));
}
if (after != null) {
if (!after.isAbsolute()) {
after = new File(getProject().getBaseDir(), after.getPath());
if (append != null) {
if (!append.isAbsolute()) {
append = new File(getProject().getBaseDir(), append.getPath());
}
afterReader = new BufferedReader(new FileReader(after));
appendReader = new BufferedReader(new FileReader(append));
}
}



+ 31
- 31
src/testcases/org/apache/tools/ant/filters/ConcatFilterTest.java View File

@@ -69,7 +69,7 @@ public class ConcatFilterTest extends BuildFileTest {
private static FileUtils fu = FileUtils.newFileUtils();
private static final String lSep = System.getProperty("line.separator");

private static final String FILE_BEGINNING_WITH =
private static final String FILE_PREPEND_WITH =
"this-should-be-the-first-line" + lSep
+ "Line 1" + lSep
+ "Line 2" + lSep
@@ -77,7 +77,7 @@ public class ConcatFilterTest extends BuildFileTest {
+ "Line 4" + lSep
;

private static final String FILE_BEGINNING =
private static final String FILE_PREPEND =
"Line 1" + lSep
+ "Line 2" + lSep
+ "Line 3" + lSep
@@ -85,7 +85,7 @@ public class ConcatFilterTest extends BuildFileTest {
+ "Line 5" + lSep
;

private static final String FILE_ENDING_WITH =
private static final String FILE_APPEND_WITH =
"Line 57" + lSep
+ "Line 58" + lSep
+ "Line 59" + lSep
@@ -93,7 +93,7 @@ public class ConcatFilterTest extends BuildFileTest {
+ "this-should-be-the-last-line" + lSep
;

private static final String FILE_ENDING =
private static final String FILE_APPEND =
"Line 56" + lSep
+ "Line 57" + lSep
+ "Line 58" + lSep
@@ -112,7 +112,7 @@ public class ConcatFilterTest extends BuildFileTest {

public void tearDown() {
// I dont know why - but on my machine I always get a
// "Unable to delete file ...result\after.txt" (or before.txt)
// "Unable to delete file ...result\append.txt" (or prepend.txt)
// from Delete.removeDir(Delete.java:612).
// Win2000, JDK 1.4.1_02
// A <sleep> before <delete> doesn´t work. From 10ms to 3000ms.
@@ -137,59 +137,59 @@ public class ConcatFilterTest extends BuildFileTest {
}

public void testFilterReaderBefore() throws IOException {
executeTarget("testFilterReaderBefore");
File resultFile = getProject().resolveFile("result/concat.filterReaderBefore.test");
executeTarget("testFilterReaderPrepend");
File resultFile = getProject().resolveFile("result/concat.filterReaderPrepend.test");
String resultContent = fu.readFully(new java.io.FileReader(resultFile));
assertTrue("First 5 lines differs.", resultContent.startsWith(FILE_BEGINNING_WITH));
assertTrue("Last 5 lines differs.", resultContent.endsWith(FILE_ENDING));
assertTrue("First 5 lines differs.", resultContent.startsWith(FILE_PREPEND_WITH));
assertTrue("Last 5 lines differs.", resultContent.endsWith(FILE_APPEND));
}

public void testFilterReaderAfter() throws IOException {
executeTarget("testFilterReaderAfter");
File resultFile = getProject().resolveFile("result/concat.filterReaderAfter.test");
executeTarget("testFilterReaderAppend");
File resultFile = getProject().resolveFile("result/concat.filterReaderAppend.test");
String resultContent = fu.readFully(new java.io.FileReader(resultFile));
assertTrue("First 5 lines differs.", resultContent.startsWith(FILE_BEGINNING));
assertTrue("Last 5 lines differs.", resultContent.endsWith(FILE_ENDING_WITH));
assertTrue("First 5 lines differs.", resultContent.startsWith(FILE_PREPEND));
assertTrue("Last 5 lines differs.", resultContent.endsWith(FILE_APPEND_WITH));
}

public void testFilterReaderBeforeAfter() throws IOException {
executeTarget("testFilterReaderBeforeAfter");
File resultFile = getProject().resolveFile("result/concat.filterReaderBeforeAfter.test");
executeTarget("testFilterReaderPrependAppend");
File resultFile = getProject().resolveFile("result/concat.filterReaderPrependAppend.test");
String resultContent = fu.readFully(new java.io.FileReader(resultFile));
assertTrue("First 5 lines differs.", resultContent.startsWith(FILE_BEGINNING_WITH));
assertTrue("Last 5 lines differs.", resultContent.endsWith(FILE_ENDING_WITH));
assertTrue("First 5 lines differs.", resultContent.startsWith(FILE_PREPEND_WITH));
assertTrue("Last 5 lines differs.", resultContent.endsWith(FILE_APPEND_WITH));
}

public void testConcatFilter() throws IOException {
executeTarget("testConcatFilter");
File resultFile = getProject().resolveFile("result/concat.concatfilter.test");
String resultContent = fu.readFully(new java.io.FileReader(resultFile));
assertTrue("First 5 lines differs.", resultContent.startsWith(FILE_BEGINNING));
assertTrue("Last 5 lines differs.", resultContent.endsWith(FILE_ENDING));
assertTrue("First 5 lines differs.", resultContent.startsWith(FILE_PREPEND));
assertTrue("Last 5 lines differs.", resultContent.endsWith(FILE_APPEND));
}

public void testConcatFilterBefore() throws IOException {
executeTarget("testConcatFilterBefore");
File resultFile = getProject().resolveFile("result/concat.concatfilterBefore.test");
executeTarget("testConcatFilterPrepend");
File resultFile = getProject().resolveFile("result/concat.concatfilterPrepend.test");
String resultContent = fu.readFully(new java.io.FileReader(resultFile));
assertTrue("First 5 lines differs.", resultContent.startsWith(FILE_BEGINNING_WITH));
assertTrue("Last 5 lines differs.", resultContent.endsWith(FILE_ENDING));
assertTrue("First 5 lines differs.", resultContent.startsWith(FILE_PREPEND_WITH));
assertTrue("Last 5 lines differs.", resultContent.endsWith(FILE_APPEND));
}

public void testConcatFilterAfter() throws IOException {
executeTarget("testConcatFilterAfter");
File resultFile = getProject().resolveFile("result/concat.concatfilterAfter.test");
executeTarget("testConcatFilterAppend");
File resultFile = getProject().resolveFile("result/concat.concatfilterAppend.test");
String resultContent = fu.readFully(new java.io.FileReader(resultFile));
assertTrue("First 5 lines differs.", resultContent.startsWith(FILE_BEGINNING));
assertTrue("Last 5 lines differs.", resultContent.endsWith(FILE_ENDING_WITH));
assertTrue("First 5 lines differs.", resultContent.startsWith(FILE_PREPEND));
assertTrue("Last 5 lines differs.", resultContent.endsWith(FILE_APPEND_WITH));
}

public void testConcatFilterBeforeAfter() throws IOException {
executeTarget("testConcatFilterBeforeAfter");
File resultFile = getProject().resolveFile("result/concat.concatfilterBeforeAfter.test");
executeTarget("testConcatFilterPrependAppend");
File resultFile = getProject().resolveFile("result/concat.concatfilterPrependAppend.test");
String resultContent = fu.readFully(new java.io.FileReader(resultFile));
assertTrue("First 5 lines differs.", resultContent.startsWith(FILE_BEGINNING_WITH));
assertTrue("Last 5 lines differs.", resultContent.endsWith(FILE_ENDING_WITH));
assertTrue("First 5 lines differs.", resultContent.startsWith(FILE_PREPEND_WITH));
assertTrue("Last 5 lines differs.", resultContent.endsWith(FILE_APPEND_WITH));
}

}

Loading…
Cancel
Save