Author: krosenvold Date: Mon Feb 2 15:35:39 2015 New Revision: 1656493 URL: http://svn.apache.org/r1656493 Log: Extracted createInterpolator method
Modified: maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/BaseFilter.java Modified: maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/BaseFilter.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/BaseFilter.java?rev=1656493&r1=1656492&r2=1656493&view=diff ============================================================================== --- maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/BaseFilter.java (original) +++ maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/BaseFilter.java Mon Feb 2 15:35:39 2015 @@ -19,23 +19,13 @@ package org.apache.maven.shared.filterin * under the License. */ -import java.io.File; -import java.io.IOException; -import java.io.Reader; -import java.util.ArrayList; -import java.util.Collections; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Properties; - -import javax.annotation.Nonnull; - import org.apache.maven.execution.MavenSession; import org.apache.maven.project.MavenProject; import org.apache.maven.settings.Settings; import org.apache.maven.shared.utils.StringUtils; import org.apache.maven.shared.utils.io.FileUtils; import org.codehaus.plexus.interpolation.InterpolationPostProcessor; +import org.codehaus.plexus.interpolation.Interpolator; import org.codehaus.plexus.interpolation.PrefixAwareRecursionInterceptor; import org.codehaus.plexus.interpolation.PrefixedObjectValueSource; import org.codehaus.plexus.interpolation.PropertiesBasedValueSource; @@ -46,6 +36,16 @@ import org.codehaus.plexus.interpolation import org.codehaus.plexus.interpolation.multi.MultiDelimiterStringSearchInterpolator; import org.codehaus.plexus.logging.AbstractLogEnabled; +import javax.annotation.Nonnull; +import java.io.File; +import java.io.IOException; +import java.io.Reader; +import java.util.ArrayList; +import java.util.Collections; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Properties; + class BaseFilter extends AbstractLogEnabled implements DefaultFilterInfo @@ -53,10 +53,11 @@ class BaseFilter /** * @see org.apache.maven.shared.filtering.MavenFileFilter#getDefaultFilterWrappers(org.apache.maven.project.MavenProject, - * java.util.List, boolean, org.apache.maven.execution.MavenSession) + * java.util.List, boolean, org.apache.maven.execution.MavenSession) * @deprecated */ - @Nonnull public List<FileUtils.FilterWrapper> getDefaultFilterWrappers( final MavenProject mavenProject, + @Nonnull + public List<FileUtils.FilterWrapper> getDefaultFilterWrappers( final MavenProject mavenProject, List<String> filters, final boolean escapedBackslashesInFilePath, MavenSession mavenSession ) @@ -109,8 +110,9 @@ class BaseFilter // Project properties if ( request.getMavenProject() != null ) { - baseProps.putAll( request.getMavenProject().getProperties() == null ? Collections.emptyMap() - : request.getMavenProject().getProperties() ); + baseProps.putAll( request.getMavenProject().getProperties() == null + ? Collections.emptyMap() + : request.getMavenProject().getProperties() ); } // TODO this is NPE free but do we consider this as normal // or do we have to throw an MavenFilteringException with mavenSession cannot be null @@ -148,8 +150,9 @@ class BaseFilter } // Project properties - filterProperties.putAll( request.getMavenProject().getProperties() == null ? Collections.emptyMap() - : request.getMavenProject().getProperties() ); + filterProperties.putAll( request.getMavenProject().getProperties() == null + ? Collections.emptyMap() + : request.getMavenProject().getProperties() ); } if ( request.getMavenSession() != null ) { @@ -163,9 +166,9 @@ class BaseFilter filterProperties.putAll( request.getAdditionalProperties() ); } - List<FileUtils.FilterWrapper> defaultFilterWrappers = - request == null ? new ArrayList<FileUtils.FilterWrapper>( 1 ) - : new ArrayList<FileUtils.FilterWrapper>( request.getDelimiters().size() + 1 ); + List<FileUtils.FilterWrapper> defaultFilterWrappers = request == null + ? new ArrayList<FileUtils.FilterWrapper>( 1 ) + : new ArrayList<FileUtils.FilterWrapper>( request.getDelimiters().size() + 1 ); if ( getLogger().isDebugEnabled() ) { @@ -264,10 +267,15 @@ class BaseFilter public Reader getReader( Reader reader ) { - MultiDelimiterStringSearchInterpolator interpolator = new MultiDelimiterStringSearchInterpolator(); - interpolator.setDelimiterSpecs( delimiters ); + Interpolator interpolator = + createInterpolator( delimiters, projectStartExpressions, + propertiesValueSource, project, mavenSession, + escapeString, escapeWindowsPaths ); + + MultiDelimiterInterpolatorFilterReaderLineEnding filterReader = + new MultiDelimiterInterpolatorFilterReaderLineEnding( reader, interpolator, supportMultiLineFiltering ); - RecursionInterceptor ri = null; + final RecursionInterceptor ri; if ( projectStartExpressions != null && !projectStartExpressions.isEmpty() ) { ri = new PrefixAwareRecursionInterceptor( projectStartExpressions, true ); @@ -277,54 +285,63 @@ class BaseFilter ri = new SimpleRecursionInterceptor(); } - interpolator.addValueSource( propertiesValueSource ); + filterReader.setRecursionInterceptor( ri ); + filterReader.setDelimiterSpecs( delimiters ); - if ( project != null ) - { - interpolator.addValueSource( new PrefixedObjectValueSource( projectStartExpressions, project, true ) ); - } + filterReader.setInterpolateWithPrefixPattern( false ); + filterReader.setEscapeString( escapeString ); - if ( mavenSession != null ) - { - interpolator.addValueSource( new PrefixedObjectValueSource( "session", mavenSession ) ); + return filterReader; + } - final Settings settings = mavenSession.getSettings(); - if ( settings != null ) - { - interpolator.addValueSource( new PrefixedObjectValueSource( "settings", settings ) ); - interpolator.addValueSource( new SingleResponseValueSource( "localRepository", - settings.getLocalRepository() ) ); - } + } + + private static Interpolator createInterpolator( LinkedHashSet<String> delimiters, + List<String> projectStartExpressions, + ValueSource propertiesValueSource, MavenProject project, + MavenSession mavenSession, String escapeString, + boolean escapeWindowsPaths ) + { + MultiDelimiterStringSearchInterpolator interpolator = new MultiDelimiterStringSearchInterpolator(); + interpolator.setDelimiterSpecs( delimiters ); + + interpolator.addValueSource( propertiesValueSource ); + + if ( project != null ) + { + interpolator.addValueSource( new PrefixedObjectValueSource( projectStartExpressions, project, true ) ); + } + + if ( mavenSession != null ) + { + interpolator.addValueSource( new PrefixedObjectValueSource( "session", mavenSession ) ); + + final Settings settings = mavenSession.getSettings(); + if ( settings != null ) + { + interpolator.addValueSource( new PrefixedObjectValueSource( "settings", settings ) ); + interpolator.addValueSource( + new SingleResponseValueSource( "localRepository", settings.getLocalRepository() ) ); } + } - interpolator.setEscapeString( escapeString ); + interpolator.setEscapeString( escapeString ); - if ( escapeWindowsPaths ) + if ( escapeWindowsPaths ) + { + interpolator.addPostProcessor( new InterpolationPostProcessor() { - interpolator.addPostProcessor( new InterpolationPostProcessor() + public Object execute( String expression, Object value ) { - public Object execute( String expression, Object value ) + if ( value instanceof String ) { - if ( value instanceof String ) - { - return FilteringUtils.escapeWindowsPath( (String) value ); - } - - return value; + return FilteringUtils.escapeWindowsPath( (String) value ); } - } ); - } - MultiDelimiterInterpolatorFilterReaderLineEnding filterReader = - new MultiDelimiterInterpolatorFilterReaderLineEnding( reader, interpolator, supportMultiLineFiltering ); - filterReader.setRecursionInterceptor( ri ); - filterReader.setDelimiterSpecs( delimiters ); - - filterReader.setInterpolateWithPrefixPattern( false ); - filterReader.setEscapeString( escapeString ); - - return filterReader; + return value; + } + } ); } - + return interpolator; } }