KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > maven > usability > MojoExecutionExceptionDiagnoser


1 package org.apache.maven.usability;
2
3 /*
4  * Copyright 2001-2005 The Apache Software Foundation.
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */

18
19 import org.apache.maven.plugin.MojoExecutionException;
20 import org.apache.maven.usability.diagnostics.DiagnosisUtils;
21 import org.apache.maven.usability.diagnostics.ErrorDiagnoser;
22
23 public class MojoExecutionExceptionDiagnoser
24     implements ErrorDiagnoser
25 {
26
27     public boolean canDiagnose( Throwable JavaDoc error )
28     {
29         return DiagnosisUtils.containsInCausality( error, MojoExecutionException.class );
30     }
31
32     public String JavaDoc diagnose( Throwable JavaDoc error )
33     {
34         MojoExecutionException mee =
35             (MojoExecutionException) DiagnosisUtils.getFromCausality( error, MojoExecutionException.class );
36
37         StringBuffer JavaDoc message = new StringBuffer JavaDoc();
38
39         Object JavaDoc source = mee.getSource();
40         if ( source != null )
41         {
42             message.append( ": " ).append( mee.getSource() ).append( "\n" );
43         }
44
45         message.append( mee.getMessage() );
46
47         String JavaDoc longMessage = mee.getLongMessage();
48         if ( longMessage != null )
49         {
50             message.append( "\n\n" ).append( longMessage );
51         }
52
53         Throwable JavaDoc directCause = mee.getCause();
54
55         if ( directCause != null )
56         {
57             message.append( "\n" );
58
59             String JavaDoc directCauseMessage = directCause.getMessage();
60
61             if ( directCauseMessage != null && mee.getMessage().indexOf( directCauseMessage ) < 0 )
62             {
63                 message.append( "\nEmbedded error: " ).append( directCauseMessage );
64             }
65
66             DiagnosisUtils.appendRootCauseIfPresentAndUnique( directCause, message, false );
67         }
68
69         return message.toString();
70     }
71
72 }
73
Popular Tags