You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by an...@apache.org on 2014/08/03 14:59:06 UTC

git commit: Follow-up to Glacier pull request reviews

Repository: jclouds-labs-aws
Updated Branches:
  refs/heads/master 7ca9836a4 -> dd4fbb79f


Follow-up to Glacier pull request reviews

* updating Javadocs
* minor style changes


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

Branch: refs/heads/master
Commit: dd4fbb79f2fadb9409cd8a8bd0dc65ef8819801d
Parents: 7ca9836
Author: Roman Coedo <ro...@gmail.com>
Authored: Sat Aug 2 11:08:07 2014 +0200
Committer: Andrew Phillips <an...@apache.org>
Committed: Sun Aug 3 13:57:13 2014 +0100

----------------------------------------------------------------------
 .../java/org/jclouds/glacier/GlacierClient.java |  5 ++-
 .../glacier/blobstore/GlacierBlobStore.java     | 24 ++++++------
 ...hiveMetadataCollectionToStorageMetadata.java | 19 +++++++++
 .../ArchiveMetadataToBlobMetadata.java          | 41 --------------------
 .../strategy/internal/BasePollingStrategy.java  | 18 ++++-----
 .../glacier/GlacierClientLongLiveTest.java      |  3 +-
 6 files changed, 44 insertions(+), 66 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds-labs-aws/blob/dd4fbb79/glacier/src/main/java/org/jclouds/glacier/GlacierClient.java
