You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ol...@apache.org on 2008/09/13 23:33:07 UTC

svn commit: r695031 - in /maven/shared/trunk/maven-filtering/src: main/java/org/apache/maven/shared/filtering/ site/apt/ test/java/org/apache/maven/shared/filtering/ test/units-files/

Author: olamy
Date: Sat Sep 13 14:33:06 2008
New Revision: 695031

URL: http://svn.apache.org/viewvc?rev=695031&view=rev
Log:
[MSHARED-67] Add a parameter to force overwrite existing files even if the destination files are newer


Added:
    maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/DefaultMavenFileFilterTest.java   (with props)
    maven/shared/trunk/maven-filtering/src/test/units-files/reflection-test-older.properties   (with props)
Modified:
    maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java
    maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFiltering.java
    maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenFileFilter.java
    maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenResourcesExecution.java
    maven/shared/trunk/maven-filtering/src/site/apt/index.apt

Modified: maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java?rev=695031&r1=695030&r2=695031&view=diff
==============================================================================
--- maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java (original)
+++ maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java Sat Sep 13 14:33:06 2008
@@ -61,7 +61,15 @@
     public void copyFile( File from, File to, boolean filtering, List filterWrappers, String encoding )
         throws MavenFilteringException
     {
-        
+        // overwrite forced to false to preserve backward comp
+        copyFile( from, to, filtering, filterWrappers, encoding, false );
+    }
+
+    
+    
+    public void copyFile( File from, File to, boolean filtering, List filterWrappers, String encoding, boolean overwrite )
+        throws MavenFilteringException
+    {
         try
         {
             if ( filtering )
@@ -80,14 +88,14 @@
                 {
                     getLogger().debug( "copy " + from.getPath() + " to " + to.getPath() );
                 }
-                FileUtils.copyFile( from, to, encoding, new FileUtils.FilterWrapper[0] );
+                FileUtils.copyFile( from, to, encoding, new FileUtils.FilterWrapper[0], overwrite );
             }
         }
         catch ( IOException e )
         {
             throw new MavenFilteringException( e.getMessage(), e );
         }
-
+        
     }
 
     /** 

Modified: maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFiltering.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFiltering.java?rev=695031&r1=695030&r2=695031&view=diff
==============================================================================
--- maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFiltering.java (original)
+++ maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFiltering.java Sat Sep 13 14:33:06 2008
@@ -257,7 +257,7 @@
                 
                 mavenFileFilter.copyFile( source, destinationFile, resource.isFiltering() && filteredExt,
                                           mavenResourcesExecution.getFilterWrappers(), mavenResourcesExecution
-                                              .getEncoding() );
+                                              .getEncoding(), mavenResourcesExecution.isOverwrite() );
             }
         }
 

Modified: maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenFileFilter.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenFileFilter.java?rev=695031&r1=695030&r2=695031&view=diff
==============================================================================
--- maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenFileFilter.java (original)
+++ maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenFileFilter.java Sat Sep 13 14:33:06 2008
@@ -57,6 +57,20 @@
     void copyFile( File from, final File to, boolean filtering, List filterWrappers, String encoding )
         throws MavenFilteringException;
 
+    
+    /**
+     * @param from
+     * @param to
+     * @param filtering
+     * @param filterWrappers
+     * @param encoding
+     * @param overwrite 
+     * @since 1.0-beta-2
+     * @throws MavenFilteringException
+     */
+    void copyFile( File from, final File to, boolean filtering, List filterWrappers, String encoding, boolean overwrite )
+        throws MavenFilteringException;    
+    
     /**
      * 
      * Will return the default FileUtils.FilterWrappers

Modified: maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenResourcesExecution.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenResourcesExecution.java?rev=695031&r1=695030&r2=695031&view=diff
==============================================================================
--- maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenResourcesExecution.java (original)
+++ maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenResourcesExecution.java Sat Sep 13 14:33:06 2008
@@ -66,15 +66,22 @@
     /** 
      * List of String considered as expressions which contains values in the project/pom : pom project
      * default value will be pom and project.
-     * 
+     * @since 1.0-beta-2
      */
     private List projectStartExpressions = new ArrayList();
     
     /**
      * String which will escape interpolation mechanism : foo \${foo.bar} -> foo ${foo.bar}
+     * @since 1.0-beta-2
      */
     private String escapeString;
     
+    /**
+     * Overwrite existing files even if the destination files are newer.
+     * <b>false by default</b>
+     * @since 1.0-beta-2
+     */
+    private boolean overwrite = false;
     
     public MavenResourcesExecution()
     {
@@ -325,24 +332,58 @@
         this.useDefaultFilterWrappers = useDefaultFilterWrappers;
     }
 
+    /**
+     * @return
+     * @since 1.0-beta-2
+     */
     public List getProjectStartExpressions()
     {
         return projectStartExpressions;
     }
 
+    /**
+     * @param projectStartExpressions
+     * @since 1.0-beta-2
+     */
     public void setProjectStartExpressions( List projectStartExpressions )
     {
         this.projectStartExpressions = projectStartExpressions;
     }
 
