1 package org.apache.maven.cli.transfer;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.util.Locale;
23
24 import org.apache.maven.cli.transfer.AbstractMavenTransferListener.FileSizeFormat;
25 import org.eclipse.aether.transfer.AbstractTransferListener;
26 import org.eclipse.aether.transfer.TransferCancelledException;
27 import org.eclipse.aether.transfer.TransferEvent;
28 import org.eclipse.aether.transfer.TransferResource;
29 import org.slf4j.Logger;
30 import org.slf4j.LoggerFactory;
31
32
33
34
35 public class Slf4jMavenTransferListener
36 extends AbstractTransferListener
37 {
38
39 protected final Logger out;
40
41 public Slf4jMavenTransferListener()
42 {
43 this.out = LoggerFactory.getLogger( Slf4jMavenTransferListener.class );
44 }
45
46
47 public Slf4jMavenTransferListener( Logger out )
48 {
49 this.out = out;
50 }
51
52 @Override
53 public void transferInitiated( TransferEvent event )
54 {
55 String action = event.getRequestType() == TransferEvent.RequestType.PUT ? "Uploading" : "Downloading";
56 String direction = event.getRequestType() == TransferEvent.RequestType.PUT ? "to" : "from";
57
58 TransferResource resource = event.getResource();
59 StringBuilder message = new StringBuilder();
60 message.append( action ).append( ' ' ).append( direction ).append( ' ' ).append( resource.getRepositoryId() );
61 message.append( ": " );
62 message.append( resource.getRepositoryUrl() ).append( resource.getResourceName() );
63
64 out.info( message.toString() );
65 }
66
67 @Override
68 public void transferCorrupted( TransferEvent event )
69 throws TransferCancelledException
70 {
71 TransferResource resource = event.getResource();
72 out.warn( "{} from {} for {}{}", event.getException().getMessage(), resource.getRepositoryId(),
73 resource.getRepositoryUrl(), resource.getResourceName() );
74 }
75
76 @Override
77 public void transferSucceeded( TransferEvent event )
78 {
79 String action = ( event.getRequestType() == TransferEvent.RequestType.PUT ? "Uploaded" : "Downloaded" );
80 String direction = event.getRequestType() == TransferEvent.RequestType.PUT ? "to" : "from";
81
82 TransferResource resource = event.getResource();
83 long contentLength = event.getTransferredBytes();
84 FileSizeFormat format = new FileSizeFormat( Locale.ENGLISH );
85
86 StringBuilder message = new StringBuilder();
87 message.append( action ).append( ' ' ).append( direction ).append( ' ' ).append( resource.getRepositoryId() );
88 message.append( ": " );
89 message.append( resource.getRepositoryUrl() ).append( resource.getResourceName() );
90 message.append( " (" ).append( format.format( contentLength ) );
91
92 long duration = System.currentTimeMillis() - resource.getTransferStartTime();
93 if ( duration > 0L )
94 {
95 double bytesPerSecond = contentLength / ( duration / 1000.0 );
96 message.append( " at " ).append( format.format( (long) bytesPerSecond ) ).append( "/s" );
97 }
98
99 message.append( ')' );
100 out.info( message.toString() );
101 }
102
103 }