* Initiates a multipart upload and returns the upload id
* @param isUsingEncryption
*/
private String initiateMultipartUpload(PutObjectRequest putObjectRequest, boolean isUsingEncryption) {
InitiateMultipartUploadRequest initiateMultipartUploadRequest = null;
if (isUsingEncryption && putObjectRequest instanceof EncryptedPutObjectRequest) {
initiateMultipartUploadRequest = new EncryptedInitiateMultipartUploadRequest(
putObjectRequest.getBucketName(), putObjectRequest.getKey()).withCannedACL(
putObjectRequest.getCannedAcl()).withObjectMetadata(putObjectRequest.getMetadata());
((EncryptedInitiateMultipartUploadRequest) initiateMultipartUploadRequest)
.setMaterialsDescription(((EncryptedPutObjectRequest) putObjectRequest).getMaterialsDescription());
} else {
initiateMultipartUploadRequest = new InitiateMultipartUploadRequest(putObjectRequest.getBucketName(), putObjectRequest.getKey())
.withCannedACL(putObjectRequest.getCannedAcl())
.withObjectMetadata(putObjectRequest.getMetadata());
}
TransferManager.appendMultipartUserAgent(initiateMultipartUploadRequest);
if (putObjectRequest.getStorageClass() != null) {
initiateMultipartUploadRequest.setStorageClass(
StorageClass.fromValue(putObjectRequest.getStorageClass()));
}
if (putObjectRequest.getRedirectLocation() != null) {
initiateMultipartUploadRequest.setRedirectLocation(putObjectRequest
.getRedirectLocation());
}
if (putObjectRequest.getSSECustomerKey() != null) {
initiateMultipartUploadRequest.setSSECustomerKey(putObjectRequest.getSSECustomerKey());
}
String uploadId = s3.initiateMultipartUpload(initiateMultipartUploadRequest).getUploadId();
log.debug("Initiated new multipart upload: " + uploadId);