You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by br...@apache.org on 2007/11/03 07:04:08 UTC

svn commit: r591556 - in /maven/plugins/trunk/maven-assembly-plugin/src: main/java/org/apache/maven/plugin/assembly/archive/task/ main/java/org/apache/maven/plugin/assembly/format/ test/java/org/apache/maven/plugin/assembly/format/

Author: brett
Date: Fri Nov  2 23:04:07 2007
New Revision: 591556

URL: http://svn.apache.org/viewvc?rev=591556&view=rev
Log:
add runtime deletion of temporary files. Add deletion safeguards on tests, though the tearDown method should take care of it already, because there are some being left behind on the CI machine

Modified:
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTask.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/format/FileSetFormatter.java
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/format/FileSetFormatterTest.java

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTask.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTask.java?rev=591556&r1=591555&r2=591556&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTask.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTask.java Fri Nov  2 23:04:07 2007
@@ -1,10 +1,5 @@
 package org.apache.maven.plugin.assembly.archive.task;
 
-import java.io.File;
-import java.io.IOException;
-import java.util.Iterator;
-import java.util.List;
-
 import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
 import org.apache.maven.plugin.assembly.archive.ArchiveCreationException;
 import org.apache.maven.plugin.assembly.format.AssemblyFormattingException;
@@ -16,6 +11,12 @@
 import org.codehaus.plexus.archiver.Archiver;
 import org.codehaus.plexus.logging.Logger;
 import org.codehaus.plexus.logging.console.ConsoleLogger;
+import org.codehaus.plexus.util.FileUtils;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Iterator;
+import java.util.List;
 
 public class AddFileSetsTask
     implements ArchiverTask
@@ -105,6 +106,7 @@
 
         if ( fileSetDir.exists() )
         {
+            File origFileSetDir = fileSetDir;
             try
             {
                 fileSetDir = fileSetFormatter.formatFileSetForAssembly( fileSetDir, fileSet );
@@ -117,18 +119,36 @@
 
             logger.debug( "Adding file-set from directory: '" + fileSetDir.getAbsolutePath() + "'\nassembly output directory is: \'" + destDirectory + "\'" );
 
-            AddDirectoryTask task = new AddDirectoryTask( fileSetDir );
+            try
+            {
+                AddDirectoryTask task = new AddDirectoryTask( fileSetDir );
 
-            task.setDirectoryMode( TypeConversionUtils.modeToInt( fileSet.getDirectoryMode(), logger ) );
-            task.setFileMode( TypeConversionUtils.modeToInt( fileSet.getFileMode(), logger ) );
-            task.setUseDefaultExcludes( fileSet.isUseDefaultExcludes() );
-            List excludes = fileSet.getExcludes();
-            excludes.add( "**/*.filtered" );
-            task.setExcludes( excludes );
-            task.setIncludes( fileSet.getIncludes() );
-            task.setOutputDirectory( destDirectory );
+                task.setDirectoryMode( TypeConversionUtils.modeToInt( fileSet.getDirectoryMode(), logger ) );
+                task.setFileMode( TypeConversionUtils.modeToInt( fileSet.getFileMode(), logger ) );
+                task.setUseDefaultExcludes( fileSet.isUseDefaultExcludes() );
+                List excludes = fileSet.getExcludes();
+                excludes.add( "**/*.filtered" );
+                task.setExcludes( excludes );
+                task.setIncludes( fileSet.getIncludes() );
+                task.setOutputDirectory( destDirectory );
 
-            task.execute( archiver, configSource );
+                task.execute( archiver, configSource );
+            }
+            finally
+            {
+                try
+                {
+                    if ( !fileSetDir.equals( origFileSetDir ) )
+                    {
+                        FileUtils.deleteDirectory( fileSetDir );
+                    }
+                }
+                catch ( IOException e )
+                {
+                    // ignore - we've just left something in the temporary directory
+                    logger.warn( "Unable to delete temporary directory: " + fileSetDir + ": " + e.getMessage() );
+                }
+            }
         }
     }
 

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/format/FileSetFormatter.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/format/FileSetFormatter.java?rev=591556&r1=591555&r2=591556&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/format/FileSetFormatter.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/format/FileSetFormatter.java Fri Nov  2 23:04:07 2007
@@ -1,8 +1,5 @@
 package org.apache.maven.plugin.assembly.format;
 
