You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by jd...@apache.org on 2005/05/31 23:01:26 UTC
svn commit: r179274 - in /maven/components/trunk/maven-core/src:
main/java/org/apache/maven/usability/ test/java/org/apache/maven/usability/
Author: jdcasey
Date: Tue May 31 14:01:25 2005
New Revision: 179274
URL: http://svn.apache.org/viewcvs?rev=179274&view=rev
Log:
improved the error diagnosis for invalid plugin parameters, as in MNG-345
Added:
maven/components/trunk/maven-core/src/main/java/org/apache/maven/usability/DiagnosisUtils.java (with props)
Modified:
maven/components/trunk/maven-core/src/main/java/org/apache/maven/usability/ArtifactResolverDiagnoser.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/usability/PluginConfigurationDiagnoser.java
maven/components/trunk/maven-core/src/test/java/org/apache/maven/usability/PluginErrorDiagnoserTest.java
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/usability/ArtifactResolverDiagnoser.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/usability/ArtifactResolverDiagnoser.java?rev=179274&r1=179273&r2=179274&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/usability/ArtifactResolverDiagnoser.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/usability/ArtifactResolverDiagnoser.java Tue May 31 14:01:25 2005
@@ -31,7 +31,7 @@
public String diagnose( Throwable error )
{
- Throwable root = traverseToRoot( error );
+ Throwable root = DiagnosisUtils.getRootCause( error );
String message = null;
@@ -39,7 +39,7 @@
{
StringBuffer messageBuffer = new StringBuffer();
- if ( causalityChainContains( error, TransitiveArtifactResolutionException.class ) )
+ if ( DiagnosisUtils.containsInCausality( error, TransitiveArtifactResolutionException.class ) )
{
messageBuffer.append(
"Error while transitively resolving artifacts (transitive path trace currently unavailable):\n\n" );
@@ -65,38 +65,6 @@
}
return message;
- }
-
- private boolean causalityChainContains( Throwable error, Class errorClass )
- {
- Throwable cause = error;
-
- boolean contains = false;
-
- while ( cause != null )
- {
- if ( errorClass.isInstance( cause ) )
- {
- contains = true;
- break;
- }
-
- cause = cause.getCause();
- }
-
- return contains;
- }
-
- private Throwable traverseToRoot( Throwable error )
- {
- Throwable potentialRoot = error;
-
- while ( potentialRoot.getCause() != null )
- {
- potentialRoot = potentialRoot.getCause();
- }
-
- return potentialRoot;
}
}
Added: maven/components/trunk/maven-core/src/main/java/org/apache/maven/usability/DiagnosisUtils.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/usability/DiagnosisUtils.java?rev=179274&view=auto
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/usability/DiagnosisUtils.java (added)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/usability/DiagnosisUtils.java Tue May 31 14:01:25 2005
@@ -0,0 +1,80 @@
+package org.apache.maven.usability;
+
+
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+public final class DiagnosisUtils
+{
+ private DiagnosisUtils()
+ {
+ }
+
+ public static boolean containsInCausality( Throwable error, Class test )
+ {
+ Throwable cause = error;
+
+ while( cause != null )
+ {
+ if( test.isInstance( cause ) )
+ {
+ return true;
+ }
+
+ cause = cause.getCause();
+ }
+
+ return false;
+ }
+
+ public static Throwable getRootCause( Throwable error )
+ {
+ Throwable cause = error;
+
+ while( true )
+ {
+ Throwable nextCause = cause.getCause();
+
+ if( nextCause == null )
+ {
+ break;
+ }
+ else
+ {
+ cause = nextCause;
+ }
+ }
+
+ return cause;
+ }
+
+ public static Throwable getFromCausality( Throwable error, Class targetClass )
+ {
+ Throwable cause = error;
+
+ while( cause != null )
+ {
+ if( targetClass.isInstance( cause ) )
+ {
+ return cause;
+ }
+
+ cause = cause.getCause();
+ }
+
+ return null;
+ }
+}
Propchange: maven/components/trunk/maven-core/src/main/java/org/apache/maven/usability/DiagnosisUtils.java
------------------------------------------------------------------------------
svn:keywords = "Date Rev Author"
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/usability/PluginConfigurationDiagnoser.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/usability/PluginConfigurationDiagnoser.java?rev=179274&r1=179273&r2=179274&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/usability/PluginConfigurationDiagnoser.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/usability/PluginConfigurationDiagnoser.java Tue May 31 14:01:25 2005
@@ -20,6 +20,7 @@
import org.apache.maven.plugin.PluginParameterException;
import org.apache.maven.plugin.descriptor.MojoDescriptor;
import org.apache.maven.plugin.descriptor.Parameter;
+import org.codehaus.plexus.component.configurator.ComponentConfigurationException;
import org.codehaus.plexus.util.StringUtils;
import java.util.ArrayList;
@@ -58,7 +59,12 @@
{
PluginParameterException exception = (PluginParameterException) error;
- return buildDiagnosticMessage( exception );
+ return buildParameterDiagnosticMessage( exception );
+ }
+ else if( DiagnosisUtils.containsInCausality(error, ComponentConfigurationException.class ) )
+ {
+ ComponentConfigurationException cce = (ComponentConfigurationException) DiagnosisUtils.getFromCausality( error, ComponentConfigurationException.class );
+ return buildInvalidPluginConfigurationDiagnosisMessage( cce );
}
else
{
@@ -66,7 +72,18 @@
}
}
- private String buildDiagnosticMessage( PluginParameterException exception )
+ private String buildInvalidPluginConfigurationDiagnosisMessage( ComponentConfigurationException cce )
+ {
+ StringBuffer message = new StringBuffer();
+
+ message.append( "Either your POM or one of its ancestors has declared an invalid plugin configuration.\n" )
+ .append( "The error message is:\n\n" )
+ .append( cce.getMessage() ).append( "\n" );
+
+ return message.toString();
+ }
+
+ private String buildParameterDiagnosticMessage( PluginParameterException exception )
{
StringBuffer messageBuffer = new StringBuffer();
Modified: maven/components/trunk/maven-core/src/test/java/org/apache/maven/usability/PluginErrorDiagnoserTest.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/test/java/org/apache/maven/usability/PluginErrorDiagnoserTest.java?rev=179274&r1=179273&r2=179274&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/test/java/org/apache/maven/usability/PluginErrorDiagnoserTest.java (original)
+++ maven/components/trunk/maven-core/src/test/java/org/apache/maven/usability/PluginErrorDiagnoserTest.java Tue May 31 14:01:25 2005
@@ -17,11 +17,14 @@
*/
import junit.framework.TestCase;
+
+import org.apache.maven.plugin.PluginConfigurationException;
import org.apache.maven.plugin.PluginParameterException;
import org.apache.maven.plugin.descriptor.DuplicateParameterException;
import org.apache.maven.plugin.descriptor.MojoDescriptor;
import org.apache.maven.plugin.descriptor.Parameter;
import org.apache.maven.plugin.descriptor.PluginDescriptor;
+import org.codehaus.plexus.component.configurator.ComponentConfigurationException;
import java.util.ArrayList;
import java.util.Collections;
@@ -30,6 +33,8 @@
public class PluginErrorDiagnoserTest
extends TestCase
{
+
+ private PluginConfigurationDiagnoser diagnoser = new PluginConfigurationDiagnoser();
private PluginParameterException buildException( String prefix, String goal, List params )
throws DuplicateParameterException
@@ -49,6 +54,22 @@
return new PluginParameterException( mojoDescriptor, params );
}
+
+ public void testShouldDiagnoseInvalidPluginConfiguration()
+ {
+ printMethodHeader();
+
+ ComponentConfigurationException cce = new ComponentConfigurationException( "Class \'org.apache.maven.plugin.jar.JarMojo\' does not contain a field named \'addClasspath\'" );
+ PluginConfigurationException pce = new PluginConfigurationException( "test", cce );
+
+ assertTrue( diagnoser.canDiagnose( pce ) );
+
+ String userMessage = diagnoser.diagnose( pce );
+
+ System.out.println( userMessage );
+
+ assertNotNull( userMessage );
+ }
public void testShouldBeAbleToDiagnosePluginParameterExceptions()
throws DuplicateParameterException
@@ -61,7 +82,7 @@
PluginParameterException error = buildException( "test", "test", Collections.singletonList( param ) );
- assertTrue( new PluginConfigurationDiagnoser().canDiagnose( error ) );
+ assertTrue( diagnoser.canDiagnose( error ) );
}
public void testParamWithOneReportsExpressionAndOneProjectBasedExpression()
@@ -93,7 +114,7 @@
PluginParameterException error = buildException( "test", "test", params );
- String userMessage = new PluginConfigurationDiagnoser().diagnose( error );
+ String userMessage = diagnoser.diagnose( error );
System.out.println( userMessage );
@@ -113,7 +134,7 @@
PluginParameterException error = buildException( "test", "test", Collections.singletonList( param ) );
- String userMessage = new PluginConfigurationDiagnoser().diagnose( error );
+ String userMessage = diagnoser.diagnose( error );
System.out.println( userMessage );
@@ -132,7 +153,7 @@
PluginParameterException error = buildException( "test", "test", Collections.singletonList( param ) );
- String userMessage = new PluginConfigurationDiagnoser().diagnose( error );
+ String userMessage = diagnoser.diagnose( error );
System.out.println( userMessage );
@@ -152,7 +173,7 @@
PluginParameterException error = buildException( "test", "test", Collections.singletonList( param ) );
- String userMessage = new PluginConfigurationDiagnoser().diagnose( error );
+ String userMessage = diagnoser.diagnose( error );
System.out.println( userMessage );
@@ -172,7 +193,7 @@
PluginParameterException error = buildException( "test", "test", Collections.singletonList( param ) );
- String userMessage = new PluginConfigurationDiagnoser().diagnose( error );
+ String userMessage = diagnoser.diagnose( error );
System.out.println( userMessage );
@@ -192,7 +213,7 @@
PluginParameterException error = buildException( "test", "test", Collections.singletonList( param ) );
- String userMessage = new PluginConfigurationDiagnoser().diagnose( error );
+ String userMessage = diagnoser.diagnose( error );
System.out.println( userMessage );
@@ -212,7 +233,7 @@
PluginParameterException error = buildException( "test", "test", Collections.singletonList( param ) );
- String userMessage = new PluginConfigurationDiagnoser().diagnose( error );
+ String userMessage = diagnoser.diagnose( error );
System.out.println( userMessage );
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org