public static PutObjectRequest intercept(PutObjectRequest request) { Map<String, String> newMetadata = toServiceMeta(request.getOpcMeta()); return PutObjectRequest.builder().copy(request).opcMeta(newMetadata).build(); }
/** * Copy method to populate the builder with values from the given instance. * @return this builder instance */ public Builder copy(PutObjectRequest o) { namespaceName(o.getNamespaceName()); bucketName(o.getBucketName()); objectName(o.getObjectName()); contentLength(o.getContentLength()); putObjectBody(o.getPutObjectBody()); ifMatch(o.getIfMatch()); ifNoneMatch(o.getIfNoneMatch()); opcClientRequestId(o.getOpcClientRequestId()); expect(o.getExpect()); contentMD5(o.getContentMD5()); contentType(o.getContentType()); contentLanguage(o.getContentLanguage()); contentEncoding(o.getContentEncoding()); opcMeta(o.getOpcMeta()); invocationCallback(o.getInvocationCallback()); return this; }
protected MultipartObjectAssembler createAssembler( PutObjectRequest request, UploadRequest uploadRequest, ExecutorService executorService) { MultipartObjectAssembler assembler = new MultipartObjectAssembler( objectStorage, request.getNamespaceName(), request.getBucketName(), request.getObjectName(), uploadRequest.allowOverwrite, executorService); assembler.setOpcClientRequestId(request.getOpcClientRequestId()); return assembler; }
/** * Initiates a new upload request. The upload manager will decide whether to use * a single PutObject call or multi-part uploads depending on the {@link UploadConfiguration} * specified. * <p> * Note, if multi-part is used, no MD5 will be returned in the response. Also, if a multi-part * upload attempt fails, the UploadManager will attempt to abort the upload to avoid leaving * partially complete uploads and parts (unless explicitly disabled via UploadConfiguration). * * @param uploadDetails The upload request. * @return The response. * @throws BmcException if the upload fails for any reason. */ public UploadResponse upload(UploadRequest uploadDetails) { if (MultipartUtils.shouldUseMultipart( uploadConfiguration, uploadDetails.putObjectRequest.getContentLength())) { return multipartUpload(uploadDetails); } return singleUpload( uploadDetails, uploadDetails.putObjectRequest.getPutObjectBody(), uploadDetails.putObjectRequest.getContentLength()); }
ProgressTrackerFactory progressTrackerFactory = ProgressTrackerFactory.createMultiPartUploadProgressTrackerFactory( uploadDetails.progressReporter, request.getContentLength()); MultipartUtils.calculatePartSize(uploadConfiguration, request.getContentLength()); StreamChunkCreator chunkCreator = new StreamChunkCreator( request.getPutObjectBody(), request.getContentLength(), sizePerPart); manifest = assembler.newRequest( request.getContentType(), request.getContentLanguage(), request.getContentEncoding(), request.getOpcMeta()); } finally { StreamUtils.closeQuietly(uploadDetails.putObjectRequest.getPutObjectBody());
MD5Calculation md5Calculation = calculateMd5( putObjectRequest.getPutObjectBody(), putObjectRequest.getContentLength()); putObjectRequest = PutObjectRequest.builder() .copy(putObjectRequest) .contentMD5(md5Calculation.md5) } else { putObjectRequest = PutObjectRequest.builder() .copy(putObjectRequest) .putObjectBody( ProgressTrackingInputStreamFactory.create( putObjectRequest.getPutObjectBody(), progressTrackerFactory.getProgressTracker())) .build();
/** * Builds a new UploadRequest instance. The body and content length will be set on the given * request based on the original values provided when creating the builder. * * @param request The request containing all param except the body and content length. * @return A new request instance. */ public UploadRequest build(PutObjectRequest request) { String ifNoneMatch = ObjectStorageUtils.getIfNoneMatchHeader(allowOverwrite); return new UploadRequest( PutObjectRequest.builder() .copy(request) .putObjectBody(inputStream) .contentLength(contentLength) .ifNoneMatch(ifNoneMatch) .build(), parallelUploadExecutorService, allowOverwrite, progressReporter); } }
@Override public PutObjectResponse apply(PutObjectRequest request) { InputStream stream = request.getPutObjectBody(); BmcException ex = null; for (int i = 1; i <= MAX_RETRIES; i++) { try { return service.putObject(request); } catch (BmcException e) { ex = e; if (canRetry(stream, e, i)) { request = PutObjectRequest.builder() .copy(request) .putObjectBody( ((DuplicatableInputStream) stream).duplicate()) .build(); } else { break; } } } throw ex; } };
/** * Test whether or not the MD5 value should be calculated for the given request when issuing a single * upload (non-multipart) request. * * @param config The configuration to use. * @param request The request being sent. * @return true to calculate MD5, false if it's not necessary. */ public static boolean shouldCalculateMd5( @NonNull UploadConfiguration config, @NonNull PutObjectRequest request) { return config.isEnforceMd5BeforeUpload() && request.getContentMD5() == null; }
PutObjectRequest.builder() .namespaceName(namespaceName) .bucketName(bucket)
public static com.oracle.bmc.http.internal.WrappedInvocationBuilder fromRequest( com.oracle.bmc.http.internal.RestClient client, PutObjectRequest request) { Validate.notNull(request, "request instance is required"); Validate.notBlank(request.getNamespaceName(), "namespaceName must not be blank"); Validate.notBlank(request.getBucketName(), "bucketName must not be blank"); Validate.notBlank(request.getObjectName(), "objectName must not be blank"); Validate.notNull(request.getPutObjectBody(), "putObjectBody is required"); .path( com.oracle.bmc.util.internal.HttpUtils.encodePathSegment( request.getNamespaceName())) .path("b") .path( com.oracle.bmc.util.internal.HttpUtils.encodePathSegment( request.getBucketName())) .path("o") .path( com.oracle.bmc.util.internal.HttpUtils.encodePathSegment( request.getObjectName())); if (request.getIfMatch() != null) { ib.header("if-match", request.getIfMatch()); if (request.getIfNoneMatch() != null) { ib.header("if-none-match", request.getIfNoneMatch()); if (request.getOpcClientRequestId() != null) { ib.header("opc-client-request-id", request.getOpcClientRequestId()); if (request.getExpect() != null) {
PutObjectRequest.builder() .namespaceName(namespace) .bucketName(bucketName)
PutObjectRequest.builder() .namespaceName(namespaceName) .bucketName(sourceBucket)
PutObjectRequest.builder() .bucketName(bucketName) .namespaceName(namespaceName)