1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.resolver.internal.ant;
20
21 import java.text.DecimalFormat;
22 import java.text.DecimalFormatSymbols;
23 import java.util.Locale;
24
25 import org.apache.tools.ant.Project;
26 import org.apache.tools.ant.Task;
27 import org.eclipse.aether.transfer.AbstractTransferListener;
28 import org.eclipse.aether.transfer.TransferCancelledException;
29 import org.eclipse.aether.transfer.TransferEvent;
30 import org.eclipse.aether.transfer.TransferResource;
31
32
33
34
35 class AntTransferListener extends AbstractTransferListener {
36
37 private final Task task;
38
39 AntTransferListener(final Task task) {
40 this.task = task;
41 }
42
43 @Override
44 public void transferInitiated(final TransferEvent event) throws TransferCancelledException {
45 String msg = event.getRequestType() == TransferEvent.RequestType.PUT ? "Uploading" : "Downloading";
46 msg += " " + event.getResource().getRepositoryUrl()
47 + event.getResource().getResourceName();
48 task.log(msg);
49 }
50
51 @Override
52 public void transferCorrupted(final TransferEvent event) throws TransferCancelledException {
53 final TransferResource resource = event.getResource();
54
55 task.log(
56 event.getException().getMessage() + " for " + resource.getRepositoryUrl() + resource.getResourceName(),
57 Project.MSG_WARN);
58 }
59
60 @Override
61 public void transferSucceeded(final TransferEvent event) {
62 String msg = event.getRequestType() == TransferEvent.RequestType.PUT ? "Uploaded" : "Downloaded";
63 msg += " " + event.getResource().getRepositoryUrl()
64 + event.getResource().getResourceName();
65
66 final long contentLength = event.getTransferredBytes();
67 if (contentLength >= 0) {
68 final String len = contentLength >= 1024 ? ((contentLength + 1023) / 1024) + " KB" : contentLength + " B";
69
70 String throughput = "";
71 final long duration =
72 System.currentTimeMillis() - event.getResource().getTransferStartTime();
73 if (duration > 0) {
74 final DecimalFormat format = new DecimalFormat("0.0", new DecimalFormatSymbols(Locale.ENGLISH));
75 final double kbPerSec = (contentLength / 1024.0) / (duration / 1000.0);
76 throughput = " at " + format.format(kbPerSec) + " KB/sec";
77 }
78
79 msg += " (" + len + throughput + ")";
80 }
81 task.log(msg);
82 }
83 }