1 package org.apache.maven.usability; 2 3 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 error ) 28 { 29 return DiagnosisUtils.containsInCausality( error, MojoExecutionException.class ); 30 } 31 32 public String diagnose( Throwable error ) 33 { 34 MojoExecutionException mee = 35 (MojoExecutionException) DiagnosisUtils.getFromCausality( error, MojoExecutionException.class ); 36 37 StringBuffer message = new StringBuffer (); 38 39 Object 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 longMessage = mee.getLongMessage(); 48 if ( longMessage != null ) 49 { 50 message.append( "\n\n" ).append( longMessage ); 51 } 52 53 Throwable directCause = mee.getCause(); 54 55 if ( directCause != null ) 56 { 57 message.append( "\n" ); 58 59 String 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 |