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