You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by kr...@apache.org on 2014/10/14 15:26:08 UTC

svn commit: r1631747 - /maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/

Author: krosenvold
Date: Tue Oct 14 13:26:08 2014
New Revision: 1631747

URL: http://svn.apache.org/r1631747
Log:
Aded stuff

Added:
    maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/BaseFilter.java
    maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultFilterInfo.java
    maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenStreamFilter.java
    maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenStreamFilter.java
    maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenStreamFilterRequest.java
Modified:
    maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java
    maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenFileFilter.java

Added: 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=1631747&view=auto
==============================================================================
--- maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/BaseFilter.java (added)
+++ maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/BaseFilter.java Tue Oct 14 13:26:08 2014
@@ -0,0 +1,289 @@
+package org.apache.maven.shared.filtering;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.Reader;
+import java.util.*;
+
+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.*;
+import org.codehaus.plexus.interpolation.multi.MultiDelimiterStringSearchInterpolator;
+import org.codehaus.plexus.logging.AbstractLogEnabled;
+
+class BaseFilter extends AbstractLogEnabled implements DefaultFilterInfo {
+
+
+	/**
+	 * @see org.apache.maven.shared.filtering.MavenFileFilter#getDefaultFilterWrappers(org.apache.maven.project.MavenProject, java.util.List, boolean, org.apache.maven.execution.MavenSession)
+	 * @deprecated
+	 */
+	public List<FileUtils.FilterWrapper> getDefaultFilterWrappers( final MavenProject mavenProject,
+			List<String> filters,
+			final boolean escapedBackslashesInFilePath,
+			MavenSession mavenSession )
+			throws MavenFilteringException
+	{
+		return getDefaultFilterWrappers( mavenProject, filters, escapedBackslashesInFilePath, mavenSession, null );
+	}
+
+
+	public List<FileUtils.FilterWrapper> getDefaultFilterWrappers( final MavenProject mavenProject, List<String> filters,
+			final boolean escapedBackslashesInFilePath,
+			MavenSession mavenSession,
+			MavenResourcesExecution mavenResourcesExecution )
+			throws MavenFilteringException
+	{
+
+		MavenResourcesExecution mre =
+				mavenResourcesExecution == null ? new MavenResourcesExecution() : mavenResourcesExecution.copyOf();
+
+		mre.setMavenProject( mavenProject );
+		mre.setMavenSession( mavenSession );
+		mre.setFilters( filters );
+		mre.setEscapedBackslashesInFilePath( escapedBackslashesInFilePath );
+
+		return getDefaultFilterWrappers( mre );
+
+	}
+
+	public List<FileUtils.FilterWrapper> getDefaultFilterWrappers( final AbstractMavenFilteringRequest req )
+			throws MavenFilteringException
+	{
+		// backup values
+		boolean supportMultiLineFiltering = req.isSupportMultiLineFiltering();
+
+		// compensate for null parameter value.
+		final AbstractMavenFilteringRequest request = req == null ? new MavenFileFilterRequest() : req;
+
+		request.setSupportMultiLineFiltering( supportMultiLineFiltering );
+
+		// Here we build some properties which will be used to read some properties files
+		// to interpolate the expression ${ } in this properties file
+
+		// Take a copy of filterProperties to ensure that evaluated filterTokens are not propagated
+		// to subsequent filter files. Note: this replicates current behaviour and seems to make sense.
+
+		final Properties baseProps = new Properties();
+
+		// Project properties
+		if ( request.getMavenProject() != null )
+		{
+			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
+		if ( request.getMavenSession() != null )
+		{
+			// execution properties wins
+			baseProps.putAll( request.getMavenSession().getExecutionProperties() );
+		}
+
+		// now we build properties to use for resources interpolation
+
+		final Properties filterProperties = new Properties();
+
+		File basedir = request.getMavenProject() != null ? request.getMavenProject().getBasedir() : new File( "." );
+
+		loadProperties( filterProperties, basedir, request.getFileFilters(), baseProps );
+		if ( filterProperties.size() < 1 )
+		{
+			filterProperties.putAll( baseProps );
+		}
+
+		if ( request.getMavenProject() != null )
+		{
+			if ( request.isInjectProjectBuildFilters() )
+			{
+				@SuppressWarnings( "unchecked" )
+				List<String> buildFilters = new ArrayList<String>( request.getMavenProject().getBuild().getFilters() );
+
+				// JDK-8015656: (coll) unexpected NPE from removeAll
+				if ( request.getFileFilters() != null )
+				{
+					buildFilters.removeAll( request.getFileFilters() );
+				}
+
+				loadProperties( filterProperties, basedir, buildFilters, baseProps );
+			}
+
+			// Project properties
+			filterProperties.putAll( request.getMavenProject().getProperties() == null
+					? Collections.emptyMap()
+					: request.getMavenProject().getProperties() );
+		}
+		if ( request.getMavenSession() != null )
+		{
+			// execution properties wins
+			filterProperties.putAll( request.getMavenSession().getExecutionProperties() );
+		}
+
+		if ( request.getAdditionalProperties() != null )
+		{
+			// additional properties wins
+			filterProperties.putAll( request.getAdditionalProperties() );
+		}
+
+		List<FileUtils.FilterWrapper> defaultFilterWrappers = request == null
+				? new ArrayList<FileUtils.FilterWrapper>( 1 )
+				: new ArrayList<FileUtils.FilterWrapper>( request.getDelimiters().size() + 1 );
+
+		if ( getLogger().isDebugEnabled() )
+		{
+			getLogger().debug( "properties used " + filterProperties );
+		}
+
+		final ValueSource propertiesValueSource = new PropertiesBasedValueSource( filterProperties );
+
+		if ( request != null )
+		{
+			FileUtils.FilterWrapper wrapper =
+					new Wrapper( request.getDelimiters(), request.getMavenProject(), request.getMavenSession(),
+							propertiesValueSource, request.getProjectStartExpressions(), request.getEscapeString(),
+							request.isEscapeWindowsPaths(), request.isSupportMultiLineFiltering() );
+
+			defaultFilterWrappers.add( wrapper );
+		}
+
+		return defaultFilterWrappers;
+	}
+
+	/**
+	 * default visibility only for testing reason !
+	 */
+	void loadProperties( Properties filterProperties, File basedir, List<String> propertiesFilePaths, Properties baseProps )
+			throws MavenFilteringException
+	{
+		if ( propertiesFilePaths != null )
+		{
+			Properties workProperties = new Properties();
+			workProperties.putAll( baseProps );
+
+			for ( String filterFile : propertiesFilePaths )
+			{
+				if ( StringUtils.isEmpty(filterFile) )
+				{
+					// skip empty file name
+					continue;
+				}
+				try
+				{
+					File propFile = FileUtils.resolveFile( basedir, filterFile );
+					Properties properties = PropertyUtils.loadPropertyFile( propFile, workProperties );
+					filterProperties.putAll( properties );
+					workProperties.putAll( properties );
+				}
+				catch ( IOException e )
+				{
+					throw new MavenFilteringException( "Error loading property file '" + filterFile + "'", e );
+				}
+			}
+		}
+	}
+
+	private static final class Wrapper
+			extends FileUtils.FilterWrapper
+	{
+
+		private LinkedHashSet<String> delimiters;
+
+		private MavenProject project;
+
+		private ValueSource propertiesValueSource;
+
+		private List<String> projectStartExpressions;
+
+		private String escapeString;
+
+		private boolean escapeWindowsPaths;
+
+		private final MavenSession mavenSession;
+
+		private boolean supportMultiLineFiltering;
+
+		Wrapper( LinkedHashSet<String> delimiters, MavenProject project, MavenSession mavenSession,
+				ValueSource propertiesValueSource, List<String> projectStartExpressions, String escapeString,
+				boolean escapeWindowsPaths, boolean supportMultiLineFiltering )
+		{
+			super();
+			this.delimiters = delimiters;
+			this.project = project;
+			this.mavenSession = mavenSession;
+			this.propertiesValueSource = propertiesValueSource;
+			this.projectStartExpressions = projectStartExpressions;
+			this.escapeString = escapeString;
+			this.escapeWindowsPaths = escapeWindowsPaths;
+			this.supportMultiLineFiltering = supportMultiLineFiltering;
+		}
+
+		public Reader getReader( Reader reader )
+		{
+			MultiDelimiterStringSearchInterpolator interpolator = new MultiDelimiterStringSearchInterpolator();
+			interpolator.setDelimiterSpecs( delimiters );
+
+			RecursionInterceptor ri = null;
+			if ( projectStartExpressions != null && !projectStartExpressions.isEmpty() )
+			{
+				ri = new PrefixAwareRecursionInterceptor( projectStartExpressions, true );
+			}
+			else
+			{
+				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 );
+
+			filterReader.setInterpolateWithPrefixPattern( false );
+			filterReader.setEscapeString( escapeString );
+
+			return filterReader;
+		}
+
+	}
+}

Added: maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultFilterInfo.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultFilterInfo.java?rev=1631747&view=auto
==============================================================================
--- maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultFilterInfo.java (added)
+++ maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultFilterInfo.java Tue Oct 14 13:26:08 2014
@@ -0,0 +1,75 @@
+package org.apache.maven.shared.filtering;
+
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.List;
+
+import org.apache.maven.execution.MavenSession;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.shared.utils.io.FileUtils;
+
+public interface DefaultFilterInfo {
+	/**
+	 * Will return the default FileUtils.FilterWrappers.
+	 * <p/>
+	 * <ul>
+	 * <li>interpolate with token ${} and values from sysProps, project.properties, filters and project filters.</li>
+	 * <li>interpolate with token @ @ and values from sysProps, project.properties, filters and project filters.</li>
+	 * <li>interpolate with token ${} and values from mavenProject interpolation.</li>
+	 * <li>interpolation with token @ @ and values from mavenProject interpolation</li>
+	 * </ul>
+	 * <b>This method is now deprecated and no escape mechanism will be used.</b>
+	 *
+	 * @param mavenProject
+	 * @param filters      {@link java.util.List} of properties file
+	 * @return {@link java.util.List} of FileUtils.FilterWrapper
+	 * @deprecated use {@link #getDefaultFilterWrappers(org.apache.maven.project.MavenProject, java.util.List, boolean, org.apache.maven.execution.MavenSession, org.apache.maven.shared.filtering.MavenResourcesExecution)}
+	 */
+	List<FileUtils.FilterWrapper> getDefaultFilterWrappers(MavenProject mavenProject, List<String> filters,
+			boolean escapedBackslashesInFilePath,
+			MavenSession mavenSession)
+			throws MavenFilteringException;
+
+	/**
+	 * @param mavenProject
+	 * @param filters
+	 * @param escapedBackslashesInFilePath
+	 * @param mavenSession
+	 * @param mavenResourcesExecution
+	 * @return {@link java.util.List} of FileUtils.FilterWrapper
+	 * @throws org.apache.maven.shared.filtering.MavenFilteringException
+	 * @since 1.0-beta-2
+	 */
+	List<FileUtils.FilterWrapper> getDefaultFilterWrappers(MavenProject mavenProject, List<String> filters,
+			boolean escapedBackslashesInFilePath,
+			MavenSession mavenSession,
+			MavenResourcesExecution mavenResourcesExecution)
+			throws MavenFilteringException;
+
+	/**
+	 * @param request
+	 * @return {@link java.util.List} of FileUtils.FilterWrapper
+	 * @throws org.apache.maven.shared.filtering.MavenFilteringException
+	 * @since 1.0-beta-3
+	 */
+	List<FileUtils.FilterWrapper> getDefaultFilterWrappers(AbstractMavenFilteringRequest request)
+			throws MavenFilteringException;
+}

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=1631747&r1=1631746&r2=1631747&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 Tue Oct 14 13:26:08 2014
@@ -53,7 +53,7 @@ import org.sonatype.plexus.build.increme
  * role-hint="default"
  */
 public class DefaultMavenFileFilter
-    extends AbstractLogEnabled
+    extends BaseFilter
     implements MavenFileFilter
 {
 
@@ -130,275 +130,4 @@ public class DefaultMavenFileFilter
         }
 
     }
