git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@275266 13f79535-47bb-0310-9956-ffa450edef68master
@@ -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. | |||
<deletecharacters chars="\t\r"/> | |||
</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> | |||
<filterchain> | |||
<concatfilter/> | |||
</filterchain> | |||
</PRE></BLOCKQUOTE> | |||
Adds a license text before each java source: | |||
<BLOCKQUOTE><PRE> | |||
<filterchain> | |||
<concatfilter prepend="apache-license-java.txt"/> | |||
</filterchain> | |||
</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 © 2002-2003 Apache Software Foundation. All rights | |||
Reserved.</P></BODY></HTML> | |||
Reserved.</P></BODY></HTML> |
@@ -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> | |||
@@ -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)); | |||
} | |||
} | |||
@@ -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)); | |||
} | |||
} |