diff --git a/apis/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/RegionScopedSwiftBlobStore.java b/apis/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/RegionScopedSwiftBlobStore.java index a0d40bcfe2..5b331ed05e 100644 --- a/apis/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/RegionScopedSwiftBlobStore.java +++ b/apis/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/RegionScopedSwiftBlobStore.java @@ -253,12 +253,11 @@ public class RegionScopedSwiftBlobStore implements BlobStore { CopyOptions options) { ObjectApi objectApi = api.getObjectApi(regionId, toContainer); - Map userMetadata; Map systemMetadata = Maps.newHashMap(); - ContentMetadata contentMetadata = options.getContentMetadata().orNull(); + ContentMetadata contentMetadata = options.contentMetadata(); + Map userMetadata = options.userMetadata(); - if (contentMetadata != null || - options.getUserMetadata().isPresent()) { + if (contentMetadata != null || userMetadata != null) { if (contentMetadata != null) { String contentDisposition = contentMetadata.getContentDisposition(); if (contentDisposition != null) { @@ -280,9 +279,7 @@ public class RegionScopedSwiftBlobStore implements BlobStore { systemMetadata.put(HttpHeaders.CONTENT_TYPE, contentType); } } - if (options.getUserMetadata().isPresent()) { - userMetadata = options.getUserMetadata().get(); - } else { + if (userMetadata == null) { userMetadata = Maps.newHashMap(); } } else { diff --git a/apis/s3/src/main/java/org/jclouds/s3/blobstore/S3BlobStore.java b/apis/s3/src/main/java/org/jclouds/s3/blobstore/S3BlobStore.java index 780310866d..e01c498f4f 100644 --- a/apis/s3/src/main/java/org/jclouds/s3/blobstore/S3BlobStore.java +++ b/apis/s3/src/main/java/org/jclouds/s3/blobstore/S3BlobStore.java @@ -71,7 +71,6 @@ import org.jclouds.s3.options.PutObjectOptions; import org.jclouds.s3.util.S3Utils; import com.google.common.base.Function; -import com.google.common.base.Optional; import com.google.common.base.Predicate; import com.google.common.base.Supplier; import com.google.common.collect.ImmutableList; @@ -272,37 +271,37 @@ public class S3BlobStore extends BaseBlobStore { CopyOptions options) { CopyObjectOptions s3Options = new CopyObjectOptions(); - Optional contentMetadata = options.getContentMetadata(); - if (contentMetadata.isPresent()) { - String cacheControl = contentMetadata.get().getCacheControl(); + ContentMetadata contentMetadata = options.contentMetadata(); + if (contentMetadata != null) { + String cacheControl = contentMetadata.getCacheControl(); if (cacheControl != null) { s3Options.cacheControl(cacheControl); } - String contentDisposition = contentMetadata.get().getContentDisposition(); + String contentDisposition = contentMetadata.getContentDisposition(); if (contentDisposition != null) { s3Options.contentDisposition(contentDisposition); } - String contentEncoding = contentMetadata.get().getContentEncoding(); + String contentEncoding = contentMetadata.getContentEncoding(); if (contentEncoding != null) { s3Options.contentEncoding(contentEncoding); } - String contentLanguage = contentMetadata.get().getContentLanguage(); + String contentLanguage = contentMetadata.getContentLanguage(); if (contentLanguage != null) { s3Options.contentLanguage(contentLanguage); } - String contentType = contentMetadata.get().getContentType(); + String contentType = contentMetadata.getContentType(); if (contentType != null) { s3Options.contentType(contentType); } } - Optional> userMetadata = options.getUserMetadata(); - if (userMetadata.isPresent()) { - s3Options.overrideMetadataWith(userMetadata.get()); + Map userMetadata = options.userMetadata(); + if (userMetadata != null) { + s3Options.overrideMetadataWith(userMetadata); } return sync.copyObject(fromContainer, fromName, toContainer, toName, s3Options).getETag(); diff --git a/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java b/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java index a5f340606b..42e6f391dc 100644 --- a/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java +++ b/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java @@ -541,8 +541,8 @@ public final class LocalBlobStore implements BlobStore { builder.contentLength(contentLength); } - if (options.getContentMetadata().isPresent()) { - ContentMetadata contentMetadata = options.getContentMetadata().get(); + ContentMetadata contentMetadata = options.contentMetadata(); + if (contentMetadata != null) { String cacheControl = contentMetadata.getCacheControl(); if (cacheControl != null) { builder.cacheControl(cacheControl); @@ -570,9 +570,10 @@ public final class LocalBlobStore implements BlobStore { .contentLanguage(metadata.getContentLanguage()) .contentType(metadata.getContentType()); } - Optional> userMetadata = options.getUserMetadata(); - if (userMetadata.isPresent()) { - builder.userMetadata(userMetadata.get()); + + Map userMetadata = options.userMetadata(); + if (userMetadata != null) { + builder.userMetadata(userMetadata); } else { builder.userMetadata(blob.getMetadata().getUserMetadata()); } 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 3c14f5f082..820721edb7 100644 --- a/blobstore/src/main/java/org/jclouds/blobstore/internal/BaseBlobStore.java +++ b/blobstore/src/main/java/org/jclouds/blobstore/internal/BaseBlobStore.java @@ -52,7 +52,6 @@ import org.jclouds.io.PayloadSlicer; import org.jclouds.util.Closeables2; import com.google.common.annotations.Beta; -import com.google.common.base.Optional; import com.google.common.base.Predicate; import com.google.common.base.Supplier; import com.google.common.base.Throwables; @@ -270,8 +269,8 @@ public abstract class BaseBlobStore implements BlobStore { } ContentMetadata metadata; - if (options.getContentMetadata().isPresent()) { - metadata = options.getContentMetadata().get(); + if (options.contentMetadata() != null) { + metadata = options.contentMetadata(); } else { metadata = blob.getMetadata().getContentMetadata(); } @@ -281,9 +280,9 @@ public abstract class BaseBlobStore implements BlobStore { .contentLanguage(metadata.getContentLanguage()) .contentType(metadata.getContentType()); - Optional> userMetadata = options.getUserMetadata(); - if (userMetadata.isPresent()) { - builder.userMetadata(userMetadata.get()); + Map userMetadata = options.userMetadata(); + if (userMetadata != null) { + builder.userMetadata(userMetadata); } else { builder.userMetadata(blob.getMetadata().getUserMetadata()); } diff --git a/blobstore/src/main/java/org/jclouds/blobstore/options/CopyOptions.java b/blobstore/src/main/java/org/jclouds/blobstore/options/CopyOptions.java index 4084cf9963..bb7985c675 100644 --- a/blobstore/src/main/java/org/jclouds/blobstore/options/CopyOptions.java +++ b/blobstore/src/main/java/org/jclouds/blobstore/options/CopyOptions.java @@ -17,59 +17,33 @@ package org.jclouds.blobstore.options; -import static com.google.common.base.Preconditions.checkNotNull; - import java.util.Map; import org.jclouds.io.ContentMetadata; +import org.jclouds.javax.annotation.Nullable; +import com.google.auto.value.AutoValue; import com.google.common.annotations.Beta; -import com.google.common.base.Optional; -import com.google.common.collect.ImmutableMap; +@AutoValue @Beta -public final class CopyOptions { +public abstract class CopyOptions { public static final CopyOptions NONE = builder().build(); - private final Optional contentMetadata; - private final Optional> userMetadata; - - private CopyOptions(Builder builder) { - this.contentMetadata = Optional.fromNullable(builder.contentMetadata); - this.userMetadata = Optional.fromNullable(builder.userMetadata); - } - - public Optional getContentMetadata() { - return contentMetadata; - } - - public Optional> getUserMetadata() { - return userMetadata; - } - public static Builder builder() { - return new Builder(); + return new AutoValue_CopyOptions.Builder(); } - public static class Builder { - ContentMetadata contentMetadata; - Map userMetadata; + @Nullable + public abstract ContentMetadata contentMetadata(); + @Nullable + public abstract Map userMetadata(); - Builder() { - } + @AutoValue.Builder + public abstract static class Builder { + public abstract Builder contentMetadata(ContentMetadata contentMetadata); + public abstract Builder userMetadata(Map userMetadata); - public Builder contentMetadata(ContentMetadata contentMetadata) { - this.contentMetadata = checkNotNull(contentMetadata, "contentMetadata"); - return this; - } - - public Builder userMetadata(Map userMetadata) { - this.userMetadata = ImmutableMap.copyOf(userMetadata); - return this; - } - - public CopyOptions build() { - return new CopyOptions(this); - } + public abstract CopyOptions build(); } } diff --git a/providers/azureblob/src/main/java/org/jclouds/azureblob/blobstore/AzureBlobStore.java b/providers/azureblob/src/main/java/org/jclouds/azureblob/blobstore/AzureBlobStore.java index eed4ada55d..90e7d99224 100644 --- a/providers/azureblob/src/main/java/org/jclouds/azureblob/blobstore/AzureBlobStore.java +++ b/providers/azureblob/src/main/java/org/jclouds/azureblob/blobstore/AzureBlobStore.java @@ -69,7 +69,6 @@ import org.jclouds.io.MutableContentMetadata; import org.jclouds.io.PayloadSlicer; import com.google.common.base.Function; -import com.google.common.base.Optional; import com.google.common.base.Supplier; import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; @@ -237,39 +236,39 @@ public class AzureBlobStore extends BaseBlobStore { CopyOptions options) { CopyBlobOptions.Builder azureOptions = CopyBlobOptions.builder(); - Optional> userMetadata = options.getUserMetadata(); - if (userMetadata.isPresent()) { - azureOptions.overrideUserMetadata(userMetadata.get()); + Map userMetadata = options.userMetadata(); + if (userMetadata != null) { + azureOptions.overrideUserMetadata(userMetadata); } URI source = context.getSigner().signGetBlob(fromContainer, fromName).getEndpoint(); String eTag = sync.copyBlob(source, toContainer, toName, azureOptions.build()); - Optional contentMetadata = options.getContentMetadata(); - if (contentMetadata.isPresent()) { + ContentMetadata contentMetadata = options.contentMetadata(); + if (contentMetadata != null) { ContentMetadataBuilder builder = ContentMetadataBuilder.create(); - String cacheControl = contentMetadata.get().getCacheControl(); + String cacheControl = contentMetadata.getCacheControl(); if (cacheControl != null) { builder.cacheControl(cacheControl); } - String contentDisposition = contentMetadata.get().getContentDisposition(); + String contentDisposition = contentMetadata.getContentDisposition(); if (contentDisposition != null) { builder.contentDisposition(contentDisposition); } - String contentEncoding = contentMetadata.get().getContentEncoding(); + String contentEncoding = contentMetadata.getContentEncoding(); if (contentEncoding != null) { builder.contentEncoding(contentEncoding); } - String contentLanguage = contentMetadata.get().getContentLanguage(); + String contentLanguage = contentMetadata.getContentLanguage(); if (contentLanguage != null) { builder.contentLanguage(contentLanguage); } - String contentType = contentMetadata.get().getContentType(); + String contentType = contentMetadata.getContentType(); if (contentType != null) { builder.contentType(contentType); }