-
-    /**
-     * @see org.apache.maven.shared.filtering.MavenFileFilter#getDefaultFilterWrappers(org.apache.maven.project.MavenProject, java.util.List, boolean, org.apache.maven.execution.MavenSession)
-     * @deprecated
-     */
-    public List<FileUtils.FilterWrapper> getDefaultFilterWrappers( final MavenProject mavenProject,
-                                                                   List<String> filters,
-                                                                   final boolean escapedBackslashesInFilePath,
-                                                                   MavenSession mavenSession )
-        throws MavenFilteringException
-    {
-        return getDefaultFilterWrappers( mavenProject, filters, escapedBackslashesInFilePath, mavenSession, null );
-    }
-
-
-    public List<FileUtils.FilterWrapper> getDefaultFilterWrappers( final MavenProject mavenProject, List<String> filters,
-                                                                   final boolean escapedBackslashesInFilePath,
-                                                                   MavenSession mavenSession,
-                                                                   MavenResourcesExecution mavenResourcesExecution )
-        throws MavenFilteringException
-    {
-
-        MavenResourcesExecution mre =
-            mavenResourcesExecution == null ? new MavenResourcesExecution() : mavenResourcesExecution.copyOf();
-
-        mre.setMavenProject( mavenProject );
-        mre.setMavenSession( mavenSession );
-        mre.setFilters( filters );
-        mre.setEscapedBackslashesInFilePath( escapedBackslashesInFilePath );
-
-        return getDefaultFilterWrappers( mre );
-
-    }
-
-    public List<FileUtils.FilterWrapper> getDefaultFilterWrappers( final AbstractMavenFilteringRequest req )
-        throws MavenFilteringException
-    {
-        // backup values
-        boolean supportMultiLineFiltering = req.isSupportMultiLineFiltering();
-
-        // compensate for null parameter value.
-        final AbstractMavenFilteringRequest request = req == null ? new MavenFileFilterRequest() : req;
-
-        request.setSupportMultiLineFiltering( supportMultiLineFiltering );
-
-        // Here we build some properties which will be used to read some properties files
-        // to interpolate the expression ${ } in this properties file
-
-        // Take a copy of filterProperties to ensure that evaluated filterTokens are not propagated
-        // to subsequent filter files. Note: this replicates current behaviour and seems to make sense.
-
-        final Properties baseProps = new Properties();
-
-        // Project properties
-        if ( request.getMavenProject() != null )
-        {
-            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
-        if ( request.getMavenSession() != null )
-        {
-            // execution properties wins
-            baseProps.putAll( request.getMavenSession().getExecutionProperties() );
-        }
-
-        // now we build properties to use for resources interpolation
-
-        final Properties filterProperties = new Properties();
-
-        File basedir = request.getMavenProject() != null ? request.getMavenProject().getBasedir() : new File( "." ); 
-
-        loadProperties( filterProperties, basedir, request.getFileFilters(), baseProps );
-        if ( filterProperties.size() < 1 )
-        {
-            filterProperties.putAll( baseProps );
-        }
-
-        if ( request.getMavenProject() != null )
-        {
-            if ( request.isInjectProjectBuildFilters() )
-            {
-                @SuppressWarnings( "unchecked" )
-                List<String> buildFilters = new ArrayList<String>( request.getMavenProject().getBuild().getFilters() );
-
-                // JDK-8015656: (coll) unexpected NPE from removeAll 
-                if ( request.getFileFilters() != null )
-                {
-                    buildFilters.removeAll( request.getFileFilters() );
-                }
-
-                loadProperties( filterProperties, basedir, buildFilters, baseProps );
-            }
-
-            // Project properties
-            filterProperties.putAll( request.getMavenProject().getProperties() == null
-                                         ? Collections.emptyMap()
-                                         : request.getMavenProject().getProperties() );
-        }
-        if ( request.getMavenSession() != null )
-        {
-            // execution properties wins
-            filterProperties.putAll( request.getMavenSession().getExecutionProperties() );
-        }
-
-        if ( request.getAdditionalProperties() != null )
-        {
-            // additional properties wins
-            filterProperties.putAll( request.getAdditionalProperties() );
-        }
-
-        List<FileUtils.FilterWrapper> defaultFilterWrappers = request == null
-            ? new ArrayList<FileUtils.FilterWrapper>( 1 )
-            : new ArrayList<FileUtils.FilterWrapper>( request.getDelimiters().size() + 1 );
-
-        if ( getLogger().isDebugEnabled() )
-        {
-            getLogger().debug( "properties used " + filterProperties );
-        }
-
-        final ValueSource propertiesValueSource = new PropertiesBasedValueSource( filterProperties );
-
-        if ( request != null )
-        {
-            FileUtils.FilterWrapper wrapper =
-                new Wrapper( request.getDelimiters(), request.getMavenProject(), request.getMavenSession(),
-                             propertiesValueSource, request.getProjectStartExpressions(), request.getEscapeString(),
-                             request.isEscapeWindowsPaths(), request.isSupportMultiLineFiltering() );
-
-            defaultFilterWrappers.add( wrapper );
-        }
-
-        return defaultFilterWrappers;
-    }
-
-    /**
-     * default visibility only for testing reason !
-     */
-    void loadProperties( Properties filterProperties, File basedir, List<String> propertiesFilePaths, Properties baseProps )
-        throws MavenFilteringException
-    {
-        if ( propertiesFilePaths != null )
-        {
-            Properties workProperties = new Properties();
-            workProperties.putAll( baseProps );
-
-            for ( String filterFile : propertiesFilePaths )
-            {
-                if ( StringUtils.isEmpty( filterFile ) )
-                {
-                    // skip empty file name
-                    continue;
-                }
-                try
-                {
-                    File propFile = FileUtils.resolveFile( basedir, filterFile );
-                    Properties properties = PropertyUtils.loadPropertyFile( propFile, workProperties );
-                    filterProperties.putAll( properties );
-                    workProperties.putAll( properties );
-                }
-                catch ( IOException e )
-                {
-                    throw new MavenFilteringException( "Error loading property file '" + filterFile + "'", e );
-                }
-            }
-        }
-    }
-
-    private static final class Wrapper
-        extends FileUtils.FilterWrapper
-    {
-
-        private LinkedHashSet<String> delimiters;
-
-        private MavenProject project;
-
-        private ValueSource propertiesValueSource;
-
-        private List<String> projectStartExpressions;
-
-        private String escapeString;
-
-        private boolean escapeWindowsPaths;
-
-        private final MavenSession mavenSession;
-
-        private boolean supportMultiLineFiltering;
-
-        Wrapper( LinkedHashSet<String> delimiters, MavenProject project, MavenSession mavenSession,
-                 ValueSource propertiesValueSource, List<String> projectStartExpressions, String escapeString,
-                 boolean escapeWindowsPaths, boolean supportMultiLineFiltering )
-        {
-            super();
-            this.delimiters = delimiters;
-            this.project = project;
-            this.mavenSession = mavenSession;
-            this.propertiesValueSource = propertiesValueSource;
-            this.projectStartExpressions = projectStartExpressions;
-            this.escapeString = escapeString;
-            this.escapeWindowsPaths = escapeWindowsPaths;
-            this.supportMultiLineFiltering = supportMultiLineFiltering;
-        }
-
-        public Reader getReader( Reader reader )
-        {
-            MultiDelimiterStringSearchInterpolator interpolator = new MultiDelimiterStringSearchInterpolator();
-            interpolator.setDelimiterSpecs( delimiters );
-
-            RecursionInterceptor ri = null;
-            if ( projectStartExpressions != null && !projectStartExpressions.isEmpty() )
-            {
-                ri = new PrefixAwareRecursionInterceptor( projectStartExpressions, true );
-            }
-            else
-            {
-                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 );
-
-            filterReader.setInterpolateWithPrefixPattern( false );
-            filterReader.setEscapeString( escapeString );
-
-            return filterReader;
-        }
-
-    }
-
 }

