You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by be...@apache.org on 2009/09/20 19:24:17 UTC

svn commit: r817056 - in /maven/plugins/trunk/maven-jarsigner-plugin/src: it/type-detection/pom.xml it/type-detection/some.zip it/type-detection/verify.bsh main/java/org/apache/maven/plugins/jarsigner/AbstractJarsignerMojo.java

Author: bentmann
Date: Sun Sep 20 17:24:16 2009
New Revision: 817056

URL: http://svn.apache.org/viewvc?rev=817056&view=rev
Log:
[MJARSIGNER-7] jarsigner plugin to support all "types" of zip files

Added:
    maven/plugins/trunk/maven-jarsigner-plugin/src/it/type-detection/some.zip   (with props)
Modified:
    maven/plugins/trunk/maven-jarsigner-plugin/src/it/type-detection/pom.xml
    maven/plugins/trunk/maven-jarsigner-plugin/src/it/type-detection/verify.bsh
    maven/plugins/trunk/maven-jarsigner-plugin/src/main/java/org/apache/maven/plugins/jarsigner/AbstractJarsignerMojo.java

Modified: maven/plugins/trunk/maven-jarsigner-plugin/src/it/type-detection/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-jarsigner-plugin/src/it/type-detection/pom.xml?rev=817056&r1=817055&r2=817056&view=diff
==============================================================================
--- maven/plugins/trunk/maven-jarsigner-plugin/src/it/type-detection/pom.xml (original)
+++ maven/plugins/trunk/maven-jarsigner-plugin/src/it/type-detection/pom.xml Sun Sep 20 17:24:16 2009
@@ -78,6 +78,12 @@
                   <type>bar</type>
                   <classifier>b</classifier>
                 </artifact>
+                <artifact>
+                  <!-- see MJARSIGNER-7 -->
+                  <file>some.zip</file>
+                  <type>zip</type>
+                  <classifier>c</classifier>
+                </artifact>
               </artifacts>
             </configuration>
           </execution>

Added: maven/plugins/trunk/maven-jarsigner-plugin/src/it/type-detection/some.zip
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-jarsigner-plugin/src/it/type-detection/some.zip?rev=817056&view=auto
==============================================================================
Binary file - no diff available.

Propchange: maven/plugins/trunk/maven-jarsigner-plugin/src/it/type-detection/some.zip
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Modified: maven/plugins/trunk/maven-jarsigner-plugin/src/it/type-detection/verify.bsh
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-jarsigner-plugin/src/it/type-detection/verify.bsh?rev=817056&r1=817055&r2=817056&view=diff
==============================================================================
--- maven/plugins/trunk/maven-jarsigner-plugin/src/it/type-detection/verify.bsh (original)
+++ maven/plugins/trunk/maven-jarsigner-plugin/src/it/type-detection/verify.bsh Sun Sep 20 17:24:16 2009
@@ -1,5 +1,5 @@
 import java.io.*;
-import java.util.jar.*;
+import java.util.zip.*;
 
 File attachedJarFile = new File( basedir, "jar-with-unusual.ext" );
 System.out.println( "Checking for existence of " + attachedJarFile );
@@ -8,7 +8,7 @@
     throw new Exception( "missing " + attachedJarFile );
 }
 
-JarFile attachedJar = new JarFile( attachedJarFile );
+ZipFile attachedJar = new ZipFile( attachedJarFile );
 System.out.println( "Checking for existence of " + attachedJarFile.getName() + "!/META-INF/TESTING.SF" );
 if ( attachedJar.getEntry( "META-INF/TESTING.SF" ) == null )
 {
@@ -21,4 +21,24 @@
 }
 attachedJar.close();
 
+File attachedZipFile = new File( basedir, "some.zip" );
+System.out.println( "Checking for existence of " + attachedZipFile );
+if ( !attachedZipFile.isFile() )
+{
+    throw new Exception( "missing " + attachedZipFile );
+}
+
+ZipFile attachedZip = new ZipFile( attachedZipFile );
+System.out.println( "Checking for existence of " + attachedZipFile.getName() + "!/META-INF/TESTING.SF" );
+if ( attachedZip.getEntry( "META-INF/TESTING.SF" ) == null )
+{
+    throw new Exception( "missing " + attachedZipFile.getName() + "!/META-INF/TESTING.SF" );
+}
+System.out.println( "Checking for existence of " + attachedZipFile.getName() + "!/META-INF/TESTING.DSA" );
+if ( attachedZip.getEntry( "META-INF/TESTING.DSA" ) == null )
+{
+    throw new Exception( "missing " + attachedZipFile.getName() + "!/META-INF/TESTING.DSA" );
+}
+attachedZip.close();
+
 return true;

