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:28:27 UTC
svn commit: r1631749 -
/maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/
Author: krosenvold
Date: Tue Oct 14 13:28:26 2014
New Revision: 1631749
URL: http://svn.apache.org/r1631749
Log:
Revert accidental commit "Aded stuff"
Removed:
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
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=1631749&r1=1631748&r2=1631749&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:28:26 2014
@@ -53,7 +53,7 @@ import org.sonatype.plexus.build.increme
* role-hint="default"
*/
public class DefaultMavenFileFilter
- extends BaseFilter
+ extends AbstractLogEnabled
implements MavenFileFilter
{
@@ -130,4 +130,275 @@ 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;
+ }
+
+ }
+
}
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=1631749&r1=1631748&r2=1631749&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:28:26 2014
@@ -30,7 +30,7 @@ import java.util.List;
* @author Olivier Lamy
*
*/
-public interface MavenFileFilter extends DefaultFilterInfo
+public interface MavenFileFilter
{
/**
@@ -81,4 +81,51 @@ public interface MavenFileFilter extends
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;
+
}