You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by kr...@apache.org on 2014/10/27 22:03:50 UTC

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

Author: krosenvold
Date: Mon Oct 27 21:03:49 2014
New Revision: 1634686

URL: http://svn.apache.org/r1634686
Log:
Refactored code slightly

Modified:
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/archiver/AssemblyProxyArchiver.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddArtifactTask.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTask.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/format/ReaderFormatter.java
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddArtifactTaskTest.java
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddArtifactTask.java
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddDependencySetsTask.java

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/archiver/AssemblyProxyArchiver.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/archiver/AssemblyProxyArchiver.java?rev=1634686&r1=1634685&r2=1634686&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/archiver/AssemblyProxyArchiver.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/archiver/AssemblyProxyArchiver.java Mon Oct 27 21:03:49 2014
@@ -801,7 +801,7 @@ public class AssemblyProxyArchiver
     public void addArchivedFileSet( final ArchivedFileSet fileSet )
         throws ArchiverException
     {
-        final String archiveKey = getArchiveKey( fileSet.getArchive(), "" );
+        final String archiveKey = getArchiveKey( fileSet.getArchive(), fileSet.getPrefix() );
         if ( seenPaths.contains( archiveKey ) )
         {
             warn( "Archive: " + fileSet.getArchive() + " has already been added. Skipping." );

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddArtifactTask.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddArtifactTask.java?rev=1634686&r1=1634685&r2=1634686&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddArtifactTask.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddArtifactTask.java Mon Oct 27 21:03:49 2014
@@ -28,6 +28,9 @@ import org.apache.maven.plugin.assembly.
 import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.archiver.Archiver;
 import org.codehaus.plexus.archiver.ArchiverException;
+import org.codehaus.plexus.archiver.util.DefaultArchivedFileSet;
+import org.codehaus.plexus.archiver.util.DefaultFileSet;
+import org.codehaus.plexus.components.io.functions.InputStreamTransformer;
 import org.codehaus.plexus.logging.Logger;
 import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.StringUtils;
@@ -67,11 +70,18 @@ public class AddArtifactTask
     private String outputFileNameMapping;
 
     private final Logger logger;
+    private final InputStreamTransformer transformer;
 
-    public AddArtifactTask( final Artifact artifact, final Logger logger )
+    public AddArtifactTask( final Artifact artifact, final Logger logger,  InputStreamTransformer transformer )
     {
         this.artifact = artifact;
         this.logger = logger;
+        this.transformer = transformer;
+    }
+
+    public AddArtifactTask( final Artifact artifact, final Logger logger )
+    {
+        this(artifact, logger, null);
     }
 
     public void execute( final Archiver archiver, final AssemblerConfigurationSource configSource )
@@ -79,28 +89,10 @@ public class AddArtifactTask
     {
         // MASSEMBLY-282: We should support adding a project's standard output file as part of an assembly that replaces
         // it.
-        if ( ( ( artifact.getFile() != null ) && ( archiver.getDestFile() != null ) )
-                        && artifact.getFile()
-                                   .equals( archiver.getDestFile() ) )
+        if (artifactIsArchiverDestination(archiver))
         {
-            final File tempRoot = configSource.getTemporaryRootDirectory();
-            final File tempArtifactFile = new File( tempRoot, artifact.getFile()
-                                                                      .getName() );
-
-            logger.warn( "Artifact: "
-                            + artifact.getId()
-                            + " references the same file as the assembly destination file. Moving it to a temporary location for inclusion." );
-            try
-            {
-                FileUtils.copyFile( artifact.getFile(), tempArtifactFile );
-            }
-            catch ( final IOException e )
-            {
-                throw new ArchiveCreationException( "Error moving artifact file: '" + artifact.getFile()
-                                + "' to temporary location: " + tempArtifactFile + ". Reason: " + e.getMessage(), e );
-            }
 
-            artifact.setFile( tempArtifactFile );
+            artifact.setFile(moveArtifactSomewhereElse(configSource));
         }
 
         String destDirectory = outputDirectory;
@@ -156,7 +148,13 @@ public class AddArtifactTask
                 else if ( artifactFile.isDirectory() )
                 {
                     logger.debug( "Adding artifact directory contents for: " + artifact + " to: " + outputLocation );
-                    archiver.addDirectory( artifactFile, outputLocation, includesArray, excludesArray );
+
+                    DefaultFileSet fs = DefaultFileSet.fileSet( artifactFile);
+                    fs.setIncludes(includesArray);
+                    fs.setExcludes(excludesArray);
+                    fs.setPrefix( outputLocation);
+//                    fs.setStreamTransformer(transformer);
+                    archiver.addFileSet(fs);
                 }
                 else
                 {
@@ -165,7 +163,12 @@ public class AddArtifactTask
                     logger.debug( "excludes:\n"
                                     + ( excludesArray == null ? "none" : StringUtils.join( excludesArray, "\n" ) )
                                     + "\n" );
-                    archiver.addArchivedFileSet( artifactFile, outputLocation, includesArray, excludesArray );
+                    DefaultArchivedFileSet afs = DefaultArchivedFileSet.archivedFileSet(artifactFile);
+                    afs.setIncludes(includesArray);
+                    afs.setExcludes(excludesArray);
+                    afs.setPrefix(outputLocation);
+                    //afs.setStreamTransformer(transformer);
+                    archiver.addArchivedFileSet( afs );
                 }
             }
             catch ( final ArchiverException e )
@@ -219,6 +222,32 @@ public class AddArtifactTask
         }
     }
 
