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