Author: rfscholte
Date: Sun Feb 9 21:25:34 2014
New Revision: 1566429
URL: http://svn.apache.org/r1566429
Log:
[MSHARED-198] custom delimiters doesn't work as expected
real issue: endtoken only worked when it contained equal character(s)
Modified:
maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MultiDelimiterInterpolatorFilterReaderLineEnding.java
maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/DefaultMavenFileFilterTest.java
Modified:
maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MultiDelimiterInterpolatorFilterReaderLineEnding.java
URL:
http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MultiDelimiterInterpolatorFilterReaderLineEnding.java?rev=1566429&r1=1566428&r2=1566429&view=diff
==============================================================================
---
maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MultiDelimiterInterpolatorFilterReaderLineEnding.java
(original)
+++
maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MultiDelimiterInterpolatorFilterReaderLineEnding.java
Sun Feb 9 21:25:34 2014
@@ -349,7 +349,8 @@ public class MultiDelimiterInterpolatorF
in.skip( beginToken.length() );
ch = in.read();
- int end = endToken.length();
+ int endTokenSize = endToken.length();
+ int end = endTokenSize;
do
{
if ( ch == -1 )
@@ -365,7 +366,7 @@ public class MultiDelimiterInterpolatorF
key.append( (char) ch );
- if ( ch == this.endToken.charAt( end - 1 ) )
+ if ( ch == this.endToken.charAt( endTokenSize - end ) )
{
end--;
if ( end == 0 )
@@ -375,7 +376,7 @@ public class MultiDelimiterInterpolatorF
}
else
{
- end = endToken.length();
+ end = endTokenSize;
}
ch = in.read();
Modified:
maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/DefaultMavenFileFilterTest.java
URL:
http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/DefaultMavenFileFilterTest.java?rev=1566429&r1=1566428&r2=1566429&view=diff
==============================================================================
---
maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/DefaultMavenFileFilterTest.java
(original)
+++
maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/DefaultMavenFileFilterTest.java
Sun Feb 9 21:25:34 2014
@@ -23,7 +23,9 @@ import java.io.File;
import java.io.Reader;
import java.io.StringReader;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
+import java.util.LinkedHashSet;
import java.util.List;
import java.util.Properties;
@@ -153,4 +155,25 @@ public class DefaultMavenFileFilterTest
assertEquals( "true true", IOUtil.toString( reader ) );
}
+
+ // MSHARED-198: custom delimiters doesn't work as expected
+ public void testCustomDelimiters()
+ throws Exception
+ {
+ MavenFileFilter mavenFileFilter = (MavenFileFilter) lookup(
MavenFileFilter.class.getName(), "default" );
+
+ AbstractMavenFilteringRequest req = new
AbstractMavenFilteringRequest();
+ Properties additionalProperties = new Properties();
+ additionalProperties.setProperty( "FILTER.a.ME", "DONE" );
+ req.setAdditionalProperties( additionalProperties );
+ req.setDelimiters( new LinkedHashSet<String>( Arrays.asList(
"aaa*aaa", "abc*abc" ) ) );
+
+ List<FilterWrapper> wrappers =
mavenFileFilter.getDefaultFilterWrappers( req );
+
+ Reader reader = wrappers.get( 0 ).getReader( new StringReader(
"aaaFILTER.a.MEaaa" ) );
+ assertEquals( "DONE", IOUtil.toString( reader ) );
+
+ reader = wrappers.get( 0 ).getReader( new StringReader(
"abcFILTER.a.MEabc" ) );
+ assertEquals( "DONE", IOUtil.toString( reader ) );
+ }
}