Added: maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenStreamFilter.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenStreamFilter.java?rev=1631747&view=auto
==============================================================================
--- maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenStreamFilter.java (added)
+++ maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenStreamFilter.java Tue Oct 14 13:26:08 2014
@@ -0,0 +1,162 @@
+package org.apache.maven.shared.filtering;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.*;
+import java.util.*;
+
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+
+import org.apache.maven.execution.MavenSession;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.shared.utils.io.FileUtils.FilterWrapper;
+import org.apache.maven.shared.utils.io.IOUtil;
+import org.sonatype.plexus.build.incremental.BuildContext;
+
+/**
+ * @author Olivier Lamy
+ *
+ * @plexus.component role="org.apache.maven.shared.filtering.MavenFileFilter"
+ * role-hint="default"
+ */
+public class DefaultMavenStreamFilter
+    extends BaseFilter
+    implements MavenStreamFilter
+{
+
+    /**
+     * @plexus.requirement
+     */
+    private BuildContext buildContext;
+
+    public InputStream filter( InputStream from, boolean filtering, MavenProject mavenProject, List<String> filters,
+                          boolean escapedBackslashesInFilePath, String encoding, MavenSession mavenSession )
+        throws MavenFilteringException
+    {
+        MavenResourcesExecution mre = new MavenResourcesExecution();
+        mre.setMavenProject( mavenProject );
+        mre.setFileFilters( filters );
+        mre.setEscapeWindowsPaths( escapedBackslashesInFilePath );
+        mre.setMavenSession( mavenSession );
+        mre.setInjectProjectBuildFilters( true );
+
+        List<FilterWrapper> filterWrappers = getDefaultFilterWrappers( mre );
+        return filter(from, filtering, filterWrappers, encoding);
+    }
+
+
+    public InputStream filter( MavenStreamFilterRequest mavenFileFilterRequest )
+        throws MavenFilteringException
+    {
+        List<FilterWrapper> filterWrappers = getDefaultFilterWrappers( mavenFileFilterRequest );
+
+        return filter(mavenFileFilterRequest.getFrom(),
+                mavenFileFilterRequest.isFiltering(), filterWrappers, mavenFileFilterRequest.getEncoding());
+    }
+
+
+    public InputStream filter( InputStream from,boolean filtering, List<FilterWrapper> filterWrappers,
+                          String encoding )
+        throws MavenFilteringException
+    {
+        // overwrite forced to false to preserve backward comp
+        return filter( from, filtering, filterWrappers, encoding, false );
+    }
+
+
+    public InputStream filter( InputStream from, boolean filtering, List<FilterWrapper> filterWrappers,
+                          String encoding, boolean overwrite )
+        throws MavenFilteringException
+    {
+        try
+        {
+            if ( filtering )
+            {
+                FilterWrapper[] wrappers = filterWrappers.toArray(
+                    new FilterWrapper[filterWrappers.size()] );
+                return filterWrap(from, encoding, wrappers, false);
+            }
+            else
+            {
+                return filterWrap(from, encoding, new FilterWrapper[0], overwrite);
+            }
+
+        }
+        catch ( IOException e )
+        {
+            throw new MavenFilteringException( e.getMessage(), e );
+        }
+
+    }
+
+
+    public static InputStream filterWrap(@Nonnull InputStream from, @Nullable String encoding,
+            @Nullable FilterWrapper[] wrappers, boolean overwrite)
+            throws IOException
+    {
+        if ( wrappers != null && wrappers.length > 0 )
+        {
+            // buffer so it isn't reading a byte at a time!
+            Reader fileReader = null;
+            Writer fileWriter = null;
+            try
+            {
+                if ( encoding == null || encoding.length() < 1 )
+                {
+                    fileReader = new BufferedReader( new InputStreamReader(from) );
+                    fileWriter = new FileWriter( to );
+                }
+                else
+                {
+                    FileInputStream instream = new FileInputStream( from );
+
+                    FileOutputStream outstream = new FileOutputStream( to );
+
+                    fileReader = new BufferedReader( new InputStreamReader( instream, encoding ) );
+
+                    fileWriter = new OutputStreamWriter( outstream, encoding );
+                }
+
+                Reader reader = fileReader;
+                for ( FilterWrapper wrapper : wrappers )
+                {
+                    reader = wrapper.getReader( reader );
+                }
+
+                IOUtil.copy(reader, fileWriter);
+            }
+            finally
+            {
+                IOUtil.close( fileReader );
+                IOUtil.close( fileWriter );
+            }
+        }
+        else
+        {
+            if ( to.lastModified() < from.lastModified() || overwrite )
+            {
+                filterWrap(from, to);
+            }
+        }
+    }
+
+
+}

