1 package org.sonatype.aether.connector.wagon;
2
3
4
5
6
7
8
9
10
11 import java.io.File;
12
13 import org.apache.maven.wagon.events.TransferEvent;
14 import org.apache.maven.wagon.observers.AbstractTransferListener;
15 import org.sonatype.aether.RequestTrace;
16 import org.sonatype.aether.transfer.TransferCancelledException;
17 import org.sonatype.aether.transfer.TransferEvent.EventType;
18 import org.sonatype.aether.transfer.TransferEvent.RequestType;
19 import org.sonatype.aether.transfer.TransferListener;
20 import org.sonatype.aether.util.listener.DefaultTransferEvent;
21 import org.sonatype.aether.util.listener.DefaultTransferResource;
22
23
24
25
26
27
28 class WagonTransferListenerAdapter
29 extends AbstractTransferListener
30 {
31
32 private final DefaultTransferResource resource;
33
34 private final TransferListener delegate;
35
36 private long transferredBytes;
37
38 public WagonTransferListenerAdapter( TransferListener delegate, String repositoryUrl, String resourceName,
39 File file, RequestTrace trace )
40 {
41 this.delegate = delegate;
42 resource = new DefaultTransferResource( repositoryUrl, resourceName, file, trace );
43 }
44
45 @Override
46 public void transferStarted( TransferEvent event )
47 {
48 transferredBytes = 0;
49 resource.setContentLength( event.getResource().getContentLength() );
50 try
51 {
52 delegate.transferStarted( wrap( event, EventType.STARTED ) );
53 }
54 catch ( TransferCancelledException e )
55 {
56
57
58
59
60 }
61 }
62
63 @Override
64 public void transferProgress( TransferEvent event, byte[] buffer, int length )
65 {
66 transferredBytes += length;
67 try
68 {
69 delegate.transferProgressed( wrap( event, EventType.PROGRESSED ).setDataBuffer( buffer, 0, length ) );
70 }
71 catch ( TransferCancelledException e )
72 {
73 throw new WagonCancelledException( e );
74 }
75 }
76
77 private DefaultTransferEvent wrap( TransferEvent event, EventType type )
78 {
79 DefaultTransferEvent e = newEvent();
80 e.setRequestType( event.getRequestType() == TransferEvent.REQUEST_PUT ? RequestType.PUT : RequestType.GET );
81 e.setType( type );
82 return e;
83 }
84
85 public DefaultTransferEvent newEvent()
86 {
87 DefaultTransferEvent e = new DefaultTransferEvent();
88 e.setResource( resource );
89 e.setTransferredBytes( transferredBytes );
90 return e;
91 }
92
93 }