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() )
95 .setDataBuffer( data );
96 listener.transferProgressed( eventBuilder.build() );
97 }
98 }
99
100 public void transferCorrupted( Exception exception )
101 throws TransferCancelledException
102 {
103 if ( listener != null )
104 {
105 eventBuilder.resetType( EventType.CORRUPTED ).setException( exception );
106 listener.transferCorrupted( eventBuilder.build() );
107 }
108 }
109
110 public void transferFailed( Exception exception, int classification )
111 {
112 if ( listener != null )
113 {
114 eventBuilder.resetType( EventType.FAILED ).setException( exception );
115 listener.transferFailed( eventBuilder.build() );
116 }
117 }
118
119 public void transferSucceeded()
120 {
121 if ( listener != null )
122 {
123 eventBuilder.resetType( EventType.SUCCEEDED );
124 listener.transferSucceeded( eventBuilder.build() );
125 }
126 }
127
128 public Map<String, Object> getChecksums()
129 {
130 if ( checksumCalculator == null )
131 {
132 return Collections.emptyMap();
133 }
134 return checksumCalculator.get();
135 }
136
137 public void setChecksumCalculator( ChecksumCalculator checksumCalculator )
138 {
139 this.checksumCalculator = checksumCalculator;
140 }
141
142 }