Modified: maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenFileFilter.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenFileFilter.java?rev=1631747&r1=1631746&r2=1631747&view=diff
==============================================================================
--- maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenFileFilter.java (original)
+++ maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenFileFilter.java Tue Oct 14 13:26:08 2014
@@ -30,7 +30,7 @@ import java.util.List;
  * @author Olivier Lamy
  *
  */
-public interface MavenFileFilter
+public interface MavenFileFilter extends DefaultFilterInfo
 {
 
     /**
@@ -81,51 +81,4 @@ public interface MavenFileFilter
     void copyFile( File from, final File to, boolean filtering, List<FileUtils.FilterWrapper> filterWrappers,
                    String encoding, boolean overwrite )
         throws MavenFilteringException;
-
-    /**
-     * Will return the default FileUtils.FilterWrappers.
-     * <p/>
-     * <ul>
-     * <li>interpolate with token ${} and values from sysProps, project.properties, filters and project filters.</li>
-     * <li>interpolate with token @ @ and values from sysProps, project.properties, filters and project filters.</li>
-     * <li>interpolate with token ${} and values from mavenProject interpolation.</li>
-     * <li>interpolation with token @ @ and values from mavenProject interpolation</li>
-     * </ul>
-     * <b>This method is now deprecated and no escape mechanism will be used.</b>
-     *
-     * @param mavenProject
-     * @param filters      {@link List} of properties file
-     * @return {@link List} of FileUtils.FilterWrapper
-     * @deprecated use {@link #getDefaultFilterWrappers(MavenProject, List, boolean, MavenSession, MavenResourcesExecution)}
-     */
-    List<FileUtils.FilterWrapper> getDefaultFilterWrappers( MavenProject mavenProject, List<String> filters,
-                                                            boolean escapedBackslashesInFilePath,
-                                                            MavenSession mavenSession )
-        throws MavenFilteringException;
-
-    /**
-     * @param mavenProject
-     * @param filters
-     * @param escapedBackslashesInFilePath
-     * @param mavenSession
-     * @param mavenResourcesExecution
-     * @return {@link List} of FileUtils.FilterWrapper
-     * @throws MavenFilteringException
-     * @since 1.0-beta-2
-     */
-    List<FileUtils.FilterWrapper> getDefaultFilterWrappers( MavenProject mavenProject, List<String> filters,
-                                                            boolean escapedBackslashesInFilePath,
-                                                            MavenSession mavenSession,
-                                                            MavenResourcesExecution mavenResourcesExecution )
-        throws MavenFilteringException;
-
-    /**
-     * @param request
-     * @return {@link List} of FileUtils.FilterWrapper
-     * @throws MavenFilteringException
-     * @since 1.0-beta-3
-     */
-    List<FileUtils.FilterWrapper> getDefaultFilterWrappers( AbstractMavenFilteringRequest request )
-        throws MavenFilteringException;
-
 }

