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