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:" ) ); } - } + } }