Extracted createInterpolator method
git-svn-id: https://svn.apache.org/repos/asf/maven/shared/trunk@1656493 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/maven/shared/filtering/BaseFilter.java b/src/main/java/org/apache/maven/shared/filtering/BaseFilter.java
index e079ae4..12396f0 100644
--- a/src/main/java/org/apache/maven/shared/filtering/BaseFilter.java
+++ b/src/main/java/org/apache/maven/shared/filtering/BaseFilter.java
@@ -19,23 +19,13 @@
* 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.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 @@
/**
* @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 @@
// 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 @@
}
// 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 @@
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 @@
public Reader getReader( Reader reader )
{
- MultiDelimiterStringSearchInterpolator interpolator = new MultiDelimiterStringSearchInterpolator();
- interpolator.setDelimiterSpecs( delimiters );
+ Interpolator interpolator =
+ createInterpolator( delimiters, projectStartExpressions,
+ propertiesValueSource, project, mavenSession,
+ escapeString, escapeWindowsPaths );
- RecursionInterceptor ri = null;
+ MultiDelimiterInterpolatorFilterReaderLineEnding filterReader =
+ new MultiDelimiterInterpolatorFilterReaderLineEnding( reader, interpolator, supportMultiLineFiltering );
+
+ final RecursionInterceptor ri;
if ( projectStartExpressions != null && !projectStartExpressions.isEmpty() )
{
ri = new PrefixAwareRecursionInterceptor( projectStartExpressions, true );
@@ -277,46 +285,6 @@
ri = new SimpleRecursionInterceptor();
}
- 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 );
-
- if ( escapeWindowsPaths )
- {
- interpolator.addPostProcessor( new InterpolationPostProcessor()
- {
- public Object execute( String expression, Object value )
- {
- if ( value instanceof String )
- {
- return FilteringUtils.escapeWindowsPath( (String) value );
- }
-
- return value;
- }
- } );
- }
-
- MultiDelimiterInterpolatorFilterReaderLineEnding filterReader =
- new MultiDelimiterInterpolatorFilterReaderLineEnding( reader, interpolator, supportMultiLineFiltering );
filterReader.setRecursionInterceptor( ri );
filterReader.setDelimiterSpecs( delimiters );
@@ -327,4 +295,53 @@
}
}
+
+ 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 );
+
+ if ( escapeWindowsPaths )
+ {
+ interpolator.addPostProcessor( new InterpolationPostProcessor()
+ {
+ public Object execute( String expression, Object value )
+ {
+ if ( value instanceof String )
+ {
+ return FilteringUtils.escapeWindowsPath( (String) value );
+ }
+
+ return value;
+ }
+ } );
+ }
+ return interpolator;
+ }
}