JCLOUDS-598: Populate Atmos MD5 from wschecksum

Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/a6337fdc
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/a6337fdc
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/a6337fdc

Branch: refs/heads/master
Commit: a6337fdcc4c0962a16d6285597958949bf0f0e57
Parents: 50026c8
Author: Andrew Gaul <[email protected]>
Authored: Sun Nov 12 17:39:49 2017 -0800
Committer: Andrew Gaul <[email protected]>
Committed: Sun Nov 12 17:51:49 2017 -0800

----------------------------------------------------------------------
 .../atmos/blobstore/functions/ObjectToBlobMetadata.java  |  3 ++-
 .../atmos/functions/ParseSystemMetadataFromHeaders.java  | 11 ++++++++++-
 .../integration/AtmosContainerIntegrationLiveTest.java   | 10 ----------
 .../blobstore/integration/AtmosIntegrationLiveTest.java  |  7 -------
 .../atmos/blobstore/integration/AtmosLiveTest.java       |  8 --------
 5 files changed, 12 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/a6337fdc/apis/atmos/src/main/java/org/jclouds/atmos/blobstore/functions/ObjectToBlobMetadata.java
----------------------------------------------------------------------
diff --git 
a/apis/atmos/src/main/java/org/jclouds/atmos/blobstore/functions/ObjectToBlobMetadata.java
 
b/apis/atmos/src/main/java/org/jclouds/atmos/blobstore/functions/ObjectToBlobMetadata.java
index 45c124c..1fac649 100644
--- 
a/apis/atmos/src/main/java/org/jclouds/atmos/blobstore/functions/ObjectToBlobMetadata.java
+++ 
b/apis/atmos/src/main/java/org/jclouds/atmos/blobstore/functions/ObjectToBlobMetadata.java
@@ -45,7 +45,7 @@ public class ObjectToBlobMetadata implements 
Function<AtmosObject, MutableBlobMe
    private final ShareUrl shareUrl;
 
    private static final Set<String> systemMetadata = ImmutableSet.of("atime", 
"mtime", "ctime", "itime", "type", "uid",
-            "gid", "objectid", "objname", "size", "nlink", "policyname", 
"content-md5");
+            "gid", "objectid", "objname", "size", "nlink", "policyname");
 
    @Inject
    protected ObjectToBlobMetadata(AtmosObjectName objectName, ShareUrl 
shareUrl)
@@ -81,6 +81,7 @@ public class ObjectToBlobMetadata implements 
Function<AtmosObject, MutableBlobMe
       to.setSize(from.getContentMetadata().getContentLength());
       to.setTier(Tier.STANDARD);
       to.setETag(from.getSystemMetadata().getObjectID());
+      
to.getContentMetadata().setContentMD5(from.getSystemMetadata().getContentMD5());
       return to;
    }
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/a6337fdc/apis/atmos/src/main/java/org/jclouds/atmos/functions/ParseSystemMetadataFromHeaders.java
----------------------------------------------------------------------
diff --git 
a/apis/atmos/src/main/java/org/jclouds/atmos/functions/ParseSystemMetadataFromHeaders.java
 
