in src/main/java/com/aliyun/oss/internal/OSSMultipartOperation.java [147:211]
public CompleteMultipartUploadResult completeMultipartUpload(
CompleteMultipartUploadRequest completeMultipartUploadRequest) throws OSSException, ClientException {
assertParameterNotNull(completeMultipartUploadRequest, "completeMultipartUploadRequest");
String key = completeMultipartUploadRequest.getKey();
String bucketName = completeMultipartUploadRequest.getBucketName();
String uploadId = completeMultipartUploadRequest.getUploadId();
assertParameterNotNull(bucketName, "bucketName");
ensureBucketNameValid(bucketName);
assertParameterNotNull(key, "key");
ensureObjectKeyValid(key);
assertStringNotNullOrEmpty(uploadId, "uploadId");
ensureCallbackValid(completeMultipartUploadRequest.getCallback());
Map<String, String> headers = new HashMap<String, String>();
populateCompleteMultipartUploadOptionalHeaders(completeMultipartUploadRequest, headers);
populateRequestCallback(headers, completeMultipartUploadRequest.getCallback());
populateRequestPayerHeader(headers, completeMultipartUploadRequest.getRequestPayer());
Map<String, String> parameters = new HashMap<String, String>();
parameters.put(UPLOAD_ID, uploadId);
List<PartETag> partETags = completeMultipartUploadRequest.getPartETags();
FixedLengthInputStream requestInstream;
if (partETags != null) {
Collections.sort(partETags, new Comparator<PartETag>() {
@Override
public int compare(PartETag p1, PartETag p2) {
return p1.getPartNumber() - p2.getPartNumber();
}
});
requestInstream = completeMultipartUploadRequestMarshaller.marshall(completeMultipartUploadRequest);
} else {
requestInstream = new FixedLengthInputStream(new ByteArrayInputStream("".getBytes()), 0);
}
RequestMessage request = new OSSRequestMessageBuilder(getInnerClient()).setEndpoint(getEndpoint(completeMultipartUploadRequest))
.setMethod(HttpMethod.POST).setBucket(bucketName).setKey(key).setHeaders(headers)
.setParameters(parameters)
.setInputStreamWithLength(requestInstream)
.setOriginalRequest(completeMultipartUploadRequest).build();
List<ResponseHandler> reponseHandlers = new ArrayList<ResponseHandler>();
reponseHandlers.add(new OSSCallbackErrorResponseHandler());
CompleteMultipartUploadResult result = null;
if (!isNeedReturnResponse(completeMultipartUploadRequest)) {
result = doOperation(request, completeMultipartUploadResponseParser, bucketName, key, true);
} else {
result = doOperation(request, completeMultipartUploadProcessResponseParser, bucketName, key, true, null,
reponseHandlers);
}
if (partETags != null) {
result.setClientCRC(calcObjectCRCFromParts(partETags));
}
if (getInnerClient().getClientConfiguration().isCrcCheckEnabled()) {
OSSUtils.checkChecksum(result.getClientCRC(), result.getServerCRC(), result.getRequestId());
}
return result;
}