private int doUploadPart( InputStream stream, long contentLength, String md5, int partNumber, boolean allowPartOverwrite) { validateState(); String ifNoneMatch = ObjectStorageUtils.getIfNoneMatchHeader(allowPartOverwrite); UploadPartRequest request = UploadPartRequest.builder() .namespaceName(namespaceName) .bucketName(bucketName) .objectName(objectName) .contentMD5(md5) .contentLength(contentLength) .uploadId(manifest.getUploadId()) .ifNoneMatch(ifNoneMatch) .uploadPartNum(partNumber) .uploadPartBody(stream) .opcClientRequestId(createClientRequestId("-" + partNumber)) .build(); transferManager.startTransfer(request); return partNumber; }
@Override public UploadPartResponse apply(UploadPartRequest request) { InputStream stream = request.getUploadPartBody(); BmcException ex = null; for (int i = 1; i <= MAX_RETRIES; i++) { try { return service.uploadPart(request); } catch (BmcException e) { ex = e; if (canRetry(stream, e, i)) { request = UploadPartRequest.builder() .copy(request) .uploadPartBody( ((DuplicatableInputStream) stream).duplicate()) .build(); } else { break; } } } throw ex; } };
/** * Copy method to populate the builder with values from the given instance. * @return this builder instance */ public Builder copy(UploadPartRequest o) { namespaceName(o.getNamespaceName()); bucketName(o.getBucketName()); objectName(o.getObjectName()); uploadId(o.getUploadId()); uploadPartNum(o.getUploadPartNum()); contentLength(o.getContentLength()); uploadPartBody(o.getUploadPartBody()); opcClientRequestId(o.getOpcClientRequestId()); ifMatch(o.getIfMatch()); ifNoneMatch(o.getIfNoneMatch()); expect(o.getExpect()); contentMD5(o.getContentMD5()); invocationCallback(o.getInvocationCallback()); return this; }