You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by hb...@apache.org on 2020/02/13 22:11:37 UTC
[maven-filtering] 27/44: add a bean to configure a filtering
execution request this will prevent having methods with dozens of
parameters
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 <ol...@apache.org>
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:olamy@apache.org">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;
}
-
}