Skip to content

Commit a76e935

Browse files
committed
Implement BlobContainer.move()
In elasticsearch master (2.0) a new method `move(String sourceBlobName, String targetBlobName)` has been added to `BlobContainer`. Closes #152.
1 parent d36e24a commit a76e935

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

src/main/java/org/elasticsearch/cloud/aws/blobstore/S3BlobContainer.java

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,7 @@
2020
package org.elasticsearch.cloud.aws.blobstore;
2121

2222
import com.amazonaws.AmazonClientException;
23-
import com.amazonaws.services.s3.model.AmazonS3Exception;
24-
import com.amazonaws.services.s3.model.ObjectListing;
25-
import com.amazonaws.services.s3.model.S3Object;
26-
import com.amazonaws.services.s3.model.S3ObjectSummary;
23+
import com.amazonaws.services.s3.model.*;
2724
import org.elasticsearch.common.Nullable;
2825
import org.elasticsearch.common.blobstore.BlobMetaData;
2926
import org.elasticsearch.common.blobstore.BlobPath;
@@ -134,6 +131,24 @@ public ImmutableMap<String, BlobMetaData> listBlobsByPrefix(@Nullable String blo
134131
return blobsBuilder.build();
135132
}
136133

134+
@Override
135+
public void move(String sourceBlobName, String targetBlobName) throws IOException {
136+
try {
137+
CopyObjectRequest request = new CopyObjectRequest(blobStore.bucket(), buildKey(sourceBlobName),
138+
blobStore.bucket(), buildKey(targetBlobName));
139+
140+
if (blobStore.serverSideEncryption()) {
141+
ObjectMetadata objectMetadata = new ObjectMetadata();
142+
objectMetadata.setSSEAlgorithm(ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION);
143+
request.setNewObjectMetadata(objectMetadata);
144+
}
145+
blobStore.client().copyObject(request);
146+
blobStore.client().deleteObject(blobStore.bucket(), buildKey(sourceBlobName));
147+
} catch (AmazonS3Exception e){
148+
throw new IOException(e);
149+
}
150+
}
151+
137152
@Override
138153
public ImmutableMap<String, BlobMetaData> listBlobs() throws IOException {
139154
return listBlobsByPrefix(null);

0 commit comments

Comments
 (0)