+    /**
+     * @return
+     * @since 1.0-beta-2
+     */
     public String getEscapeString()
     {
         return escapeString;
     }
 
+    /**
+     * @param escapeString
+     * @since 1.0-beta-2
+     */
     public void setEscapeString( String escapeString )
     {
         this.escapeString = escapeString;
     }
+
+    /**
+     * @return
+     * @since 1.0-beta-2
+     */
+    public boolean isOverwrite()
+    {
+        return overwrite;
+    }
+
+    /**
+     * @param overwrite
+     * @since 1.0-beta-2
+     */
+    public void setOverwrite( boolean overwrite )
+    {
+        this.overwrite = overwrite;
+    }
    
 }

Modified: maven/shared/trunk/maven-filtering/src/site/apt/index.apt
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/site/apt/index.apt?rev=695031&r1=695030&r2=695031&view=diff
==============================================================================
--- maven/shared/trunk/maven-filtering/src/site/apt/index.apt (original)
+++ maven/shared/trunk/maven-filtering/src/site/apt/index.apt Sat Sep 13 14:33:06 2008
@@ -28,6 +28,10 @@
   These Plexus components have been built from the filtering process/code in Maven Resources Plugin.
 
   The goal is to provide a shared component for all plugins which needs to filter resources.
+  
+* What's New in 1.0-beta-2
+
+  TO WRITE
 
 * MavenResourcesFiltering
 

Added: maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/DefaultMavenFileFilterTest.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/DefaultMavenFileFilterTest.java?rev=695031&view=auto
==============================================================================
--- maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/DefaultMavenFileFilterTest.java (added)
+++ maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/DefaultMavenFileFilterTest.java Sat Sep 13 14:33:06 2008
@@ -0,0 +1,94 @@
+package org.apache.maven.shared.filtering;
+
+import java.io.File;
+import java.util.Properties;
+
+import org.codehaus.plexus.PlexusTestCase;
+import org.codehaus.plexus.util.FileUtils;
+
+/*
+ * 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.
+ */
+
+/**
+ * @author <a href="mailto:olamy@apache.org">olamy</a>
+ * @version $Id$
+ */
+public class DefaultMavenFileFilterTest
+    extends PlexusTestCase
+{
+    
+    File to = new File(getBasedir(), "target/reflection-test.properties");
+    
+    protected void setUp()
+        throws Exception
+    {
+        super.setUp();
+        if (to.exists())
+        {
+            FileUtils.forceDelete( to );
+        }
+    }
+
+    public void testNotOverwriteFile()
+        throws Exception
+    {
+        MavenFileFilter mavenFileFilter = (MavenFileFilter) lookup( MavenFileFilter.class.getName(), "default" );
+
+        File from = new File( getBasedir(), "src/test/units-files/reflection-test.properties" );
+
+        mavenFileFilter.copyFile( from, to, false, null, null );
+
+        from = new File( getBasedir(), "src/test/units-files/reflection-test-older.properties" );
+
+        // very old file :-)
+        from.setLastModified( 1 );
+
+        to.setLastModified( System.currentTimeMillis() );
+
+        mavenFileFilter.copyFile( from, to, false, null, null );
+
+        Properties properties = PropertyUtils.loadPropertyFile( to, null );
+        assertEquals( "${pom.version}", properties.getProperty( "version" ) );
+
+    }
+    
+    public void testOverwriteFile()
+        throws Exception
+    {
+        MavenFileFilter mavenFileFilter = (MavenFileFilter) lookup( MavenFileFilter.class.getName(), "default" );
+
+        File from = new File( getBasedir(), "src/test/units-files/reflection-test.properties" );
+
+        mavenFileFilter.copyFile( from, to, false, null, null );
+
+        from = new File( getBasedir(), "src/test/units-files/reflection-test-older.properties" );
+
+        // very old file :-)
+        from.setLastModified( 1 );
+
+        to.setLastModified( System.currentTimeMillis() );
+
+        mavenFileFilter.copyFile( from, to, false, null, null, true );
+
+        Properties properties = PropertyUtils.loadPropertyFile( to, null );
+        assertEquals( "older file", properties.getProperty( "version" ) );
+
+    }    
+
+}

Propchange: maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/DefaultMavenFileFilterTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/DefaultMavenFileFilterTest.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Revision Id

Added: maven/shared/trunk/maven-filtering/src/test/units-files/reflection-test-older.properties
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/test/units-files/reflection-test-older.properties?rev=695031&view=auto
==============================================================================
--- maven/shared/trunk/maven-filtering/src/test/units-files/reflection-test-older.properties (added)
+++ maven/shared/trunk/maven-filtering/src/test/units-files/reflection-test-older.properties Sat Sep 13 14:33:06 2008
@@ -0,0 +1,19 @@
+#/*
+# * 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.
+# */
+version=older file
\ No newline at end of file

Propchange: maven/shared/trunk/maven-filtering/src/test/units-files/reflection-test-older.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/shared/trunk/maven-filtering/src/test/units-files/reflection-test-older.properties
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"