Added: maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenStreamFilter.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenStreamFilter.java?rev=1631747&view=auto
==============================================================================
--- maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenStreamFilter.java (added)
+++ maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenStreamFilter.java Tue Oct 14 13:26:08 2014
@@ -0,0 +1,87 @@
+package org.apache.maven.shared.filtering;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.File;
+import java.io.InputStream;
+import java.util.List;
+
+import org.apache.maven.execution.MavenSession;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.shared.utils.io.FileUtils;
+
+/**
+ * @author Olivier Lamy
+ * @author Kristian Rosenvold
+ */
+public interface MavenStreamFilter extends DefaultFilterInfo
+{
+
+    /**
+     * Will copy a file with some filtering using defaultFilterWrappers.
+     *
+     * @param source         file to copy/filter
+     * @param filtering    enable or not filering
+     * @param mavenProject the mavenproject
+     * @param filters      {@link java.util.List} of String which are path to a Property file
+     * @return an input stream that applies the filter
+     * @throws org.apache.maven.shared.filtering.MavenFilteringException
+     * @see #getDefaultFilterWrappers(org.apache.maven.project.MavenProject, java.util.List, boolean, org.apache.maven.execution.MavenSession)
+     */
+    InputStream filter(InputStream source, boolean filtering, MavenProject mavenProject, List<String> filters,
+            boolean escapedBackslashesInFilePath, String encoding, MavenSession mavenSession)
+        throws MavenFilteringException;
+
+    /**
+     * @param mavenStreamFilterRequest The filter request
+     * @throws org.apache.maven.shared.filtering.MavenFilteringException
+     * @return an input stream that applies the filter
+     * @since 1.0-beta-3
+     */
+    InputStream filter(MavenStreamFilterRequest mavenStreamFilterRequest)
+        throws MavenFilteringException;
+
+    /**
+     * @param source The source stream to filter
+     * @param filtering
+     * @param filterWrappers {@link java.util.List} of FileUtils.FilterWrapper
+     * @return an input stream that applies the filter
+     * @throws org.apache.maven.shared.filtering.MavenFilteringException
+     */
+    InputStream filter(InputStream source, boolean filtering, List<FileUtils.FilterWrapper> filterWrappers,
+            String encoding)
+        throws MavenFilteringException;
+
+
+    /**
+     * @param source The source stream to filter
+     * @param filtering
+     * @param filterWrappers
+     * @param encoding
+     * @param overwrite
+     * @throws org.apache.maven.shared.filtering.MavenFilteringException
+     * @return an input stream that applies the filter
+     * @since 1.0-beta-2
+     */
+    InputStream filter(InputStream source, boolean filtering, List<FileUtils.FilterWrapper> filterWrappers,
+            String encoding, boolean overwrite)
+        throws MavenFilteringException;
+
+}

