1 package org.eclipse.aether.internal.impl;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.eclipse.aether.RepositorySystemSession;
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.TransferListener;
27 import org.slf4j.Logger;
28 import org.slf4j.LoggerFactory;
29
30 class SafeTransferListener
31 extends AbstractTransferListener
32 {
33
34 private static final Logger LOGGER = LoggerFactory.getLogger( SafeTransferListener.class );
35
36 private final TransferListener listener;
37
38 public static TransferListener wrap( RepositorySystemSession session )
39 {
40 TransferListener listener = session.getTransferListener();
41 if ( listener == null )
42 {
43 return null;
44 }
45 return new SafeTransferListener( listener );
46 }
47
48 protected SafeTransferListener( RepositorySystemSession session )
49 {
50 this( session.getTransferListener() );
51 }
52
53 private SafeTransferListener( TransferListener listener )
54 {
55 this.listener = listener;
56 }
57
58 private void logError( TransferEvent event, Throwable e )
59 {
60 LOGGER.debug( "Failed to dispatch transfer event '{}' to {}", event, listener.getClass().getCanonicalName(),
61 e );
62 }
63
64 @Override
65 public void transferInitiated( TransferEvent event )
66 throws TransferCancelledException
67 {
68 if ( listener != null )
69 {
70 try
71 {
72 listener.transferInitiated( event );
73 }
74 catch ( RuntimeException | LinkageError e )
75 {
76 logError( event, e );
77 }
78 }
79 }
80
81 @Override
82 public void transferStarted( TransferEvent event )
83 throws TransferCancelledException
84 {
85 if ( listener != null )
86 {
87 try
88 {
89 listener.transferStarted( event );
90 }
91 catch ( RuntimeException | LinkageError e )
92 {
93 logError( event, e );
94 }
95 }
96 }
97
98 @Override
99 public void transferProgressed( TransferEvent event )
100 throws TransferCancelledException
101 {
102 if ( listener != null )
103 {
104 try
105 {
106 listener.transferProgressed( event );
107 }
108 catch ( RuntimeException | LinkageError e )
109 {
110 logError( event, e );
111 }
112 }
113 }
114
115 @Override
116 public void transferCorrupted( TransferEvent event )
117 throws TransferCancelledException
118 {
119 if ( listener != null )
120 {
121 try
122 {
123 listener.transferCorrupted( event );
124 }
125 catch ( RuntimeException | LinkageError e )
126 {
127 logError( event, e );
128 }
129 }
130 }
131
132 @Override
133 public void transferSucceeded( TransferEvent event )
134 {
135 if ( listener != null )
136 {
137 try
138 {
139 listener.transferSucceeded( event );
140 }
141 catch ( RuntimeException | LinkageError e )
142 {
143 logError( event, e );
144 }
145 }
146 }
147
148 @Override
149 public void transferFailed( TransferEvent event )
150 {
151 if ( listener != null )
152 {
153 try
154 {
155 listener.transferFailed( event );
156 }
157 catch ( RuntimeException | LinkageError e )
158 {
159 logError( event, e );
160 }
161 }
162 }
163
164 }