Skip to content

Commit

Permalink
WIP
Browse files Browse the repository at this point in the history
  • Loading branch information
cstamas committed Jun 9, 2022
1 parent dedca2a commit d026df4
Show file tree
Hide file tree
Showing 11 changed files with 147 additions and 46 deletions.
13 changes: 6 additions & 7 deletions src/main/java/org/apache/maven/shared/filtering/BaseFilter.java
Expand Up @@ -32,7 +32,6 @@
import org.apache.maven.execution.MavenSession;
import org.apache.maven.project.MavenProject;
import org.apache.maven.settings.Settings;
import org.apache.maven.shared.utils.io.FileUtils;
import org.codehaus.plexus.interpolation.InterpolationPostProcessor;
import org.codehaus.plexus.interpolation.Interpolator;
import org.codehaus.plexus.interpolation.PrefixAwareRecursionInterceptor;
Expand All @@ -51,7 +50,7 @@ class BaseFilter
{

@Override
public List<FileUtils.FilterWrapper> getDefaultFilterWrappers( final MavenProject mavenProject,
public List<FilterWrapper> getDefaultFilterWrappers( final MavenProject mavenProject,
List<String> filters,
final boolean escapedBackslashesInFilePath,
MavenSession mavenSession,
Expand All @@ -72,7 +71,7 @@ public List<FileUtils.FilterWrapper> getDefaultFilterWrappers( final MavenProjec
}

@Override
public List<FileUtils.FilterWrapper> getDefaultFilterWrappers( final AbstractMavenFilteringRequest request )
public List<FilterWrapper> getDefaultFilterWrappers( final AbstractMavenFilteringRequest request )
throws MavenFilteringException
{
// backup values
Expand Down Expand Up @@ -157,7 +156,7 @@ public List<FileUtils.FilterWrapper> getDefaultFilterWrappers( final AbstractMav
filterProperties.putAll( request.getAdditionalProperties() );
}

List<FileUtils.FilterWrapper> defaultFilterWrappers = new ArrayList<>( request.getDelimiters().size() + 1 );
List<FilterWrapper> defaultFilterWrappers = new ArrayList<>( request.getDelimiters().size() + 1 );

if ( getLogger().isDebugEnabled() )
{
Expand All @@ -170,7 +169,7 @@ public List<FileUtils.FilterWrapper> getDefaultFilterWrappers( final AbstractMav

final ValueSource propertiesValueSource = new PropertiesBasedValueSource( filterProperties );

FileUtils.FilterWrapper wrapper =
FilterWrapper wrapper =
new Wrapper( request.getDelimiters(), request.getMavenProject(), request.getMavenSession(),
propertiesValueSource, request.getProjectStartExpressions(), request.getEscapeString(),
request.isEscapeWindowsPaths(), request.isSupportMultiLineFiltering() );
Expand Down Expand Up @@ -201,7 +200,7 @@ void loadProperties( Properties filterProperties, File basedir, List<String> pro
}
try
{
File propFile = FileUtils.resolveFile( basedir, filterFile );
File propFile = FilteringUtils.resolveFile( basedir, filterFile );
Properties properties = PropertyUtils.loadPropertyFile( propFile, workProperties, getLogger() );
filterProperties.putAll( properties );
workProperties.putAll( properties );
Expand All @@ -215,7 +214,7 @@ void loadProperties( Properties filterProperties, File basedir, List<String> pro
}

private static final class Wrapper
extends FileUtils.FilterWrapper
extends FilterWrapper
{

private LinkedHashSet<String> delimiters;
Expand Down
Expand Up @@ -23,7 +23,6 @@

import org.apache.maven.execution.MavenSession;
import org.apache.maven.project.MavenProject;
import org.apache.maven.shared.utils.io.FileUtils;

/**
* @author Kristian Rosenvold
Expand All @@ -41,7 +40,7 @@ public interface DefaultFilterInfo
* @return {@link java.util.List} of FileUtils.FilterWrapper
* @since 1.0-beta-2
*/
List<FileUtils.FilterWrapper> getDefaultFilterWrappers( MavenProject mavenProject, List<String> filters,
List<FilterWrapper> getDefaultFilterWrappers( MavenProject mavenProject, List<String> filters,
boolean escapedBackslashesInFilePath,
MavenSession mavenSession,
MavenResourcesExecution mavenResourcesExecution )
Expand All @@ -53,6 +52,6 @@ List<FileUtils.FilterWrapper> getDefaultFilterWrappers( MavenProject mavenProjec
* @return {@link java.util.List} of FileUtils.FilterWrapper
* @since 1.0-beta-3
*/
List<FileUtils.FilterWrapper> getDefaultFilterWrappers( AbstractMavenFilteringRequest request )
List<FilterWrapper> getDefaultFilterWrappers( AbstractMavenFilteringRequest request )
throws MavenFilteringException;
}
Expand Up @@ -19,7 +19,6 @@
* under the License.
*/

import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Singleton;

Expand All @@ -29,10 +28,6 @@

import org.apache.maven.execution.MavenSession;
import org.apache.maven.project.MavenProject;
import org.apache.maven.shared.utils.io.FileUtils;
import org.apache.maven.shared.utils.io.FileUtils.FilterWrapper;

import static java.util.Objects.requireNonNull;

/**
* @author Olivier Lamy
Expand All @@ -43,14 +38,6 @@ public class DefaultMavenFileFilter
extends BaseFilter
implements MavenFileFilter
{
private final MavenReaderFilter readerFilter;

@Inject
public DefaultMavenFileFilter( MavenReaderFilter readerFilter )
{
this.readerFilter = requireNonNull( readerFilter );
}

@Override
public void copyFile( File from, File to, boolean filtering, MavenProject mavenProject, List<String> filters,
boolean escapedBackslashesInFilePath, String encoding, MavenSession mavenSession )
Expand All @@ -63,7 +50,7 @@ public void copyFile( File from, File to, boolean filtering, MavenProject mavenP
mre.setMavenSession( mavenSession );
mre.setInjectProjectBuildFilters( true );

List<FileUtils.FilterWrapper> filterWrappers = getDefaultFilterWrappers( mre );
List<FilterWrapper> filterWrappers = getDefaultFilterWrappers( mre );
copyFile( from, to, filtering, filterWrappers, encoding );
}

Expand All @@ -78,7 +65,7 @@ public void copyFile( MavenFileFilterRequest mavenFileFilterRequest )
}

@Override
public void copyFile( File from, File to, boolean filtering, List<FileUtils.FilterWrapper> filterWrappers,
public void copyFile( File from, File to, boolean filtering, List<FilterWrapper> filterWrappers,
String encoding )
throws MavenFilteringException
{
Expand All @@ -87,7 +74,7 @@ public void copyFile( File from, File to, boolean filtering, List<FileUtils.Filt
}

@Override
public void copyFile( File from, File to, boolean filtering, List<FileUtils.FilterWrapper> filterWrappers,
public void copyFile( File from, File to, boolean filtering, List<FilterWrapper> filterWrappers,
String encoding, boolean overwrite )
throws MavenFilteringException
{
Expand All @@ -108,7 +95,7 @@ public void copyFile( File from, File to, boolean filtering, List<FileUtils.Filt
{
getLogger().debug( "copy " + from.getPath() + " to " + to.getPath() );
}
FileUtils.copyFile( from, to, encoding, new FileUtils.FilterWrapper[0], overwrite );
FileUtils.copyFile( from, to, encoding, new FilterWrapper[0], overwrite );
}
}
catch ( IOException e )
Expand Down
Expand Up @@ -28,7 +28,6 @@

import org.apache.maven.execution.MavenSession;
import org.apache.maven.project.MavenProject;
import org.apache.maven.shared.utils.io.FileUtils.FilterWrapper;

/**
* @author Kristian Rosenvold
Expand Down
Expand Up @@ -38,8 +38,7 @@
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.io.IOUtils;
import org.apache.maven.model.Resource;
import org.apache.maven.shared.utils.PathTool;
import org.apache.maven.shared.utils.io.FileUtils.FilterWrapper;
import org.codehaus.plexus.util.DirectoryScanner;
import org.codehaus.plexus.util.Scanner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down Expand Up @@ -210,7 +209,9 @@ public void filterResources( MavenResourcesExecution mavenResourcesExecution )
boolean ignoreDelta = !outputExists || buildContext.hasDelta( mavenResourcesExecution.getFileFilters() )
|| buildContext.hasDelta( getRelativeOutputDirectory( mavenResourcesExecution ) );
getLogger().debug( "ignoreDelta " + ignoreDelta );
Scanner scanner = buildContext.newScanner( resourceDirectory, ignoreDelta );

DirectoryScanner scanner = new DirectoryScanner();
scanner.setBasedir( resourceDirectory );

setupScanner( resource, scanner, mavenResourcesExecution.isAddDefaultExcludes() );

Expand Down
36 changes: 36 additions & 0 deletions src/main/java/org/apache/maven/shared/filtering/FilterWrapper.java
@@ -0,0 +1,36 @@
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.Reader;

/**
* Wrapper class for Filter.
*
* @since TBD
*/
public abstract class FilterWrapper
{
/**
* @param fileReader {@link Reader}
* @return the Reader instance
*/
public abstract Reader getReader( Reader fileReader );
}
Expand Up @@ -19,8 +19,12 @@
* under the License.
*/

import java.io.File;
import java.io.IOException;
import java.util.regex.Pattern;

import org.codehaus.plexus.util.Os;

/**
* @author Olivier Lamy
* @author Dennis Lundberg
Expand Down Expand Up @@ -70,6 +74,87 @@ public static String escapeWindowsPath( String val )
return val;
}


/**
* Resolve a file <code>filename</code> to its canonical form. If <code>filename</code> is
* relative (doesn't start with <code>/</code>), it is resolved relative to
* <code>baseFile</code>. Otherwise it is treated as a normal root-relative path.
*
* @param baseFile where to resolve <code>filename</code> from, if <code>filename</code> is relative
* @param filename absolute or relative file path to resolve
* @return the canonical <code>File</code> of <code>filename</code>
*/
public static File resolveFile( final File baseFile, String filename )
{
String filenm = filename;
if ( '/' != File.separatorChar )
{
filenm = filename.replace( '/', File.separatorChar );
}

if ( '\\' != File.separatorChar )
{
filenm = filename.replace( '\\', File.separatorChar );
}

// deal with absolute files
if ( filenm.startsWith( File.separator ) || ( Os.isFamily( Os.FAMILY_WINDOWS ) && filenm.indexOf( ":" ) > 0 ) )
{
File file = new File( filenm );

try
{
file = file.getCanonicalFile();
}
catch ( final IOException ioe )
{
// nop
}

return file;
}
// FIXME: I'm almost certain this // removal is unnecessary, as getAbsoluteFile() strips
// them. However, I'm not sure about this UNC stuff. (JT)
final char[] chars = filename.toCharArray();
final StringBuilder sb = new StringBuilder();

//remove duplicate file separators in succession - except
//on win32 at start of filename as UNC filenames can
//be \\AComputer\AShare\myfile.txt
int start = 0;
if ( '\\' == File.separatorChar )
{
sb.append( filenm.charAt( 0 ) );
start++;
}

for ( int i = start; i < chars.length; i++ )
{
final boolean doubleSeparator = File.separatorChar == chars[i] && File.separatorChar == chars[i - 1];

if ( !doubleSeparator )
{
sb.append( chars[i] );
}
}

filenm = sb.toString();

//must be relative
File file = ( new File( baseFile, filenm ) ).getAbsoluteFile();

try
{
file = file.getCanonicalFile();
}
catch ( final IOException ioe )
{
// nop
}

return file;
}

static boolean isEmpty( final String string )
{
return string == null || string.trim().isEmpty();
Expand Down
Expand Up @@ -24,7 +24,6 @@

import org.apache.maven.execution.MavenSession;
import org.apache.maven.project.MavenProject;
import org.apache.maven.shared.utils.io.FileUtils;

/**
* @author Olivier Lamy
Expand Down Expand Up @@ -67,7 +66,7 @@ void copyFile( MavenFileFilterRequest mavenFileFilterRequest )
* @param encoding The encoding used during the filtering.
* @throws MavenFilteringException In case of an error.
*/
void copyFile( File from, final File to, boolean filtering, List<FileUtils.FilterWrapper> filterWrappers,
void copyFile( File from, final File to, boolean filtering, List<FilterWrapper> filterWrappers,
String encoding )
throws MavenFilteringException;

Expand All @@ -81,7 +80,7 @@ void copyFile( File from, final File to, boolean filtering, List<FileUtils.Filte
* @throws MavenFilteringException In case of an error.
* @since 1.0-beta-2
*/
void copyFile( File from, final File to, boolean filtering, List<FileUtils.FilterWrapper> filterWrappers,
void copyFile( File from, final File to, boolean filtering, List<FilterWrapper> filterWrappers,
String encoding, boolean overwrite )
throws MavenFilteringException;
}
Expand Up @@ -24,7 +24,6 @@

import org.apache.maven.execution.MavenSession;
import org.apache.maven.project.MavenProject;
import org.apache.maven.shared.utils.io.FileUtils;

/**
* @author Olivier Lamy
Expand Down Expand Up @@ -71,5 +70,5 @@ Reader filter( MavenReaderFilterRequest mavenFileFilterRequest )
* @param filterWrappers {@link java.util.List} of FileUtils.FilterWrapper
* @return an input stream that applies the filter
*/
Reader filter( Reader from, boolean filtering, List<FileUtils.FilterWrapper> filterWrappers );
Reader filter( Reader from, boolean filtering, List<FilterWrapper> filterWrappers );
}

0 comments on commit d026df4

Please sign in to comment.