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 ) );
+    }
 }


Reply via email to