Package org.apache.maven.wagon
Class AbstractWagon
java.lang.Object
org.apache.maven.wagon.AbstractWagon
- All Implemented Interfaces:
Wagon
- Direct Known Subclasses:
StreamWagon
Implementation of common facilities for Wagon providers.
- Author:
- Michal Maczka
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected AuthenticationInfoprotected static final intTo efficiently buffer data, use a multiple of 4 KiB as this is likely to match the hardware buffer size of certain storage devices.protected static final intprotected booleanprotected static final intprotected static final intThe desired minimum amount of chunks in which aResourceshall betransferred.protected ProxyInfoDeprecated.protected Repositoryprotected SessionEventSupportprotected TransferEventSupportFields inherited from interface org.apache.maven.wagon.Wagon
DEFAULT_CONNECTION_TIMEOUT, DEFAULT_READ_TIMEOUT, ROLE -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddSessionListener(SessionListener listener) voidaddTransferListener(TransferListener listener) protected voidcleanupGetTransfer(Resource resource) protected voidcleanupPutTransfer(Resource resource) protected abstract voidvoidconnect(Repository repository) Initiate the connection to the repository.voidconnect(Repository repository, AuthenticationInfo authenticationInfo) Initiate the connection to the repository.voidconnect(Repository repository, AuthenticationInfo authenticationInfo, ProxyInfo proxyInfo) Initiate the connection to the repository.voidconnect(Repository repository, AuthenticationInfo authenticationInfo, ProxyInfoProvider proxyInfoProvider) Initiate the connection to the repository.voidconnect(Repository repository, ProxyInfo proxyInfo) Initiate the connection to the repository.voidconnect(Repository repository, ProxyInfoProvider proxyInfoProvider) Initiate the connection to the repository.protected voidcreateParentDirectories(File destination) voidDisconnect from the repository.protected voidfinishGetTransfer(Resource resource, InputStream input, OutputStream output) protected voidfinishPutTransfer(Resource resource, InputStream input, OutputStream output) protected voidfireGetCompleted(Resource resource, File localFile) protected voidfireGetInitiated(Resource resource, File localFile) protected voidfireGetStarted(Resource resource, File localFile) protected voidfirePutCompleted(Resource resource, File localFile) protected voidfirePutInitiated(Resource resource, File localFile) protected voidfirePutStarted(Resource resource, File localFile) protected voidprotected voidfireSessionDebug(String message) protected voidprotected voidprotected voidfireSessionError(Exception exception) protected voidprotected voidprotected voidprotected voidprotected voidfireTransferDebug(String message) protected voidfireTransferError(Resource resource, Exception e, int requestType) protected voidfireTransferProgress(TransferEvent transferEvent, byte[] buffer, int n) protected intgetBufferCapacityForTransfer(long numberOfBytes) Provides a buffer size for efficiently transferring the given amount of bytes such that it is not fragmented into too many chunks.getFileList(String destinationDirectory) Returns aListof strings naming the files and directories in the directory denoted by this abstract pathname.protected static Stringprotected ProxyInfogetProxyInfo(String protocol, String host) intGet the read timeout limit in millisecondsintGet the connection timeout limit in millisecondsprotected voidgetTransfer(Resource resource, File destination, InputStream input) protected voidgetTransfer(Resource resource, File destination, InputStream input, boolean closeInput, int maxSize) Deprecated.protected voidgetTransfer(Resource resource, File destination, InputStream input, boolean closeInput, long maxSize) protected voidgetTransfer(Resource resource, OutputStream output, InputStream input) protected voidgetTransfer(Resource resource, OutputStream output, InputStream input, boolean closeInput, int maxSize) Deprecated.protected voidgetTransfer(Resource resource, OutputStream output, InputStream input, boolean closeInput, long maxSize) booleanhasSessionListener(SessionListener listener) booleanhasTransferListener(TransferListener listener) booleanvoidInitiate the connection to the repository.protected abstract voidprotected voidpostProcessListeners(Resource resource, File source, int requestType) This method is used if you are not streaming the transfer, to make sure any listeners dependent on state (eg checksum observers) succeed.voidputDirectory(File sourceDirectory, String destinationDirectory) Copy a directory from local system to remoteprotected voidputTransfer(Resource resource, File source, OutputStream output, boolean closeOutput) protected voidputTransfer(Resource resource, InputStream input, OutputStream output, boolean closeOutput) voidremoveSessionListener(SessionListener listener) voidremoveTransferListener(TransferListener listener) booleanresourceExists(String resourceName) Check if a remote resource existsvoidsetInteractive(boolean interactive) voidsetPermissionsOverride(RepositoryPermissions permissionsOverride) voidsetReadTimeout(int readTimeout) Set the read timeout limit in millisecondsvoidsetSessionEventSupport(SessionEventSupport sessionEventSupport) voidsetTimeout(int timeoutValue) Set the connection timeout limit in millisecondsvoidsetTransferEventSupport(TransferEventSupport transferEventSupport) booleanFlag indicating if this wagon supports directory copy operations.protected voidtransfer(Resource resource, File source, OutputStream output, boolean closeOutput) Write fromFiletoOutputStreamprotected voidtransfer(Resource resource, InputStream input, OutputStream output, int requestType) Write fromInputStreamtoOutputStream.protected voidtransfer(Resource resource, InputStream input, OutputStream output, int requestType, int maxSize) Deprecated.Please use the transfer using long as type of maxSizeprotected voidtransfer(Resource resource, InputStream input, OutputStream output, int requestType, long maxSize) Write fromInputStreamtoOutputStream.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.apache.maven.wagon.Wagon
get, getIfNewer, put
-
Field Details
-
DEFAULT_BUFFER_SIZE
protected static final int DEFAULT_BUFFER_SIZE- See Also:
-
MAXIMUM_BUFFER_SIZE
protected static final int MAXIMUM_BUFFER_SIZE- See Also:
-
BUFFER_SEGMENT_SIZE
protected static final int BUFFER_SEGMENT_SIZETo efficiently buffer data, use a multiple of 4 KiB as this is likely to match the hardware buffer size of certain storage devices.- See Also:
-
MINIMUM_AMOUNT_OF_TRANSFER_CHUNKS
protected static final int MINIMUM_AMOUNT_OF_TRANSFER_CHUNKSThe desired minimum amount of chunks in which aResourceshall betransferred. This corresponds to the minimum timesfireTransferProgress(TransferEvent, byte[], int)is executed. 100 notifications is a conservative value that will lead to small chunks for any artifact less thatBUFFER_SEGMENT_SIZE*MINIMUM_AMOUNT_OF_TRANSFER_CHUNKSin size.- See Also:
-
repository
-
sessionEventSupport
-
transferEventSupport
-
authenticationInfo
-
interactive
protected boolean interactive -
proxyInfo
Deprecated.
-
-
Constructor Details
-
AbstractWagon
public AbstractWagon()
-
-
Method Details
-
getRepository
- Specified by:
getRepositoryin interfaceWagon
-
getProxyInfo
-
getAuthenticationInfo
-
openConnection
Description copied from interface:WagonInitiate the connection to the repository.- Specified by:
openConnectionin interfaceWagon- Throws:
ConnectionException- if there is a problem connectingAuthenticationException- if ther credentials for connecting are not sufficient
-
connect
Description copied from interface:WagonInitiate the connection to the repository.- Specified by:
connectin interfaceWagon- Parameters:
repository- the repository to connect to- Throws:
ConnectionException- if there is a problem connectingAuthenticationException- if the credentials for connecting are not sufficient
-
connect
public void connect(Repository repository, ProxyInfo proxyInfo) throws ConnectionException, AuthenticationException Description copied from interface:WagonInitiate the connection to the repository.- Specified by:
connectin interfaceWagon- Parameters:
repository- the repository to connect to- Throws:
ConnectionException- if there is a problem connectingAuthenticationException- if the credentials for connecting are not sufficient
-
connect
public void connect(Repository repository, ProxyInfoProvider proxyInfoProvider) throws ConnectionException, AuthenticationException Description copied from interface:WagonInitiate the connection to the repository.- Specified by:
connectin interfaceWagon- Parameters:
repository- the repository to connect toproxyInfoProvider- the provider to obtain a network proxy to use to connect to the remote repository- Throws:
ConnectionException- if there is a problem connectingAuthenticationException- if the credentials for connecting are not sufficient
-
connect
public void connect(Repository repository, AuthenticationInfo authenticationInfo) throws ConnectionException, AuthenticationException Description copied from interface:WagonInitiate the connection to the repository.- Specified by:
connectin interfaceWagon- Parameters:
repository- the repository to connect toauthenticationInfo- authentication credentials for connecting- Throws:
ConnectionException- if there is a problem connectingAuthenticationException- if the credentials for connecting are not sufficient
-
connect
public void connect(Repository repository, AuthenticationInfo authenticationInfo, ProxyInfo proxyInfo) throws ConnectionException, AuthenticationException Description copied from interface:WagonInitiate the connection to the repository.- Specified by:
connectin interfaceWagon- Parameters:
repository- the repository to connect toauthenticationInfo- authentication credentials for connectingproxyInfo- the network proxy to use to connect to the remote repository- Throws:
ConnectionException- if there is a problem connectingAuthenticationException- if the credentials for connecting are not sufficient
-
connect
public void connect(Repository repository, AuthenticationInfo authenticationInfo, ProxyInfoProvider proxyInfoProvider) throws ConnectionException, AuthenticationException Description copied from interface:WagonInitiate the connection to the repository.- Specified by:
connectin interfaceWagon- Parameters:
repository- the repository to connect toauthenticationInfo- authentication credentials for connectingproxyInfoProvider- the provider to obtain a network proxy to use to connect to the remote repository- Throws:
ConnectionException- if there is a problem connectingAuthenticationException- if the credentials for connecting are not sufficient
-
openConnectionInternal
protected abstract void openConnectionInternal() throws ConnectionException, AuthenticationException -
disconnect
Description copied from interface:WagonDisconnect from the repository.- Specified by:
disconnectin interfaceWagon- Throws:
ConnectionException- if there is a problem disconnecting
-
closeConnection
- Throws:
ConnectionException
-
createParentDirectories
- Throws:
TransferFailedException
-
setTimeout
public void setTimeout(int timeoutValue) Description copied from interface:WagonSet the connection timeout limit in milliseconds- Specified by:
setTimeoutin interfaceWagon
-
getTimeout
public int getTimeout()Description copied from interface:WagonGet the connection timeout limit in milliseconds- Specified by:
getTimeoutin interfaceWagon
-
getTransfer
protected void getTransfer(Resource resource, File destination, InputStream input) throws TransferFailedException - Throws:
TransferFailedException
-
getTransfer
protected void getTransfer(Resource resource, OutputStream output, InputStream input) throws TransferFailedException - Throws:
TransferFailedException
-
getTransfer
@Deprecated protected void getTransfer(Resource resource, File destination, InputStream input, boolean closeInput, int maxSize) throws TransferFailedException Deprecated.- Throws:
TransferFailedException
-
getTransfer
protected void getTransfer(Resource resource, File destination, InputStream input, boolean closeInput, long maxSize) throws TransferFailedException - Throws:
TransferFailedException
-
getTransfer
@Deprecated protected void getTransfer(Resource resource, OutputStream output, InputStream input, boolean closeInput, int maxSize) throws TransferFailedException Deprecated.- Throws:
TransferFailedException
-
getTransfer
protected void getTransfer(Resource resource, OutputStream output, InputStream input, boolean closeInput, long maxSize) throws TransferFailedException - Throws:
TransferFailedException
-
finishGetTransfer
protected void finishGetTransfer(Resource resource, InputStream input, OutputStream output) throws TransferFailedException - Throws:
TransferFailedException
-
cleanupGetTransfer
-
putTransfer
protected void putTransfer(Resource resource, File source, OutputStream output, boolean closeOutput) throws TransferFailedException, AuthorizationException, ResourceDoesNotExistException -
transfer
protected void transfer(Resource resource, File source, OutputStream output, boolean closeOutput) throws TransferFailedException, AuthorizationException, ResourceDoesNotExistException Write fromFiletoOutputStream- Parameters:
resource- resource to transfersource- file to read fromoutput- output streamcloseOutput- whether the output stream should be closed or not- Throws:
TransferFailedExceptionResourceDoesNotExistExceptionAuthorizationException- Since:
- 1.0-beta-1
-
putTransfer
protected void putTransfer(Resource resource, InputStream input, OutputStream output, boolean closeOutput) throws TransferFailedException, AuthorizationException, ResourceDoesNotExistException -
cleanupPutTransfer
-
finishPutTransfer
protected void finishPutTransfer(Resource resource, InputStream input, OutputStream output) throws TransferFailedException, AuthorizationException, ResourceDoesNotExistException -
transfer
protected void transfer(Resource resource, InputStream input, OutputStream output, int requestType) throws IOException Write fromInputStreamtoOutputStream. Equivalent totransfer(Resource, InputStream, OutputStream, int, int)with a maxSize equals toInteger.MAX_VALUE- Parameters:
resource- resource to transferinput- input streamoutput- output streamrequestType- one ofTransferEvent.REQUEST_GETorTransferEvent.REQUEST_PUT- Throws:
IOException
-
transfer
@Deprecated protected void transfer(Resource resource, InputStream input, OutputStream output, int requestType, int maxSize) throws IOException Deprecated.Please use the transfer using long as type of maxSizeWrite fromInputStreamtoOutputStream. Equivalent totransfer(Resource, InputStream, OutputStream, int, int)with a maxSize equals toInteger.MAX_VALUE- Parameters:
resource- resource to transferinput- input streamoutput- output streamrequestType- one ofTransferEvent.REQUEST_GETorTransferEvent.REQUEST_PUTmaxSize- size of the buffer- Throws:
IOException
-
transfer
protected void transfer(Resource resource, InputStream input, OutputStream output, int requestType, long maxSize) throws IOException Write fromInputStreamtoOutputStream. Equivalent totransfer(Resource, InputStream, OutputStream, int, long)with a maxSize equals toInteger.MAX_VALUE- Parameters:
resource- resource to transferinput- input streamoutput- output streamrequestType- one ofTransferEvent.REQUEST_GETorTransferEvent.REQUEST_PUTmaxSize- size of the buffer- Throws:
IOException
-
getBufferCapacityForTransfer
protected int getBufferCapacityForTransfer(long numberOfBytes) Provides a buffer size for efficiently transferring the given amount of bytes such that it is not fragmented into too many chunks. For larger files larger buffers are provided such that downstreamlistenersare not notified too frequently. For instance, transferring gigabyte-sized resources would result in millions of notifications when using only a few kibibytes of buffer, drastically slowing down transfer since transfer progress listeners and notifications are synchronous and may block, e.g., when writing download progress status to console.- Parameters:
numberOfBytes- can be 0 or less, in which case a default buffer size is used.- Returns:
- a byte buffer suitable for transferring the given amount of bytes without too many chunks.
-
fireTransferProgress
-
fireGetCompleted
-
fireGetStarted
-
fireGetInitiated
-
firePutInitiated
-
firePutCompleted
-
firePutStarted
-
fireSessionDisconnected
protected void fireSessionDisconnected() -
fireSessionDisconnecting
protected void fireSessionDisconnecting() -
fireSessionLoggedIn
protected void fireSessionLoggedIn() -
fireSessionLoggedOff
protected void fireSessionLoggedOff() -
fireSessionOpened
protected void fireSessionOpened() -
fireSessionOpening
protected void fireSessionOpening() -
fireSessionConnectionRefused
protected void fireSessionConnectionRefused() -
fireSessionError
-
fireTransferDebug
-
fireSessionDebug
-
hasTransferListener
- Specified by:
hasTransferListenerin interfaceWagon
-
addTransferListener
- Specified by:
addTransferListenerin interfaceWagon
-
removeTransferListener
- Specified by:
removeTransferListenerin interfaceWagon
-
addSessionListener
- Specified by:
addSessionListenerin interfaceWagon
-
hasSessionListener
- Specified by:
hasSessionListenerin interfaceWagon
-
removeSessionListener
- Specified by:
removeSessionListenerin interfaceWagon
-
fireTransferError
-
getSessionEventSupport
-
setSessionEventSupport
-
getTransferEventSupport
-
setTransferEventSupport
-
postProcessListeners
protected void postProcessListeners(Resource resource, File source, int requestType) throws TransferFailedException This method is used if you are not streaming the transfer, to make sure any listeners dependent on state (eg checksum observers) succeed.- Throws:
TransferFailedException
-
putDirectory
public void putDirectory(File sourceDirectory, String destinationDirectory) throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException Description copied from interface:WagonCopy a directory from local system to remote- Specified by:
putDirectoryin interfaceWagon- Parameters:
sourceDirectory- the local directorydestinationDirectory- the remote destination- Throws:
TransferFailedExceptionResourceDoesNotExistExceptionAuthorizationException
-
supportsDirectoryCopy
public boolean supportsDirectoryCopy()Description copied from interface:WagonFlag indicating if this wagon supports directory copy operations.- Specified by:
supportsDirectoryCopyin interfaceWagon- Returns:
- whether if this wagon supports directory operations
-
getPath
-
isInteractive
public boolean isInteractive()- Specified by:
isInteractivein interfaceWagon
-
setInteractive
public void setInteractive(boolean interactive) - Specified by:
setInteractivein interfaceWagon
-
getFileList
public List<String> getFileList(String destinationDirectory) throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException Description copied from interface:WagonReturns aListof strings naming the files and directories in the directory denoted by this abstract pathname. If this abstract pathname does not denote a directory, or does not exist, then this method throwsResourceDoesNotExistException. Otherwise aListof strings is returned, one for each file or directory in the directory. Names denoting the directory itself and the directory's parent directory are not included in the result. Each string is a file name rather than a complete path. There is no guarantee that the name strings in the resulting list will appear in any specific order; they are not, in particular, guaranteed to appear in alphabetical order.- Specified by:
getFileListin interfaceWagon- Parameters:
destinationDirectory- directory to list contents of- Returns:
- A
Listof strings naming the files and directories in the directory denoted by this abstract pathname. TheListwill be empty if the directory is empty. - Throws:
TransferFailedException- if there's an error trying to access the remote sideResourceDoesNotExistException- if destinationDirectory does not exist or is not a directoryAuthorizationException- if not authorized to list the contents of the directory
-
resourceExists
public boolean resourceExists(String resourceName) throws TransferFailedException, AuthorizationException Description copied from interface:WagonCheck if a remote resource exists- Specified by:
resourceExistsin interfaceWagon- Parameters:
resourceName-- Returns:
- whether the resource exists or not
- Throws:
TransferFailedException- if there's an error trying to access the remote sideAuthorizationException- if not authorized to verify the existence of the resource
-
getProxyInfo
-
getPermissionsOverride
-
setPermissionsOverride
-
setReadTimeout
public void setReadTimeout(int readTimeout) Description copied from interface:WagonSet the read timeout limit in milliseconds- Specified by:
setReadTimeoutin interfaceWagon
-
getReadTimeout
public int getReadTimeout()Description copied from interface:WagonGet the read timeout limit in milliseconds- Specified by:
getReadTimeoutin interfaceWagon
-