public CopyObjectRequest withAcl(AccessControlList acl) { setAcl(acl); return this; }
public CopyObjectRequest withObjectMetadata(S3ObjectMetadata objectMetadata) { setObjectMetadata(objectMetadata); return this; }
public CopyObjectRequest withSourceVersionId(String sourceVersionId) { setSourceVersionId(sourceVersionId); return this; }
if (config.isRemoteCopy()) { String sourceKey = source.getIdentifier(obj.getRelativePath(), obj.getMetadata().isDirectory()); final CopyObjectRequest copyRequest = new CopyObjectRequest(source.getConfig().getBucketName(), sourceKey, config.getBucketName(), targetKey); if (obj instanceof S3ObjectVersion) copyRequest.setSourceVersionId(((S3ObjectVersion) obj).getVersionId()); if (options.isSyncMetadata()) copyRequest.setObjectMetadata(om); else if (new Integer(0).equals(obj.getProperty(SyncTask.PROP_FAILURE_COUNT))) copyRequest.setIfTargetNoneMatch("*"); // special case for pure remote-copy (except on retries) if (options.isSyncAcl()) copyRequest.setAcl(acl);
@Override public void setObjectMetadata(String bucketName, String key, S3ObjectMetadata objectMetadata) { AccessControlList acl = getObjectAcl(bucketName, key); copyObject(new CopyObjectRequest(bucketName, key, bucketName, key).withAcl(acl).withObjectMetadata(objectMetadata)); }
@Override public PutObjectResult putObject(PutObjectRequest request) { if (request.getRange() != null) throw new UnsupportedOperationException(PARTIAL_UPDATE_MSG); // make user metadata available as a request property if (request.getObjectMetadata() == null) request.setObjectMetadata(new S3ObjectMetadata()); Map<String, String> userMeta = request.getObjectMetadata().getUserMetadata(); request.property(RestUtil.PROPERTY_USER_METADATA, userMeta); // activate codec filter request.property(RestUtil.PROPERTY_ENCODE_ENTITY, Boolean.TRUE); // write data PutObjectResult result = super.putObject(request); // encryption filter will modify userMeta with encryption metadata *after* the object is transferred // we must send a separate metadata update or the object will be unreadable // TODO: should this be atomic? how do we handle rollback? CopyObjectRequest metadataUpdate = new CopyObjectRequest(request.getBucketName(), request.getKey(), request.getBucketName(), request.getKey()).withAcl(request.getAcl()) .withObjectMetadata(request.getObjectMetadata()).withIfMatch(result.getETag()); return super.copyObject(metadataUpdate); }
final CopyObjectRequest cReq = new CopyObjectRequest(config.getBucketName(), identifier, config.getBucketName(), identifier); cReq.setObjectMetadata(s3MetaFromSyncMeta(object.getMetadata())); time(new Function<Void>() { @Override
@Override public CopyObjectResult copyObject(String sourceBucketName, String sourceKey, String bucketName, String key) { return copyObject(new CopyObjectRequest(sourceBucketName, sourceKey, bucketName, key)); }
public CopyObjectRequest withCannedAcl(CannedAcl cannedAcl) { setCannedAcl(cannedAcl); return this; } }
public CopyObjectRequest withIfMatch(String ifMatch) { setIfSourceMatch(ifMatch); return this; }
public CopyObjectRequest withIfModifiedSince(Date ifModifiedSince) { setIfSourceModifiedSince(ifModifiedSince); return this; }
@Override public Map<String, String> getQueryParams() { Map<String, String> queryParams = super.getQueryParams(); queryParams.put(S3Constants.PARAM_UPLOAD_ID, uploadId); queryParams.put(S3Constants.PARAM_PART_NUMBER, Integer.toString(partNumber)); return queryParams; }
@Override public Map<String, List<Object>> getHeaders() { Map<String, List<Object>> headers = super.getHeaders(); if (sourceRange != null) RestUtil.putSingle(headers, S3Constants.AMZ_SOURCE_RANGE, "bytes=" + sourceRange); return headers; }
@Override public CopyObjectResult copyObject(CopyObjectRequest request) { // TODO: we should support adding metadata somehow; maybe be intelligent about required metadata if (request.getObjectMetadata() != null) throw new UnsupportedOperationException(UNSUPPORTED_MSG + " (copy and replace metadata)"); return super.copyObject(request); }
super.copyObject(new CopyObjectRequest(bucketName, key, bucketName, key) .withAcl(acl).withObjectMetadata(objectMetadata));