This is an automated email from the ASF dual-hosted git repository. hboutemy pushed a commit to annotated tag maven-filtering-1.0-alpha-1 in repository https://gitbox.apache.org/repos/asf/maven-filtering.git
commit 9371ad39af52db25ca89bce10c0b91045786123a Author: Oliver Lamy <[email protected]> AuthorDate: Wed Feb 27 22:06:51 2008 +0000 add a bean to configure a filtering execution request this will prevent having methods with dozens of parameters git-svn-id: https://svn.apache.org/repos/asf/maven/sandbox/trunk/shared/maven-filtering@631749 13f79535-47bb-0310-9956-ffa450edef68 --- .../filtering/DefaultMavenResourcesFiltering.java | 78 +++++--- .../shared/filtering/MavenResourcesExecution.java | 209 +++++++++++++++++++++ .../shared/filtering/MavenResourcesFiltering.java | 7 + .../DefaultMavenResourcesFilteringTest.java | 125 ++++++++---- 4 files changed, 355 insertions(+), 64 deletions(-) diff --git a/src/main/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFiltering.java b/src/main/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFiltering.java index b4df098..1846d10 100755 --- a/src/main/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFiltering.java +++ b/src/main/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFiltering.java @@ -79,17 +79,59 @@ public class DefaultMavenResourcesFiltering List fileFilters, List nonFilteredFileExtensions, MavenSession mavenSession ) throws MavenFilteringException { - List filterWrappers = mavenFileFilter.getDefaultFilterWrappers( mavenProject, fileFilters, true, mavenSession ); - - filterResources( resources, outputDirectory, encoding, filterWrappers, mavenProject.getBasedir(), - nonFilteredFileExtensions ); + MavenResourcesExecution mavenResourcesExecution = new MavenResourcesExecution( resources, outputDirectory, + mavenProject, encoding, + fileFilters, + nonFilteredFileExtensions, + mavenSession ); + mavenResourcesExecution.setUseDefaultFilterWrappers( true ); + filterResources( mavenResourcesExecution ); } public void filterResources( List resources, File outputDirectory, String encoding, List filterWrappers, File resourcesBaseDirectory, List nonFilteredFileExtensions ) throws MavenFilteringException { - for ( Iterator i = resources.iterator(); i.hasNext(); ) + MavenResourcesExecution mavenResourcesExecution = new MavenResourcesExecution( resources, outputDirectory, + encoding, filterWrappers, + resourcesBaseDirectory, + nonFilteredFileExtensions ); + filterResources( mavenResourcesExecution ); + } + + + public boolean filteredFileExtension( String fileName, List userNonFilteredFileExtensions ) + { + List nonFilteredFileExtensions = new ArrayList( getDefaultNonFilteredFileExtensions() ); + if ( userNonFilteredFileExtensions != null ) + { + nonFilteredFileExtensions.addAll( userNonFilteredFileExtensions ); + } + return !nonFilteredFileExtensions.contains( StringUtils.lowerCase( FileUtils.extension( fileName ) ) ); + } + + public List getDefaultNonFilteredFileExtensions() + { + return this.defaultNonFilteredFileExtensions; + } + + public void filterResources( MavenResourcesExecution mavenResourcesExecution ) + throws MavenFilteringException + { + if ( mavenResourcesExecution == null ) + { + throw new MavenFilteringException( "mavenResourcesExecution cannot be null" ); + } + if ( mavenResourcesExecution.isUseDefaultFilterWrappers() ) + { + List filterWrappers = mavenFileFilter.getDefaultFilterWrappers( mavenResourcesExecution.getMavenProject(), + mavenResourcesExecution.getFileFilters(), + true, mavenResourcesExecution + .getMavenSession() ); + mavenResourcesExecution.setFilterWrappers( filterWrappers ); + } + + for ( Iterator i = mavenResourcesExecution.getResources().iterator(); i.hasNext(); ) { Resource resource = (Resource) i.next(); @@ -99,7 +141,8 @@ public class DefaultMavenResourcesFiltering if ( !resourceDirectory.isAbsolute() ) { - resourceDirectory = new File( resourcesBaseDirectory, resourceDirectory.getPath() ); + resourceDirectory = new File( mavenResourcesExecution.getResourcesBaseDirectory(), resourceDirectory + .getPath() ); } if ( !resourceDirectory.exists() ) @@ -110,6 +153,7 @@ public class DefaultMavenResourcesFiltering // this part is required in case the user specified "../something" as destination // see MNG-1345 + File outputDirectory = mavenResourcesExecution.getOutputDirectory(); if ( !outputDirectory.exists() ) { if ( !outputDirectory.mkdirs() ) @@ -159,29 +203,15 @@ public class DefaultMavenResourcesFiltering { destinationFile.getParentFile().mkdirs(); } - boolean filteredExt = filteredFileExtension( source.getName(), nonFilteredFileExtensions ); + boolean filteredExt = filteredFileExtension( source.getName(), mavenResourcesExecution + .getNonFilteredFileExtensions() ); mavenFileFilter.copyFile( source, destinationFile, resource.isFiltering() && filteredExt, - filterWrappers, encoding ); + mavenResourcesExecution.getFilterWrappers(), mavenResourcesExecution + .getEncoding() ); } } } - - - public boolean filteredFileExtension( String fileName, List userNonFilteredFileExtensions ) - { - List nonFilteredFileExtensions = new ArrayList( getDefaultNonFilteredFileExtensions() ); - if ( userNonFilteredFileExtensions != null ) - { - nonFilteredFileExtensions.addAll( userNonFilteredFileExtensions ); - } - return !nonFilteredFileExtensions.contains( StringUtils.lowerCase( FileUtils.extension( fileName ) ) ); - } - - public List getDefaultNonFilteredFileExtensions() - { - return this.defaultNonFilteredFileExtensions; - } } diff --git a/src/main/java/org/apache/maven/shared/filtering/MavenResourcesExecution.java b/src/main/java/org/apache/maven/shared/filtering/MavenResourcesExecution.java new file mode 100755 index 0000000..330fe6f --- /dev/null +++ b/src/main/java/org/apache/maven/shared/filtering/MavenResourcesExecution.java @@ -0,0 +1,209 @@ +/* + * 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. + */ +package org.apache.maven.shared.filtering; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import org.apache.maven.execution.MavenSession; +import org.apache.maven.project.MavenProject; +import org.codehaus.plexus.util.FileUtils.FilterWrapper; + +/** + * A bean to configure a resources filtering execution + * @author <a href="mailto:[email protected]">olamy</a> + * @since 27 f�vr. 2008 + * @version $Id$ + */ +public class MavenResourcesExecution +{ + + private List resources; + + private File outputDirectory; + + private MavenProject mavenProject; + + private String encoding; + + private List fileFilters; + + private List nonFilteredFileExtensions; + + private MavenSession mavenSession; + + private List filterWrappers; + + private File resourcesBaseDirectory; + + private boolean useDefaultFilterWrappers = false; + + + public MavenResourcesExecution() + { + // nothing here just add an empty constructor for java bean convention + } + + /** + * <b>As we use a maven project useDefaultFilterWrappers will set to true</b> + * @param resources + * @param outputDirectory + * @param mavenProject + * @param encoding + * @param fileFilters + * @param nonFilteredFileExtensions + * @param mavenSession + */ + public MavenResourcesExecution( List resources, File outputDirectory, MavenProject mavenProject, String encoding, + List fileFilters, List nonFilteredFileExtensions, MavenSession mavenSession ) + { + this.resources = resources; + this.outputDirectory = outputDirectory; + this.mavenProject = mavenProject; + this.encoding = encoding; + this.fileFilters = fileFilters; + this.nonFilteredFileExtensions = nonFilteredFileExtensions; + this.mavenSession = mavenSession; + this.useDefaultFilterWrappers = true; + this.resourcesBaseDirectory = mavenProject.getBasedir(); + } + + public MavenResourcesExecution( List resources, File outputDirectory, String encoding, List filterWrappers, + File resourcesBaseDirectory, List nonFilteredFileExtensions ) + { + this.resources = resources; + this.outputDirectory = outputDirectory; + this.encoding = encoding; + this.filterWrappers = filterWrappers; + this.nonFilteredFileExtensions = nonFilteredFileExtensions; + this.resourcesBaseDirectory = resourcesBaseDirectory; + this.useDefaultFilterWrappers = false; + } + + public List getResources() + { + return resources; + } + + public void setResources( List resources ) + { + this.resources = resources; + } + + public File getOutputDirectory() + { + return outputDirectory; + } + + public void setOutputDirectory( File outputDirectory ) + { + this.outputDirectory = outputDirectory; + } + + public MavenProject getMavenProject() + { + return mavenProject; + } + + public void setMavenProject( MavenProject mavenProject ) + { + this.mavenProject = mavenProject; + } + + public String getEncoding() + { + return encoding; + } + + public void setEncoding( String encoding ) + { + this.encoding = encoding; + } + + public List getFileFilters() + { + return fileFilters; + } + + public void setFileFilters( List fileFilters ) + { + this.fileFilters = fileFilters; + } + + public List getNonFilteredFileExtensions() + { + return nonFilteredFileExtensions; + } + + public void setNonFilteredFileExtensions( List nonFilteredFileExtensions ) + { + this.nonFilteredFileExtensions = nonFilteredFileExtensions; + } + + public MavenSession getMavenSession() + { + return mavenSession; + } + + public void setMavenSession( MavenSession mavenSession ) + { + this.mavenSession = mavenSession; + } + + public List getFilterWrappers() + { + return filterWrappers; + } + + public void setFilterWrappers( List filterWrappers ) + { + this.filterWrappers = filterWrappers; + } + + public void addFilterWrapper( FilterWrapper filterWrapper ) + { + if ( this.filterWrappers == null ) + { + this.filterWrappers = new ArrayList(); + } + this.filterWrappers.add( filterWrapper ); + } + + public File getResourcesBaseDirectory() + { + return resourcesBaseDirectory; + } + + public void setResourcesBaseDirectory( File resourcesBaseDirectory ) + { + this.resourcesBaseDirectory = resourcesBaseDirectory; + } + + public boolean isUseDefaultFilterWrappers() + { + return useDefaultFilterWrappers; + } + + public void setUseDefaultFilterWrappers( boolean useDefaultFilterWrappers ) + { + this.useDefaultFilterWrappers = useDefaultFilterWrappers; + } + +} diff --git a/src/main/java/org/apache/maven/shared/filtering/MavenResourcesFiltering.java b/src/main/java/org/apache/maven/shared/filtering/MavenResourcesFiltering.java index 4e6998a..b2c55bd 100755 --- a/src/main/java/org/apache/maven/shared/filtering/MavenResourcesFiltering.java +++ b/src/main/java/org/apache/maven/shared/filtering/MavenResourcesFiltering.java @@ -72,4 +72,11 @@ public interface MavenResourcesFiltering * default List or in the user defined extension List) */ boolean filteredFileExtension( String fileName, List userNonFilteredFileExtensions ); + + /** + * @param mavenResourcesExecution + * @throws MavenFilteringException + */ + void filterResources( MavenResourcesExecution mavenResourcesExecution ) + throws MavenFilteringException; } diff --git a/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java b/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java index 383b27f..dcf3e14 100755 --- a/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java +++ b/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java @@ -28,7 +28,6 @@ import java.util.Collections; import java.util.List; import java.util.Properties; -import org.apache.maven.execution.MavenSession; import org.apache.maven.model.Resource; import org.codehaus.plexus.PlexusTestCase; import org.codehaus.plexus.util.FileUtils; @@ -58,8 +57,7 @@ public class DefaultMavenResourcesFilteringTest } outputDirectory.mkdirs(); } - - + public void testSimpleFiltering() throws Exception { @@ -77,8 +75,8 @@ public class DefaultMavenResourcesFilteringTest .getName() ); String unitFilesDir = getBasedir() + "/src/test/units-files/maven-resources-filtering"; - File initialImageFile = new File(unitFilesDir, "happy_duke.gif"); - + File initialImageFile = new File( unitFilesDir, "happy_duke.gif" ); + Resource resource = new Resource(); List resources = new ArrayList(); resources.add( resource ); @@ -86,38 +84,85 @@ public class DefaultMavenResourcesFilteringTest resource.setFiltering( true ); List filtersFile = new ArrayList(); - filtersFile.add( getBasedir() + "/src/test/units-files/maven-resources-filtering/empty-maven-resources-filtering.txt" ); - + filtersFile.add( getBasedir() + + "/src/test/units-files/maven-resources-filtering/empty-maven-resources-filtering.txt" ); + List nonFilteredFileExtensions = Collections.singletonList( "gif" ); - + mavenResourcesFiltering.filterResources( resources, outputDirectory, mavenProject, null, filtersFile, nonFilteredFileExtensions, new StubMavenSession() ); - + + assertFiltering( baseDir, initialImageFile ); + } + + public void testWithMavenResourcesExecution() + throws Exception + { + File baseDir = new File( "c:\\foo\\bar" ); + StubMavenProject mavenProject = new StubMavenProject( baseDir ); + mavenProject.setVersion( "1.0" ); + mavenProject.setGroupId( "org.apache" ); + mavenProject.setName( "test project" ); + + Properties projectProperties = new Properties(); + projectProperties.put( "foo", "bar" ); + projectProperties.put( "java.version", "zloug" ); + mavenProject.setProperties( projectProperties ); + MavenResourcesFiltering mavenResourcesFiltering = (MavenResourcesFiltering) lookup( MavenResourcesFiltering.class + .getName() ); + + String unitFilesDir = getBasedir() + "/src/test/units-files/maven-resources-filtering"; + File initialImageFile = new File( unitFilesDir, "happy_duke.gif" ); + + Resource resource = new Resource(); + List resources = new ArrayList(); + resources.add( resource ); + resource.setDirectory( unitFilesDir ); + resource.setFiltering( true ); + + List filtersFile = new ArrayList(); + filtersFile.add( getBasedir() + + "/src/test/units-files/maven-resources-filtering/empty-maven-resources-filtering.txt" ); + + List nonFilteredFileExtensions = Collections.singletonList( "gif" ); + MavenResourcesExecution mavenResourcesExecution = new MavenResourcesExecution( resources, outputDirectory, + mavenProject, null, filtersFile, + nonFilteredFileExtensions, + new StubMavenSession() ); + + mavenResourcesFiltering.filterResources( mavenResourcesExecution ); + assertFiltering( baseDir, initialImageFile ); + } + + private void assertFiltering( File baseDir, File initialImageFile ) + throws Exception + { assertEquals( 3, outputDirectory.listFiles().length ); - Properties result = PropertyUtils.loadPropertyFile( new File(outputDirectory, "empty-maven-resources-filtering.txt"), null ); - assertTrue (result.isEmpty()); - - result = PropertyUtils.loadPropertyFile( new File(outputDirectory, "maven-resources-filtering.txt"), null ); + Properties result = PropertyUtils.loadPropertyFile( new File( outputDirectory, + "empty-maven-resources-filtering.txt" ), null ); + assertTrue( result.isEmpty() ); + + result = PropertyUtils.loadPropertyFile( new File( outputDirectory, "maven-resources-filtering.txt" ), null ); assertFalse( result.isEmpty() ); - - assertEquals("1.0", result.get( "version" )); - assertEquals("org.apache", result.get( "groupId" )); - assertEquals("bar", result.get( "foo" )); + + assertEquals( "1.0", result.get( "version" ) ); + assertEquals( "org.apache", result.get( "groupId" ) ); + assertEquals( "bar", result.get( "foo" ) ); // FIXME this can fail with a windows path String base = result.getProperty( "base" ); - + assertEquals( "@@", result.getProperty( "emptyexpression" ) ); assertEquals( "${}", result.getProperty( "emptyexpression2" ) ); assertEquals( System.getProperty( "java.version" ), result.getProperty( "javaVersion" ) ); - + assertEquals( baseDir.toString(), result.get( "base" ) ); - - File imageFile = new File(outputDirectory, "happy_duke.gif"); + + File imageFile = new File( outputDirectory, "happy_duke.gif" ); assertTrue( imageFile.exists() ); //assertEquals( initialImageFile.length(), imageFile.length() ); - assertTrue(filesAreIdentical( initialImageFile, imageFile )); + assertTrue( filesAreIdentical( initialImageFile, imageFile ) ); } - + public void testaddingTokens() throws Exception { @@ -148,12 +193,12 @@ public class DefaultMavenResourcesFilteringTest + "/src/test/units-files/maven-resources-filtering/empty-maven-resources-filtering.txt" ); List nonFilteredFileExtensions = Collections.singletonList( "gif" ); - + MavenFileFilter mavenFileFilter = (MavenFileFilter) lookup( MavenFileFilter.class.getName(), "default" ); List defaultFilterWrappers = mavenFileFilter.getDefaultFilterWrappers( mavenProject, null, true, new StubMavenSession() ); - List filterWrappers = new ArrayList( ); + List filterWrappers = new ArrayList(); filterWrappers.addAll( defaultFilterWrappers ); FileUtils.FilterWrapper filterWrapper = new FileUtils.FilterWrapper() { @@ -166,12 +211,13 @@ public class DefaultMavenResourcesFilteringTest filterWrappers.add( filterWrapper ); mavenResourcesFiltering.filterResources( resources, outputDirectory, null, filterWrappers, new File( getBasedir() ), nonFilteredFileExtensions ); - - Properties result = PropertyUtils.loadPropertyFile( new File(outputDirectory, "maven-resources-filtering.txt"), null ); + + Properties result = PropertyUtils + .loadPropertyFile( new File( outputDirectory, "maven-resources-filtering.txt" ), null ); assertFalse( result.isEmpty() ); assertEquals( mavenProject.getName(), result.get( "pomName" ) ); } - + public void testNoFiltering() throws Exception { @@ -183,12 +229,12 @@ public class DefaultMavenResourcesFilteringTest .getName() ); String unitFilesDir = getBasedir() + "/src/test/units-files/maven-resources-filtering"; - File initialImageFile = new File(unitFilesDir, "happy_duke.gif"); - + File initialImageFile = new File( unitFilesDir, "happy_duke.gif" ); + Resource resource = new Resource(); List resources = new ArrayList(); resources.add( resource ); - + resource.setDirectory( unitFilesDir ); resource.setFiltering( false ); mavenResourcesFiltering.filterResources( resources, outputDirectory, mavenProject, null, null, @@ -207,10 +253,10 @@ public class DefaultMavenResourcesFilteringTest assertEquals( "${foo}", result.get( "foo" ) ); assertEquals( "@@", result.getProperty( "emptyexpression" ) ); assertEquals( "${}", result.getProperty( "emptyexpression2" ) ); - File imageFile = new File(outputDirectory, "happy_duke.gif"); - assertTrue(filesAreIdentical( initialImageFile, imageFile )); - } - + File imageFile = new File( outputDirectory, "happy_duke.gif" ); + assertTrue( filesAreIdentical( initialImageFile, imageFile ) ); + } + public static boolean filesAreIdentical( File expected, File current ) throws IOException { @@ -223,15 +269,15 @@ public class DefaultMavenResourcesFilteringTest try { byte[] expectedBuffer = IOUtil.toByteArray( expectedIn ); - + byte[] currentBuffer = IOUtil.toByteArray( currentIn ); - if (expectedBuffer.length != currentBuffer.length) + if ( expectedBuffer.length != currentBuffer.length ) { return false; } - for (int i = 0,size = expectedBuffer.length;i<size;i++) + for ( int i = 0, size = expectedBuffer.length; i < size; i++ ) { - if(expectedBuffer[i]!= currentBuffer[i]) + if ( expectedBuffer[i] != currentBuffer[i] ) { return false; } @@ -245,5 +291,4 @@ public class DefaultMavenResourcesFilteringTest return true; } - }