+    private File moveArtifactSomewhereElse(AssemblerConfigurationSource configSource) throws ArchiveCreationException {
+        final File tempRoot = configSource.getTemporaryRootDirectory();
+        final File tempArtifactFile = new File( tempRoot, artifact.getFile()
+                                                                  .getName() );
+
+        logger.warn( "Artifact: "
+                        + artifact.getId()
+                        + " references the same file as the assembly destination file. Moving it to a temporary location for inclusion." );
+        try
+        {
+            FileUtils.copyFile(artifact.getFile(), tempArtifactFile);
+        }
+        catch ( final IOException e )
+        {
+            throw new ArchiveCreationException( "Error moving artifact file: '" + artifact.getFile()
+                            + "' to temporary location: " + tempArtifactFile + ". Reason: " + e.getMessage(), e );
+        }
+        return tempArtifactFile;
+    }
+
+    private boolean artifactIsArchiverDestination(Archiver archiver) {
+        return ( ( artifact.getFile() != null ) && ( archiver.getDestFile() != null ) )
+                        && artifact.getFile()
+                                   .equals( archiver.getDestFile() );
+    }
+
     public void setDirectoryMode( final int directoryMode )
     {
         this.directoryMode = directoryMode;

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTask.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTask.java?rev=1634686&r1=1634685&r2=1634686&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTask.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTask.java Mon Oct 27 21:03:49 2014
@@ -33,6 +33,7 @@ import org.apache.maven.plugin.assembly.
 import org.apache.maven.plugin.assembly.InvalidAssemblerConfigurationException;
 import org.apache.maven.plugin.assembly.archive.ArchiveCreationException;
 import org.apache.maven.plugin.assembly.format.AssemblyFormattingException;
+import org.apache.maven.plugin.assembly.format.ReaderFormatter;
 import org.apache.maven.plugin.assembly.model.DependencySet;
 import org.apache.maven.plugin.assembly.model.FileSet;
 import org.apache.maven.plugin.assembly.model.UnpackOptions;
@@ -48,6 +49,7 @@ import org.codehaus.plexus.archiver.Arch
 import org.codehaus.plexus.archiver.UnArchiver;
 import org.codehaus.plexus.archiver.manager.ArchiverManager;
 import org.codehaus.plexus.archiver.manager.NoSuchArchiverException;
+import org.codehaus.plexus.components.io.functions.InputStreamTransformer;
 import org.codehaus.plexus.logging.Logger;
 
 /**
@@ -145,6 +147,8 @@ public class AddDependencySetsTask
         {
             checkMultiArtifactOutputConfig( dependencySet );
         }
+        InputStreamTransformer transformer = dependencySet.isUnpack() && opts != null ? ReaderFormatter.getFileSetTransformers(configSource, opts.isFiltered(),
+                opts.getLineEnding()) : null;
 
         logger.debug( "Adding " + dependencyArtifacts.size() + " dependency artifacts." );
 
@@ -177,7 +181,7 @@ public class AddDependencySetsTask
                 }
                 else
                 {
-                    addNormalArtifact( dependencySet, depArtifact, depProject, archiver, configSource );
+                    addNormalArtifact( dependencySet, depArtifact, depProject, archiver, configSource, transformer );
                 }
             }
         }
@@ -278,6 +282,8 @@ public class AddDependencySetsTask
             outDir = defaultOutputDirectory;
         }
 
+        // TODO: MASSEMBLY-691 root cause is here!
+
         String filenameMapping = dependencySet.getOutputFileNameMapping();
         if ( filenameMapping == null )
         {
@@ -303,14 +309,14 @@ public class AddDependencySetsTask
         task.execute( archiver, configSource );
     }
 
-    private void addNormalArtifact( final DependencySet dependencySet, final Artifact depArtifact,
-                                    final MavenProject depProject, final Archiver archiver,
-                                    final AssemblerConfigurationSource configSource )
+    private void addNormalArtifact(final DependencySet dependencySet, final Artifact depArtifact,
+                                   final MavenProject depProject, final Archiver archiver,
+                                   final AssemblerConfigurationSource configSource, InputStreamTransformer transformer)
         throws AssemblyFormattingException, ArchiveCreationException
     {
         logger.debug( "Adding dependency artifact " + depArtifact.getId() + "." );
 
-        final AddArtifactTask task = new AddArtifactTask( depArtifact, logger );
+        final AddArtifactTask task = new AddArtifactTask( depArtifact, logger, transformer );
 
         task.setProject( depProject );
         task.setModuleProject( moduleProject );

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/format/ReaderFormatter.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/format/ReaderFormatter.java?rev=1634686&r1=1634685&r2=1634686&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/format/ReaderFormatter.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/format/ReaderFormatter.java Mon Oct 27 21:03:49 2014
@@ -30,6 +30,7 @@ import org.codehaus.plexus.components.io
 import org.codehaus.plexus.components.io.resources.PlexusIoResource;
 
 import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
@@ -86,7 +87,8 @@ public class ReaderFormatter
         }
     }
 
-    public static InputStreamTransformer getFileSetTransformers( final AssemblerConfigurationSource configSource, final boolean isFiltered, String fileSetLineEnding )
+    public static @Nullable
+    InputStreamTransformer getFileSetTransformers( final AssemblerConfigurationSource configSource, final boolean isFiltered, String fileSetLineEnding )
         throws AssemblyFormattingException
     {
         final String lineEndingHint = fileSetLineEnding;

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddArtifactTaskTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddArtifactTaskTest.java?rev=1634686&r1=1634685&r2=1634686&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddArtifactTaskTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddArtifactTaskTest.java Mon Oct 27 21:03:49 2014
@@ -28,6 +28,7 @@ import org.apache.maven.plugin.assembly.
 import org.apache.maven.plugin.assembly.model.DependencySet;
 import org.apache.maven.plugin.assembly.utils.TypeConversionUtils;
 import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.archiver.ArchivedFileSet;
 import org.codehaus.plexus.archiver.ArchiverException;
 import org.codehaus.plexus.logging.Logger;
 import org.codehaus.plexus.logging.console.ConsoleLogger;
@@ -39,6 +40,8 @@ import java.util.Arrays;
 import junit.framework.TestCase;
 import org.easymock.classextension.EasyMockSupport;
 
+import static org.easymock.EasyMock.anyObject;
+
 public class AddArtifactTaskTest
     extends TestCase
 {
@@ -139,7 +142,8 @@ public class AddArtifactTaskTest
         mac.expectGetDestFile( new File( "junk" ) );
         try
         {
-            mac.archiver.addArchivedFileSet( artifactFile, outputLocation, AddArtifactTask.DEFAULT_INCLUDES_ARRAY, null );
+//            mac.archiver.addArchivedFileSet( artifactFile, outputLocation, AddArtifactTask.DEFAULT_INCLUDES_ARRAY, null );
+            mac.archiver.addArchivedFileSet((ArchivedFileSet) anyObject());
         }
         catch ( ArchiverException e )
         {
@@ -174,7 +178,7 @@ public class AddArtifactTaskTest
         mac.expectGetDestFile( new File( "junk" ) );
         try
         {
-            mac.archiver.addArchivedFileSet( artifactFile, outputLocation, AddArtifactTask.DEFAULT_INCLUDES_ARRAY, null );
+            mac.archiver.addArchivedFileSet((ArchivedFileSet) anyObject());
         }
         catch ( ArchiverException e )
         {

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddArtifactTask.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddArtifactTask.java?rev=1634686&r1=1634685&r2=1634686&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddArtifactTask.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddArtifactTask.java Mon Oct 27 21:03:49 2014
@@ -26,6 +26,7 @@ import junit.framework.Assert;
 
 import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
 import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.archiver.ArchivedFileSet;
 import org.codehaus.plexus.archiver.Archiver;
 import org.codehaus.plexus.archiver.ArchiverException;
 import org.easymock.EasyMock;
@@ -79,7 +80,10 @@ public class MockAndControlForAddArtifac
         try
         {
             archiver.addArchivedFileSet( (File)anyObject(), (String)anyObject(), (String[])anyObject(), (String[])anyObject() );
-            EasyMock.expectLastCall().atLeastOnce();
+            EasyMock.expectLastCall().anyTimes();
+            archiver.addArchivedFileSet((ArchivedFileSet) anyObject());
+            EasyMock.expectLastCall().anyTimes();
+
         }
         catch ( final ArchiverException e )
         {

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddDependencySetsTask.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddDependencySetsTask.java?rev=1634686&r1=1634685&r2=1634686&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddDependencySetsTask.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddDependencySetsTask.java Mon Oct 27 21:03:49 2014
@@ -31,8 +31,10 @@ import org.apache.maven.plugin.assembly.
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.MavenProjectBuilder;
 import org.apache.maven.project.ProjectBuildingException;
+import org.codehaus.plexus.archiver.ArchivedFileSet;
 import org.codehaus.plexus.archiver.Archiver;
 import org.codehaus.plexus.archiver.ArchiverException;
+import org.codehaus.plexus.archiver.FileSet;
 import org.codehaus.plexus.archiver.manager.ArchiverManager;
 import org.easymock.EasyMock;
 import org.easymock.classextension.EasyMockSupport;
@@ -82,11 +84,11 @@ public class MockAndControlForAddDepende
     {
         try
         {
-            archiver.addArchivedFileSet( (File)anyObject(), (String)anyObject(), (String[])anyObject(), (String[])anyObject() );
-
-                archiver.addArchivedFileSet( (File) anyObject(), (String) anyObject(), (String[]) anyObject(),
+            archiver.addArchivedFileSet( (File) anyObject(), (String) anyObject(), (String[]) anyObject(),
                                              (String[]) anyObject() );
             EasyMock.expectLastCall().anyTimes();
+            archiver.addArchivedFileSet( (ArchivedFileSet)anyObject() );
+            EasyMock.expectLastCall().anyTimes();
 
         }
         catch ( final ArchiverException e )