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