Author: hboutemy
Date: Sat Mar 13 15:34:43 2010
New Revision: 922584

URL: http://svn.apache.org/viewvc?rev=922584&view=rev
Log:
[MDEP-143] wrap the original ZipException with another ZipException with 
additional info about the bad jar
Submitted by: Dan Tran
with modification: called initCause() on the new exception to avoid losing 
original stack trace

Modified:
    
maven/shared/trunk/maven-dependency-analyzer/src/main/java/org/apache/maven/shared/dependency/analyzer/DefaultClassAnalyzer.java
    
maven/shared/trunk/maven-dependency-analyzer/src/test/java/org/apache/maven/shared/dependency/analyzer/DefaultClassAnalyzerTest.java

Modified: 
maven/shared/trunk/maven-dependency-analyzer/src/main/java/org/apache/maven/shared/dependency/analyzer/DefaultClassAnalyzer.java
URL: 
http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-analyzer/src/main/java/org/apache/maven/shared/dependency/analyzer/DefaultClassAnalyzer.java?rev=922584&r1=922583&r2=922584&view=diff
==============================================================================
--- 
maven/shared/trunk/maven-dependency-analyzer/src/main/java/org/apache/maven/shared/dependency/analyzer/DefaultClassAnalyzer.java
 (original)
+++ 
maven/shared/trunk/maven-dependency-analyzer/src/main/java/org/apache/maven/shared/dependency/analyzer/DefaultClassAnalyzer.java
 Sat Mar 13 15:34:43 2010
@@ -22,10 +22,11 @@ package org.apache.maven.shared.dependen
 import java.io.IOException;
 import java.net.URL;
 import java.util.Set;
+import java.util.zip.ZipException;
 
 /**
- * 
- * 
+ *
+ *
  * @author <a href="mailto:markhob...@gmail.com";>Mark Hobson</a>
  * @version $Id$
  * @plexus.component 
role="org.apache.maven.shared.dependency.analyzer.ClassAnalyzer"
@@ -43,7 +44,18 @@ public class DefaultClassAnalyzer
     {
         CollectorClassFileVisitor visitor = new CollectorClassFileVisitor();
 
-        ClassFileVisitorUtils.accept( url, visitor );
+        try
+        {
+            ClassFileVisitorUtils.accept( url, visitor );
+        }
+        catch( ZipException e )
+        {
+            // since the current ZipException gives no indication what jar 
file is corrupted
+            // we prefer to wrap another ZipException for better error 
visibility
+            ZipException ze = new ZipException( "Cannot process Jar entry on 
URL: " + url + " due to " + e.getMessage() );
+            ze.initCause( e );
+            throw ze;
+        }
 
         return visitor.getClasses();
     }

Modified: 
maven/shared/trunk/maven-dependency-analyzer/src/test/java/org/apache/maven/shared/dependency/analyzer/DefaultClassAnalyzerTest.java
URL: 
http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-analyzer/src/test/java/org/apache/maven/shared/dependency/analyzer/DefaultClassAnalyzerTest.java?rev=922584&r1=922583&r2=922584&view=diff
==============================================================================
--- 
maven/shared/trunk/maven-dependency-analyzer/src/test/java/org/apache/maven/shared/dependency/analyzer/DefaultClassAnalyzerTest.java
 (original)
+++ 
maven/shared/trunk/maven-dependency-analyzer/src/test/java/org/apache/maven/shared/dependency/analyzer/DefaultClassAnalyzerTest.java
 Sat Mar 13 15:34:43 2010
@@ -27,13 +27,13 @@ import java.io.IOException;
 import java.util.HashSet;
 import java.util.Set;
 import java.util.jar.JarOutputStream;
+import java.util.zip.ZipException;
 
-import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.IOUtil;
 
 /**
  * Tests <code>DefaultClassAnalyzer</code>.
- * 
+ *
  * @author <a href="mailto:markhob...@gmail.com";>Mark Hobson</a>
  * @version $Id$
  * @see DefaultClassAnalyzer
@@ -59,7 +59,7 @@ public class DefaultClassAnalyzerTest ex
 
         assertEquals( expectedClasses, actualClasses );
     }
-    
+
     public void testAnalyzeBadJar() throws IOException
     {
         //to reproduce MDEP-143
@@ -68,7 +68,7 @@ public class DefaultClassAnalyzerTest ex
         writeEntry( out, "a/b/c.class", "class a.b.c" );
         writeEntry( out, "x/y/z.class", "class x.y.z" );
         out.close();
-        
+
         //corrupt the jar file by alter its contents
         FileInputStream fis = new FileInputStream( file );
         ByteArrayOutputStream baos = new ByteArrayOutputStream( 100 );
@@ -81,16 +81,16 @@ public class DefaultClassAnalyzerTest ex
         fos.close();
 
         DefaultClassAnalyzer analyzer = new DefaultClassAnalyzer();
-        
+
         try
         {
             analyzer.analyze( file.toURI().toURL() );
             fail( "Exception expected" );
         }
-        catch ( IOException e )
+        catch ( ZipException e )
         {
-            //ideally we need to inspect the exception for the desired message 
when MDEP-143 is fixed   
+            assertTrue( e.getMessage().startsWith( "Cannot process Jar entry 
on URL:" ) );
         }
 
-    }    
+    }
 }


Reply via email to