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 String shortMessage = mee.getMessage();
49 if ( shortMessage != null )
50 {
51 message.append( shortMessage );
52 }
53
54 String longMessage = mee.getLongMessage();
55
56
57
58 if ( longMessage != null && !longMessage.equals( shortMessage ) && shortMessage.indexOf( longMessage ) < 0 )
59 {
60 message.append( "\n\n" ).append( longMessage );
61 }
62
63 Throwable directCause = mee.getCause();
64
65 if ( directCause != null )
66 {
67 message.append( "\n" );
68
69 String directCauseMessage = directCause.getMessage();
70
71 String meeMessage = mee.getMessage();
72 if ( ( directCauseMessage != null ) && ( meeMessage != null ) && meeMessage.indexOf( directCauseMessage ) < 0 )
73 {
74 message.append( "\nEmbedded error: " ).append( directCauseMessage );
75 }
76
77 DiagnosisUtils.appendRootCauseIfPresentAndUnique( directCause, message, false );
78 }
79
80 return message.toString();
81 }
82
83 }