You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by ad...@apache.org on 2014/10/05 01:36:07 UTC
[1/2] git commit: JCLOUDS-40 unasync glacier.
Repository: jclouds-labs-aws
Updated Branches:
refs/heads/1.8.x 5b95929e5 -> 4b5b9c113
JCLOUDS-40 unasync glacier.
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/9f3a76a6
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs-aws/tree/9f3a76a6
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs-aws/diff/9f3a76a6
Branch: refs/heads/1.8.x
Commit: 9f3a76a6dbd68d9d5f31f34a2e81eeee0a765950
Parents: 5b95929
Author: Adrian Cole <ac...@twitter.com>
Authored: Fri Oct 3 23:16:46 2014 -0700
Committer: Adrian Cole <ad...@apache.org>
Committed: Sat Oct 4 16:34:39 2014 -0700
----------------------------------------------------------------------
.../org/jclouds/glacier/GlacierApiMetadata.java | 23 +-
.../org/jclouds/glacier/GlacierAsyncClient.java | 354 -------------------
.../java/org/jclouds/glacier/GlacierClient.java | 260 +++++++++++---
.../blobstore/GlacierAsyncBlobStore.java | 125 -------
.../config/GlacierBlobStoreContextModule.java | 9 +-
.../glacier/config/GlacierHttpApiModule.java | 78 ++++
.../glacier/config/GlacierRestClientModule.java | 79 -----
.../jclouds/glacier/GlacierClientMockTest.java | 2 +-
8 files changed, 299 insertions(+), 631 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds-labs-aws/blob/9f3a76a6/glacier/src/main/java/org/jclouds/glacier/GlacierApiMetadata.java
----------------------------------------------------------------------
diff --git a/glacier/src/main/java/org/jclouds/glacier/GlacierApiMetadata.java b/glacier/src/main/java/org/jclouds/glacier/GlacierApiMetadata.java
index 3244eeb..e72ee21 100644
--- a/glacier/src/main/java/org/jclouds/glacier/GlacierApiMetadata.java
+++ b/glacier/src/main/java/org/jclouds/glacier/GlacierApiMetadata.java
@@ -24,25 +24,18 @@ import java.util.Properties;
import org.jclouds.blobstore.BlobStoreContext;
import org.jclouds.glacier.blobstore.config.GlacierBlobStoreContextModule;
+import org.jclouds.glacier.config.GlacierHttpApiModule;
import org.jclouds.glacier.config.GlacierParserModule;
-import org.jclouds.glacier.config.GlacierRestClientModule;
import org.jclouds.glacier.reference.GlacierHeaders;
-import org.jclouds.rest.internal.BaseRestApiMetadata;
+import org.jclouds.rest.internal.BaseHttpApiMetadata;
import com.google.common.collect.ImmutableSet;
-import com.google.common.reflect.TypeToken;
import com.google.inject.Module;
/**
* Implementation of ApiMetadata for Amazon Glacier API
*/
-public class GlacierApiMetadata extends BaseRestApiMetadata {
-
- @Deprecated
- public static final TypeToken<org.jclouds.rest.RestContext<GlacierClient, GlacierAsyncClient>> CONTEXT_TOKEN = new TypeToken<org.jclouds.rest.RestContext<GlacierClient, GlacierAsyncClient>>() {
-
- private static final long serialVersionUID = 1L;
- };
+public class GlacierApiMetadata extends BaseHttpApiMetadata {
private static Builder builder() {
return new Builder();
@@ -62,16 +55,15 @@ public class GlacierApiMetadata extends BaseRestApiMetadata {
}
public static Properties defaultProperties() {
- Properties properties = BaseRestApiMetadata.defaultProperties();
+ Properties properties = BaseHttpApiMetadata.defaultProperties();
properties.setProperty(PROPERTY_HEADER_TAG, GlacierHeaders.DEFAULT_AMAZON_HEADERTAG);
return properties;
}
- public static class Builder extends BaseRestApiMetadata.Builder<Builder> {
+ public static class Builder extends BaseHttpApiMetadata.Builder<GlacierClient, Builder> {
- @SuppressWarnings("deprecation")
protected Builder() {
- super(GlacierClient.class, GlacierAsyncClient.class);
+ super(GlacierClient.class);
id("glacier")
.name("Amazon Glacier API")
.identityName("Access Key ID")
@@ -80,9 +72,8 @@ public class GlacierApiMetadata extends BaseRestApiMetadata {
.documentation(URI.create("http://docs.aws.amazon.com/amazonglacier/latest/dev/amazon-glacier-api.html"))
.version("2012-06-01")
.defaultProperties(GlacierApiMetadata.defaultProperties())
- .context(CONTEXT_TOKEN)
.view(typeToken(BlobStoreContext.class))
- .defaultModules(ImmutableSet.<Class<? extends Module>> of(GlacierRestClientModule.class,
+ .defaultModules(ImmutableSet.<Class<? extends Module>> of(GlacierHttpApiModule.class,
GlacierParserModule.class, GlacierBlobStoreContextModule.class));
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs-aws/blob/9f3a76a6/glacier/src/main/java/org/jclouds/glacier/GlacierAsyncClient.java
----------------------------------------------------------------------
diff --git a/glacier/src/main/java/org/jclouds/glacier/GlacierAsyncClient.java b/glacier/src/main/java/org/jclouds/glacier/GlacierAsyncClient.java
deleted file mode 100644
index c7893ed..0000000
--- a/glacier/src/main/java/org/jclouds/glacier/GlacierAsyncClient.java
+++ /dev/null
@@ -1,354 +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;
-
-import static org.jclouds.blobstore.attr.BlobScopes.CONTAINER;
-
-import java.io.Closeable;
-import java.net.URI;
-import java.util.Map;
-
-import javax.inject.Named;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-
-import org.jclouds.Fallbacks.NullOnNotFoundOr404;
-import org.jclouds.blobstore.attr.BlobScope;
-import org.jclouds.glacier.binders.BindArchiveOutputRangeToHeaders;
-import org.jclouds.glacier.binders.BindArchiveSizeToHeaders;
-import org.jclouds.glacier.binders.BindContentRangeToHeaders;
-import org.jclouds.glacier.binders.BindDescriptionToHeaders;
-import org.jclouds.glacier.binders.BindHashesToHeaders;
-import org.jclouds.glacier.binders.BindJobRequestToJsonPayload;
-import org.jclouds.glacier.binders.BindMultipartTreeHashToHeaders;
-import org.jclouds.glacier.binders.BindPartSizeToHeaders;
-import org.jclouds.glacier.domain.ArchiveMetadataCollection;
-import org.jclouds.glacier.domain.JobMetadata;
-import org.jclouds.glacier.domain.JobRequest;
-import org.jclouds.glacier.domain.MultipartUploadMetadata;
-import org.jclouds.glacier.domain.PaginatedJobCollection;
-import org.jclouds.glacier.domain.PaginatedMultipartUploadCollection;
-import org.jclouds.glacier.domain.PaginatedVaultCollection;
-import org.jclouds.glacier.domain.VaultMetadata;
-import org.jclouds.glacier.fallbacks.FalseOnIllegalArgumentException;
-import org.jclouds.glacier.filters.RequestAuthorizeSignature;
-import org.jclouds.glacier.functions.GetPayloadFromHttpContent;
-import org.jclouds.glacier.functions.ParseArchiveIdHeader;
-import org.jclouds.glacier.functions.ParseArchiveMetadataCollectionFromHttpContent;
-import org.jclouds.glacier.functions.ParseJobIdHeader;
-import org.jclouds.glacier.functions.ParseJobMetadataFromHttpContent;
-import org.jclouds.glacier.functions.ParseJobMetadataListFromHttpContent;
-import org.jclouds.glacier.functions.ParseMultipartUploadIdHeader;
-import org.jclouds.glacier.functions.ParseMultipartUploadListFromHttpContent;
-import org.jclouds.glacier.functions.ParseMultipartUploadPartListFromHttpContent;
-import org.jclouds.glacier.functions.ParseMultipartUploadTreeHashHeader;
-import org.jclouds.glacier.functions.ParseVaultMetadataFromHttpContent;
-import org.jclouds.glacier.functions.ParseVaultMetadataListFromHttpContent;
-import org.jclouds.glacier.options.PaginationOptions;
-import org.jclouds.glacier.predicates.validators.DescriptionValidator;
-import org.jclouds.glacier.predicates.validators.PartSizeValidator;
-import org.jclouds.glacier.predicates.validators.PayloadValidator;
-import org.jclouds.glacier.predicates.validators.VaultNameValidator;
-import org.jclouds.glacier.reference.GlacierHeaders;
-import org.jclouds.glacier.util.ContentRange;
-import org.jclouds.io.Payload;
-import org.jclouds.rest.annotations.BinderParam;
-import org.jclouds.rest.annotations.Fallback;
-import org.jclouds.rest.annotations.Headers;
-import org.jclouds.rest.annotations.ParamValidators;
-import org.jclouds.rest.annotations.RequestFilters;
-import org.jclouds.rest.annotations.ResponseParser;
-
-import com.google.common.hash.HashCode;
-import com.google.common.util.concurrent.ListenableFuture;
-
-/**
- * Provides asynchronous access to Amazon Glacier resources via their REST API.
- * <p/>
- *
- * @see GlacierClient
- * @see <a href="http://aws.amazon.com/documentation/glacier/" />
- */
-@Headers(keys = GlacierHeaders.VERSION, values = "2012-06-01")
-@RequestFilters(RequestAuthorizeSignature.class)
-@BlobScope(CONTAINER)
-public interface GlacierAsyncClient extends Closeable {
-
- /**
- * @see GlacierClient#createVault
- */
- @Named("CreateVault")
- @PUT
- @Path("/-/vaults/{vault}")
- ListenableFuture<URI> createVault(@ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName);
-
- /**
- * @see GlacierClient#deleteVaultIfEmpty
- */
- @Named("DeleteVault")
- @DELETE
- @Path("/-/vaults/{vault}")
- @Fallback(FalseOnIllegalArgumentException.class)
- ListenableFuture<Boolean> deleteVault(@ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName);
-
- /**
- * @see GlacierClient#describeVault
- */
- @Named("DescribeVault")
- @GET
- @Path("/-/vaults/{vault}")
- @ResponseParser(ParseVaultMetadataFromHttpContent.class)
- @Fallback(NullOnNotFoundOr404.class)
- ListenableFuture<VaultMetadata> describeVault(
- @ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName);
-
- /**
- * @see GlacierClient#listVaults(PaginationOptions)
- */
- @Named("ListVaults")
- @GET
- @Path("/-/vaults")
- @ResponseParser(ParseVaultMetadataListFromHttpContent.class)
- ListenableFuture<PaginatedVaultCollection> listVaults(PaginationOptions options);
-
- /**
- * @see GlacierClient#listVaults
- */
- @Named("ListVaults")
- @GET
- @Path("/-/vaults")
- @ResponseParser(ParseVaultMetadataListFromHttpContent.class)
- ListenableFuture<PaginatedVaultCollection> listVaults();
-
- /**
- * @see GlacierClient#uploadArchive
- */
- @Named("UploadArchive")
- @POST
- @Path("/-/vaults/{vault}/archives")
- @ResponseParser(ParseArchiveIdHeader.class)
- ListenableFuture<String> uploadArchive(
- @ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName,
- @ParamValidators(PayloadValidator.class) @BinderParam(BindHashesToHeaders.class) Payload payload,
- @ParamValidators(DescriptionValidator.class) @BinderParam(BindDescriptionToHeaders.class) String description);
-
- /**
- * @see GlacierClient#uploadArchive
- */
- @Named("UploadArchive")
- @POST
- @Path("/-/vaults/{vault}/archives")
- @ResponseParser(ParseArchiveIdHeader.class)
- ListenableFuture<String> uploadArchive(
- @ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName,
- @ParamValidators(PayloadValidator.class) @BinderParam(BindHashesToHeaders.class) Payload payload);
-
- /**
- * @see GlacierClient#deleteArchive
- */
- @Named("DeleteArchive")
- @DELETE
- @Path("/-/vaults/{vault}/archives/{archive}")
- ListenableFuture<Boolean> deleteArchive(
- @ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName,
- @PathParam("archive") String archiveId);
-
- /**
- * @see GlacierClient#initiateMultipartUpload
- */
- @Named("InitiateMultipartUpload")
- @POST
- @Path("/-/vaults/{vault}/multipart-uploads")
- @ResponseParser(ParseMultipartUploadIdHeader.class)
- ListenableFuture<String> initiateMultipartUpload(
- @ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName,
- @ParamValidators(PartSizeValidator.class) @BinderParam(BindPartSizeToHeaders.class) long partSizeInMB,
- @ParamValidators(DescriptionValidator.class) @BinderParam(BindDescriptionToHeaders.class) String description);
-
- /**
- * @see GlacierClient#initiateMultipartUpload
- */
- @Named("InitiateMultipartUpload")
- @POST
- @Path("/-/vaults/{vault}/multipart-uploads")
- @ResponseParser(ParseMultipartUploadIdHeader.class)
- ListenableFuture<String> initiateMultipartUpload(
- @ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName,
- @ParamValidators(PartSizeValidator.class) @BinderParam(BindPartSizeToHeaders.class) long partSizeInMB);
-
- /**
- * @see GlacierClient#uploadPart
- */
- @Named("UploadPart")
- @PUT
- @Path("/-/vaults/{vault}/multipart-uploads/{uploadId}")
- @ResponseParser(ParseMultipartUploadTreeHashHeader.class)
- ListenableFuture<HashCode> uploadPart(
- @ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName,
- @PathParam("uploadId") String uploadId,
- @BinderParam(BindContentRangeToHeaders.class) ContentRange range,
- @ParamValidators(PayloadValidator.class) @BinderParam(BindHashesToHeaders.class) Payload payload);
-
- /**
- * @see GlacierClient#completeMultipartUpload
- */
- @Named("CompleteMultipartUpload")
- @POST
- @Path("/-/vaults/{vault}/multipart-uploads/{uploadId}")
- @ResponseParser(ParseArchiveIdHeader.class)
- ListenableFuture<String> completeMultipartUpload(
- @ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName,
- @PathParam("uploadId") String uploadId,
- @BinderParam(BindMultipartTreeHashToHeaders.class) Map<Integer, HashCode> hashes,
- @BinderParam(BindArchiveSizeToHeaders.class) long archiveSize);
-
- /**
- * @see GlacierClient#abortMultipartUpload
- */
- @Named("AbortMultipartUpload")
- @DELETE
- @Path("/-/vaults/{vault}/multipart-uploads/{uploadId}")
- ListenableFuture<Boolean> abortMultipartUpload(
- @ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName,
- @PathParam("uploadId") String uploadId);
-
- /**
- * @see GlacierClient#listParts
- */
- @Named("ListParts")
- @GET
- @Path("/-/vaults/{vault}/multipart-uploads/{uploadId}")
- @ResponseParser(ParseMultipartUploadPartListFromHttpContent.class)
- ListenableFuture<MultipartUploadMetadata> listParts(
- @ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName,
- @PathParam("uploadId") String uploadId,
- PaginationOptions options);
-
- /**
- * @see GlacierClient#listParts
- */
- @Named("ListParts")
- @GET
- @Path("/-/vaults/{vault}/multipart-uploads/{uploadId}")
- @ResponseParser(ParseMultipartUploadPartListFromHttpContent.class)
- ListenableFuture<MultipartUploadMetadata> listParts(
- @ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName,
- @PathParam("uploadId") String uploadId);
-
- /**
- * @see GlacierClient#listMultipartUploads
- */
- @Named("ListMultipartUploads")
- @GET
- @Path("/-/vaults/{vault}/multipart-uploads")
- @ResponseParser(ParseMultipartUploadListFromHttpContent.class)
- ListenableFuture<PaginatedMultipartUploadCollection> listMultipartUploads(
- @ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName,
- PaginationOptions options);
-
- /**
- * @see GlacierClient#listMultipartUploads
- */
- @Named("ListMultipartUploads")
- @GET
- @Path("/-/vaults/{vault}/multipart-uploads")
- @ResponseParser(ParseMultipartUploadListFromHttpContent.class)
- ListenableFuture<PaginatedMultipartUploadCollection> listMultipartUploads(
- @ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName);
-
- /**
- * @see GlacierClient#initiateJob
- */
- @Named("InitiateJob")
- @POST
- @Path("/-/vaults/{vault}/jobs")
- @ResponseParser(ParseJobIdHeader.class)
- ListenableFuture<String> initiateJob(
- @ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName,
- @BinderParam(BindJobRequestToJsonPayload.class) JobRequest job);
-
- /**
- * @see GlacierClient#describeJob
- */
- @Named("DescribeJob")
- @GET
- @Path("/-/vaults/{vault}/jobs/{job}")
- @ResponseParser(ParseJobMetadataFromHttpContent.class)
- @Fallback(NullOnNotFoundOr404.class)
- ListenableFuture<JobMetadata> describeJob(
- @ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName,
- @PathParam("job") String jobId);
-
- /**
- * @see GlacierClient#listJobs(PaginationOptions)
- */
- @Named("ListJobs")
- @GET
- @Path("/-/vaults/{vault}/jobs")
- @ResponseParser(ParseJobMetadataListFromHttpContent.class)
- ListenableFuture<PaginatedJobCollection> listJobs(
- @ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName,
- PaginationOptions options);
-
- /**
- * @see GlacierClient#listJobs
- */
- @Named("ListJobs")
- @GET
- @Path("/-/vaults/{vault}/jobs")
- @ResponseParser(ParseJobMetadataListFromHttpContent.class)
- ListenableFuture<PaginatedJobCollection> listJobs(
- @ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName);
-
- /**
- * @see GlacierClient#getJobOutput
- */
- @Named("GetJobOutput")
- @GET
- @Path("/-/vaults/{vault}/jobs/{job}/output")
- @ResponseParser(GetPayloadFromHttpContent.class)
- ListenableFuture<Payload> getJobOutput(
- @ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName,
- @PathParam("job") String jobId,
- @BinderParam(BindArchiveOutputRangeToHeaders.class) ContentRange range);
-
- /**
- * @see GlacierClient#getJobOutput
- */
- @Named("GetJobOutput")
- @GET
- @Path("/-/vaults/{vault}/jobs/{job}/output")
- @ResponseParser(GetPayloadFromHttpContent.class)
- ListenableFuture<Payload> getJobOutput(
- @ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName,
- @PathParam("job") String jobId);
-
- /**
- * @see GlacierClient#getInventoryRetrievalOutput
- */
- @Named("GetInventoryRetrievalOutput")
- @GET
- @Path("/-/vaults/{vault}/jobs/{job}/output")
- @ResponseParser(ParseArchiveMetadataCollectionFromHttpContent.class)
- ListenableFuture<ArchiveMetadataCollection> getInventoryRetrievalOutput(
- @ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName,
- @PathParam("job") String jobId);
-}
http://git-wip-us.apache.org/repos/asf/jclouds-labs-aws/blob/9f3a76a6/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..589794a 100644
--- a/glacier/src/main/java/org/jclouds/glacier/GlacierClient.java
+++ b/glacier/src/main/java/org/jclouds/glacier/GlacierClient.java
@@ -16,10 +16,30 @@
*/
package org.jclouds.glacier;
+import static org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import static org.jclouds.blobstore.attr.BlobScopes.CONTAINER;
+
import java.io.Closeable;
import java.net.URI;
import java.util.Map;
+import javax.inject.Named;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+
+import org.jclouds.blobstore.attr.BlobScope;
+import org.jclouds.glacier.binders.BindArchiveOutputRangeToHeaders;
+import org.jclouds.glacier.binders.BindArchiveSizeToHeaders;
+import org.jclouds.glacier.binders.BindContentRangeToHeaders;
+import org.jclouds.glacier.binders.BindDescriptionToHeaders;
+import org.jclouds.glacier.binders.BindHashesToHeaders;
+import org.jclouds.glacier.binders.BindJobRequestToJsonPayload;
+import org.jclouds.glacier.binders.BindMultipartTreeHashToHeaders;
+import org.jclouds.glacier.binders.BindPartSizeToHeaders;
import org.jclouds.glacier.domain.ArchiveMetadataCollection;
import org.jclouds.glacier.domain.JobMetadata;
import org.jclouds.glacier.domain.JobRequest;
@@ -28,19 +48,41 @@ import org.jclouds.glacier.domain.PaginatedJobCollection;
import org.jclouds.glacier.domain.PaginatedMultipartUploadCollection;
import org.jclouds.glacier.domain.PaginatedVaultCollection;
import org.jclouds.glacier.domain.VaultMetadata;
+import org.jclouds.glacier.fallbacks.FalseOnIllegalArgumentException;
+import org.jclouds.glacier.filters.RequestAuthorizeSignature;
+import org.jclouds.glacier.functions.GetPayloadFromHttpContent;
+import org.jclouds.glacier.functions.ParseArchiveIdHeader;
+import org.jclouds.glacier.functions.ParseArchiveMetadataCollectionFromHttpContent;
+import org.jclouds.glacier.functions.ParseJobIdHeader;
+import org.jclouds.glacier.functions.ParseJobMetadataFromHttpContent;
+import org.jclouds.glacier.functions.ParseJobMetadataListFromHttpContent;
+import org.jclouds.glacier.functions.ParseMultipartUploadIdHeader;
+import org.jclouds.glacier.functions.ParseMultipartUploadListFromHttpContent;
+import org.jclouds.glacier.functions.ParseMultipartUploadPartListFromHttpContent;
+import org.jclouds.glacier.functions.ParseMultipartUploadTreeHashHeader;
+import org.jclouds.glacier.functions.ParseVaultMetadataFromHttpContent;
+import org.jclouds.glacier.functions.ParseVaultMetadataListFromHttpContent;
import org.jclouds.glacier.options.PaginationOptions;
+import org.jclouds.glacier.predicates.validators.DescriptionValidator;
+import org.jclouds.glacier.predicates.validators.PartSizeValidator;
+import org.jclouds.glacier.predicates.validators.PayloadValidator;
+import org.jclouds.glacier.predicates.validators.VaultNameValidator;
+import org.jclouds.glacier.reference.GlacierHeaders;
import org.jclouds.glacier.util.ContentRange;
import org.jclouds.io.Payload;
+import org.jclouds.rest.annotations.BinderParam;
+import org.jclouds.rest.annotations.Fallback;
+import org.jclouds.rest.annotations.Headers;
+import org.jclouds.rest.annotations.ParamValidators;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.ResponseParser;
import com.google.common.hash.HashCode;
-/**
- * Provides access to Amazon Glacier resources via their REST API.
- * <p/>
- *
- * @see GlacierAsyncClient
- * @see <a href="http://aws.amazon.com/documentation/glacier/" />
- */
+/** Provides access to Amazon Glacier resources via their REST API. */
+@Headers(keys = GlacierHeaders.VERSION, values = "2012-06-01")
+@RequestFilters(RequestAuthorizeSignature.class)
+@BlobScope(CONTAINER)
public interface GlacierClient extends Closeable {
/**
@@ -49,9 +91,11 @@ public interface GlacierClient extends Closeable {
* @param vaultName
* A name for the Vault being created.
* @return A reference to an URI pointing to the resource created.
- * @see <a href="http://docs.aws.amazon.com/amazonglacier/latest/dev/api-vault-put.html" />
*/
- URI createVault(String vaultName);
+ @Named("CreateVault")
+ @PUT
+ @Path("/-/vaults/{vault}")
+ URI createVault(@ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName);
/**
* Deletes a vault.
@@ -59,19 +103,27 @@ public interface GlacierClient extends Closeable {
* @param vaultName
* Name of the Vault being deleted.
* @return False if the vault was not empty and therefore not deleted, true otherwise.
- * @see <a href="http://docs.aws.amazon.com/amazonglacier/latest/dev/api-vault-delete.html" />
*/
- boolean deleteVault(String vaultName);
+ @Named("DeleteVault")
+ @DELETE
+ @Path("/-/vaults/{vault}")
+ @Fallback(FalseOnIllegalArgumentException.class)
+ boolean deleteVault(@ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName);
/**
* Retrieves the metadata for a vault.
*
* @param vaultName
* Name of the Vault being described.
- * @return A VaultMetadata object containing all the information relevant to the vault.
- * @see <a href="http://docs.aws.amazon.com/amazonglacier/latest/dev/api-vault-get.html" />
+ * @return A VaultMetadata object containing all the information relevant to the vault if the vault exists,
+ * null otherwise.
*/
- VaultMetadata describeVault(String vaultName);
+ @Named("DescribeVault")
+ @GET
+ @Path("/-/vaults/{vault}")
+ @ResponseParser(ParseVaultMetadataFromHttpContent.class)
+ @Fallback(NullOnNotFoundOr404.class)
+ VaultMetadata describeVault(@ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName);
/**
* Lists vaults according to specified options.
@@ -79,8 +131,11 @@ public interface GlacierClient extends Closeable {
* @param options
* Options used for pagination.
* @return A PaginatedVaultCollection object containing the list of vaults.
- * @see <a href="http://docs.aws.amazon.com/amazonglacier/latest/dev/api-vaults-get.html" />
*/
+ @Named("ListVaults")
+ @GET
+ @Path("/-/vaults")
+ @ResponseParser(ParseVaultMetadataListFromHttpContent.class)
PaginatedVaultCollection listVaults(PaginationOptions options);
/**
@@ -88,6 +143,10 @@ public interface GlacierClient extends Closeable {
*
* @see GlacierClient#listVaults(PaginationOptions)
*/
+ @Named("ListVaults")
+ @GET
+ @Path("/-/vaults")
+ @ResponseParser(ParseVaultMetadataListFromHttpContent.class)
PaginatedVaultCollection listVaults();
/**
@@ -100,16 +159,28 @@ public interface GlacierClient extends Closeable {
* @param description
* Description for the archive.
* @return A String containing the Archive identifier in Amazon Glacier.
- * @see <a href="http://docs.aws.amazon.com/amazonglacier/latest/dev/api-archive-post.html" />
*/
- String uploadArchive(String vaultName, Payload payload, String description);
+ @Named("UploadArchive")
+ @POST
+ @Path("/-/vaults/{vault}/archives")
+ @ResponseParser(ParseArchiveIdHeader.class)
+ String uploadArchive(
+ @ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName,
+ @ParamValidators(PayloadValidator.class) @BinderParam(BindHashesToHeaders.class) Payload payload,
+ @ParamValidators(DescriptionValidator.class) @BinderParam(BindDescriptionToHeaders.class) String description);
/**
* Stores an archive in a vault.
*
* @see GlacierClient#uploadArchive
*/
- String uploadArchive(String vaultName, Payload payload);
+ @Named("UploadArchive")
+ @POST
+ @Path("/-/vaults/{vault}/archives")
+ @ResponseParser(ParseArchiveIdHeader.class)
+ String uploadArchive(
+ @ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName,
+ @ParamValidators(PayloadValidator.class) @BinderParam(BindHashesToHeaders.class) Payload payload);
/**
* Deletes an archive from a vault.
@@ -119,9 +190,13 @@ public interface GlacierClient extends Closeable {
* @param archiveId
* Amazon Glacier archive identifier.
* @return False if the archive was not deleted, true otherwise.
- * @see <a href="http://docs.aws.amazon.com/amazonglacier/latest/dev/api-archive-delete.html" />
*/
- boolean deleteArchive(String vaultName, String archiveId);
+ @Named("DeleteArchive")
+ @DELETE
+ @Path("/-/vaults/{vault}/archives/{archive}")
+ boolean deleteArchive(
+ @ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName,
+ @PathParam("archive") String archiveId);
/**
* Starts a new multipart upload.
@@ -133,14 +208,27 @@ public interface GlacierClient extends Closeable {
* @param description
* The archive description.
* @return The Multipart Upload Id.
- * @see <a href="http://docs.aws.amazon.com/amazonglacier/latest/dev/api-multipart-initiate-upload.html" />
*/
- String initiateMultipartUpload(String vaultName, long partSizeInMB, String description);
+ @Named("InitiateMultipartUpload")
+ @POST
+ @Path("/-/vaults/{vault}/multipart-uploads")
+ @ResponseParser(ParseMultipartUploadIdHeader.class)
+ String initiateMultipartUpload(
+ @ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName,
+ @ParamValidators(PartSizeValidator.class) @BinderParam(BindPartSizeToHeaders.class) long partSizeInMB,
+ @ParamValidators(DescriptionValidator.class) @BinderParam(BindDescriptionToHeaders.class) String description);
/**
* Starts a new multipart upload.
*/
- String initiateMultipartUpload(String vaultName, long partSizeInMB);
+ @Named("InitiateMultipartUpload")
+ @POST
+ @Path("/-/vaults/{vault}/multipart-uploads")
+ @ResponseParser(ParseMultipartUploadIdHeader.class)
+ String initiateMultipartUpload(
+ @ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName,
+ @ParamValidators(PartSizeValidator.class) @BinderParam(BindPartSizeToHeaders.class) long partSizeInMB);
+
/**
* Uploads one of the multipart upload parts.
@@ -155,9 +243,16 @@ public interface GlacierClient extends Closeable {
* Content for this part.
* @return Tree-hash of the payload calculated by Amazon. This hash needs to be stored to complete the multipart
* upload.
- * @see <a href="http://docs.aws.amazon.com/amazonglacier/latest/dev/api-upload-part.html" />
*/
- HashCode uploadPart(String vaultName, String uploadId, ContentRange range, Payload payload);
+ @Named("UploadPart")
+ @PUT
+ @Path("/-/vaults/{vault}/multipart-uploads/{uploadId}")
+ @ResponseParser(ParseMultipartUploadTreeHashHeader.class)
+ HashCode uploadPart(
+ @ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName,
+ @PathParam("uploadId") String uploadId,
+ @BinderParam(BindContentRangeToHeaders.class) ContentRange range,
+ @ParamValidators(PayloadValidator.class) @BinderParam(BindHashesToHeaders.class) Payload payload);
/**
* Completes the multipart upload.
@@ -171,9 +266,17 @@ public interface GlacierClient extends Closeable {
* @param archiveSize
* Size of the complete archive.
* @return A String containing the Archive identifier in Amazon Glacier.
- * @see <a href="http://docs.aws.amazon.com/amazonglacier/latest/dev/api-multipart-complete-upload.html" />
*/
- String completeMultipartUpload(String vaultName, String uploadId, Map<Integer, HashCode> hashes, long archiveSize);
+ @Named("CompleteMultipartUpload")
+ @POST
+ @Path("/-/vaults/{vault}/multipart-uploads/{uploadId}")
+ @ResponseParser(ParseArchiveIdHeader.class)
+ String completeMultipartUpload(
+ @ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName,
+ @PathParam("uploadId") String uploadId,
+ @BinderParam(BindMultipartTreeHashToHeaders.class) Map<Integer, HashCode> hashes,
+ @BinderParam(BindArchiveSizeToHeaders.class) long archiveSize);
+
/**
* Aborts the multipart upload.
@@ -183,9 +286,13 @@ public interface GlacierClient extends Closeable {
* @param uploadId
* Multipart upload identifier.
* @return True if the multipart upload was aborted, false otherwise.
- * @see <a href="http://docs.aws.amazon.com/amazonglacier/latest/dev/api-multipart-abort-upload.html" />
*/
- boolean abortMultipartUpload(String vaultName, String uploadId);
+ @Named("AbortMultipartUpload")
+ @DELETE
+ @Path("/-/vaults/{vault}/multipart-uploads/{uploadId}")
+ boolean abortMultipartUpload(
+ @ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName,
+ @PathParam("uploadId") String uploadId);
/**
* Lists the multipart upload parts.
@@ -197,14 +304,27 @@ public interface GlacierClient extends Closeable {
* @param options
* Options used for pagination.
* @return A MultipartUploadMetadata, containing an iterable part list with a marker.
- * @see <a href="http://docs.aws.amazon.com/amazonglacier/latest/dev/api-multipart-list-parts.html" />
*/
- MultipartUploadMetadata listParts(String vaultName, String uploadId, PaginationOptions options);
+ @Named("ListParts")
+ @GET
+ @Path("/-/vaults/{vault}/multipart-uploads/{uploadId}")
+ @ResponseParser(ParseMultipartUploadPartListFromHttpContent.class)
+ MultipartUploadMetadata listParts(
+ @ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName,
+ @PathParam("uploadId") String uploadId,
+ PaginationOptions options);
+
/**
* Lists the multipart upload parts.
*/
- MultipartUploadMetadata listParts(String vaultName, String uploadId);
+ @Named("ListParts")
+ @GET
+ @Path("/-/vaults/{vault}/multipart-uploads/{uploadId}")
+ @ResponseParser(ParseMultipartUploadPartListFromHttpContent.class)
+ MultipartUploadMetadata listParts(
+ @ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName,
+ @PathParam("uploadId") String uploadId);
/**
* Lists the multipart uploads in a vault.
@@ -214,14 +334,24 @@ public interface GlacierClient extends Closeable {
* @param options
* Options used for pagination.
* @return A PaginatedMultipartUploadCollection, containing an iterable multipart upload list with a marker.
- * @see <a href="http://docs.aws.amazon.com/amazonglacier/latest/dev/api-multipart-list-uploads.html" />
*/
- PaginatedMultipartUploadCollection listMultipartUploads(String vaultName, PaginationOptions options);
-
+ @Named("ListMultipartUploads")
+ @GET
+ @Path("/-/vaults/{vault}/multipart-uploads")
+ @ResponseParser(ParseMultipartUploadListFromHttpContent.class)
+ PaginatedMultipartUploadCollection listMultipartUploads(
+ @ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName,
+ PaginationOptions options);
+
/**
* Lists the multipart uploads in a vault.
*/
- PaginatedMultipartUploadCollection listMultipartUploads(String vaultName);
+ @Named("ListMultipartUploads")
+ @GET
+ @Path("/-/vaults/{vault}/multipart-uploads")
+ @ResponseParser(ParseMultipartUploadListFromHttpContent.class)
+ PaginatedMultipartUploadCollection listMultipartUploads(
+ @ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName);
/**
* Initiates a job.
@@ -231,9 +361,13 @@ public interface GlacierClient extends Closeable {
* @param job
* JobRequest instance with the concrete request.
* @return The job identifier.
- * @see <a href="http://docs.aws.amazon.com/amazonglacier/latest/dev/api-initiate-job-post.html" />
*/
- String initiateJob(String vaultName, JobRequest job);
+ @Named("InitiateJob")
+ @POST
+ @Path("/-/vaults/{vault}/jobs")
+ @ResponseParser(ParseJobIdHeader.class)
+ String initiateJob(@ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName,
+ @BinderParam(BindJobRequestToJsonPayload.class) JobRequest job);
/**
* Describes a job.
@@ -242,10 +376,15 @@ public interface GlacierClient extends Closeable {
* Name of the target Vault for the job.
* @param jobId
* Job identifier.
- * @return The job metadata.
- * @see <a href="http://docs.aws.amazon.com/amazonglacier/latest/dev/api-describe-job-get.html" />
+ * @return The job metadata if the job exists in the vault, null otherwise.
*/
- JobMetadata describeJob(String vaultName, String jobId);
+ @Named("DescribeJob")
+ @GET
+ @Path("/-/vaults/{vault}/jobs/{job}")
+ @ResponseParser(ParseJobMetadataFromHttpContent.class)
+ @Fallback(NullOnNotFoundOr404.class)
+ JobMetadata describeJob(@ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName,
+ @PathParam("job") String jobId);
/**
* Lists jobs.
@@ -255,14 +394,22 @@ public interface GlacierClient extends Closeable {
* @param options
* Options used for pagination
* @return A PaginatedJobCollection, containing an iterable job list with a marker.
- * @see <a href="http://docs.aws.amazon.com/amazonglacier/latest/dev/api-jobs-get.html" />
*/
- PaginatedJobCollection listJobs(String vaultName, PaginationOptions options);
+ @Named("ListJobs")
+ @GET
+ @Path("/-/vaults/{vault}/jobs")
+ @ResponseParser(ParseJobMetadataListFromHttpContent.class)
+ PaginatedJobCollection listJobs(@ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName,
+ PaginationOptions options);
/**
* Lists jobs.
*/
- PaginatedJobCollection listJobs(String vaultName);
+ @Named("ListJobs")
+ @GET
+ @Path("/-/vaults/{vault}/jobs")
+ @ResponseParser(ParseJobMetadataListFromHttpContent.class)
+ PaginatedJobCollection listJobs(@ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName);
/**
* Downloads part of the output of an archive retrieval job.
@@ -274,9 +421,14 @@ public interface GlacierClient extends Closeable {
* @param range
* The range of bytes to retrieve from the output.
* @return The content data.
- * @see <a href="http://docs.aws.amazon.com/amazonglacier/latest/dev/api-job-output-get.html" />
*/
- Payload getJobOutput(String vaultName, String jobId, ContentRange range);
+ @Named("GetJobOutput")
+ @GET
+ @Path("/-/vaults/{vault}/jobs/{job}/output")
+ @ResponseParser(GetPayloadFromHttpContent.class)
+ Payload getJobOutput(@ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName,
+ @PathParam("job") String jobId,
+ @BinderParam(BindArchiveOutputRangeToHeaders.class) ContentRange range);
/**
* Downloads the output of an archive retrieval job.
@@ -286,9 +438,13 @@ public interface GlacierClient extends Closeable {
* @param jobId
* Job identifier.
* @return The content data.
- * @see <a href="http://docs.aws.amazon.com/amazonglacier/latest/dev/api-job-output-get.html" />
*/
- Payload getJobOutput(String vaultName, String jobId);
+ @Named("GetJobOutput")
+ @GET
+ @Path("/-/vaults/{vault}/jobs/{job}/output")
+ @ResponseParser(GetPayloadFromHttpContent.class)
+ Payload getJobOutput(@ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName,
+ @PathParam("job") String jobId);
/**
* Downloads the output of an inventory retrieval job.
@@ -298,7 +454,11 @@ public interface GlacierClient extends Closeable {
* @param jobId
* Job identifier.
* @return The ArchiveMetadata collection
- * @see <a href="http://docs.aws.amazon.com/amazonglacier/latest/dev/api-job-output-get.html" />
*/
- ArchiveMetadataCollection getInventoryRetrievalOutput(String vaultName, String jobId);
+ @Named("GetInventoryRetrievalOutput")
+ @GET
+ @Path("/-/vaults/{vault}/jobs/{job}/output")
+ @ResponseParser(ParseArchiveMetadataCollectionFromHttpContent.class)
+ ArchiveMetadataCollection getInventoryRetrievalOutput(@ParamValidators(VaultNameValidator.class) @PathParam("vault") String vaultName,
+ @PathParam("job") String jobId);
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs-aws/blob/9f3a76a6/glacier/src/main/java/org/jclouds/glacier/blobstore/GlacierAsyncBlobStore.java
----------------------------------------------------------------------
diff --git a/glacier/src/main/java/org/jclouds/glacier/blobstore/GlacierAsyncBlobStore.java b/glacier/src/main/java/org/jclouds/glacier/blobstore/GlacierAsyncBlobStore.java
deleted file mode 100644
index 6dda036..0000000
--- a/glacier/src/main/java/org/jclouds/glacier/blobstore/GlacierAsyncBlobStore.java
+++ /dev/null
@@ -1,125 +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;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Set;
-
-import org.jclouds.Constants;
-import org.jclouds.blobstore.BlobStoreContext;
-import org.jclouds.blobstore.domain.Blob;
-import org.jclouds.blobstore.domain.BlobMetadata;
-import org.jclouds.blobstore.domain.PageSet;
-import org.jclouds.blobstore.domain.StorageMetadata;
-import org.jclouds.blobstore.internal.BaseAsyncBlobStore;
-import org.jclouds.blobstore.options.CreateContainerOptions;
-import org.jclouds.blobstore.options.GetOptions;
-import org.jclouds.blobstore.options.ListContainerOptions;
-import org.jclouds.blobstore.options.PutOptions;
-import org.jclouds.blobstore.util.BlobUtils;
-import org.jclouds.collect.Memoized;
-import org.jclouds.crypto.Crypto;
-import org.jclouds.domain.Location;
-import org.jclouds.glacier.GlacierAsyncClient;
-import org.jclouds.glacier.GlacierClient;
-import org.jclouds.javax.annotation.Nullable;
-
-import com.google.common.base.Supplier;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.ListeningExecutorService;
-import com.google.inject.Inject;
-import com.google.inject.name.Named;
-
-public class GlacierAsyncBlobStore extends BaseAsyncBlobStore {
- private final GlacierAsyncClient async;
- private final GlacierClient sync;
- private final Crypto crypto;
-
- @Inject
- GlacierAsyncBlobStore(BlobStoreContext context, BlobUtils blobUtils, Supplier<Location> defaultLocation,
- @Named(Constants.PROPERTY_USER_THREADS) ListeningExecutorService userExecutor,
- @Memoized Supplier<Set<? extends Location>> locations, GlacierAsyncClient async, Crypto crypto,
- GlacierClient sync) {
- super(context, blobUtils, userExecutor, defaultLocation, locations);
- this.sync = checkNotNull(sync, "sync");
- this.async = checkNotNull(async, "async");
- this.crypto = checkNotNull(crypto, "crypto");
- }
-
- @Override
- protected boolean deleteAndVerifyContainerGone(String container) {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public ListenableFuture<PageSet<? extends StorageMetadata>> list() {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public ListenableFuture<Boolean> containerExists(String container) {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public ListenableFuture<Boolean> createContainerInLocation(@Nullable Location location, String container) {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public ListenableFuture<Boolean> createContainerInLocation(@Nullable Location location, String container,
- CreateContainerOptions options) {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public ListenableFuture<PageSet<? extends StorageMetadata>> list(String container,
- ListContainerOptions listContainerOptions) {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public ListenableFuture<Boolean> blobExists(String container, String key) {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public ListenableFuture<String> putBlob(String container, Blob blob) {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public ListenableFuture<String> putBlob(String container, Blob blob, PutOptions options) {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public ListenableFuture<BlobMetadata> blobMetadata(String container, String key) {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public ListenableFuture<Blob> getBlob(String container, String key, GetOptions getOptions) {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public ListenableFuture<Void> removeBlob(String container, String key) {
- throw new UnsupportedOperationException();
- }
-}
http://git-wip-us.apache.org/repos/asf/jclouds-labs-aws/blob/9f3a76a6/glacier/src/main/java/org/jclouds/glacier/blobstore/config/GlacierBlobStoreContextModule.java
----------------------------------------------------------------------
diff --git a/glacier/src/main/java/org/jclouds/glacier/blobstore/config/GlacierBlobStoreContextModule.java b/glacier/src/main/java/org/jclouds/glacier/blobstore/config/GlacierBlobStoreContextModule.java
index 6492640..fa92426 100644
--- a/glacier/src/main/java/org/jclouds/glacier/blobstore/config/GlacierBlobStoreContextModule.java
+++ b/glacier/src/main/java/org/jclouds/glacier/blobstore/config/GlacierBlobStoreContextModule.java
@@ -19,28 +19,25 @@ package org.jclouds.glacier.blobstore.config;
import org.jclouds.blobstore.AsyncBlobStore;
import org.jclouds.blobstore.BlobStore;
import org.jclouds.blobstore.attr.ConsistencyModel;
+import org.jclouds.blobstore.internal.SubmissionAsyncBlobStore;
import org.jclouds.blobstore.strategy.ClearListStrategy;
-import org.jclouds.glacier.blobstore.GlacierAsyncBlobStore;
import org.jclouds.glacier.blobstore.GlacierBlobStore;
-import org.jclouds.glacier.blobstore.strategy.internal.ClearVaultStrategy;
import org.jclouds.glacier.blobstore.strategy.MultipartUploadStrategy;
import org.jclouds.glacier.blobstore.strategy.PollingStrategy;
import org.jclouds.glacier.blobstore.strategy.SlicingStrategy;
import org.jclouds.glacier.blobstore.strategy.internal.BasePollingStrategy;
import org.jclouds.glacier.blobstore.strategy.internal.BaseSlicingStrategy;
+import org.jclouds.glacier.blobstore.strategy.internal.ClearVaultStrategy;
import org.jclouds.glacier.blobstore.strategy.internal.SequentialMultipartUploadStrategy;
import com.google.inject.AbstractModule;
-/**
- * Configures the context. Requires {@link GlacierAsyncBlobStore} bound.
- */
public class GlacierBlobStoreContextModule extends AbstractModule {
@Override
protected void configure() {
bind(ConsistencyModel.class).toInstance(ConsistencyModel.EVENTUAL);
bind(BlobStore.class).to(GlacierBlobStore.class);
- bind(AsyncBlobStore.class).to(GlacierAsyncBlobStore.class);
+ bind(AsyncBlobStore.class).to(SubmissionAsyncBlobStore.class);
bind(MultipartUploadStrategy.class).to(SequentialMultipartUploadStrategy.class);
bind(SlicingStrategy.class).to(BaseSlicingStrategy.class);
bind(ClearListStrategy.class).to(ClearVaultStrategy.class);
http://git-wip-us.apache.org/repos/asf/jclouds-labs-aws/blob/9f3a76a6/glacier/src/main/java/org/jclouds/glacier/config/GlacierHttpApiModule.java
----------------------------------------------------------------------
diff --git a/glacier/src/main/java/org/jclouds/glacier/config/GlacierHttpApiModule.java b/glacier/src/main/java/org/jclouds/glacier/config/GlacierHttpApiModule.java
new file mode 100644
index 0000000..7e32eab
--- /dev/null
+++ b/glacier/src/main/java/org/jclouds/glacier/config/GlacierHttpApiModule.java
@@ -0,0 +1,78 @@
+/*
+ * 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.config;
+
+import java.util.concurrent.TimeUnit;
+
+import javax.inject.Named;
+
+import org.jclouds.Constants;
+import org.jclouds.date.DateService;
+import org.jclouds.date.TimeStamp;
+import org.jclouds.glacier.GlacierClient;
+import org.jclouds.glacier.filters.RequestAuthorizeSignature;
+import org.jclouds.glacier.handlers.ParseGlacierErrorFromJsonContent;
+import org.jclouds.http.HttpErrorHandler;
+import org.jclouds.http.annotation.ClientError;
+import org.jclouds.http.annotation.Redirection;
+import org.jclouds.http.annotation.ServerError;
+import org.jclouds.rest.ConfiguresHttpApi;
+import org.jclouds.rest.config.HttpApiModule;
+
+import com.google.common.base.Supplier;
+import com.google.common.base.Suppliers;
+import com.google.inject.Provides;
+import com.google.inject.Scopes;
+
+/**
+ * Configures the mappings. Installs the Object and Parser modules.
+ */
+@ConfiguresHttpApi
+public class GlacierHttpApiModule extends HttpApiModule<GlacierClient> {
+
+ @Override
+ protected void configure() {
+ super.configure();
+ bind(RequestAuthorizeSignature.class).in(Scopes.SINGLETON);
+ }
+
+ @Provides
+ @TimeStamp
+ protected String provideTimeStamp(@TimeStamp Supplier<String> cache) {
+ return cache.get();
+ }
+
+ @Provides
+ @TimeStamp
+ Supplier<String> provideTimeStampCache(@Named(Constants.PROPERTY_SESSION_INTERVAL) long seconds,
+ final DateService dateService) {
+ return Suppliers.memoizeWithExpiration(new Supplier<String>() {
+
+ @Override
+ public String get() {
+ return dateService.iso8601SecondsDateFormat().replaceAll("[-:]", "");
+ }
+ }, seconds, TimeUnit.SECONDS);
+ }
+
+ @Override
+ protected void bindErrorHandlers() {
+ bind(HttpErrorHandler.class).annotatedWith(Redirection.class).to(ParseGlacierErrorFromJsonContent.class);
+ bind(HttpErrorHandler.class).annotatedWith(ClientError.class).to(ParseGlacierErrorFromJsonContent.class);
+ bind(HttpErrorHandler.class).annotatedWith(ServerError.class).to(ParseGlacierErrorFromJsonContent.class);
+ }
+}
http://git-wip-us.apache.org/repos/asf/jclouds-labs-aws/blob/9f3a76a6/glacier/src/main/java/org/jclouds/glacier/config/GlacierRestClientModule.java
----------------------------------------------------------------------
diff --git a/glacier/src/main/java/org/jclouds/glacier/config/GlacierRestClientModule.java b/glacier/src/main/java/org/jclouds/glacier/config/GlacierRestClientModule.java
deleted file mode 100644
index 1d771c6..0000000
--- a/glacier/src/main/java/org/jclouds/glacier/config/GlacierRestClientModule.java
+++ /dev/null
@@ -1,79 +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.config;
-
-import java.util.concurrent.TimeUnit;
-
-import javax.inject.Named;
-
-import org.jclouds.Constants;
-import org.jclouds.date.DateService;
-import org.jclouds.date.TimeStamp;
-import org.jclouds.glacier.GlacierAsyncClient;
-import org.jclouds.glacier.GlacierClient;
-import org.jclouds.glacier.filters.RequestAuthorizeSignature;
-import org.jclouds.glacier.handlers.ParseGlacierErrorFromJsonContent;
-import org.jclouds.http.HttpErrorHandler;
-import org.jclouds.http.annotation.ClientError;
-import org.jclouds.http.annotation.Redirection;
-import org.jclouds.http.annotation.ServerError;
-import org.jclouds.rest.ConfiguresRestClient;
-import org.jclouds.rest.config.RestClientModule;
-
-import com.google.common.base.Supplier;
-import com.google.common.base.Suppliers;
-import com.google.inject.Provides;
-import com.google.inject.Scopes;
-
-/**
- * Configures the mappings. Installs the Object and Parser modules.
- */
-@ConfiguresRestClient
-public class GlacierRestClientModule extends RestClientModule<GlacierClient, GlacierAsyncClient> {
-
- @Override
- protected void configure() {
- super.configure();
- bind(RequestAuthorizeSignature.class).in(Scopes.SINGLETON);
- }
-
- @Provides
- @TimeStamp
- protected String provideTimeStamp(@TimeStamp Supplier<String> cache) {
- return cache.get();
- }
-
- @Provides
- @TimeStamp
- Supplier<String> provideTimeStampCache(@Named(Constants.PROPERTY_SESSION_INTERVAL) long seconds,
- final DateService dateService) {
- return Suppliers.memoizeWithExpiration(new Supplier<String>() {
-
- @Override
- public String get() {
- return dateService.iso8601SecondsDateFormat().replaceAll("[-:]", "");
- }
- }, seconds, TimeUnit.SECONDS);
- }
-
- @Override
- protected void bindErrorHandlers() {
- bind(HttpErrorHandler.class).annotatedWith(Redirection.class).to(ParseGlacierErrorFromJsonContent.class);
- bind(HttpErrorHandler.class).annotatedWith(ClientError.class).to(ParseGlacierErrorFromJsonContent.class);
- bind(HttpErrorHandler.class).annotatedWith(ServerError.class).to(ParseGlacierErrorFromJsonContent.class);
- }
-}
http://git-wip-us.apache.org/repos/asf/jclouds-labs-aws/blob/9f3a76a6/glacier/src/test/java/org/jclouds/glacier/GlacierClientMockTest.java
----------------------------------------------------------------------
diff --git a/glacier/src/test/java/org/jclouds/glacier/GlacierClientMockTest.java b/glacier/src/test/java/org/jclouds/glacier/GlacierClientMockTest.java
index 19dda1c..5a83b32 100644
--- a/glacier/src/test/java/org/jclouds/glacier/GlacierClientMockTest.java
+++ b/glacier/src/test/java/org/jclouds/glacier/GlacierClientMockTest.java
@@ -71,7 +71,7 @@ import com.squareup.okhttp.mockwebserver.RecordedRequest;
/**
* Mock test for Glacier.
*/
-@Test(singleThreaded = true, groups = {"mock"})
+@Test(singleThreaded = true, groups = {"mock"}, testName = "GlacierClientMockTest")
public class GlacierClientMockTest {
private static final String REQUEST_ID = "AAABZpJrTyioDC_HsOmHae8EZp_uBSJr6cnGOLKp_XJCl-Q";
[2/2] git commit: Fix glacier's pom structure.
Posted by ad...@apache.org.
Fix glacier's pom structure.
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/4b5b9c11
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs-aws/tree/4b5b9c11
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs-aws/diff/4b5b9c11
Branch: refs/heads/1.8.x
Commit: 4b5b9c113a7cd1a5a648c4d4839e080f49b112c4
Parents: 9f3a76a
Author: Adrian Cole <ad...@gmail.com>
Authored: Sat Oct 4 10:53:24 2014 -0700
Committer: Adrian Cole <ad...@apache.org>
Committed: Sat Oct 4 16:35:51 2014 -0700
----------------------------------------------------------------------
glacier/pom.xml | 53 +++++++++++++++++++++++++++++++++++++---------------
1 file changed, 38 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds-labs-aws/blob/4b5b9c11/glacier/pom.xml
----------------------------------------------------------------------
diff --git a/glacier/pom.xml b/glacier/pom.xml
index 73ba5c5..5735eb1 100644
--- a/glacier/pom.xml
+++ b/glacier/pom.xml
@@ -20,14 +20,16 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
- <groupId>org.apache.jclouds.labs</groupId>
- <artifactId>jclouds-labs-aws</artifactId>
+ <groupId>org.apache.jclouds</groupId>
+ <artifactId>jclouds-project</artifactId>
<version>1.8.1-SNAPSHOT</version>
+ <relativePath />
</parent>
+ <!-- TODO: when out of labs, switch to org.jclouds.api -->
<groupId>org.apache.jclouds.labs</groupId>
<artifactId>glacier</artifactId>
- <name>jclouds glacier api</name>
+ <name>Apache jclouds :: AWS :: Glacier API</name>
<description>jclouds components to access an implementation of glacier</description>
<packaging>bundle</packaging>
@@ -39,46 +41,68 @@
<test.glacier.build-version />
<test.glacier.identity>${test.aws.identity}</test.glacier.identity>
<test.glacier.credential>${test.aws.credential}</test.glacier.credential>
-
<jclouds.osgi.export>org.jclouds.glacier*;version="${project.version}"</jclouds.osgi.export>
- <jclouds.osgi.import>
- org.jclouds.labs*;version="${project.version}",
- org.jclouds*;version="${project.version}",
- *
- </jclouds.osgi.import>
+ <jclouds.osgi.import>org.jclouds*;version="${project.version}",*</jclouds.osgi.import>
</properties>
+ <repositories>
+ <repository>
+ <id>apache-snapshots</id>
+ <url>https://repository.apache.org/content/repositories/snapshots</url>
+ <releases>
+ <enabled>false</enabled>
+ </releases>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ </repository>
+ </repositories>
+
+ <!-- For modernizer, which depends on jclouds-resources snapshot. -->
+ <pluginRepositories>
+ <pluginRepository>
+ <id>apache-snapshots</id>
+ <url>https://repository.apache.org/content/repositories/snapshots</url>
+ <releases>
+ <enabled>false</enabled>
+ </releases>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ </pluginRepository>
+ </pluginRepositories>
+
<dependencies>
<dependency>
<groupId>org.apache.jclouds.api</groupId>
<artifactId>sts</artifactId>
- <version>1.8.1-SNAPSHOT</version>
+ <version>${project.parent.version}</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.apache.jclouds</groupId>
<artifactId>jclouds-blobstore</artifactId>
- <version>1.8.1-SNAPSHOT</version>
+ <version>${project.parent.version}</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.apache.jclouds</groupId>
<artifactId>jclouds-core</artifactId>
- <version>1.8.1-SNAPSHOT</version>
+ <version>${project.parent.version}</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.jclouds</groupId>
<artifactId>jclouds-blobstore</artifactId>
- <version>1.8.1-SNAPSHOT</version>
+ <version>${project.parent.version}</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.jclouds.driver</groupId>
<artifactId>jclouds-log4j</artifactId>
- <version>1.8.1-SNAPSHOT</version>
+ <version>${project.parent.version}</version>
<scope>test</scope>
</dependency>
<dependency>
@@ -94,7 +118,6 @@
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
- <version>1.6.1</version>
<scope>test</scope>
</dependency>
</dependencies>