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.artifact.manager.WagonManager;
23 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
24 import org.apache.maven.usability.diagnostics.DiagnosisUtils;
25 import org.apache.maven.usability.diagnostics.ErrorDiagnoser;
26
27 import java.io.IOException;
28
29 public class ArtifactResolverDiagnoser
30 implements ErrorDiagnoser
31 {
32
33 private WagonManager wagonManager;
34
35 public boolean canDiagnose( Throwable error )
36 {
37 return DiagnosisUtils.containsInCausality( error, ArtifactResolutionException.class );
38 }
39
40 public String diagnose( Throwable error )
41 {
42 ArtifactResolutionException exception =
43 (ArtifactResolutionException) DiagnosisUtils.getFromCausality( error, ArtifactResolutionException.class );
44
45 StringBuffer message = new StringBuffer();
46
47 message.append( "Failed to resolve artifact." );
48 message.append( "\n\n" );
49 message.append( exception.getMessage() );
50
51 IOException ioe = (IOException) DiagnosisUtils.getFromCausality( exception, IOException.class );
52
53 if ( ioe != null && ioe.getMessage() != null && exception.getMessage().indexOf( ioe.getMessage() ) < 0 )
54 {
55 message.append( "\n\nCaused by I/O exception: " ).append( ioe.getMessage() );
56 }
57
58 if ( !wagonManager.isOnline() )
59 {
60 message.append( "\n" ).append( SystemWarnings.getOfflineWarning() );
61 }
62
63 message.append( "\n" );
64
65 return message.toString();
66 }
67
68 }