1 package org.eclipse.aether.connector.basic;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.nio.ByteBuffer;
23 import java.util.Collections;
24 import java.util.Map;
25
26 import org.eclipse.aether.spi.connector.Transfer;
27 import org.eclipse.aether.spi.connector.transport.TransportListener;
28 import org.eclipse.aether.transfer.TransferCancelledException;
29 import org.eclipse.aether.transfer.TransferEvent;
30 import org.eclipse.aether.transfer.TransferEvent.EventType;
31 import org.eclipse.aether.transfer.TransferListener;
32
33 class TransferTransportListener<T extends Transfer>
34 extends TransportListener
35 {
36
37 private final T transfer;
38
39 private final TransferListener listener;
40
41 private final TransferEvent.Builder eventBuilder;
42
43 private ChecksumCalculator checksumCalculator;
44
45 protected TransferTransportListener( T transfer, TransferEvent.Builder eventBuilder )
46 {
47 this.transfer = transfer;
48 this.listener = transfer.getListener();
49 this.eventBuilder = eventBuilder;
50 }
51
52 protected T getTransfer()
53 {
54 return transfer;
55 }
56
57 public void transferInitiated()
58 throws TransferCancelledException
59 {
60 if ( listener != null )
61 {
62 eventBuilder.resetType( EventType.INITIATED );
63 listener.transferInitiated( eventBuilder.build() );
64 }
65 }
66
67 @Override
68 public void transportStarted( long dataOffset, long dataLength )
69 throws TransferCancelledException
70 {
71 if ( checksumCalculator != null )
72 {
73 checksumCalculator.init( dataOffset );
74 }
75 if ( listener != null )
76 {
77 eventBuilder.resetType( EventType.STARTED ).setTransferredBytes( dataOffset );
78 TransferEvent event = eventBuilder.build();
79 event.getResource().setContentLength( dataLength ).setResumeOffset( dataOffset );
80 listener.transferStarted( event );
81 }
82 }
83
84 @Override
85 public void transportProgressed( ByteBuffer data )
86 throws TransferCancelledException
87 {
88 if ( checksumCalculator != null )
89 {
90 checksumCalculator.update( data );
91 }
92 if ( listener != null )
93 {
94 eventBuilder.resetType( EventType.PROGRESSED ).addTransferredBytes( data.remaining() ).setDataBuffer( data );
95 listener.transferProgressed( eventBuilder.build() );
96 }
97 }
98
99 public void transferCorrupted( Exception exception )
100 throws TransferCancelledException
101 {
102 if ( listener != null )
103 {
104 eventBuilder.resetType( EventType.CORRUPTED ).setException( exception );
105 listener.transferCorrupted( eventBuilder.build() );
106 }
107 }
108
109 public void transferFailed( Exception exception, int classification )
110 {
111 if ( listener != null )
112 {
113 eventBuilder.resetType( EventType.FAILED ).setException( exception );
114 listener.transferFailed( eventBuilder.build() );
115 }
116 }
117
118 public void transferSucceeded()
119 {
120 if ( listener != null )
121 {
122 eventBuilder.resetType( EventType.SUCCEEDED );
123 listener.transferSucceeded( eventBuilder.build() );
124 }
125 }
126
127 public Map<String, Object> getChecksums()
128 {
129 if ( checksumCalculator == null )
130 {
131 return Collections.emptyMap();
132 }
133 return checksumCalculator.get();
134 }
135
136 public void setChecksumCalculator( ChecksumCalculator checksumCalculator )
137 {
138 this.checksumCalculator = checksumCalculator;
139 }
140
141 }