b/apis/atmos/src/main/java/org/jclouds/atmos/functions/ParseSystemMetadataFromHeaders.java
index 6eef1ae..6fb809d 100644
--- 
a/apis/atmos/src/main/java/org/jclouds/atmos/functions/ParseSystemMetadataFromHeaders.java
+++ 
b/apis/atmos/src/main/java/org/jclouds/atmos/functions/ParseSystemMetadataFromHeaders.java
@@ -47,7 +47,16 @@ public class ParseSystemMetadataFromHeaders implements 
Function<HttpResponse, Sy
       String meta = checkNotNull(from.getFirstHeaderOrNull(AtmosHeaders.META), 
AtmosHeaders.META);
       Map<String, String> metaMap = Splitter.on(", 
").withKeyValueSeparator('=').split(meta);
       assert metaMap.size() >= 12 : String.format("Should be 12 entries in 
%s", metaMap);
-      byte[] md5 = metaMap.containsKey("content-md5") ? 
base16().lowerCase().decode(metaMap.get("content-md5")) : null;
+
+      byte[] md5 = null;
+      String wschecksum = from.getFirstHeaderOrNull(AtmosHeaders.CHECKSUM);
+      if (wschecksum != null) {
+         String[] parts = wschecksum.split("/");
+         if (parts[0].equalsIgnoreCase("MD5") && parts.length == 3) {
+            md5 = base16().lowerCase().decode(parts[2]);
+         }
+      }
+
       return new SystemMetadata(md5, 
dateService.iso8601SecondsDateParse(checkNotNull(metaMap.get("atime"), 
"atime")),
             
dateService.iso8601SecondsDateParse(checkNotNull(metaMap.get("ctime"), 
"ctime")), checkNotNull(
                   metaMap.get("gid"), "gid"), 
dateService.iso8601SecondsDateParse(checkNotNull(metaMap.get("itime"),

http://git-wip-us.apache.org/repos/asf/jclouds/blob/a6337fdc/apis/atmos/src/test/java/org/jclouds/atmos/blobstore/integration/AtmosContainerIntegrationLiveTest.java
----------------------------------------------------------------------
diff --git 
a/apis/atmos/src/test/java/org/jclouds/atmos/blobstore/integration/AtmosContainerIntegrationLiveTest.java
 
b/apis/atmos/src/test/java/org/jclouds/atmos/blobstore/integration/AtmosContainerIntegrationLiveTest.java
index 4814918..2a7616b 100644
--- 
a/apis/atmos/src/test/java/org/jclouds/atmos/blobstore/integration/AtmosContainerIntegrationLiveTest.java
+++ 
b/apis/atmos/src/test/java/org/jclouds/atmos/blobstore/integration/AtmosContainerIntegrationLiveTest.java
@@ -16,11 +16,6 @@
  */
 package org.jclouds.atmos.blobstore.integration;
 
-import static org.testng.Assert.assertEquals;
-
-import java.io.IOException;
-
-import org.jclouds.blobstore.domain.BlobMetadata;
 import org.jclouds.blobstore.integration.internal.BaseContainerIntegrationTest;
 import org.testng.annotations.Test;
 import org.testng.SkipException;
@@ -31,11 +26,6 @@ public class AtmosContainerIntegrationLiveTest extends 
BaseContainerIntegrationT
       provider = "atmos";
    }
 
-   protected void checkMD5(BlobMetadata metadata) throws IOException {
-      // atmos doesn't support MD5
-      assertEquals(metadata.getContentMetadata().getContentMD5(), null);
-   }
-
    @Override
    public void testDelimiter() throws Exception {
       throw new SkipException("Atmos does not use key names for markers");

http://git-wip-us.apache.org/repos/asf/jclouds/blob/a6337fdc/apis/atmos/src/test/java/org/jclouds/atmos/blobstore/integration/AtmosIntegrationLiveTest.java
----------------------------------------------------------------------
diff --git 
a/apis/atmos/src/test/java/org/jclouds/atmos/blobstore/integration/AtmosIntegrationLiveTest.java
 
b/apis/atmos/src/test/java/org/jclouds/atmos/blobstore/integration/AtmosIntegrationLiveTest.java
index e4923a3..8e9cb99 100644
--- 
a/apis/atmos/src/test/java/org/jclouds/atmos/blobstore/integration/AtmosIntegrationLiveTest.java
+++ 
b/apis/atmos/src/test/java/org/jclouds/atmos/blobstore/integration/AtmosIntegrationLiveTest.java
@@ -18,7 +18,6 @@ package org.jclouds.atmos.blobstore.integration;
 
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.failBecauseExceptionWasNotThrown;
-import static org.testng.Assert.assertEquals;
 
 import java.io.IOException;
 import java.util.concurrent.ExecutionException;
@@ -87,12 +86,6 @@ public class AtmosIntegrationLiveTest extends 
BaseBlobIntegrationTest {
       super.testPutObjectStream();
    }
 
-   // not supported
-   @Override
-   protected void checkMD5(BlobMetadata metadata) throws IOException {
-      assertEquals(metadata.getContentMetadata().getContentMD5(), null);
-   }
-
    @Override
    public void testCreateBlobWithExpiry() throws InterruptedException {
       throw new SkipException("Expiration not yet implemented");

http://git-wip-us.apache.org/repos/asf/jclouds/blob/a6337fdc/apis/atmos/src/test/java/org/jclouds/atmos/blobstore/integration/AtmosLiveTest.java
----------------------------------------------------------------------
diff --git 
a/apis/atmos/src/test/java/org/jclouds/atmos/blobstore/integration/AtmosLiveTest.java
 
b/apis/atmos/src/test/java/org/jclouds/atmos/blobstore/integration/AtmosLiveTest.java
index afe253c..b4cdc07 100644
--- 
a/apis/atmos/src/test/java/org/jclouds/atmos/blobstore/integration/AtmosLiveTest.java
+++ 
b/apis/atmos/src/test/java/org/jclouds/atmos/blobstore/integration/AtmosLiveTest.java
@@ -16,8 +16,6 @@
  */
 package org.jclouds.atmos.blobstore.integration;
 
-import static org.testng.Assert.assertEquals;
-
 import org.jclouds.blobstore.integration.internal.BaseBlobLiveTest;
 import org.testng.annotations.Test;
 
@@ -26,10 +24,4 @@ public class AtmosLiveTest extends BaseBlobLiveTest {
    public AtmosLiveTest() {
       provider = "atmos";
    }
-            
-   @Override
-   protected void checkMD5(String container, String name, byte[] md5) {
-      // atmos does not support content-md5 yet
-      assertEquals(view.getBlobStore().blobMetadata(container, 
name).getContentMetadata().getContentMD5(), null);
-   }
 }

Reply via email to