Fix replacing metadata in BaseBlobStore Fixes Atmos errors. Uncovered by removing unneeded addContentMetadata call in BaseBlobIntegrationTest.testCopyBlobReplaceMetadata.
Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/68889081 Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/68889081 Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/68889081 Branch: refs/heads/master Commit: 688890819e05013209af3b2b43cfc021f6f3887f Parents: b63f74a Author: Andrew Gaul <[email protected]> Authored: Fri Jan 15 04:13:04 2016 -0800 Committer: Andrew Gaul <[email protected]> Committed: Fri Jan 15 13:22:15 2016 -0800 ---------------------------------------------------------------------- .../blobstore/internal/BaseBlobStore.java | 21 +++++++++++++------- .../internal/BaseBlobIntegrationTest.java | 1 - 2 files changed, 14 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds/blob/68889081/blobstore/src/main/java/org/jclouds/blobstore/internal/BaseBlobStore.java ---------------------------------------------------------------------- diff --git a/blobstore/src/main/java/org/jclouds/blobstore/internal/BaseBlobStore.java b/blobstore/src/main/java/org/jclouds/blobstore/internal/BaseBlobStore.java index 782d60b..3c14f5f 100644 --- a/blobstore/src/main/java/org/jclouds/blobstore/internal/BaseBlobStore.java +++ b/blobstore/src/main/java/org/jclouds/blobstore/internal/BaseBlobStore.java @@ -262,18 +262,25 @@ public abstract class BaseBlobStore implements BlobStore { InputStream is = null; try { is = blob.getPayload().openStream(); - ContentMetadata metadata = blob.getMetadata().getContentMetadata(); BlobBuilder.PayloadBlobBuilder builder = blobBuilder(toName) - .payload(is) - .cacheControl(metadata.getCacheControl()) + .payload(is); + Long contentLength = blob.getMetadata().getContentMetadata().getContentLength(); + if (contentLength != null) { + builder.contentLength(contentLength); + } + + ContentMetadata metadata; + if (options.getContentMetadata().isPresent()) { + metadata = options.getContentMetadata().get(); + } else { + metadata = blob.getMetadata().getContentMetadata(); + } + builder.cacheControl(metadata.getCacheControl()) .contentDisposition(metadata.getContentDisposition()) .contentEncoding(metadata.getContentEncoding()) .contentLanguage(metadata.getContentLanguage()) .contentType(metadata.getContentType()); - Long contentLength = metadata.getContentLength(); - if (contentLength != null) { - builder.contentLength(contentLength); - } + Optional<Map<String, String>> userMetadata = options.getUserMetadata(); if (userMetadata.isPresent()) { builder.userMetadata(userMetadata.get()); http://git-wip-us.apache.org/repos/asf/jclouds/blob/68889081/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobIntegrationTest.java ---------------------------------------------------------------------- diff --git a/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobIntegrationTest.java b/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobIntegrationTest.java index 1732e67..479c174 100644 --- a/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobIntegrationTest.java +++ b/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobIntegrationTest.java @@ -906,7 +906,6 @@ public class BaseBlobIntegrationTest extends BaseBlobStoreIntegrationTest { .contentEncoding("compress") .contentLanguage("fr") .contentType("audio/ogg"); - addContentMetadata(blobBuilder); Blob blob = blobBuilder.build(); String fromContainer = getContainerName();