-import java.io.File;
-import java.io.IOException;
-
 import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
 import org.apache.maven.plugin.assembly.utils.AssemblyFileUtils;
 import org.apache.maven.shared.model.fileset.FileSet;
@@ -10,6 +7,9 @@
 import org.codehaus.plexus.logging.Logger;
 import org.codehaus.plexus.util.FileUtils;
 
+import java.io.File;
+import java.io.IOException;
+
 public class FileSetFormatter
 {
 
@@ -26,8 +26,6 @@
     public File formatFileSetForAssembly( File archiveBaseDir, org.apache.maven.plugin.assembly.model.FileSet set )
         throws AssemblyFormattingException, IOException
     {
-        File formattedDir = archiveBaseDir;
-
         String lineEndingHint = set.getLineEnding();
 
         String lineEnding = AssemblyFileUtils.getLineEndingCharacters( lineEndingHint );
@@ -40,11 +38,6 @@
             fileSet.setDirectory( set.getDirectory() );
             fileSet.setIncludes( set.getIncludes() );
 
-            formattedDir = FileUtils.createTempFile( "fileSetFormatter.", ".tmp", configSource.getTemporaryRootDirectory() );
-
-            formattedDir.delete();
-            formattedDir.mkdirs();
-
             fileSet.setExcludes( set.getExcludes() );
             fileSet.setUseDefaultExcludes( true );
 
@@ -55,28 +48,58 @@
             if ( ( files == null ) || ( files.length == 0 ) )
             {
                 logger.info( "No files selected for line-ending conversion. Skipping: " + fileSet.getDirectory() );
-
-                formattedDir.delete();
-
-                return archiveBaseDir;
             }
-
-            FileFormatter fileFormatter = new FileFormatter( configSource, logger );
-            for ( int i = 0; i < files.length; i++ )
+            else
             {
-                String file = files[i];
-
-                File targetFile = new File( formattedDir, file );
+                File formattedDir =
+                    FileUtils.createTempFile( "fileSetFormatter.", ".tmp", configSource.getTemporaryRootDirectory() );
 
-                targetFile.getParentFile().mkdirs();
+                formattedDir.delete();
+                formattedDir.mkdirs();
 
-                File sourceFile = new File( archiveBaseDir, file );
-                sourceFile = fileFormatter.format( sourceFile, set.isFiltered(), lineEndingHint, formattedDir );
-                AssemblyFileUtils.copyFile(sourceFile,targetFile);
+                FileFormatter fileFormatter = new FileFormatter( configSource, logger );
+                for ( int i = 0; i < files.length; i++ )
+                {
+                    String file = files[i];
+
+                    File targetFile = new File( formattedDir, file );
+
+                    targetFile.getParentFile().mkdirs();
+
+                    File sourceFile = new File( archiveBaseDir, file );
+                    try
+                    {
+                        sourceFile = fileFormatter.format( sourceFile, set.isFiltered(), lineEndingHint, formattedDir );
+                        AssemblyFileUtils.copyFile( sourceFile, targetFile );
+                    }
+                    catch ( AssemblyFormattingException e )
+                    {
+                        deleteDirectory( formattedDir );
+                        throw e;
+                    }
+                    catch ( IOException e )
+                    {
+                        deleteDirectory( formattedDir );
+                        throw e;
+                    }
+                }
+                return formattedDir;
             }
         }
 
-        return formattedDir;
+        return archiveBaseDir;
+    }
+
+    private static void deleteDirectory( File formattedDir )
+    {
+        try
+                        {
+                            FileUtils.deleteDirectory( formattedDir );
+        }
+        catch ( IOException e1 )
+        {
+            // ignore
+        }
     }
 
 }

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/format/FileSetFormatterTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/format/FileSetFormatterTest.java?rev=591556&r1=591555&r2=591556&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/format/FileSetFormatterTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/format/FileSetFormatterTest.java Fri Nov  2 23:04:07 2007
@@ -1,12 +1,6 @@
 package org.apache.maven.plugin.assembly.format;
 
-import java.io.File;
-import java.io.IOException;
-import java.util.Collections;
-import java.util.List;
-
 import junit.framework.TestCase;
