Author: jdcasey
Date: Thu Jan 11 22:35:17 2007
New Revision: 495495

URL: http://svn.apache.org/viewvc?view=rev&rev=495495
Log:
[MASSEMBLY-161][MASSEMBLY-174] Wiring up jar archive configuration to the 
assembly creation process.

Added:
    maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/
    
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/
    
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/goals.txt
   (with props)
    
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/pom.xml
   (with props)
    
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/
    
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/main/
    
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/main/java/
    
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/main/java/test/
    
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/main/java/test/App.java
   (with props)
    
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/test/
    
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/test/java/
    
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/test/java/test/
    
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/test/java/test/AppTest.java
   (with props)
    
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/verify.bsh
    maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/
    
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/
    
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/goals.txt
   (with props)
    
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/pom.xml
   (with props)
    
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/
    
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/main/
    
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/main/java/
    
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/main/java/test/
    
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/main/java/test/App.java
   (with props)
    
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/test/
    
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/test/java/
    
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/test/java/test/
    
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/test/java/test/AppTest.java
   (with props)
    
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/verify.bsh
Modified:
    
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiver.java
    
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiverTest.java

Added: 
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/goals.txt
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/goals.txt?view=auto&rev=495495
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/goals.txt
 (added)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/goals.txt
 Thu Jan 11 22:35:17 2007
@@ -0,0 +1 @@
+package
\ No newline at end of file

Propchange: 
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/goals.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/goals.txt
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: 
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/pom.xml?view=auto&rev=495495
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/pom.xml
 (added)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/pom.xml
 Thu Jan 11 22:35:17 2007
@@ -0,0 +1,39 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>test</groupId>
+  <artifactId>jars-in-archive-root</artifactId>
+  <packaging>jar</packaging>
+  <version>1.0-SNAPSHOT</version>
+  <name>Maven Quick Start Archetype</name>
+  <url>http://maven.apache.org</url>
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>3.8.1</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        
<artifactId>maven-assembly-plugin</artifactId><version>testing</version>
+        <executions>
+          <execution>
+            <id>assembly</id>
+            <phase>package</phase>
+            <goals>
+              <goal>attached</goal>
+            </goals>
+            <configuration>
+              <descriptorRefs>
+                <descriptorRef>bin</descriptorRef>
+              </descriptorRefs>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>

Propchange: 
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/pom.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: 
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/main/java/test/App.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/main/java/test/App.java?view=auto&rev=495495
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/main/java/test/App.java
 (added)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/main/java/test/App.java
 Thu Jan 11 22:35:17 2007
@@ -0,0 +1,13 @@
+package test;
+
+/**
+ * Hello world!
+ *
+ */
+public class App 
+{
+    public static void main( String[] args )
+    {
+        System.out.println( "Hello World!" );
+    }
+}

Propchange: 
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/main/java/test/App.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/main/java/test/App.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: 
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/test/java/test/AppTest.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/test/java/test/AppTest.java?view=auto&rev=495495
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/test/java/test/AppTest.java
 (added)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/test/java/test/AppTest.java
 Thu Jan 11 22:35:17 2007
@@ -0,0 +1,38 @@
+package test;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Unit test for simple App.
+ */
+public class AppTest 
+    extends TestCase
+{
+    /**
+     * Create the test case
+     *
+     * @param testName name of the test case
+     */
+    public AppTest( String testName )
+    {
+        super( testName );
+    }
+
+    /**
+     * @return the suite of tests being tested
+     */
+    public static Test suite()
+    {
+        return new TestSuite( AppTest.class );
+    }
+
+    /**
+     * Rigourous Test :-)
+     */
+    public void testApp()
+    {
+        assertTrue( true );
+    }
+}

Propchange: 
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/test/java/test/AppTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/test/java/test/AppTest.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: 
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/verify.bsh
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/verify.bsh?view=auto&rev=495495
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/verify.bsh
 (added)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/verify.bsh
 Thu Jan 11 22:35:17 2007
