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


Reply via email to