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 <[email protected]> Authored: Sat Aug 2 11:08:07 2014 +0200 Committer: Andrew Phillips <[email protected]> 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); }
