public class UploadCallable extends java.lang.Object implements java.util.concurrent.Callable<UploadResult>
Modifier and Type | Field and Description |
---|---|
private TransferManagerConfiguration |
configuration |
private java.util.List<PartETag> |
eTagsToSkip
ETags retrieved from Amazon S3 for a multi-part upload id.
|
private java.util.List<java.util.concurrent.Future<PartETag>> |
futures |
private ProgressListenerChain |
listener |
private static org.apache.commons.logging.Log |
log |
private java.lang.String |
multipartUploadId |
private PutObjectRequest |
origReq |
private PersistableUpload |
persistableUpload |
private AmazonS3 |
s3 |
private java.util.concurrent.ExecutorService |
threadPool |
private TransferProgress |
transferProgress |
private UploadImpl |
upload |
Constructor and Description |
---|
UploadCallable(TransferManager transferManager,
java.util.concurrent.ExecutorService threadPool,
UploadImpl upload,
PutObjectRequest origReq,
ProgressListenerChain progressListenerChain,
java.lang.String uploadId,
TransferProgress transferProgress) |
Modifier and Type | Method and Description |
---|---|
UploadResult |
call() |
private void |
captureUploadStateIfPossible()
Captures the state of the upload.
|
(package private) java.util.List<PartETag> |
getETags()
Returns the ETags retrieved from Amazon S3 for a multi-part upload id.
|
(package private) java.util.List<java.util.concurrent.Future<PartETag>> |
getFutures() |
(package private) java.lang.String |
getMultipartUploadId() |
private long |
getOptimalPartSize(boolean isUsingEncryption)
Computes and returns the optimal part size for the upload.
|
PersistableUpload |
getPersistableUpload() |
private java.util.Map<java.lang.Integer,PartSummary> |
identifyExistingPartsForResume(java.lang.String uploadId) |
private java.lang.String |
initiateMultipartUpload(PutObjectRequest origReq,
boolean isUsingEncryption)
Initiates a multipart upload and returns the upload id
|
boolean |
isMultipartUpload()
Returns true if this UploadCallable is processing a multipart upload.
|
private void |
notifyPersistableTransferAvailability()
Notifies to the callbacks that state is available
|
(package private) void |
performAbortMultipartUpload()
Performs an
AmazonS3.abortMultipartUpload(AbortMultipartUploadRequest)
operation for the given multi-part upload. |
private UploadResult |
uploadInOneChunk()
Uploads the given request in a single chunk and returns the result.
|
private UploadResult |
uploadInParts()
Uploads the request in multiple chunks, submitting each upload chunk task
to the thread pool and recording its corresponding Future object, as well
as the multipart upload id.
|
private void |
uploadPartsInParallel(UploadPartRequestFactory requestFactory,
java.lang.String uploadId)
Submits a callable for each part to upload to our thread pool and records its corresponding Future.
|
private UploadResult |
uploadPartsInSeries(UploadPartRequestFactory requestFactory)
Uploads all parts in the request in serial in this thread, then completes
the upload and returns the result.
|
private final AmazonS3 s3
private final java.util.concurrent.ExecutorService threadPool
private final PutObjectRequest origReq
private java.lang.String multipartUploadId
private final UploadImpl upload
private static final org.apache.commons.logging.Log log
private final TransferManagerConfiguration configuration
private final java.util.List<java.util.concurrent.Future<PartETag>> futures
private final ProgressListenerChain listener
private final TransferProgress transferProgress
private final java.util.List<PartETag> eTagsToSkip
private PersistableUpload persistableUpload
public UploadCallable(TransferManager transferManager, java.util.concurrent.ExecutorService threadPool, UploadImpl upload, PutObjectRequest origReq, ProgressListenerChain progressListenerChain, java.lang.String uploadId, TransferProgress transferProgress)
java.util.List<java.util.concurrent.Future<PartETag>> getFutures()
java.util.List<PartETag> getETags()
java.lang.String getMultipartUploadId()
public boolean isMultipartUpload()
public UploadResult call() throws java.lang.Exception
call
in interface java.util.concurrent.Callable<UploadResult>
java.lang.Exception
private UploadResult uploadInOneChunk()
private void captureUploadStateIfPossible()
public PersistableUpload getPersistableUpload()
private void notifyPersistableTransferAvailability()
private UploadResult uploadInParts() throws java.lang.Exception
java.lang.Exception
void performAbortMultipartUpload()
AmazonS3.abortMultipartUpload(AbortMultipartUploadRequest)
operation for the given multi-part upload.private long getOptimalPartSize(boolean isUsingEncryption)
private UploadResult uploadPartsInSeries(UploadPartRequestFactory requestFactory)
private void uploadPartsInParallel(UploadPartRequestFactory requestFactory, java.lang.String uploadId)
private java.util.Map<java.lang.Integer,PartSummary> identifyExistingPartsForResume(java.lang.String uploadId)
private java.lang.String initiateMultipartUpload(PutObjectRequest origReq, boolean isUsingEncryption)
isUsingEncryption
-