-
 import org.apache.maven.model.Model;
 import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
 import org.apache.maven.plugin.assembly.model.FileSet;
@@ -16,8 +10,14 @@
 import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.logging.Logger;
 import org.codehaus.plexus.logging.console.ConsoleLogger;
+import org.codehaus.plexus.util.FileUtils;
 import org.easymock.MockControl;
 
+import java.io.File;
+import java.io.IOException;
+import java.util.Collections;
+import java.util.List;
+
 public class FileSetFormatterTest
     extends TestCase
 {
@@ -122,8 +122,15 @@
 
         assertFalse( dir.equals( result ) );
 
-        fileManager.assertFileContents( result, filename1, "Hello\r\nThis is a test.\r\n" );
-        fileManager.assertFileContents( result, filename2, "Hello\r\nThis is also a test.\r\n" );
+        try
+        {
+            fileManager.assertFileContents( result, filename1, "Hello\r\nThis is a test.\r\n" );
+            fileManager.assertFileContents( result, filename2, "Hello\r\nThis is also a test.\r\n" );
+        }
+        finally
+        {
+            FileUtils.deleteDirectory( result );
+        }
     }
 
     public void testShouldConvertLineEndingsOnOneFileWithAnotherExplicitlyExcluded()
@@ -149,8 +156,15 @@
 
         assertFalse( dir.equals( result ) );
 
-        fileManager.assertFileContents( result, filename1, "Hello\r\nThis is a test.\r\n" );
-        fileManager.assertFileExistence( result, filename2, false );
+        try
+        {
+            fileManager.assertFileContents( result, filename1, "Hello\r\nThis is a test.\r\n" );
+            fileManager.assertFileExistence( result, filename2, false );
+        }
+        finally
+        {
+            FileUtils.deleteDirectory( result );
+        }
     }
 
     public void testShouldConvertLineEndingsOnOneExplicitlyIncludedFile()
@@ -175,9 +189,15 @@
         File result = formatter.formatFileSetForAssembly( dir, fs );
 
         assertFalse( dir.equals( result ) );
-
-        fileManager.assertFileContents( result, filename1, "Hello\r\nThis is a test.\r\n" );
-        fileManager.assertFileExistence( result, filename2, false );
+        try
+        {
+            fileManager.assertFileContents( result, filename1, "Hello\r\nThis is a test.\r\n" );
+            fileManager.assertFileExistence( result, filename2, false );
+        }
+        finally
+        {
+            FileUtils.deleteDirectory( result );
+        }
     }
 
     public void testShouldConvertLineEndingsOnOneFileAndIgnoreFileWithinDefaultExcludedDir()
@@ -202,11 +222,19 @@
 
         assertFalse( dir.equals( result ) );
 
-        fileManager.assertFileContents( result, filename1, "Hello\r\nThis is a test.\r\n" );
-        fileManager.assertFileExistence( result, filename2, false );
+        try
+        {
+            fileManager.assertFileContents( result, filename1, "Hello\r\nThis is a test.\r\n" );
+            fileManager.assertFileExistence( result, filename2, false );
+        }
+        finally
+        {
+            FileUtils.deleteDirectory( result );
+        }
     }
 
-    public void testShouldFilterSeveralFiles() throws IOException, AssemblyFormattingException
+    public void testShouldFilterSeveralFiles()
+        throws IOException, AssemblyFormattingException
     {
         File basedir = fileManager.createTempDir();
 
@@ -231,10 +259,19 @@
         FileSetFormatter formatter = new FileSetFormatter( configSource, logger );
         File result = formatter.formatFileSetForAssembly( basedir, fs );
 
-        fileManager.assertFileContents( result, filename1, "This is the filtered artifactId: artifact." );
-        fileManager.assertFileContents( result, filename2, "This is the filtered 'foo' property: bar." );
+        assertFalse( result.equals( basedir ) );
 
-        mockManager.verifyAll();
+        try
+        {
+            fileManager.assertFileContents( result, filename1, "This is the filtered artifactId: artifact." );
+            fileManager.assertFileContents( result, filename2, "This is the filtered 'foo' property: bar." );
+
+            mockManager.verifyAll();
+        }
+        finally
+        {
+            FileUtils.deleteDirectory( result );
+        }
     }
 
     private void enableBasicFilteringConfiguration( File basedir, List filterFilenames )