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);
}