You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sl...@apache.org on 2019/05/13 07:44:23 UTC
[maven] branch master updated: [MNG-6626] fix
DefaultExceptionHandler NPE
This is an automated email from the ASF dual-hosted git repository.
slachiewicz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven.git
The following commit(s) were added to refs/heads/master by this push:
new 1a18eb6 [MNG-6626] fix DefaultExceptionHandler NPE
1a18eb6 is described below
commit 1a18eb6c9c7ac24adc9d57781e85fb3f60b6b65f
Author: Sergey Chernov <se...@gmail.com>
AuthorDate: Fri Apr 5 22:29:33 2019 +0300
[MNG-6626] fix DefaultExceptionHandler NPE
Closes #241
---
.../maven/exception/DefaultExceptionHandler.java | 9 ++--
.../exception/DefaultExceptionHandlerTest.java | 53 ++++++++++++++++++++--
2 files changed, 55 insertions(+), 7 deletions(-)
diff --git a/maven-core/src/main/java/org/apache/maven/exception/DefaultExceptionHandler.java b/maven-core/src/main/java/org/apache/maven/exception/DefaultExceptionHandler.java
index 2a86667..2193e61 100644
--- a/maven-core/src/main/java/org/apache/maven/exception/DefaultExceptionHandler.java
+++ b/maven-core/src/main/java/org/apache/maven/exception/DefaultExceptionHandler.java
@@ -209,10 +209,13 @@ public class DefaultExceptionHandler
{
Throwable cause2 = cause.getCause();
- if ( cause2 instanceof NoClassDefFoundError
- && cause2.getMessage().contains( "org/sonatype/aether/" ) )
+ if ( cause2 instanceof NoClassDefFoundError )
{
- reference = "AetherClassNotFound";
+ String message = cause2.getMessage();
+ if ( message != null && message.contains( "org/sonatype/aether/" ) )
+ {
+ reference = "AetherClassNotFound";
+ }
}
}
diff --git a/maven-core/src/test/java/org/apache/maven/exception/DefaultExceptionHandlerTest.java b/maven-core/src/test/java/org/apache/maven/exception/DefaultExceptionHandlerTest.java
index 9727bdf..9fe6d4f 100644
--- a/maven-core/src/test/java/org/apache/maven/exception/DefaultExceptionHandlerTest.java
+++ b/maven-core/src/test/java/org/apache/maven/exception/DefaultExceptionHandlerTest.java
@@ -22,15 +22,22 @@ package org.apache.maven.exception;
import java.io.IOException;
import java.net.ConnectException;
+import org.apache.maven.model.Plugin;
+import org.apache.maven.plugin.MojoExecution;
import org.apache.maven.plugin.MojoExecutionException;
-import junit.framework.TestCase;
+import org.apache.maven.plugin.PluginContainerException;
+import org.apache.maven.plugin.PluginExecutionException;
+import org.apache.maven.plugin.descriptor.MojoDescriptor;
+import org.apache.maven.plugin.descriptor.PluginDescriptor;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
/**
* @author <a href="mailto:baerrach@apache.org">Barrie Treloar</a>
*/
public class DefaultExceptionHandlerTest
- extends TestCase
{
/**
* Running Maven under JDK7 may cause connection issues because IPv6 is used by default.
@@ -42,11 +49,11 @@ public class DefaultExceptionHandlerTest
* http://cwiki.apache.org/confluence/display/MAVEN/ConnectException
* </p>
*/
+ @Test
public void testJdk7ipv6()
{
ConnectException connEx = new ConnectException( "Connection refused: connect" );
- IOException ioEx = new IOException( "Unable to establish loopback connection" );
- ioEx.initCause( connEx );
+ IOException ioEx = new IOException( "Unable to establish loopback connection", connEx );
MojoExecutionException mojoEx =
new MojoExecutionException( "Error executing Jetty: Unable to establish loopback connection", ioEx );
@@ -57,4 +64,42 @@ public class DefaultExceptionHandlerTest
assertEquals( expectedReference, exceptionSummary.getReference() );
}
+
+ @Test
+ public void testHandleExceptionAetherClassNotFound()
+ {
+ Throwable cause2 = new NoClassDefFoundError( "org/sonatype/aether/RepositorySystem" );
+ Plugin plugin = new Plugin();
+ Exception cause = new PluginContainerException( plugin, null, null, cause2 );
+ PluginDescriptor pluginDescriptor = new PluginDescriptor();
+ MojoDescriptor mojoDescriptor = new MojoDescriptor();
+ mojoDescriptor.setPluginDescriptor( pluginDescriptor );
+ MojoExecution mojoExecution = new MojoExecution(mojoDescriptor);
+ Throwable exception = new PluginExecutionException( mojoExecution, null, cause );
+
+ DefaultExceptionHandler handler = new DefaultExceptionHandler();
+ ExceptionSummary summary = handler.handleException( exception );
+
+ String expectedReference = "http://cwiki.apache.org/confluence/display/MAVEN/AetherClassNotFound";
+ assertEquals( expectedReference, summary.getReference() );
+ }
+
+ @Test
+ public void testHandleExceptionNoClassDefFoundErrorNull()
+ {
+ Throwable cause2 = new NoClassDefFoundError();
+ Plugin plugin = new Plugin();
+ Exception cause = new PluginContainerException( plugin, null, null, cause2 );
+ PluginDescriptor pluginDescriptor = new PluginDescriptor();
+ MojoDescriptor mojoDescriptor = new MojoDescriptor();
+ mojoDescriptor.setPluginDescriptor( pluginDescriptor );
+ MojoExecution mojoExecution = new MojoExecution(mojoDescriptor);
+ Throwable exception = new PluginExecutionException( mojoExecution, null, cause );
+
+ DefaultExceptionHandler handler = new DefaultExceptionHandler();
+ ExceptionSummary summary = handler.handleException( exception );
+
+ String expectedReference = "http://cwiki.apache.org/confluence/display/MAVEN/PluginContainerException";
+ assertEquals( expectedReference, summary.getReference() );
+ }
}