ASF Bugzilla – Attachment 3250 Details for
Bug 13048
Add an optional containsall attribute to LineContains
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch file for Testcases and LineContains
LineContains.patch (text/plain), 8.17 KB, created by
Eric Pugh
on 2002-09-26 21:21:54 UTC
(
hide
)
Description:
Patch file for Testcases and LineContains
Filename:
MIME Type:
Creator:
Eric Pugh
Created:
2002-09-26 21:21:54 UTC
Size:
8.17 KB
patch
obsolete
> >Index: src/etc/testcases/taskdefs/copy.xml >=================================================================== >RCS file: /home/cvspublic/jakarta-ant/src/etc/testcases/taskdefs/copy.xml,v >retrieving revision 1.8 >diff -u -r1.8 copy.xml >--- src/etc/testcases/taskdefs/copy.xml 6 Mar 2002 03:25:50 -0000 1.8 >+++ src/etc/testcases/taskdefs/copy.xml 26 Sep 2002 21:17:34 -0000 >@@ -61,6 +61,40 @@ > </filterchain> > </copy> > </target> >+ >+ <target name="testFilterChainLineContains"> >+ <copy file="copy.filterchain.linecontains" tofile="copy.filterchain.linecontains.tmp" overwrite="true"> >+ <filterchain> >+ <filterreader classname="org.apache.tools.ant.filters.LineContains"> >+ <param type="contains" value="beta"/> >+ </filterreader> >+ </filterchain> >+ </copy> >+ </target> >+ >+ <target name="testFilterChainLineContainsMultiple"> >+ <copy file="copy.filterchain.linecontains" tofile="copy.filterchain.linecontains.multiple.tmp" overwrite="true"> >+ <filterchain> >+ <filterreader classname="org.apache.tools.ant.filters.LineContains"> >+ <param type="containsAll" value="true"/> >+ <param type="contains" value="gamma"/> >+ <param type="contains" value="3"/> >+ </filterreader> >+ </filterchain> >+ </copy> >+ </target> >+ >+ <target name="testFilterChainLineContainsAny"> >+ <copy file="copy.filterchain.linecontains" tofile="copy.filterchain.linecontains.any.tmp" overwrite="true"> >+ <filterchain> >+ <filterreader classname="org.apache.tools.ant.filters.LineContains"> >+ <param type="containsAll" value="false"/> >+ <param type="contains" value="gamma"/> >+ <param type="contains" value="beta"/> >+ </filterreader> >+ </filterchain> >+ </copy> >+ </target> > > <target name="cleanup"> > <delete file="copytest1.tmp"/> >@@ -71,6 +105,8 @@ > <delete file="copytest_single_file_fileset.tmp"/> > <delete file="copy.filterset.tmp"/> > <delete file="copy.filterchain.tmp"/> >+ <delete file="copy.filterchain.linecontains.tmp"/> >+ <delete file="copy.filterchain.linecontains.multiple.tmp"/> > <delete dir="copytest1dir"/> > </target> > >Index: src/main/org/apache/tools/ant/filters/LineContains.java >=================================================================== >RCS file: /home/cvspublic/jakarta-ant/src/main/org/apache/tools/ant/filters/LineContains.java,v >retrieving revision 1.7 >diff -u -r1.7 LineContains.java >--- src/main/org/apache/tools/ant/filters/LineContains.java 25 Jul 2002 15:21:02 -0000 1.7 >+++ src/main/org/apache/tools/ant/filters/LineContains.java 26 Sep 2002 21:17:37 -0000 >@@ -86,6 +86,7 @@ > implements ChainableReader { > /** Parameter name for the words to filter on. */ > private static final String CONTAINS_KEY = "contains"; >+ private static final String CONTAINS_ALL_KEY = "containsAll"; > > /** Vector that holds the strings that input lines must contain. */ > private Vector contains = new Vector(); >@@ -97,6 +98,28 @@ > */ > private String line = null; > >+ private boolean containsAll = true; >+ >+ >+ /** >+ * Sets whether all the values must be contained in the line >+ * >+ * @param whether all the values must be contained in the line >+ */ >+ public final void setContainsAll(boolean containsAll) { >+ this.containsAll = containsAll; >+ } >+ >+ /** >+ * Returns whether all values must be contained in the line >+ * >+ * @return whether all the values must be contained in the line >+ */ >+ private final boolean getContainsAll() { >+ return containsAll; >+ } >+ >+ > /** > * Constructor for "dummy" instances. > * >@@ -104,6 +127,7 @@ > */ > public LineContains() { > super(); >+ > } > > /** >@@ -142,22 +166,34 @@ > line = line.substring(1); > } > } else { >- String goodLine = null; > line = readLine(); >- while((line != null) && (goodLine == null)) { >- goodLine = line; >- int containsSize = contains.size(); >- for (int i = 0; i < containsSize; i++) { >- String containsStr = (String) contains.elementAt(i); >+ if(line!=null){ >+ int containsSize = contains.size(); >+ boolean foundAtLeastOne =false; >+ for (int i = 0; i < containsSize; i++) { >+ String containsStr = (String) contains.elementAt(i); >+ if(containsAll){ >+ // if we have to contain all > if (line.indexOf(containsStr) == -1) { >- goodLine = null; >+ line=null; > break; > } >- } >- return read(); >- }; >- } >+ } >+ else { >+ // if we don't have to contain all, break as soon as we find one >+ if (line.indexOf(containsStr) > -1){ >+ foundAtLeastOne = true; >+ break; >+ } >+ } >+ } >+ if(!containsAll && !foundAtLeastOne){ >+ line=null; >+ } >+ return read(); >+ } > >+ } > return ch; > } > >@@ -208,6 +244,7 @@ > public final Reader chain(final Reader rdr) { > LineContains newFilter = new LineContains(rdr); > newFilter.setContains(getContains()); >+ newFilter.setContainsAll(getContainsAll()); > newFilter.setInitialized(true); > return newFilter; > } >@@ -221,6 +258,9 @@ > for (int i = 0; i < params.length; i++) { > if (CONTAINS_KEY.equals(params[i].getType())) { > contains.addElement(params[i].getValue()); >+ } >+ if (CONTAINS_ALL_KEY.equals(params[i].getType())) { >+ containsAll=new Boolean(params[i].getValue()).booleanValue(); > } > } > } >Index: src/testcases/org/apache/tools/ant/taskdefs/CopyTest.java >=================================================================== >RCS file: /home/cvspublic/jakarta-ant/src/testcases/org/apache/tools/ant/taskdefs/CopyTest.java,v >retrieving revision 1.9 >diff -u -r1.9 CopyTest.java >--- src/testcases/org/apache/tools/ant/taskdefs/CopyTest.java 23 Apr 2002 10:30:12 -0000 1.9 >+++ src/testcases/org/apache/tools/ant/taskdefs/CopyTest.java 26 Sep 2002 21:17:48 -0000 >@@ -144,6 +144,33 @@ > assertTrue(fileUtils.contentEquals(tmp, check)); > } > >+ public void testFilterChainContains() throws IOException { >+ executeTarget("testFilterChainLineContains"); >+ FileUtils fileUtils = FileUtils.newFileUtils(); >+ File tmp = new File(getProjectDir(), "copy.filterchain.linecontains.tmp"); >+ File check = new File(getProjectDir(), "expected/copy.filterchain.linecontains.filtered"); >+ assertTrue(tmp.exists()); >+ assertTrue(fileUtils.contentEquals(tmp, check)); >+ } >+ >+ public void testFilterChainContainsMultiple() throws IOException { >+ executeTarget("testFilterChainLineContainsMultiple"); >+ FileUtils fileUtils = FileUtils.newFileUtils(); >+ File tmp = new File(getProjectDir(), "copy.filterchain.linecontains.multiple.tmp"); >+ File check = new File(getProjectDir(), "expected/copy.filterchain.linecontains.multiple.filtered"); >+ assertTrue(tmp.exists()); >+ assertTrue(fileUtils.contentEquals(tmp, check)); >+ } >+ >+ public void testFilterChainContainsAny() throws IOException { >+ executeTarget("testFilterChainLineContainsAny"); >+ FileUtils fileUtils = FileUtils.newFileUtils(); >+ File tmp = new File(getProjectDir(), "copy.filterchain.linecontains.any.tmp"); >+ File check = new File(getProjectDir(), "expected/copy.filterchain.linecontains.any.filtered"); >+ assertTrue(tmp.exists()); >+ assertTrue(fileUtils.contentEquals(tmp, check)); >+ } >+ > public void testSingleFileFileset() { > executeTarget("test_single_file_fileset"); > File file = new File(getProjectDir(),
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 13048
: 3250 |
3251