----------------------------------------------------------------------
diff --git a/glacier/src/main/java/org/jclouds/glacier/GlacierClient.java b/glacier/src/main/java/org/jclouds/glacier/GlacierClient.java
index 0960d0a..9cae40b 100644
--- a/glacier/src/main/java/org/jclouds/glacier/GlacierClient.java
+++ b/glacier/src/main/java/org/jclouds/glacier/GlacierClient.java
@@ -68,7 +68,8 @@ public interface GlacierClient extends Closeable {
     *
     * @param vaultName
     *           Name of the Vault being described.
-    * @return A VaultMetadata object containing all the information relevant to the vault.
+    * @return A VaultMetadata object containing all the information relevant to the vault if the vault exists,
+    * null otherwise.
     * @see <a href="http://docs.aws.amazon.com/amazonglacier/latest/dev/api-vault-get.html" />
     */
    VaultMetadata describeVault(String vaultName);
@@ -242,7 +243,7 @@ public interface GlacierClient extends Closeable {
     *           Name of the target Vault for the job.
     * @param jobId
     *          Job identifier.
-    * @return The job metadata.
+    * @return The job metadata if the job exists in the vault, null otherwise.
     * @see <a href="http://docs.aws.amazon.com/amazonglacier/latest/dev/api-describe-job-get.html" />
     */
    JobMetadata describeJob(String vaultName, String jobId);

http://git-wip-us.apache.org/repos/asf/jclouds-labs-aws/blob/dd4fbb79/glacier/src/main/java/org/jclouds/glacier/blobstore/GlacierBlobStore.java
----------------------------------------------------------------------
diff --git a/glacier/src/main/java/org/jclouds/glacier/blobstore/GlacierBlobStore.java b/glacier/src/main/java/org/jclouds/glacier/blobstore/GlacierBlobStore.java
index c4cd152..6a4ee09 100644
--- a/glacier/src/main/java/org/jclouds/glacier/blobstore/GlacierBlobStore.java
+++ b/glacier/src/main/java/org/jclouds/glacier/blobstore/GlacierBlobStore.java
@@ -52,6 +52,7 @@ import org.jclouds.javax.annotation.Nullable;
 
 import com.google.common.base.Predicate;
 import com.google.common.base.Supplier;
+import com.google.common.base.Throwables;
 import com.google.inject.Inject;
 import com.google.inject.Provider;
 import com.google.inject.Singleton;
@@ -196,10 +197,10 @@ public class GlacierBlobStore extends BaseBlobStore {
          if (pollingStrategy.get().waitForSuccess(container, jobId)) {
             return archivesToBlobs.apply(sync.getInventoryRetrievalOutput(container, jobId));
          }
-         return null;
       } catch (InterruptedException e) {
-         throw new RuntimeException(e);
+         Throwables.propagate(e);
       }
+      return null;
    }
 
    /**
@@ -216,11 +217,11 @@ public class GlacierBlobStore extends BaseBlobStore {
     */
    @Override
    public boolean blobExists(String container, String key) {
-      return this.blobMetadata(container, key) != null;
+      return blobMetadata(container, key) != null;
    }
 
    /**
-    * Stores a blob in a container.
+    * Stores a blob in a container. The blob name will be ignored, since it's not supported by Glacier.
     *
     * @param container
     *          container name
@@ -266,8 +267,8 @@ public class GlacierBlobStore extends BaseBlobStore {
     */
    @Override
    public BlobMetadata blobMetadata(String container, String key) {
-      PageSet<? extends StorageMetadata> blobs = this.list(container, null);
-      for (StorageMetadata blob : blobs) {
+      PageSet<? extends StorageMetadata> blobMetadataSet = list(container, null);
+      for (StorageMetadata blob : blobMetadataSet) {
          if (blob.getName().equals(key)) {
             return (BlobMetadata) blob;
          }
@@ -275,11 +276,12 @@ public class GlacierBlobStore extends BaseBlobStore {
       return null;
    }
 
-   private ArchiveRetrievalJobRequest buildArchiveRetrievalRequest(String key, GetOptions getOptions) {
+   private static ArchiveRetrievalJobRequest buildArchiveRetrievalRequest(String key, GetOptions getOptions) {
       ArchiveRetrievalJobRequest.Builder requestBuilder = ArchiveRetrievalJobRequest.builder().archiveId(key);
       if (getOptions != null) {
-         checkArgument(getOptions.getRanges().size() <= 1);
-         if (getOptions.getRanges().size() == 1) {
+         int size = getOptions.getRanges().size();
+         checkArgument(size <= 1, "The number of ranges should be zero or one");
+         if (size == 1) {
             requestBuilder.range(ContentRange.fromString(getOptions.getRanges().get(0)));
          }
       }
@@ -309,10 +311,10 @@ public class GlacierBlobStore extends BaseBlobStore {
             blob.setPayload(sync.getJobOutput(container, jobId));
             return blob;
          }
-         return null;
       } catch (InterruptedException e) {
-         throw new RuntimeException(e);
+         Throwables.propagate(e);
       }
+      return null;
    }
 
    /**

http://git-wip-us.apache.org/repos/asf/jclouds-labs-aws/blob/dd4fbb79/glacier/src/main/java/org/jclouds/glacier/blobstore/functions/ArchiveMetadataCollectionToStorageMetadata.java
----------------------------------------------------------------------
diff --git a/glacier/src/main/java/org/jclouds/glacier/blobstore/functions/ArchiveMetadataCollectionToStorageMetadata.java b/glacier/src/main/java/org/jclouds/glacier/blobstore/functions/ArchiveMetadataCollectionToStorageMetadata.java
index 2df2016..7e241c6 100644
--- a/glacier/src/main/java/org/jclouds/glacier/blobstore/functions/ArchiveMetadataCollectionToStorageMetadata.java
+++ b/glacier/src/main/java/org/jclouds/glacier/blobstore/functions/ArchiveMetadataCollectionToStorageMetadata.java
@@ -16,10 +16,15 @@
  */
 package org.jclouds.glacier.blobstore.functions;
 
+import org.jclouds.blobstore.domain.MutableBlobMetadata;
 import org.jclouds.blobstore.domain.PageSet;
 import org.jclouds.blobstore.domain.StorageMetadata;
+import org.jclouds.blobstore.domain.internal.MutableBlobMetadataImpl;
 import org.jclouds.blobstore.domain.internal.PageSetImpl;
+import org.jclouds.glacier.domain.ArchiveMetadata;
 import org.jclouds.glacier.domain.ArchiveMetadataCollection;
+import org.jclouds.io.MutableContentMetadata;
+import org.jclouds.io.payloads.BaseMutableContentMetadata;
 
 import com.google.common.base.Function;
 import com.google.common.collect.Iterables;
@@ -30,4 +35,18 @@ public class ArchiveMetadataCollectionToStorageMetadata implements Function<Arch
    public PageSet<? extends StorageMetadata> apply(ArchiveMetadataCollection archives) {
       return new PageSetImpl<StorageMetadata>(Iterables.transform(archives, new ArchiveMetadataToBlobMetadata()), null);
    }
+
+   private static class ArchiveMetadataToBlobMetadata implements Function<ArchiveMetadata, MutableBlobMetadata> {
+      @Override
+      public MutableBlobMetadata apply(ArchiveMetadata from) {
+         MutableContentMetadata contentMetadata = new BaseMutableContentMetadata();
+         contentMetadata.setContentLength(from.getSize());
+
+         MutableBlobMetadata to = new MutableBlobMetadataImpl();
+         to.setName(from.getArchiveId());
+         to.setCreationDate(from.getCreationDate());
+         to.setContentMetadata(contentMetadata);
+         return to;
+      }
+   }
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs-aws/blob/dd4fbb79/glacier/src/main/java/org/jclouds/glacier/blobstore/functions/ArchiveMetadataToBlobMetadata.java
----------------------------------------------------------------------
diff --git a/glacier/src/main/java/org/jclouds/glacier/blobstore/functions/ArchiveMetadataToBlobMetadata.java b/glacier/src/main/java/org/jclouds/glacier/blobstore/functions/ArchiveMetadataToBlobMetadata.java
deleted file mode 100644
index 255252a..0000000
--- a/glacier/src/main/java/org/jclouds/glacier/blobstore/functions/ArchiveMetadataToBlobMetadata.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.glacier.blobstore.functions;
-
-import org.jclouds.blobstore.domain.MutableBlobMetadata;
-import org.jclouds.blobstore.domain.internal.MutableBlobMetadataImpl;
-import org.jclouds.glacier.domain.ArchiveMetadata;
-import org.jclouds.io.MutableContentMetadata;
-import org.jclouds.io.payloads.BaseMutableContentMetadata;
-
-import com.google.common.base.Function;
-import com.google.common.collect.ImmutableMap;
-
-public class ArchiveMetadataToBlobMetadata implements Function<ArchiveMetadata, MutableBlobMetadata> {
-   @Override
-   public MutableBlobMetadata apply(ArchiveMetadata from) {
-      MutableContentMetadata contentMetadata = new BaseMutableContentMetadata();
-      contentMetadata.setContentLength(from.getSize());
-
-      MutableBlobMetadata to = new MutableBlobMetadataImpl();
-      to.setName(from.getArchiveId());
-      to.setCreationDate(from.getCreationDate());
-      to.setUserMetadata(ImmutableMap.<String, String>of());
-      to.setContentMetadata(contentMetadata);
-      return to;
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-aws/blob/dd4fbb79/glacier/src/main/java/org/jclouds/glacier/blobstore/strategy/internal/BasePollingStrategy.java
----------------------------------------------------------------------
diff --git a/glacier/src/main/java/org/jclouds/glacier/blobstore/strategy/internal/BasePollingStrategy.java b/glacier/src/main/java/org/jclouds/glacier/blobstore/strategy/internal/BasePollingStrategy.java
index 7c68bda..d02137b 100644
--- a/glacier/src/main/java/org/jclouds/glacier/blobstore/strategy/internal/BasePollingStrategy.java
+++ b/glacier/src/main/java/org/jclouds/glacier/blobstore/strategy/internal/BasePollingStrategy.java
@@ -40,15 +40,15 @@ public class BasePollingStrategy implements PollingStrategy {
    private final long initialWait;
    private final long timeBetweenPolls;
 
-   public BasePollingStrategy(long initialWait, long timeBetweenPolls, GlacierClient client) {
+   public BasePollingStrategy(GlacierClient client, long initialWait, long timeBetweenPolls) {
+      this.client = checkNotNull(client, "client");
       this.initialWait = initialWait;
       this.timeBetweenPolls = timeBetweenPolls;
-      this.client = checkNotNull(client, "client");
    }
 
    @Inject
    public BasePollingStrategy(GlacierClient client) {
-      this(DEFAULT_INITIAL_WAIT, DEFAULT_TIME_BETWEEN_POLLS, client);
+      this(client, DEFAULT_INITIAL_WAIT, DEFAULT_TIME_BETWEEN_POLLS);
    }
 
    private boolean inProgress(String job, String vault) {
@@ -56,13 +56,6 @@ public class BasePollingStrategy implements PollingStrategy {
       return (jobMetadata != null) && (jobMetadata.getStatusCode() == JobStatus.IN_PROGRESS);
    }
 
-   private void waitForJob(String job, String vault) throws InterruptedException {
-      Thread.sleep(initialWait);
-      while (inProgress(job, vault)) {
-         Thread.sleep(timeBetweenPolls);
-      }
-   }
-
    private boolean succeeded(String job, String vault) {
       JobMetadata jobMetadata = client.describeJob(vault, job);
       return (jobMetadata != null) && (jobMetadata.getStatusCode() == JobStatus.SUCCEEDED);
@@ -74,7 +67,10 @@ public class BasePollingStrategy implements PollingStrategy {
       if (client.describeJob(vault, job) == null) {
          return false;
       }
-      waitForJob(job, vault);
+      Thread.sleep(initialWait);
+      while (inProgress(job, vault)) {
+         Thread.sleep(timeBetweenPolls);
+      }
       return succeeded(job, vault);
    }
 

http://git-wip-us.apache.org/repos/asf/jclouds-labs-aws/blob/dd4fbb79/glacier/src/test/java/org/jclouds/glacier/GlacierClientLongLiveTest.java
----------------------------------------------------------------------
diff --git a/glacier/src/test/java/org/jclouds/glacier/GlacierClientLongLiveTest.java b/glacier/src/test/java/org/jclouds/glacier/GlacierClientLongLiveTest.java
index ffe66f4..1264f38 100644
--- a/glacier/src/test/java/org/jclouds/glacier/GlacierClientLongLiveTest.java
+++ b/glacier/src/test/java/org/jclouds/glacier/GlacierClientLongLiveTest.java
@@ -112,7 +112,8 @@ public class GlacierClientLongLiveTest extends BaseApiLiveTest<GlacierClient>{
    @Test(groups = {"live", "livelong", "longtest"}, dependsOnMethods = {"testInitiateJob", "testDescribeJob", "testListJobs"})
    public void testWaitForSucceed() throws InterruptedException {
       new BasePollingStrategy(api).waitForSuccess(VAULT_NAME, archiveRetrievalJob);
-      new BasePollingStrategy(0, DEFAULT_TIME_BETWEEN_POLLS, api).waitForSuccess(VAULT_NAME, inventoryRetrievalJob);
+      new BasePollingStrategy(api, 0, DEFAULT_TIME_BETWEEN_POLLS).waitForSuccess(VAULT_NAME,
+            inventoryRetrievalJob);
       assertThat(api.describeJob(VAULT_NAME, archiveRetrievalJob).getStatusCode()).isEqualTo(JobStatus.SUCCEEDED);
       assertThat(api.describeJob(VAULT_NAME, inventoryRetrievalJob).getStatusCode()).isEqualTo(JobStatus.SUCCEEDED);
    }