in src/main/java/software/amazon/encryption/s3/internal/MultipartUploadObjectPipeline.java [174:193]
public CompleteMultipartUploadResponse completeMultipartUpload(CompleteMultipartUploadRequest request)
throws AwsServiceException, SdkClientException {
String uploadId = request.uploadId();
final MultipartUploadMaterials uploadContext = _multipartUploadMaterials.get(uploadId);
if (uploadContext != null && !uploadContext.hasFinalPartBeenSeen()) {
throw new S3EncryptionClientException(
"Unable to complete an encrypted multipart upload without being told which part was the last. "
+ "Without knowing which part was the last, the encrypted data in Amazon S3 is incomplete and corrupt.");
}
CompleteMultipartUploadRequest actualRequest = request.toBuilder()
.overrideConfiguration(API_NAME_INTERCEPTOR)
.build();
CompleteMultipartUploadResponse response = _s3AsyncClient.completeMultipartUpload(actualRequest).join();
_multipartUploadMaterials.remove(uploadId);
return response;
}