Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
Wagon |
|
| 1.0;1 |
1 | package org.apache.maven.wagon; | |
2 | ||
3 | /* | |
4 | * Licensed to the Apache Software Foundation (ASF) under one | |
5 | * or more contributor license agreements. See the NOTICE file | |
6 | * distributed with this work for additional information | |
7 | * regarding copyright ownership. The ASF licenses this file | |
8 | * to you under the Apache License, Version 2.0 (the | |
9 | * "License"); you may not use this file except in compliance | |
10 | * with the License. You may obtain a copy of the License at | |
11 | * | |
12 | * http://www.apache.org/licenses/LICENSE-2.0 | |
13 | * | |
14 | * Unless required by applicable law or agreed to in writing, | |
15 | * software distributed under the License is distributed on an | |
16 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
17 | * KIND, either express or implied. See the License for the | |
18 | * specific language governing permissions and limitations | |
19 | * under the License. | |
20 | */ | |
21 | ||
22 | import org.apache.maven.wagon.authentication.AuthenticationException; | |
23 | import org.apache.maven.wagon.authentication.AuthenticationInfo; | |
24 | import org.apache.maven.wagon.authorization.AuthorizationException; | |
25 | import org.apache.maven.wagon.events.SessionListener; | |
26 | import org.apache.maven.wagon.events.TransferListener; | |
27 | import org.apache.maven.wagon.proxy.ProxyInfo; | |
28 | import org.apache.maven.wagon.proxy.ProxyInfoProvider; | |
29 | import org.apache.maven.wagon.repository.Repository; | |
30 | ||
31 | import java.io.File; | |
32 | import java.util.List; | |
33 | ||
34 | public interface Wagon | |
35 | { | |
36 | String ROLE = Wagon.class.getName(); | |
37 | ||
38 | // ---------------------------------------------------------------------- | |
39 | // File/File handling | |
40 | // ---------------------------------------------------------------------- | |
41 | ||
42 | /** | |
43 | * Downloads specified resource from the repository to given file. | |
44 | * | |
45 | * @param resourceName | |
46 | * @param destination | |
47 | * @throws TransferFailedException | |
48 | * @throws ResourceDoesNotExistException | |
49 | * @throws AuthorizationException | |
50 | */ | |
51 | void get( String resourceName, File destination ) | |
52 | throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException; | |
53 | ||
54 | /** | |
55 | * Downloads specified resource from the repository | |
56 | * if it was modified since specified date. | |
57 | * The date is measured in milliseconds, between the current time and midnight, January 1, 1970 UTC | |
58 | * and aligned to GMT timezone. | |
59 | * | |
60 | * @param resourceName | |
61 | * @param destination | |
62 | * @param timestamp | |
63 | * @return <code>true</code> if newer resource has been downloaded, <code>false</code> if resource | |
64 | * in the repository is older or has the same age. | |
65 | * @throws TransferFailedException | |
66 | * @throws ResourceDoesNotExistException | |
67 | * @throws AuthorizationException | |
68 | */ | |
69 | boolean getIfNewer( String resourceName, File destination, long timestamp ) | |
70 | throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException; | |
71 | ||
72 | /** | |
73 | * Copy a file from local system to remote | |
74 | * | |
75 | * @param source the local file | |
76 | * @param destination the remote destination | |
77 | * @throws TransferFailedException | |
78 | * @throws ResourceDoesNotExistException | |
79 | * @throws AuthorizationException | |
80 | */ | |
81 | void put( File source, String destination ) | |
82 | throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException; | |
83 | ||
84 | /** | |
85 | * Copy a directory from local system to remote | |
86 | * | |
87 | * @param sourceDirectory the local directory | |
88 | * @param destinationDirectory the remote destination | |
89 | * @throws TransferFailedException | |
90 | * @throws ResourceDoesNotExistException | |
91 | * @throws AuthorizationException | |
92 | */ | |
93 | void putDirectory( File sourceDirectory, String destinationDirectory ) | |
94 | throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException; | |
95 | ||
96 | /** | |
97 | * Check if a remote resource exists | |
98 | * | |
99 | * @param resourceName | |
100 | * @return whether the resource exists or not | |
101 | * @throws TransferFailedException if there's an error trying to access the remote side | |
102 | * @throws AuthorizationException if not authorized to verify the existence of the resource | |
103 | */ | |
104 | boolean resourceExists( String resourceName ) | |
105 | throws TransferFailedException, AuthorizationException; | |
106 | ||
107 | /** | |
108 | * <p/> | |
109 | * Returns a {@link List} of strings naming the files and directories in the directory denoted by | |
110 | * this abstract pathname. | |
111 | * </p> | |
112 | * <p/> | |
113 | * If this abstract pathname does not denote a directory, or does not exist, then this method throws | |
114 | * {@link ResourceDoesNotExistException}. | |
115 | * Otherwise a {@link List} of strings is returned, one for each file or directory in the directory. | |
116 | * Names denoting the directory itself and the directory's parent directory are not included in | |
117 | * the result. Each string is a file name rather than a complete path. | |
118 | * </p> | |
119 | * <p/> | |
120 | * There is no guarantee that the name strings in the resulting list will appear in any specific | |
121 | * order; they are not, in particular, guaranteed to appear in alphabetical order. | |
122 | * </p> | |
123 | * | |
124 | * @param destinationDirectory directory to list contents of | |
125 | * @return A {@link List} of strings naming the files and directories in the directory denoted by | |
126 | * this abstract pathname. The {@link List} will be empty if the directory is empty. | |
127 | * @throws TransferFailedException if there's an error trying to access the remote side | |
128 | * @throws ResourceDoesNotExistException if destinationDirectory does not exist or is not a directory | |
129 | * @throws AuthorizationException if not authorized to list the contents of the directory | |
130 | */ | |
131 | List<String> getFileList( String destinationDirectory ) | |
132 | throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException; | |
133 | ||
134 | /** | |
135 | * Flag indicating if this wagon supports directory copy operations. | |
136 | * | |
137 | * @return whether if this wagon supports directory operations | |
138 | */ | |
139 | boolean supportsDirectoryCopy(); | |
140 | ||
141 | Repository getRepository(); | |
142 | ||
143 | // ---------------------------------------------------------------------- | |
144 | // Connection/Disconnection | |
145 | // ---------------------------------------------------------------------- | |
146 | ||
147 | /** | |
148 | * Initiate the connection to the repository. | |
149 | * | |
150 | * @param source the repository to connect to | |
151 | * @throws ConnectionException if there is a problem connecting | |
152 | * @throws org.apache.maven.wagon.authentication.AuthenticationException | |
153 | * if the credentials for connecting are not sufficient | |
154 | */ | |
155 | void connect( Repository source ) | |
156 | throws ConnectionException, AuthenticationException; | |
157 | ||
158 | /** | |
159 | * Initiate the connection to the repository. | |
160 | * | |
161 | * @param source the repository to connect to | |
162 | * @throws ConnectionException if there is a problem connecting | |
163 | * @throws org.apache.maven.wagon.authentication.AuthenticationException | |
164 | * if the credentials for connecting are not sufficient | |
165 | */ | |
166 | void connect( Repository source, ProxyInfo proxyInfo ) | |
167 | throws ConnectionException, AuthenticationException; | |
168 | ||
169 | /** | |
170 | * Initiate the connection to the repository. | |
171 | * | |
172 | * @param source the repository to connect to | |
173 | * @param proxyInfoProvider the provider to obtain a network proxy to use to connect to the remote repository | |
174 | * @throws ConnectionException if there is a problem connecting | |
175 | * @throws org.apache.maven.wagon.authentication.AuthenticationException | |
176 | * if the credentials for connecting are not sufficient | |
177 | */ | |
178 | void connect( Repository source, ProxyInfoProvider proxyInfoProvider ) | |
179 | throws ConnectionException, AuthenticationException; | |
180 | ||
181 | /** | |
182 | * Initiate the connection to the repository. | |
183 | * | |
184 | * @param source the repository to connect to | |
185 | * @param authenticationInfo authentication credentials for connecting | |
186 | * @throws ConnectionException if there is a problem connecting | |
187 | * @throws org.apache.maven.wagon.authentication.AuthenticationException | |
188 | * if the credentials for connecting are not sufficient | |
189 | */ | |
190 | void connect( Repository source, AuthenticationInfo authenticationInfo ) | |
191 | throws ConnectionException, AuthenticationException; | |
192 | ||
193 | /** | |
194 | * Initiate the connection to the repository. | |
195 | * | |
196 | * @param source the repository to connect to | |
197 | * @param authenticationInfo authentication credentials for connecting | |
198 | * @param proxyInfo the network proxy to use to connect to the remote repository | |
199 | * @throws ConnectionException if there is a problem connecting | |
200 | * @throws org.apache.maven.wagon.authentication.AuthenticationException | |
201 | * if the credentials for connecting are not sufficient | |
202 | */ | |
203 | void connect( Repository source, AuthenticationInfo authenticationInfo, ProxyInfo proxyInfo ) | |
204 | throws ConnectionException, AuthenticationException; | |
205 | ||
206 | /** | |
207 | * Initiate the connection to the repository. | |
208 | * | |
209 | * @param source the repository to connect to | |
210 | * @param authenticationInfo authentication credentials for connecting | |
211 | * @param proxyInfoProvider the provider to obtain a network proxy to use to connect to the remote repository | |
212 | * @throws ConnectionException if there is a problem connecting | |
213 | * @throws org.apache.maven.wagon.authentication.AuthenticationException | |
214 | * if the credentials for connecting are not sufficient | |
215 | */ | |
216 | void connect( Repository source, AuthenticationInfo authenticationInfo, ProxyInfoProvider proxyInfoProvider ) | |
217 | throws ConnectionException, AuthenticationException; | |
218 | ||
219 | /** | |
220 | * Initiate the connection to the repository. | |
221 | * | |
222 | * @throws ConnectionException if there is a problem connecting | |
223 | * @throws org.apache.maven.wagon.authentication.AuthenticationException | |
224 | * if ther credentials for connecting are not sufficient | |
225 | * @todo delegate this to a truly internal connection method | |
226 | * @deprecated connect using the {@link #connect(org.apache.maven.wagon.repository.Repository)} or related methods | |
227 | * - this is an internal method | |
228 | */ | |
229 | void openConnection() | |
230 | throws ConnectionException, AuthenticationException; | |
231 | ||
232 | /** | |
233 | * Disconnect from the repository. | |
234 | * | |
235 | * @throws ConnectionException if there is a problem disconnecting | |
236 | */ | |
237 | void disconnect() | |
238 | throws ConnectionException; | |
239 | ||
240 | /** | |
241 | * Set the connection timeout limit in milliseconds | |
242 | */ | |
243 | void setTimeout( int timeoutValue ); | |
244 | ||
245 | /** | |
246 | * Get the connection timeout limit in milliseconds | |
247 | */ | |
248 | int getTimeout(); | |
249 | ||
250 | // ---------------------------------------------------------------------- | |
251 | // Session listener | |
252 | // ---------------------------------------------------------------------- | |
253 | ||
254 | void addSessionListener( SessionListener listener ); | |
255 | ||
256 | void removeSessionListener( SessionListener listener ); | |
257 | ||
258 | boolean hasSessionListener( SessionListener listener ); | |
259 | ||
260 | // ---------------------------------------------------------------------- | |
261 | // Transfer listener | |
262 | // ---------------------------------------------------------------------- | |
263 | ||
264 | void addTransferListener( TransferListener listener ); | |
265 | ||
266 | void removeTransferListener( TransferListener listener ); | |
267 | ||
268 | boolean hasTransferListener( TransferListener listener ); | |
269 | ||
270 | boolean isInteractive(); | |
271 | ||
272 | void setInteractive( boolean interactive ); | |
273 | } |