Author: brett
Date: Tue Jul 11 00:40:10 2006
New Revision: 420750

URL: http://svn.apache.org/viewvc?rev=420750&view=rev
Log:
[MNG-2284] fix duplication of entries in the manifest
Submitted by: Fredrik Vraalsen

Modified:
    
maven/shared/trunk/maven-archiver/src/main/java/org/apache/maven/archiver/MavenArchiver.java
    
maven/shared/trunk/maven-archiver/src/test/java/org/apache/maven/archiver/MavenArchiverTest.java

Modified: 
maven/shared/trunk/maven-archiver/src/main/java/org/apache/maven/archiver/MavenArchiver.java
URL: 
http://svn.apache.org/viewvc/maven/shared/trunk/maven-archiver/src/main/java/org/apache/maven/archiver/MavenArchiver.java?rev=420750&r1=420749&r2=420750&view=diff
==============================================================================
--- 
maven/shared/trunk/maven-archiver/src/main/java/org/apache/maven/archiver/MavenArchiver.java
 (original)
+++ 
maven/shared/trunk/maven-archiver/src/main/java/org/apache/maven/archiver/MavenArchiver.java
 Tue Jul 11 00:40:10 2006
@@ -149,7 +149,9 @@
 
             if ( classpath.length() > 0 )
             {
-                addManifestAttribute( m, entries, "Class-Path", 
classpath.toString() );
+                // Class-Path is special and should be added to manifest even 
if
+                // it is specified in the manifestEntries section
+                addManifestAttribute( m, "Class-Path", classpath.toString() );
             }
         }
 
@@ -340,20 +342,6 @@
         }
 
         Manifest manifest = getManifest( workingProject, archiveConfiguration 
);
-
-        // any custom manifest entries in the archive configuration manifest?
-        if ( !archiveConfiguration.isManifestEntriesEmpty() )
-        {
-            Map entries = archiveConfiguration.getManifestEntries();
-            Set keys = entries.keySet();
-            for ( Iterator iter = keys.iterator(); iter.hasNext(); )
-            {
-                String key = (String) iter.next();
-                String value = (String) entries.get( key );
-                Manifest.Attribute attr = new Manifest.Attribute( key, value );
-                manifest.addConfiguredAttribute( attr );
-            }
-        }
 
         // any custom manifest sections in the archive configuration manifest?
         if ( !archiveConfiguration.isManifestSectionsEmpty() )

Modified: 
maven/shared/trunk/maven-archiver/src/test/java/org/apache/maven/archiver/MavenArchiverTest.java
URL: 
http://svn.apache.org/viewvc/maven/shared/trunk/maven-archiver/src/test/java/org/apache/maven/archiver/MavenArchiverTest.java?rev=420750&r1=420749&r2=420750&view=diff
==============================================================================
--- 
maven/shared/trunk/maven-archiver/src/test/java/org/apache/maven/archiver/MavenArchiverTest.java
 (original)
+++ 
maven/shared/trunk/maven-archiver/src/test/java/org/apache/maven/archiver/MavenArchiverTest.java
 Tue Jul 11 00:40:10 2006
@@ -23,7 +23,10 @@
 import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.archiver.jar.Manifest;
 
+import java.io.File;
+import java.util.Collections;
 import java.util.Comparator;
+import java.util.List;
 import java.util.Set;
 import java.util.TreeSet;
 
@@ -131,4 +134,44 @@
         assertEquals( "dummy2 dummy4",
                       manifest.getMainSection().getAttributeValue( 
"Extension-List" ) );
     }
+
+    public void testMultiClassPath() throws Exception {
+        final File tempFile = File.createTempFile( "maven-archiver-test-", 
".jar" );
+
+        try {
+            MavenArchiver archiver = new MavenArchiver();      
+
+            Model model = new Model();
+            model.setArtifactId( "dummy" );
+
+
+            MavenProject project = new MavenProject( model ) {
+                public List getRuntimeClasspathElements() {
+                    return Collections.singletonList( 
tempFile.getAbsolutePath() );
+                }
+            };
+
+            // there should be a mock or a setter for this field.
+            ManifestConfiguration manifestConfig = new ManifestConfiguration()
+            {
+                public boolean isAddClasspath()
+                {
+                    return true;
+                }
+            };
+
+            MavenArchiveConfiguration archiveConfiguration = new 
MavenArchiveConfiguration();
+            archiveConfiguration.setManifest( manifestConfig );
+            archiveConfiguration.addManifestEntry( "Class-Path", "help/" );
+
+            Manifest manifest = archiver.getManifest( project, 
archiveConfiguration );
+            String classPath = manifest.getMainSection().getAttribute( 
"Class-Path" ).getValue();
+            assertTrue( "User specified Class-Path entry was not added to 
manifest", classPath.indexOf( "help/" ) != -1 );
+            assertTrue( "Class-Path generated by addClasspath was not added to 
manifest", classPath.indexOf( tempFile.getName() ) != -1 );
+        } finally {
+            tempFile.delete();
+        }
+
+    }
+
 }


Reply via email to