Modified: maven/plugins/trunk/maven-jarsigner-plugin/src/main/java/org/apache/maven/plugins/jarsigner/AbstractJarsignerMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-jarsigner-plugin/src/main/java/org/apache/maven/plugins/jarsigner/AbstractJarsignerMojo.java?rev=817056&r1=817055&r2=817056&view=diff
==============================================================================
--- maven/plugins/trunk/maven-jarsigner-plugin/src/main/java/org/apache/maven/plugins/jarsigner/AbstractJarsignerMojo.java (original)
+++ maven/plugins/trunk/maven-jarsigner-plugin/src/main/java/org/apache/maven/plugins/jarsigner/AbstractJarsignerMojo.java Sun Sep 20 17:24:16 2009
@@ -28,7 +28,6 @@
 import java.util.List;
 import java.util.Properties;
 import java.util.ResourceBundle;
-import java.util.zip.ZipEntry;
 import java.util.zip.ZipInputStream;
 
 import org.apache.maven.artifact.Artifact;
@@ -126,8 +125,8 @@
     private boolean processMainArtifact;
 
     /**
-     * Controls processing of project attachments. If enabled, attached artifacts that are no JARs will be automatically
-     * excluded from processing.
+     * Controls processing of project attachments. If enabled, attached artifacts that are no JAR/ZIP files will be
+     * automatically excluded from processing.
      * 
      * @parameter expression="${jarsigner.processAttachedArtifacts}" default-value="true"
      * @since 1.1
@@ -266,40 +265,32 @@
     }
 
     /**
-     * Checks Java language capability of an artifact.
+     * Checks whether the specified artifact is a ZIP file.
      *
-     * @param artifact The artifact to check.
+     * @param artifact The artifact to check, may be <code>null</code>.
      *
-     * @return {@code true} if {@code artifact} is Java language capable; {@code false} if not.
+     * @return <code>true</code> if the artifact looks like a ZIP file, <code>false</code> otherwise.
      */
-    private boolean isJarFile( final Artifact artifact )
+    private boolean isZipFile( final Artifact artifact )
     {
-        return artifact != null && artifact.getFile() != null && isJarFile( artifact.getFile() );
+        return artifact != null && artifact.getFile() != null && isZipFile( artifact.getFile() );
     }
 
     /**
-     * Checks whether the specified file is a JAR file. For our purposes, a JAR file is a (non-empty) ZIP stream with a
-     * META-INF directory or some class files.
+     * Checks whether the specified file is a JAR file. For our purposes, a ZIP file is a ZIP stream with at least one
+     * entry.
      * 
      * @param file The file to check, must not be <code>null</code>.
-     * @return <code>true</code> if the file looks like a JAR file, <code>false</code> otherwise.
+     * @return <code>true</code> if the file looks like a ZIP file, <code>false</code> otherwise.
      */
-    private boolean isJarFile( final File file )
+    private boolean isZipFile( final File file )
     {
         try
         {
-            // NOTE: ZipFile.getEntry() might be shorter but is several factors slower on large files
-
             ZipInputStream zis = new ZipInputStream( new FileInputStream( file ) );
             try
             {
-                for ( ZipEntry ze = zis.getNextEntry(); ze != null; ze = zis.getNextEntry() )
-                {
-                    if ( ze.getName().startsWith( "META-INF/" ) || ze.getName().endsWith( ".class" ) )
-                    {
-                        return true;
-                    }
-                }
+                return zis.getNextEntry() != null;
             }
             finally
             {
@@ -333,7 +324,7 @@
 
         boolean processed = false;
 
-        if ( isJarFile( artifact ) )
+        if ( isZipFile( artifact ) )
         {
             processArchive( artifact.getFile() );