You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2009/08/21 06:15:43 UTC

svn commit: r806416 - /maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java

Author: jdcasey
Date: Fri Aug 21 04:15:43 2009
New Revision: 806416

URL: http://svn.apache.org/viewvc?rev=806416&view=rev
Log:
pushing the configurable multi-delimiter support down to plexus-interpolator to get better functionality when expressions using different delimiters reference one another.

Modified:
    maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java

Modified: maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java?rev=806416&r1=806415&r2=806416&view=diff
==============================================================================
--- maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java (original)
+++ maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java Fri Aug 21 04:15:43 2009
@@ -26,6 +26,7 @@
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Iterator;
+import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Properties;
 
@@ -38,6 +39,8 @@
 import org.codehaus.plexus.interpolation.SimpleRecursionInterceptor;
 import org.codehaus.plexus.interpolation.StringSearchInterpolator;
 import org.codehaus.plexus.interpolation.ValueSource;
+import org.codehaus.plexus.interpolation.multi.MultiDelimiterInterpolatorFilterReader;
+import org.codehaus.plexus.interpolation.multi.MultiDelimiterStringSearchInterpolator;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.StringUtils;
@@ -231,39 +234,11 @@
 
         if ( request != null )
         {
-            for ( Iterator it = request.getDelimiters().iterator(); it.hasNext(); )
-            {
-                String delimiterPattern = (String) it.next();
-                if ( delimiterPattern == null )
-                {
-                    continue;
-                }
-                
-                final String[] delimiters = new String[2];
-                
-                int splitIdx = delimiterPattern.indexOf( '*' );
-                if ( splitIdx < 0 )
-                {
-                    delimiters[0] = delimiterPattern;
-                    delimiters[1] = delimiters[0];
-                }
-                else if ( splitIdx == delimiterPattern.length() - 1 )
-                {
-                    delimiters[0] = delimiterPattern.substring( 0, delimiterPattern.length() - 1 );
-                    delimiters[1] = delimiters[0];
-                }
-                else
-                {
-                    delimiters[0] = delimiterPattern.substring( 0, splitIdx );
-                    delimiters[1] = delimiterPattern.substring( splitIdx + 1 );
-                }
-                
-                FileUtils.FilterWrapper wrapper = new Wrapper( delimiters, request.getMavenProject(), propertiesValueSource,
-                                                               request.getProjectStartExpressions(), request.getEscapeString(),
-                                                               request.isEscapeWindowsPaths() );
-                
-                defaultFilterWrappers.add( wrapper );
-            }
+            FileUtils.FilterWrapper wrapper = new Wrapper( request.getDelimiters(), request.getMavenProject(), propertiesValueSource,
+                                                           request.getProjectStartExpressions(), request.getEscapeString(),
+                                                           request.isEscapeWindowsPaths() );
+            
+            defaultFilterWrappers.add( wrapper );
         }
 
         return defaultFilterWrappers;
@@ -299,7 +274,7 @@
     private static final class Wrapper extends FileUtils.FilterWrapper
     {
         
-        private String[] delimiters;
+        private LinkedHashSet delimiters;
         
         private MavenProject project;
         
@@ -311,7 +286,7 @@
         
         private boolean escapeWindowsPaths;
 
-        Wrapper( String[] delimiters, MavenProject project, ValueSource propertiesValueSource,
+        Wrapper( LinkedHashSet delimiters, MavenProject project, ValueSource propertiesValueSource,
                         Collection projectStartExpressions, String escapeString, boolean escapeWindowsPaths )
         {
             super();
@@ -325,8 +300,8 @@
 
         public Reader getReader( Reader reader )
         {
-            StringSearchInterpolator propertiesInterpolator = new StringSearchInterpolator( delimiters[0],
-                                                                                            delimiters[1] );
+            MultiDelimiterStringSearchInterpolator interpolator = new MultiDelimiterStringSearchInterpolator();
+            interpolator.setDelimiterSpecs( delimiters );
             
             RecursionInterceptor ri = null;
             if ( projectStartExpressions != null && !projectStartExpressions.isEmpty() )
@@ -342,14 +317,12 @@
             
             valueSource.setPropertiesValueSource( propertiesValueSource );
             
-            propertiesInterpolator.addValueSource( valueSource );
-            propertiesInterpolator.setEscapeString( escapeString );
+            interpolator.addValueSource( valueSource );
+            interpolator.setEscapeString( escapeString );
             
-            InterpolatorFilterReader filterReader = new InterpolatorFilterReader( reader,
-                                                                                  propertiesInterpolator,
-                                                                                  delimiters[0],
-                                                                                  delimiters[1],
-                                                                                  ri );
+            MultiDelimiterInterpolatorFilterReader filterReader = new MultiDelimiterInterpolatorFilterReader( reader, interpolator );
+            filterReader.setRecursionInterceptor( ri );
+            filterReader.setDelimiterSpecs( delimiters );
             
             filterReader.setInterpolateWithPrefixPattern( false );
             filterReader.setEscapeString( escapeString );