diff --git a/src/main/java/org/apache/maven/shared/filtering/BaseFilter.java b/src/main/java/org/apache/maven/shared/filtering/BaseFilter.java index 6059c65..580a223 100644 --- a/src/main/java/org/apache/maven/shared/filtering/BaseFilter.java +++ b/src/main/java/org/apache/maven/shared/filtering/BaseFilter.java @@ -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; @@ -51,7 +50,7 @@ class BaseFilter { @Override - public List getDefaultFilterWrappers( final MavenProject mavenProject, + public List getDefaultFilterWrappers( final MavenProject mavenProject, List filters, final boolean escapedBackslashesInFilePath, MavenSession mavenSession, @@ -72,7 +71,7 @@ public List getDefaultFilterWrappers( final MavenProjec } @Override - public List getDefaultFilterWrappers( final AbstractMavenFilteringRequest request ) + public List getDefaultFilterWrappers( final AbstractMavenFilteringRequest request ) throws MavenFilteringException { // backup values @@ -157,7 +156,7 @@ public List getDefaultFilterWrappers( final AbstractMav filterProperties.putAll( request.getAdditionalProperties() ); } - List defaultFilterWrappers = new ArrayList<>( request.getDelimiters().size() + 1 ); + List defaultFilterWrappers = new ArrayList<>( request.getDelimiters().size() + 1 ); if ( getLogger().isDebugEnabled() ) { @@ -170,7 +169,7 @@ public List 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() ); @@ -201,7 +200,7 @@ void loadProperties( Properties filterProperties, File basedir, List 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 ); @@ -215,7 +214,7 @@ void loadProperties( Properties filterProperties, File basedir, List pro } private static final class Wrapper - extends FileUtils.FilterWrapper + extends FilterWrapper { private LinkedHashSet delimiters; diff --git a/src/main/java/org/apache/maven/shared/filtering/DefaultFilterInfo.java b/src/main/java/org/apache/maven/shared/filtering/DefaultFilterInfo.java index a123123..3254556 100644 --- a/src/main/java/org/apache/maven/shared/filtering/DefaultFilterInfo.java +++ b/src/main/java/org/apache/maven/shared/filtering/DefaultFilterInfo.java @@ -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 @@ -41,7 +40,7 @@ public interface DefaultFilterInfo * @return {@link java.util.List} of FileUtils.FilterWrapper * @since 1.0-beta-2 */ - List getDefaultFilterWrappers( MavenProject mavenProject, List filters, + List getDefaultFilterWrappers( MavenProject mavenProject, List filters, boolean escapedBackslashesInFilePath, MavenSession mavenSession, MavenResourcesExecution mavenResourcesExecution ) @@ -53,6 +52,6 @@ List getDefaultFilterWrappers( MavenProject mavenProjec * @return {@link java.util.List} of FileUtils.FilterWrapper * @since 1.0-beta-3 */ - List getDefaultFilterWrappers( AbstractMavenFilteringRequest request ) + List getDefaultFilterWrappers( AbstractMavenFilteringRequest request ) throws MavenFilteringException; } diff --git a/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java b/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java index ca7a6f8..59c93f2 100644 --- a/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java +++ b/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java @@ -19,7 +19,6 @@ * under the License. */ -import javax.inject.Inject; import javax.inject.Named; import javax.inject.Singleton; @@ -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 @@ -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 filters, boolean escapedBackslashesInFilePath, String encoding, MavenSession mavenSession ) @@ -63,7 +50,7 @@ public void copyFile( File from, File to, boolean filtering, MavenProject mavenP mre.setMavenSession( mavenSession ); mre.setInjectProjectBuildFilters( true ); - List filterWrappers = getDefaultFilterWrappers( mre ); + List filterWrappers = getDefaultFilterWrappers( mre ); copyFile( from, to, filtering, filterWrappers, encoding ); } @@ -78,7 +65,7 @@ public void copyFile( MavenFileFilterRequest mavenFileFilterRequest ) } @Override - public void copyFile( File from, File to, boolean filtering, List filterWrappers, + public void copyFile( File from, File to, boolean filtering, List filterWrappers, String encoding ) throws MavenFilteringException { @@ -87,7 +74,7 @@ public void copyFile( File from, File to, boolean filtering, List filterWrappers, + public void copyFile( File from, File to, boolean filtering, List filterWrappers, String encoding, boolean overwrite ) throws MavenFilteringException { @@ -108,7 +95,7 @@ public void copyFile( File from, File to, boolean filtering, Listfilename to its canonical form. If filename is + * relative (doesn't start with /), it is resolved relative to + * baseFile. Otherwise it is treated as a normal root-relative path. + * + * @param baseFile where to resolve filename from, if filename is relative + * @param filename absolute or relative file path to resolve + * @return the canonical File of filename + */ + 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(); diff --git a/src/main/java/org/apache/maven/shared/filtering/MavenFileFilter.java b/src/main/java/org/apache/maven/shared/filtering/MavenFileFilter.java index 9c6f7a1..c6607e3 100644 --- a/src/main/java/org/apache/maven/shared/filtering/MavenFileFilter.java +++ b/src/main/java/org/apache/maven/shared/filtering/MavenFileFilter.java @@ -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 @@ -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 filterWrappers, + void copyFile( File from, final File to, boolean filtering, List filterWrappers, String encoding ) throws MavenFilteringException; @@ -81,7 +80,7 @@ void copyFile( File from, final File to, boolean filtering, List filterWrappers, + void copyFile( File from, final File to, boolean filtering, List filterWrappers, String encoding, boolean overwrite ) throws MavenFilteringException; } diff --git a/src/main/java/org/apache/maven/shared/filtering/MavenReaderFilter.java b/src/main/java/org/apache/maven/shared/filtering/MavenReaderFilter.java index 2ec1075..28c74ff 100644 --- a/src/main/java/org/apache/maven/shared/filtering/MavenReaderFilter.java +++ b/src/main/java/org/apache/maven/shared/filtering/MavenReaderFilter.java @@ -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 @@ -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 filterWrappers ); + Reader filter( Reader from, boolean filtering, List filterWrappers ); } diff --git a/src/main/java/org/apache/maven/shared/filtering/MavenResourcesExecution.java b/src/main/java/org/apache/maven/shared/filtering/MavenResourcesExecution.java index 449e405..ed97165 100644 --- a/src/main/java/org/apache/maven/shared/filtering/MavenResourcesExecution.java +++ b/src/main/java/org/apache/maven/shared/filtering/MavenResourcesExecution.java @@ -27,8 +27,6 @@ import org.apache.maven.execution.MavenSession; import org.apache.maven.model.Resource; import org.apache.maven.project.MavenProject; -import org.apache.maven.shared.utils.io.FileUtils; -import org.apache.maven.shared.utils.io.FileUtils.FilterWrapper; import org.codehaus.plexus.interpolation.StringSearchInterpolator; import org.codehaus.plexus.interpolation.ValueSource; @@ -47,7 +45,7 @@ public class MavenResourcesExecution private List nonFilteredFileExtensions; - private List filterWrappers; + private List filterWrappers; private File resourcesBaseDirectory; @@ -161,7 +159,7 @@ public MavenResourcesExecution( List resources, File outputDirectory, * @param nonFilteredFileExtensions The list of extensions which should not being filtered. */ public MavenResourcesExecution( List resources, File outputDirectory, String encoding, - List filterWrappers, File resourcesBaseDirectory, + List filterWrappers, File resourcesBaseDirectory, List nonFilteredFileExtensions ) { this(); @@ -265,17 +263,17 @@ public void setNonFilteredFileExtensions( List nonFilteredFileExtensions } /** - * @return List of {@link FileUtils.FilterWrapper} + * @return List of {@link FilterWrapper} */ - public List getFilterWrappers() + public List getFilterWrappers() { return filterWrappers; } /** - * @param filterWrappers List of {@link FileUtils.FilterWrapper} + * @param filterWrappers List of {@link FilterWrapper} */ - public void setFilterWrappers( List filterWrappers ) + public void setFilterWrappers( List filterWrappers ) { this.filterWrappers = filterWrappers; } @@ -303,7 +301,7 @@ public void addFilterWrapper( FilterWrapper filterWrapper ) public void addFilerWrapperWithEscaping( final ValueSource valueSource, final String startExp, final String endExp, final String escapeString, final boolean multiLineFiltering ) { - addFilterWrapper( new FileUtils.FilterWrapper() + addFilterWrapper( new FilterWrapper() { @Override public Reader getReader( Reader reader ) diff --git a/src/test/java/org/apache/maven/shared/filtering/DefaultMavenFileFilterTest.java b/src/test/java/org/apache/maven/shared/filtering/DefaultMavenFileFilterTest.java index 249aa79..9144990 100644 --- a/src/test/java/org/apache/maven/shared/filtering/DefaultMavenFileFilterTest.java +++ b/src/test/java/org/apache/maven/shared/filtering/DefaultMavenFileFilterTest.java @@ -32,7 +32,6 @@ import org.apache.commons.io.IOUtils; import org.apache.maven.project.MavenProject; -import org.apache.maven.shared.utils.io.FileUtils.FilterWrapper; import org.codehaus.plexus.PlexusTestCase; /**