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;
     }
 
-
 }