Added: maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenStreamFilterRequest.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenStreamFilterRequest.java?rev=1631747&view=auto
==============================================================================
--- maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenStreamFilterRequest.java (added)
+++ maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenStreamFilterRequest.java Tue Oct 14 13:26:08 2014
@@ -0,0 +1,80 @@
+package org.apache.maven.shared.filtering;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.File;
+import java.io.InputStream;
+import java.util.List;
+import java.util.Properties;
+
+import org.apache.maven.execution.MavenSession;
+import org.apache.maven.project.MavenProject;
+
+/**
+ * @author Olivier Lamy
+ * @since 1.0-beta-3
+ */
+public class MavenStreamFilterRequest
+    extends AbstractMavenFilteringRequest
+{
+
+    private InputStream from;
+
+    private boolean filtering;
+
+    public MavenStreamFilterRequest()
+    {
+        // nothing
+    }
+
+    public MavenStreamFilterRequest(InputStream from, boolean filtering, MavenProject mavenProject,
+            List<String> filters,
+            boolean escapedBackslashesInFilePath, String encoding, MavenSession mavenSession,
+            Properties additionalProperties)
+    {
+        super( mavenProject, filters, encoding, mavenSession );
+        this.from = from;
+        this.filtering = filtering;
+        setAdditionalProperties( additionalProperties );
+        setEscapeWindowsPaths( escapedBackslashesInFilePath );
+    }
+
+
+    public InputStream getFrom()
+    {
+        return from;
+    }
+
+    public void setFrom( InputStream from )
+    {
+        this.from = from;
+    }
+
+    public boolean isFiltering()
+    {
+        return filtering;
+    }
+
+    public void setFiltering( boolean filtering )
+    {
+        this.filtering = filtering;
+    }
+
+}