Updated Branches: refs/heads/master 44021fc9e -> 06d65ce77
Provide all headers to SwiftObject and Blob This commit provides parity with the existing Swift and all other providers. Project: http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/commit/06d65ce7 Tree: http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/tree/06d65ce7 Diff: http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/diff/06d65ce7 Branch: refs/heads/master Commit: 06d65ce7744446a73a4702cbecfdfbcea036e536 Parents: 44021fc Author: Andrew Gaul <[email protected]> Authored: Tue Oct 1 21:44:16 2013 -0700 Committer: Andrew Gaul <[email protected]> Committed: Wed Oct 2 17:34:53 2013 -0700 ---------------------------------------------------------------------- .../blobstore/RegionScopedSwiftBlobStore.java | 1 + .../openstack/swift/v1/domain/SwiftObject.java | 21 +++++++++++++++++--- .../v1/functions/ParseObjectFromResponse.java | 1 + 3 files changed, 20 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/blob/06d65ce7/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/RegionScopedSwiftBlobStore.java ---------------------------------------------------------------------- diff --git a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/RegionScopedSwiftBlobStore.java b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/RegionScopedSwiftBlobStore.java index eedfa27..5aa926f 100644 --- a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/RegionScopedSwiftBlobStore.java +++ b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/RegionScopedSwiftBlobStore.java @@ -215,6 +215,7 @@ public class RegionScopedSwiftBlobStore implements BlobStore { } Blob blob = new BlobImpl(toBlobMetadata(container).apply(object)); blob.setPayload(object.payload()); + blob.setAllHeaders(object.headers()); return blob; } http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/blob/06d65ce7/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/domain/SwiftObject.java ---------------------------------------------------------------------- diff --git a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/domain/SwiftObject.java b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/domain/SwiftObject.java index 81f690c..47d8c34 100644 --- a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/domain/SwiftObject.java +++ b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/domain/SwiftObject.java @@ -32,6 +32,8 @@ import org.jclouds.openstack.swift.v1.features.ObjectApi; import com.google.common.base.Objects; import com.google.common.base.Objects.ToStringHelper; import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableMultimap; +import com.google.common.collect.Multimap; /** * @see <a @@ -44,15 +46,17 @@ public class SwiftObject implements Comparable<SwiftObject> { private final URI uri; private final String etag; private final Date lastModified; + private final Multimap<String, String> headers; private final Map<String, String> metadata; private final Payload payload; - protected SwiftObject(String name, URI uri, String etag, Date lastModified, Map<String, String> metadata, - Payload payload) { + protected SwiftObject(String name, URI uri, String etag, Date lastModified, + Multimap<String, String> headers, Map<String, String> metadata, Payload payload) { this.name = checkNotNull(name, "name"); this.uri = checkNotNull(uri, "uri of %s", uri); this.etag = checkNotNull(etag, "etag of %s", name).replace("\"", ""); this.lastModified = checkNotNull(lastModified, "lastModified of %s", name); + this.headers = headers == null ? ImmutableMultimap.<String, String> of() : checkNotNull(headers, "headers of %s", name); this.metadata = metadata == null ? ImmutableMap.<String, String> of() : metadata; this.payload = checkNotNull(payload, "payload of %s", name); } @@ -81,6 +85,10 @@ public class SwiftObject implements Comparable<SwiftObject> { return lastModified; } + public Multimap<String, String> headers() { + return headers; + } + /** * Empty except in {@link ObjectApi#head(String) GetObjectMetadata} or * {@link ObjectApi#get(String) GetObject} commands. @@ -159,6 +167,7 @@ public class SwiftObject implements Comparable<SwiftObject> { protected String etag; protected Date lastModified; protected Payload payload; + protected Multimap<String, String> headers; protected Map<String, String> metadata = ImmutableMap.of(); /** @@ -201,6 +210,11 @@ public class SwiftObject implements Comparable<SwiftObject> { return this; } + public Builder headers(Multimap<String, String> headers) { + this.headers = headers; + return this; + } + /** * Will lower-case all metadata keys due to a swift implementation * decision. @@ -217,7 +231,7 @@ public class SwiftObject implements Comparable<SwiftObject> { } public SwiftObject build() { - return new SwiftObject(name, uri, etag, lastModified, metadata, payload); + return new SwiftObject(name, uri, etag, lastModified, headers, metadata, payload); } public Builder fromObject(SwiftObject from) { @@ -225,6 +239,7 @@ public class SwiftObject implements Comparable<SwiftObject> { .uri(from.uri()) // .etag(from.etag()) // .lastModified(from.lastModified()) // + .headers(from.headers()) // .metadata(from.metadata()) // .payload(from.payload()); } http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/blob/06d65ce7/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/functions/ParseObjectFromResponse.java ---------------------------------------------------------------------- diff --git a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/functions/ParseObjectFromResponse.java b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/functions/ParseObjectFromResponse.java index 34bf197..158aa6d 100644 --- a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/functions/ParseObjectFromResponse.java +++ b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/functions/ParseObjectFromResponse.java @@ -52,6 +52,7 @@ public class ParseObjectFromResponse implements Function<HttpResponse, SwiftObje .etag(from.getFirstHeaderOrNull(ETAG)) // .payload(from.getPayload()) // .lastModified(dates.rfc822DateParse(from.getFirstHeaderOrNull(LAST_MODIFIED))) // + .headers(from.getHeaders()) .metadata(EntriesWithoutMetaPrefix.INSTANCE.apply(from.getHeaders())).build(); }