@@ -0,0 +1,42 @@
+import java.io.*;
+import java.net.*;
+import java.util.zip.*;
+
+boolean result = true;
+
+String basename = "jars-in-archive-root-1.0-SNAPSHOT";
+
+try
+{
+    File zipFile = new File( basedir, "target/" + basename + "-bin.zip" );
+    
+    System.out.println( "Checking for existence and file-ishness of: " + 
zipFile );
+    
+    if ( !zipFile.exists() || zipFile.isDirectory() )
+    {
+        System.err.println( "zip file is missing or a directory." );
+        return false;
+    }
+    
+    System.out.println( "Creating zipFile instance." );
+    
+    ZipFile zf = new ZipFile( zipFile );
+    
+    System.out.println( "Looking for project-artifact jar zip entry." );
+    
+    ZipEntry je = zf.getEntry( basename + "/" + basename + ".jar" ); 
+
+    if ( je == null )
+    {
+        System.out.println( "project artifact is missing from archive root 
dir." );
+        result = false;
+    }
+   
+}
+catch( IOException e )
+{
+    e.printStackTrace( System.out );
+    result = false;
+}
+
+return result;

Added: 
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/goals.txt
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/goals.txt?view=auto&rev=495495
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/goals.txt
 (added)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/goals.txt
 Thu Jan 11 22:35:17 2007
@@ -0,0 +1 @@
+package
\ No newline at end of file

Propchange: 
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/goals.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/goals.txt
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: 
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/pom.xml?view=auto&rev=495495
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/pom.xml
 (added)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/pom.xml
 Thu Jan 11 22:35:17 2007
@@ -0,0 +1,44 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>test</groupId>
+  <artifactId>manifest-with-mainClass</artifactId>
+  <packaging>jar</packaging>
+  <version>1</version>
+  <name>Maven Quick Start Archetype</name>
+  <url>http://maven.apache.org</url>
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>3.8.1</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        
<artifactId>maven-assembly-plugin</artifactId><version>testing</version>
+        <executions>
+          <execution>
+            <id>assembly</id>
+            <phase>package</phase>
+            <goals>
+              <goal>attached</goal>
+            </goals>
+            <configuration>
+              <descriptorRefs>
+                <descriptorRef>jar-with-dependencies</descriptorRef>
+              </descriptorRefs>
+              <archive>
+                <manifest>
+                  <mainClass>test.App</mainClass>
+                </manifest>
+              </archive>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>

Propchange: 
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/pom.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: 
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/main/java/test/App.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/main/java/test/App.java?view=auto&rev=495495
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/main/java/test/App.java
 (added)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/main/java/test/App.java
 Thu Jan 11 22:35:17 2007
@@ -0,0 +1,13 @@
+package test;
+
+/**
+ * Hello world!
+ *
+ */
+public class App 
+{
+    public static void main( String[] args )
+    {
+        System.out.println( "Hello World!" );
+    }
+}

Propchange: 
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/main/java/test/App.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/main/java/test/App.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: 
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/test/java/test/AppTest.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/test/java/test/AppTest.java?view=auto&rev=495495
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/test/java/test/AppTest.java
 (added)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/test/java/test/AppTest.java
 Thu Jan 11 22:35:17 2007
@@ -0,0 +1,38 @@
+package test;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Unit test for simple App.
+ */
+public class AppTest 
+    extends TestCase
+{
+    /**
+     * Create the test case
+     *
+     * @param testName name of the test case
+     */
+    public AppTest( String testName )
+    {
+        super( testName );
+    }
+
+    /**
+     * @return the suite of tests being tested
+     */
+    public static Test suite()
+    {
+        return new TestSuite( AppTest.class );
+    }
+
+    /**
+     * Rigourous Test :-)
+     */
+    public void testApp()
+    {
+        assertTrue( true );
+    }
+}

Propchange: 
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/test/java/test/AppTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/test/java/test/AppTest.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: 
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/verify.bsh
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/verify.bsh?view=auto&rev=495495
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/verify.bsh
 (added)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/verify.bsh
 Thu Jan 11 22:35:17 2007
@@ -0,0 +1,20 @@
+import java.io.*;
+import java.util.jar.*;
+import java.util.*;
+import java.net.*;
+
+File file = new File( basedir, 
"target/manifest-with-mainClass-1-jar-with-dependencies.jar" );
+
+System.out.println( "file: " + file + " exists? " + file.exists() );
+
+JarFile jarFile = new JarFile( file );
+
+Manifest mf = jarFile.getManifest();
+
+Attributes attrs = mf.getMainAttributes();
+
+String mainClass = (String) attrs.get( Attributes.Name.MAIN_CLASS );
+
+System.out.println( "Got Main-Class: " + mainClass );
+
+return "test.App".equals( mainClass );

Modified: 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiver.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiver.java?view=diff&rev=495495&r1=495494&r2=495495
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiver.java
 (original)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiver.java
 Thu Jan 11 22:35:17 2007
@@ -26,7 +26,6 @@
 import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 
@@ -49,12 +48,12 @@
      * @plexus.requirement 
role="org.apache.maven.plugin.assembly.archive.phase.AssemblyArchiverPhase"
      */
     private List assemblyPhases;
-    
+
     public DefaultAssemblyArchiver()
     {
         // needed for plexus
     }
-    
+
     // introduced for testing.
     public DefaultAssemblyArchiver( ArchiverManager archiverManager, List 
assemblyPhases )
     {
@@ -67,9 +66,9 @@
         throws ArchiveCreationException, AssemblyFormattingException, 
InvalidAssemblerConfigurationException
     {
         String filename = fullName + "." + format;
-        
+
         AssemblyFileUtils.verifyTempDirectoryAvailability( 
configSource.getTemporaryRootDirectory(), getLogger() );
-        
+
         ComponentsXmlArchiverFileFilter componentsXmlFilter = new 
ComponentsXmlArchiverFileFilter();
 
         File outputDirectory = configSource.getOutputDirectory();
@@ -80,25 +79,27 @@
         {
             String finalName = configSource.getFinalName();
             String specifiedBasedir = assembly.getBaseDirectory();
-            
+
             String basedir = finalName;
-            
+
             if ( specifiedBasedir != null )
             {
-                basedir = AssemblyFormatUtils.getOutputDirectory( 
specifiedBasedir, configSource.getProject(), finalName );
+                basedir = AssemblyFormatUtils.getOutputDirectory( 
specifiedBasedir, configSource.getProject(),
+                                                                  finalName );
             }
-            
-            Archiver archiver = createArchiver( format, 
assembly.isIncludeBaseDirectory(), basedir, configSource.getTarLongFileMode(), 
componentsXmlFilter );
+
+            Archiver archiver = createArchiver( format, 
assembly.isIncludeBaseDirectory(), basedir, configSource,
+                                                componentsXmlFilter );
 
             for ( Iterator phaseIterator = assemblyPhases.iterator(); 
phaseIterator.hasNext(); )
             {
-                AssemblyArchiverPhase phase = ( AssemblyArchiverPhase ) 
phaseIterator.next();
+                AssemblyArchiverPhase phase = (AssemblyArchiverPhase) 
phaseIterator.next();
 
                 phase.execute( assembly, archiver, configSource );
             }
 
             archiver.setDestFile( destFile );
-            
+
             archiver.createArchive();
         }
         catch ( ArchiverException e )
@@ -123,25 +124,26 @@
      * @param format
      *            Archive format
      * @param includeBaseDir 
-     * @param tarLongFileMode
+     * @param configSource
      * @param finalName 
      * @param string 
      * @return archiver Archiver generated
      * @throws org.codehaus.plexus.archiver.ArchiverException
      * @throws org.codehaus.plexus.archiver.manager.NoSuchArchiverException
      */
-    protected Archiver createArchiver( String format, boolean includeBaseDir, 
String finalName, 
-                                       String tarLongFileMode, 
ComponentsXmlArchiverFileFilter componentsXmlFilter )
+    protected Archiver createArchiver( String format, boolean includeBaseDir, 
String finalName,
+                                       AssemblerConfigurationSource 
configSource,
+                                       ComponentsXmlArchiverFileFilter 
componentsXmlFilter )
         throws ArchiverException, NoSuchArchiverException
     {
         Archiver archiver;
         if ( format.startsWith( "tar" ) )
         {
-            archiver = createTarArchiver( format, tarLongFileMode );
+            archiver = createTarArchiver( format, 
configSource.getTarLongFileMode() );
         }
         else if ( "war".equals( format ) )
         {
-            archiver = createWarArchiver( );
+            archiver = createWarArchiver();
         }
         else
         {
@@ -150,8 +152,8 @@
 
         configureArchiverFilters( archiver, componentsXmlFilter );
 
-        configureArchiverFinalizers( archiver, componentsXmlFilter );
-        
+        configureArchiverFinalizers( archiver, format, configSource, 
componentsXmlFilter );
+
         if ( includeBaseDir )
         {
             archiver = new PrefixingProxyArchiver( finalName, archiver );
@@ -160,11 +162,24 @@
         return archiver;
     }
 
-    protected void configureArchiverFinalizers( Archiver archiver, 
ComponentsXmlArchiverFileFilter componentsXmlFilter )
+    protected void configureArchiverFinalizers( Archiver archiver, String 
format,
+                                                AssemblerConfigurationSource 
configSource,
+                                                
ComponentsXmlArchiverFileFilter componentsXmlFilter )
     {
         if ( archiver instanceof FinalizerEnabled )
         {
-            ( ( FinalizerEnabled ) archiver ).setArchiveFinalizers( 
Collections.singletonList( componentsXmlFilter ) );
+            List finalizers = new ArrayList();
+
+            finalizers.add( componentsXmlFilter );
+
+            if ( "jar".equals( format ) )
+            {
+                finalizers.add( new ManifestCreationFinalizer( 
configSource.getProject(), configSource
+                    .getJarArchiveConfiguration() ) );
+            }
+
+            ( (FinalizerEnabled) archiver ).setArchiveFinalizers( finalizers );
+
         }
     }
 
@@ -185,14 +200,14 @@
                 filters.add( JAR_SECURITY_FILE_FILTER );
             }
 
-            ( ( FilterEnabled ) archiver ).setArchiveFilters( filters );
+            ( (FilterEnabled) archiver ).setArchiveFilters( filters );
         }
     }
 
     protected Archiver createWarArchiver()
         throws NoSuchArchiverException
     {
-        WarArchiver warArchiver = ( WarArchiver ) 
this.archiverManager.getArchiver( "war" );
+        WarArchiver warArchiver = (WarArchiver) 
this.archiverManager.getArchiver( "war" );
         warArchiver.setIgnoreWebxml( false ); // See MNG-1274
 
         return warArchiver;
@@ -201,7 +216,7 @@
     protected Archiver createTarArchiver( String format, String 
tarLongFileMode )
         throws NoSuchArchiverException, ArchiverException
     {
-        TarArchiver tarArchiver = ( TarArchiver ) 
this.archiverManager.getArchiver( "tar" );
+        TarArchiver tarArchiver = (TarArchiver) 
this.archiverManager.getArchiver( "tar" );
         int index = format.indexOf( '.' );
         if ( index >= 0 )
         {
@@ -232,7 +247,7 @@
         tarFileMode.setValue( tarLongFileMode );
 
         tarArchiver.setLongfile( tarFileMode );
-        
+
         return tarArchiver;
     }
 

Modified: 
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiverTest.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiverTest.java?view=diff&rev=495495&r1=495494&r2=495495
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiverTest.java
 (original)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiverTest.java
 Thu Jan 11 22:35:17 2007
@@ -1,5 +1,7 @@
 package org.apache.maven.plugin.assembly.archive;
 
+import org.apache.maven.archiver.MavenArchiveConfiguration;
+import org.apache.maven.model.Model;
 import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
 import org.apache.maven.plugin.assembly.InvalidAssemblerConfigurationException;
 import org.apache.maven.plugin.assembly.archive.phase.AssemblyArchiverPhase;
@@ -8,6 +10,8 @@
 import org.apache.maven.plugin.assembly.model.Assembly;
 import org.apache.maven.plugin.assembly.testutils.MockManager;
 import org.apache.maven.plugin.assembly.testutils.TestFileManager;
+import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.archiver.ArchiveFinalizer;
 import org.codehaus.plexus.archiver.Archiver;
 import org.codehaus.plexus.archiver.ArchiverException;
 import org.codehaus.plexus.archiver.FilterEnabled;
@@ -20,12 +24,16 @@
 import org.codehaus.plexus.archiver.zip.ZipArchiver;
 import org.codehaus.plexus.logging.Logger;
 import org.codehaus.plexus.util.FileUtils;
+import org.easymock.ArgumentsMatcher;
 import org.easymock.MockControl;
 
 import java.io.File;
 import java.io.IOException;
 import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
 import java.util.List;
+import java.util.Set;
 
 import junit.framework.Assert;
 import junit.framework.TestCase;
@@ -90,9 +98,6 @@
         configSource.getOutputDirectory();
         csControl.setReturnValue( outDir );
         
-        configSource.getTarLongFileMode();
-        csControl.setReturnValue( null );
-        
         configSource.getFinalName();
         csControl.setReturnValue( "finalName" );
         
@@ -117,6 +122,14 @@
         MockAndControlForArchiverManager macArchiverManager = new 
MockAndControlForArchiverManager( mm );
 
         macArchiverManager.expectGetArchiver( "tar", ttArchiver );
+        
+        MockControl configCtl = MockControl.createControl( 
AssemblerConfigurationSource.class );
+        AssemblerConfigurationSource configSource = 
(AssemblerConfigurationSource) configCtl.getMock();
+        
+        configSource.getTarLongFileMode();
+        configCtl.setReturnValue( TarLongFileMode.FAIL, 
MockControl.ZERO_OR_MORE );
+        
+        mm.add( configCtl );
 
         ComponentsXmlArchiverFileFilter filter = new 
ComponentsXmlArchiverFileFilter();
 
@@ -125,7 +138,7 @@
         DefaultAssemblyArchiver subject =
             createSubject( macArchiverManager.archiverManager, 
Collections.EMPTY_LIST, null );
 
-        subject.createArchiver( "tar", false, "finalName", 
TarLongFileMode.FAIL, filter );
+        subject.createArchiver( "tar", false, "finalName", configSource, 
filter );
 
         assertNull( ttArchiver.compressionMethod );
         assertEquals( TarLongFileMode.FAIL, ttArchiver.longFileMode.getValue() 
);
@@ -192,7 +205,7 @@
         DefaultAssemblyArchiver subject =
             createSubject( macArchiverManager.archiverManager, 
Collections.EMPTY_LIST, null );
 
-        subject.configureArchiverFinalizers( macArchiverManager.archiver, 
filter );
+        subject.configureArchiverFinalizers( macArchiverManager.archiver, 
"format", null, filter );
 
         mm.verifyAll();
     }
@@ -204,16 +217,37 @@
         MockAndControlForArchiverManager macArchiverManager = new 
MockAndControlForArchiverManager( mm );
 
         macArchiverManager.createArchiver( TestFinalizerFilteredArchiver.class 
);
-        macArchiverManager.expectSetArchiverFinalizers();
+        
+        Set finalizerClasses = new HashSet();
+        finalizerClasses.add( ComponentsXmlArchiverFileFilter.class );
+        finalizerClasses.add( ManifestCreationFinalizer.class );
+        
+        macArchiverManager.expectSetArchiverFinalizers( finalizerClasses );
 
         ComponentsXmlArchiverFileFilter filter = new 
ComponentsXmlArchiverFileFilter();
+        
+        MockControl configCtl = MockControl.createControl( 
AssemblerConfigurationSource.class );
+        AssemblerConfigurationSource configSource = 
(AssemblerConfigurationSource) configCtl.getMock();
+        
+        Model model = new Model();
+        model.setGroupId( "group" );
+        model.setArtifactId( "artifact" );
+        model.setVersion( "1" );
+        
+        configSource.getProject();
+        configCtl.setReturnValue( new MavenProject( model ), 
MockControl.ZERO_OR_MORE );
+        
+        configSource.getJarArchiveConfiguration();
+        configCtl.setReturnValue( new MavenArchiveConfiguration() );
+        
+        mm.add( configCtl );
 
         mm.replayAll();
 
         DefaultAssemblyArchiver subject =
             createSubject( macArchiverManager.archiverManager, 
Collections.EMPTY_LIST, null );
 
-        subject.configureArchiverFinalizers( macArchiverManager.archiver, 
filter );
+        subject.configureArchiverFinalizers( macArchiverManager.archiver, 
"jar", configSource, filter );
 
         mm.verifyAll();
     }
@@ -427,6 +461,36 @@
         {
             ( ( FinalizerEnabled ) archiver ).setArchiveFinalizers( null );
             archiverControl.setMatcher( MockControl.ALWAYS_MATCHER );
+        }
+
+        void expectSetArchiverFinalizers( final Set finalizerClasses )
+        {
+            ( ( FinalizerEnabled ) archiver ).setArchiveFinalizers( null );
+            archiverControl.setMatcher( new ArgumentsMatcher()
+            {
+
+                public boolean matches( Object[] expected, Object[] actual )
+                {
+                    boolean match = true;
+                    List actualClasses = (List) actual[0];
+                    
+                    Set finClasses = new HashSet( finalizerClasses );
+                    
+                    for ( Iterator it = actualClasses.iterator(); 
it.hasNext(); )
+                    {
+                        ArchiveFinalizer finalizer = (ArchiveFinalizer) 
it.next();
+                        match = match && finClasses.remove( 
finalizer.getClass() );
+                    }
+                    
+                    return match;
+                }
+
+                public String toString( Object[] arguments )
+                {
+                    return "Matcher for finalizer-classes: " + 
finalizerClasses;
+                }
+                
+            });
         }
 
         void expectSetArchiverFilters()


Reply via email to