diff --git a/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/HPCloudObjectStorageApi.java b/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/HPCloudObjectStorageApi.java
index 0ef2d4682d..4dbceb579e 100644
--- a/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/HPCloudObjectStorageApi.java
+++ b/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/HPCloudObjectStorageApi.java
@@ -16,27 +16,39 @@
*/
package org.jclouds.hpcloud.objectstorage;
+import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
+import static org.jclouds.openstack.swift.SwiftFallbacks.TrueOn404FalseOn409;
+
import java.util.Set;
+
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+
import org.jclouds.hpcloud.objectstorage.extensions.CDNContainerApi;
import org.jclouds.location.Region;
+import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
import org.jclouds.openstack.swift.CommonSwiftClient;
+import org.jclouds.openstack.swift.Storage;
+import org.jclouds.openstack.swift.domain.ContainerMetadata;
+import org.jclouds.openstack.swift.options.ListContainerOptions;
import org.jclouds.rest.annotations.Delegate;
+import org.jclouds.rest.annotations.Endpoint;
+import org.jclouds.rest.annotations.Fallback;
+import org.jclouds.rest.annotations.QueryParams;
+import org.jclouds.rest.annotations.RequestFilters;
import com.google.common.base.Optional;
+import com.google.common.util.concurrent.ListenableFuture;
import com.google.inject.Provides;
-/**
- * Provides synchronous access to HP Cloud Object Storage via the REST API.
- *
- *
- * All commands return a ListenableFuture of the result. Any exceptions incurred during processing
- * will be backend in an {@link java.util.concurrent.ExecutionException} as documented in
- * {@link ListenableFuture#get()}.
- *
- * @see HPCloudObjectStorageAsyncApi
- * @see HP Cloud Object
- * Storage API
- */
+/** Provides synchronous access to HP Cloud Object Storage via the REST API. */
+@Deprecated
+@RequestFilters(AuthenticateRequest.class)
+@Endpoint(Storage.class)
public interface HPCloudObjectStorageApi extends CommonSwiftClient {
/**
*
@@ -46,6 +58,20 @@ public interface HPCloudObjectStorageApi extends CommonSwiftClient {
@Region
Set getConfiguredRegions();
+ @Override
+ @Named("ListContainers")
+ @GET
+ @Consumes(APPLICATION_JSON)
+ @QueryParams(keys = "format", values = "json")
+ @Path("/") Set listContainers(ListContainerOptions... options);
+
+ @Override
+ @Named("DeleteContainer")
+ @DELETE
+ @Fallback(TrueOn404FalseOn409.class)
+ @Path("/{container}")
+ boolean deleteContainerIfEmpty(@PathParam("container") String container);
+
/**
* Provides synchronous access to CDN features.
*/
diff --git a/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/HPCloudObjectStorageApiMetadata.java b/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/HPCloudObjectStorageApiMetadata.java
index e7c0d0f116..fa3f1adcff 100644
--- a/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/HPCloudObjectStorageApiMetadata.java
+++ b/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/HPCloudObjectStorageApiMetadata.java
@@ -16,46 +16,37 @@
*/
package org.jclouds.hpcloud.objectstorage;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.reflect.TypeToken;
-import com.google.inject.Module;
-import com.google.inject.name.Named;
-import org.jclouds.blobstore.BlobRequestSigner;
-import org.jclouds.hpcloud.objectstorage.blobstore.HPCloudObjectStorageBlobRequestSigner;
-import org.jclouds.hpcloud.objectstorage.blobstore.config.HPCloudObjectStorageBlobStoreContextModule;
-import org.jclouds.hpcloud.objectstorage.config.HPCloudObjectStorageRestClientModule;
-import org.jclouds.location.suppliers.RegionIdToURISupplier;
-import org.jclouds.openstack.keystone.v2_0.config.CredentialTypes;
-import org.jclouds.openstack.keystone.v2_0.config.MappedAuthenticationApiModule;
-import org.jclouds.openstack.keystone.v2_0.suppliers.RegionIdToAdminURISupplier;
-import org.jclouds.openstack.swift.SwiftKeystoneApiMetadata;
-import org.jclouds.openstack.swift.blobstore.config.TemporaryUrlExtensionModule;
-import org.jclouds.openstack.swift.extensions.KeystoneTemporaryUrlKeyAsyncApi;
-import org.jclouds.openstack.swift.extensions.TemporaryUrlKeyApi;
-import org.jclouds.rest.annotations.ApiVersion;
+import static org.jclouds.hpcloud.objectstorage.config.HPCloudObjectStorageHttpApiModule.HPCloudObjectStorageEndpointModule;
+import static org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule.RegionModule;
+import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.CREDENTIAL_TYPE;
+import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.SERVICE_TYPE;
+import static org.jclouds.rest.config.BinderUtils.bindHttpApi;
import java.net.URI;
import java.util.Properties;
-import static org.jclouds.hpcloud.objectstorage.config.HPCloudObjectStorageRestClientModule.HPCloudObjectStorageEndpointModule;
-import static org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule.RegionModule;
-import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.CREDENTIAL_TYPE;
-import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.SERVICE_TYPE;
-import static org.jclouds.rest.config.BinderUtils.bindSyncToAsyncHttpApi;
+import org.jclouds.blobstore.BlobRequestSigner;
+import org.jclouds.hpcloud.objectstorage.blobstore.HPCloudObjectStorageBlobRequestSigner;
+import org.jclouds.hpcloud.objectstorage.blobstore.config.HPCloudObjectStorageBlobStoreContextModule;
+import org.jclouds.hpcloud.objectstorage.config.HPCloudObjectStorageHttpApiModule;
+import org.jclouds.location.suppliers.RegionIdToURISupplier;
+import org.jclouds.openstack.keystone.v2_0.config.AuthenticationApiModule;
+import org.jclouds.openstack.keystone.v2_0.config.CredentialTypes;
+import org.jclouds.openstack.keystone.v2_0.suppliers.RegionIdToAdminURISupplier;
+import org.jclouds.openstack.swift.SwiftKeystoneApiMetadata;
+import org.jclouds.openstack.swift.blobstore.config.TemporaryUrlExtensionModule;
+import org.jclouds.openstack.swift.extensions.KeystoneTemporaryUrlKeyApi;
+import org.jclouds.openstack.swift.extensions.TemporaryUrlKeyApi;
+import org.jclouds.rest.annotations.ApiVersion;
+
+import com.google.common.collect.ImmutableSet;
+import com.google.inject.Module;
+import com.google.inject.name.Named;
/**
* Implementation of {@link org.jclouds.providers.ProviderMetadata} for HP Cloud Services Object Storage
*/
public class HPCloudObjectStorageApiMetadata extends SwiftKeystoneApiMetadata {
- /**
- * @deprecated please use {@code org.jclouds.ContextBuilder#buildApi(HPCloudObjectStorageApi.class)} as
- * {@link HPCloudObjectStorageAsyncApi} interface will be removed in jclouds 1.7.
- */
- @Deprecated
- public static final TypeToken> CONTEXT_TOKEN = new TypeToken>() {
- private static final long serialVersionUID = 1L;
- };
-
@Override
public Builder toBuilder() {
return new Builder().fromApiMetadata(this);
@@ -75,22 +66,20 @@ public class HPCloudObjectStorageApiMetadata extends SwiftKeystoneApiMetadata {
return properties;
}
- public static class Builder extends SwiftKeystoneApiMetadata.Builder {
- @SuppressWarnings("deprecation")
+ public static class Builder extends SwiftKeystoneApiMetadata.Builder {
protected Builder() {
- super(HPCloudObjectStorageApi.class, HPCloudObjectStorageAsyncApi.class);
+ super(HPCloudObjectStorageApi.class);
id("hpcloud-objectstorage")
.endpointName("identity service url ending in /v2.0/")
.defaultEndpoint("https://region-a.geo-1.identity.hpcloudsvc.com:35357/v2.0/")
.name("HP Cloud Services Object Storage API")
.documentation(URI.create("https://build.hpcloud.com/object-storage/api"))
.defaultProperties(HPCloudObjectStorageApiMetadata.defaultProperties())
- .context(CONTEXT_TOKEN)
.defaultModules(ImmutableSet.>builder()
- .add(MappedAuthenticationApiModule.class)
+ .add(AuthenticationApiModule.class)
.add(HPCloudObjectStorageEndpointModule.class)
.add(IgnoreRegionVersionsModule.class)
- .add(HPCloudObjectStorageRestClientModule.class)
+ .add(HPCloudObjectStorageHttpApiModule.class)
.add(HPCloudObjectStorageBlobStoreContextModule.class)
.add(HPCloudObjectStorageTemporaryUrlExtensionModule.class).build());
}
@@ -110,14 +99,15 @@ public class HPCloudObjectStorageApiMetadata extends SwiftKeystoneApiMetadata {
* Ensures keystone auth is used instead of swift auth
*/
public static class HPCloudObjectStorageTemporaryUrlExtensionModule extends
- TemporaryUrlExtensionModule {
+ TemporaryUrlExtensionModule {
@Override
protected void bindRequestSigner() {
bind(BlobRequestSigner.class).to(HPCloudObjectStorageBlobRequestSigner.class);
}
@Override
protected void bindTemporaryUrlKeyApi() {
- bindSyncToAsyncHttpApi(binder(), TemporaryUrlKeyApi.class, KeystoneTemporaryUrlKeyAsyncApi.class);
+ bindHttpApi(binder(), KeystoneTemporaryUrlKeyApi.class);
+ bind(TemporaryUrlKeyApi.class).to(KeystoneTemporaryUrlKeyApi.class);
}
}
diff --git a/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/HPCloudObjectStorageAsyncApi.java b/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/HPCloudObjectStorageAsyncApi.java
deleted file mode 100644
index 51cb464b7e..0000000000
--- a/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/HPCloudObjectStorageAsyncApi.java
+++ /dev/null
@@ -1,100 +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.hpcloud.objectstorage;
-
-import java.util.Set;
-
-import javax.inject.Named;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.core.MediaType;
-
-import org.jclouds.hpcloud.objectstorage.extensions.CDNContainerAsyncApi;
-import org.jclouds.location.Region;
-import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
-import org.jclouds.openstack.swift.CommonSwiftAsyncClient;
-import org.jclouds.openstack.swift.Storage;
-import org.jclouds.openstack.swift.SwiftFallbacks.TrueOn404FalseOn409;
-import org.jclouds.openstack.swift.domain.ContainerMetadata;
-import org.jclouds.openstack.swift.options.ListContainerOptions;
-import org.jclouds.rest.annotations.Delegate;
-import org.jclouds.rest.annotations.Endpoint;
-import org.jclouds.rest.annotations.Fallback;
-import org.jclouds.rest.annotations.QueryParams;
-import org.jclouds.rest.annotations.RequestFilters;
-
-import com.google.common.base.Optional;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.inject.Provides;
-
-/**
- * Provides asynchronous access to HP Cloud Object Storage via the REST API.
- *
- *
- * All commands return a ListenableFuture of the result. Any exceptions incurred
- * during processing will be backend in an
- * {@link java.util.concurrent.ExecutionException} as documented in
- * {@link ListenableFuture#get()}.
- *
- * @see HPCloudObjectStorageApi
- * @see HP
- * Cloud Object Storage API
- * @deprecated please use {@code org.jclouds.ContextBuilder#buildApi(HPCloudObjectStorageApi.class)} as
- * {@link HPCloudObjectStorageAsyncApi} interface will be removed in jclouds 1.7.
- */
-@Deprecated
-@RequestFilters(AuthenticateRequest.class)
-@Endpoint(Storage.class)
-public interface HPCloudObjectStorageAsyncApi extends CommonSwiftAsyncClient {
- /**
- *
- * @return the Region codes configured
- */
- @Provides
- @Region
- Set getConfiguredRegions();
-
- /**
- * @see org.jclouds.openstack.swift.CommonSwiftClient#listContainers
- */
- @Named("ListContainers")
- @GET
- @Consumes(MediaType.APPLICATION_JSON)
- @QueryParams(keys = "format", values = "json")
- @Path("/")
- ListenableFuture extends Set> listContainers(ListContainerOptions... options);
-
- /**
- * @see org.jclouds.openstack.swift.CommonSwiftClient#deleteContainerIfEmpty
- */
- @Named("DeleteContainer")
- @DELETE
- @Fallback(TrueOn404FalseOn409.class)
- @Path("/{container}")
- ListenableFuture deleteContainerIfEmpty(@PathParam("container") String container);
-
- /**
- * Provides asynchronous access to CDN features.
- */
- @Delegate
- Optional getCDNExtension();
-
-}
diff --git a/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/blobstore/HPCloudObjectStorageAsyncBlobStore.java b/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/blobstore/HPCloudObjectStorageAsyncBlobStore.java
deleted file mode 100644
index dca851442d..0000000000
--- a/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/blobstore/HPCloudObjectStorageAsyncBlobStore.java
+++ /dev/null
@@ -1,94 +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.hpcloud.objectstorage.blobstore;
-
-import static com.google.common.util.concurrent.Futures.immediateFuture;
-import static com.google.common.util.concurrent.Futures.transform;
-
-import java.net.URI;
-import java.util.Set;
-
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Provider;
-import javax.inject.Singleton;
-
-import org.jclouds.Constants;
-import org.jclouds.blobstore.BlobStoreContext;
-import org.jclouds.blobstore.functions.BlobToHttpGetOptions;
-import org.jclouds.blobstore.options.CreateContainerOptions;
-import org.jclouds.blobstore.strategy.internal.FetchBlobMetadata;
-import org.jclouds.blobstore.util.BlobUtils;
-import org.jclouds.collect.Memoized;
-import org.jclouds.domain.Location;
-import org.jclouds.hpcloud.objectstorage.HPCloudObjectStorageApi;
-import org.jclouds.hpcloud.objectstorage.HPCloudObjectStorageAsyncApi;
-import org.jclouds.hpcloud.objectstorage.blobstore.functions.EnableCDNAndCache;
-import org.jclouds.openstack.swift.blobstore.SwiftAsyncBlobStore;
-import org.jclouds.openstack.swift.blobstore.functions.BlobStoreListContainerOptionsToListContainerOptions;
-import org.jclouds.openstack.swift.blobstore.functions.BlobToObject;
-import org.jclouds.openstack.swift.blobstore.functions.ContainerToResourceList;
-import org.jclouds.openstack.swift.blobstore.functions.ContainerToResourceMetadata;
-import org.jclouds.openstack.swift.blobstore.functions.ObjectToBlob;
-import org.jclouds.openstack.swift.blobstore.functions.ObjectToBlobMetadata;
-import org.jclouds.openstack.swift.blobstore.strategy.internal.AsyncMultipartUploadStrategy;
-
-import com.google.common.base.Function;
-import com.google.common.base.Supplier;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.ListeningExecutorService;
-
-/**
- *
- * @deprecated will be removed in jclouds 1.7, as async interfaces are no longer
- * supported. Please use {@link HPCloudObjectStorageBlobStore}
- */
-@Deprecated
-@Singleton
-public class HPCloudObjectStorageAsyncBlobStore extends SwiftAsyncBlobStore {
- private final EnableCDNAndCache enableAndCache;
-
- @Inject
- protected HPCloudObjectStorageAsyncBlobStore(BlobStoreContext context, BlobUtils blobUtils,
- @Named(Constants.PROPERTY_USER_THREADS) ListeningExecutorService userExecutor, Supplier defaultLocation,
- @Memoized Supplier> locations, HPCloudObjectStorageApi sync, HPCloudObjectStorageAsyncApi async,
- ContainerToResourceMetadata container2ResourceMd,
- BlobStoreListContainerOptionsToListContainerOptions container2ContainerListOptions,
- ContainerToResourceList container2ResourceList, ObjectToBlob object2Blob, BlobToObject blob2Object,
- ObjectToBlobMetadata object2BlobMd, BlobToHttpGetOptions blob2ObjectGetOptions,
- Provider fetchBlobMetadataProvider, EnableCDNAndCache enableAndCache,
- Provider multipartUploadStrategy) {
- super(context, blobUtils, userExecutor, defaultLocation, locations, sync, async, container2ResourceMd,
- container2ContainerListOptions, container2ResourceList, object2Blob, blob2Object, object2BlobMd,
- blob2ObjectGetOptions, fetchBlobMetadataProvider, multipartUploadStrategy);
- this.enableAndCache = enableAndCache;
- }
-
- @Override
- public ListenableFuture createContainerInLocation(Location location, final String container,
- CreateContainerOptions options) {
- if (options.isPublicRead()) {
- return transform(immediateFuture(enableAndCache.apply(container)), new Function() {
- public Boolean apply(URI from) {
- return from != null;
- }
- }, userExecutor);
- }
-
- return createContainerInLocation(location, container);
- }
-}
diff --git a/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/blobstore/HPCloudObjectStorageBlobRequestSigner.java b/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/blobstore/HPCloudObjectStorageBlobRequestSigner.java
index 9453da8105..7887f44be5 100644
--- a/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/blobstore/HPCloudObjectStorageBlobRequestSigner.java
+++ b/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/blobstore/HPCloudObjectStorageBlobRequestSigner.java
@@ -41,7 +41,7 @@ import org.jclouds.blobstore.functions.BlobToHttpGetOptions;
import org.jclouds.crypto.Crypto;
import org.jclouds.date.TimeStamp;
import org.jclouds.domain.Credentials;
-import org.jclouds.hpcloud.objectstorage.HPCloudObjectStorageAsyncApi;
+import org.jclouds.hpcloud.objectstorage.HPCloudObjectStorageApi;
import org.jclouds.http.HttpRequest;
import org.jclouds.http.options.GetOptions;
import org.jclouds.openstack.keystone.v2_0.domain.Access;
@@ -94,9 +94,9 @@ public class HPCloudObjectStorageBlobRequestSigner implements BlobRequestSigner
this.blobToObject = checkNotNull(blobToObject, "blobToObject");
this.blob2HttpGetOptions = checkNotNull(blob2HttpGetOptions, "blob2HttpGetOptions");
- this.getMethod = method(HPCloudObjectStorageAsyncApi.class, "getObject", String.class, String.class, GetOptions[].class);
- this.deleteMethod = method(HPCloudObjectStorageAsyncApi.class, "removeObject", String.class, String.class);
- this.createMethod = method(HPCloudObjectStorageAsyncApi.class, "putObject", String.class, SwiftObject.class);
+ this.getMethod = method(HPCloudObjectStorageApi.class, "getObject", String.class, String.class, GetOptions[].class);
+ this.deleteMethod = method(HPCloudObjectStorageApi.class, "removeObject", String.class, String.class);
+ this.createMethod = method(HPCloudObjectStorageApi.class, "putObject", String.class, SwiftObject.class);
}
@Override
diff --git a/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/blobstore/config/HPCloudObjectStorageBlobStoreContextModule.java b/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/blobstore/config/HPCloudObjectStorageBlobStoreContextModule.java
index 28ea5d5c12..e33788e44d 100644
--- a/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/blobstore/config/HPCloudObjectStorageBlobStoreContextModule.java
+++ b/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/blobstore/config/HPCloudObjectStorageBlobStoreContextModule.java
@@ -29,8 +29,8 @@ import javax.inject.Singleton;
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.hpcloud.objectstorage.HPCloudObjectStorageApi;
-import org.jclouds.hpcloud.objectstorage.blobstore.HPCloudObjectStorageAsyncBlobStore;
import org.jclouds.hpcloud.objectstorage.blobstore.HPCloudObjectStorageBlobStore;
import org.jclouds.hpcloud.objectstorage.blobstore.functions.HPCloudObjectStorageObjectToBlobMetadata;
import org.jclouds.hpcloud.objectstorage.domain.CDNContainer;
@@ -46,6 +46,7 @@ import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import com.google.inject.Provides;
+import com.google.inject.Scopes;
public class HPCloudObjectStorageBlobStoreContextModule extends SwiftBlobStoreContextModule {
@@ -94,8 +95,8 @@ public class HPCloudObjectStorageBlobStoreContextModule extends SwiftBlobStoreCo
@Override
protected void configure() {
bind(ConsistencyModel.class).toInstance(ConsistencyModel.EVENTUAL);
- bind(AsyncBlobStore.class).to(HPCloudObjectStorageAsyncBlobStore.class);
bind(BlobStore.class).to(HPCloudObjectStorageBlobStore.class);
+ bind(AsyncBlobStore.class).to(SubmissionAsyncBlobStore.class).in(Scopes.SINGLETON);
bind(ObjectToBlobMetadata.class).to(HPCloudObjectStorageObjectToBlobMetadata.class);
}
}
diff --git a/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/config/HPCloudObjectStorageRestClientModule.java b/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/config/HPCloudObjectStorageHttpApiModule.java
similarity index 75%
rename from providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/config/HPCloudObjectStorageRestClientModule.java
rename to providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/config/HPCloudObjectStorageHttpApiModule.java
index 611a6e7a36..01f88f1384 100644
--- a/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/config/HPCloudObjectStorageRestClientModule.java
+++ b/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/config/HPCloudObjectStorageHttpApiModule.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
package org.jclouds.hpcloud.objectstorage.config;
-import static org.jclouds.reflect.Reflection2.typeToken;
+
import static org.jclouds.util.Suppliers2.getLastValueInMap;
import static org.jclouds.util.Suppliers2.getValueInMapOrNull;
@@ -26,9 +26,6 @@ import javax.inject.Named;
import javax.inject.Singleton;
import org.jclouds.hpcloud.objectstorage.HPCloudObjectStorageApi;
-import org.jclouds.hpcloud.objectstorage.HPCloudObjectStorageAsyncApi;
-import org.jclouds.hpcloud.objectstorage.extensions.CDNContainerApi;
-import org.jclouds.hpcloud.objectstorage.extensions.CDNContainerAsyncApi;
import org.jclouds.hpcloud.services.HPExtensionCDN;
import org.jclouds.hpcloud.services.HPExtensionServiceType;
import org.jclouds.javax.annotation.Nullable;
@@ -36,32 +33,25 @@ import org.jclouds.location.reference.LocationConstants;
import org.jclouds.location.suppliers.RegionIdToURISupplier;
import org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule;
import org.jclouds.openstack.services.ServiceType;
-import org.jclouds.openstack.swift.CommonSwiftAsyncClient;
import org.jclouds.openstack.swift.CommonSwiftClient;
import org.jclouds.openstack.swift.Storage;
-import org.jclouds.openstack.swift.config.SwiftRestClientModule;
-import org.jclouds.rest.ConfiguresRestClient;
+import org.jclouds.openstack.swift.config.SwiftHttpApiModule;
+import org.jclouds.rest.ConfiguresHttpApi;
import org.jclouds.rest.annotations.ApiVersion;
import com.google.common.base.Supplier;
-import com.google.common.collect.ImmutableMap;
import com.google.inject.Provides;
import com.google.inject.Scopes;
-@ConfiguresRestClient
-public class HPCloudObjectStorageRestClientModule extends
- SwiftRestClientModule {
- public static final Map, Class>> DELEGATE_MAP = ImmutableMap., Class>> builder().put(
- CDNContainerApi.class, CDNContainerAsyncApi.class).build();
+@ConfiguresHttpApi
+public class HPCloudObjectStorageHttpApiModule extends SwiftHttpApiModule {
- public HPCloudObjectStorageRestClientModule() {
- super(typeToken(HPCloudObjectStorageApi.class), typeToken(HPCloudObjectStorageAsyncApi.class),
- DELEGATE_MAP);
+ public HPCloudObjectStorageHttpApiModule() {
+ super(HPCloudObjectStorageApi.class);
}
protected void bindResolvedClientsToCommonSwift() {
bind(CommonSwiftClient.class).to(HPCloudObjectStorageApi.class).in(Scopes.SINGLETON);
- bind(CommonSwiftAsyncClient.class).to(HPCloudObjectStorageAsyncApi.class).in(Scopes.SINGLETON);
}
private static Supplier getUriSupplier(String serviceType, String apiVersion, RegionIdToURISupplier.Factory factory, String region) {
diff --git a/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/extensions/CDNContainerApi.java b/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/extensions/CDNContainerApi.java
index b3f3e4be89..20a006fd43 100644
--- a/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/extensions/CDNContainerApi.java
+++ b/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/extensions/CDNContainerApi.java
@@ -16,40 +16,98 @@
*/
package org.jclouds.hpcloud.objectstorage.extensions;
+import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
+import static org.jclouds.Fallbacks.EmptyFluentIterableOnNotFoundOr404;
+import static org.jclouds.blobstore.BlobStoreFallbacks.NullOnContainerNotFound;
+import static org.jclouds.hpcloud.objectstorage.reference.HPCloudObjectStorageHeaders.CDN_ENABLED;
+import static org.jclouds.hpcloud.objectstorage.reference.HPCloudObjectStorageHeaders.CDN_TTL;
+
import java.net.URI;
+
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.HEAD;
+import javax.ws.rs.HeaderParam;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+
import org.jclouds.hpcloud.objectstorage.domain.CDNContainer;
+import org.jclouds.hpcloud.objectstorage.functions.ParseCDNContainerFromHeaders;
+import org.jclouds.hpcloud.objectstorage.functions.ParseCDNUriFromHeaders;
import org.jclouds.hpcloud.objectstorage.options.ListCDNContainerOptions;
+import org.jclouds.hpcloud.services.HPExtensionCDN;
+import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
+import org.jclouds.rest.annotations.Endpoint;
+import org.jclouds.rest.annotations.Fallback;
+import org.jclouds.rest.annotations.Headers;
+import org.jclouds.rest.annotations.QueryParams;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.ResponseParser;
import com.google.common.annotations.Beta;
import com.google.common.collect.FluentIterable;
-/**
- * Provides synchronous access to HP Cloud Object Storage via the REST API.
- *
- *
- * All commands return a ListenableFuture of the result. Any exceptions incurred during processing
- * will be backend in an {@link java.util.concurrent.ExecutionException} as documented in {@link ListenableFuture#get()}.
- *
- * @see org.jclouds.hpcloud.objectstorage.HPCloudObjectStorageApi
- * @see HP Cloud Object
- * Storage API
- * @see CDNContainerAsyncApi
- */
@Beta
+@RequestFilters(AuthenticateRequest.class)
+@Endpoint(HPExtensionCDN.class)
public interface CDNContainerApi {
-
+
+ @Beta
+ @Named("ListCDNEnabledContainers")
+ @GET
+ @Consumes(APPLICATION_JSON)
+ @QueryParams(keys = "format", values = "json")
+ @Fallback(EmptyFluentIterableOnNotFoundOr404.class)
+ @Path("/")
FluentIterable list();
-
+
+ @Beta
+ @Named("ListCDNEnabledContainers")
+ @GET
+ @Consumes(APPLICATION_JSON)
+ @QueryParams(keys = "format", values = "json")
+ @Fallback(EmptyFluentIterableOnNotFoundOr404.class)
+ @Path("/")
FluentIterable list(ListCDNContainerOptions options);
- CDNContainer get(String container);
+ @Beta
+ @Named("ListCDNEnabledContainerMetadata")
+ @HEAD
+ @ResponseParser(ParseCDNContainerFromHeaders.class)
+ @Fallback(NullOnContainerNotFound.class)
+ @Path("/{container}")
+ CDNContainer get(@PathParam("container") String container);
- URI enable(String container, long ttl);
+ @Beta
+ @Named("CDNEnableContainer")
+ @PUT
+ @Path("/{container}")
+ @Headers(keys = CDN_ENABLED, values = "True")
+ @ResponseParser(ParseCDNUriFromHeaders.class)
+ URI enable(@PathParam("container") String container, @HeaderParam(CDN_TTL) long ttl);
- URI enable(String container);
+ @Beta
+ @Named("CDNEnableContainer")
+ @PUT
+ @Path("/{container}")
+ @Headers(keys = CDN_ENABLED, values = "True")
+ @ResponseParser(ParseCDNUriFromHeaders.class)
+ URI enable(@PathParam("container") String container);
- URI update(String container, long ttl);
-
- boolean disable(String container);
+ @Beta
+ @Named("UpdateCDNEnabledContainerMetadata")
+ @POST
+ @Path("/{container}")
+ @ResponseParser(ParseCDNUriFromHeaders.class)
+ URI update(@PathParam("container") String container, @HeaderParam(CDN_TTL) long ttl);
+ @Beta
+ @Named("DisableCDNEnabledContainer")
+ @PUT
+ @Path("/{container}")
+ @Headers(keys = CDN_ENABLED, values = "False")
+ boolean disable(@PathParam("container") String container);
}
diff --git a/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/extensions/CDNContainerAsyncApi.java b/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/extensions/CDNContainerAsyncApi.java
deleted file mode 100644
index c24e4fbc21..0000000000
--- a/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/extensions/CDNContainerAsyncApi.java
+++ /dev/null
@@ -1,148 +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.hpcloud.objectstorage.extensions;
-
-import java.net.URI;
-
-import javax.inject.Named;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.GET;
-import javax.ws.rs.HEAD;
-import javax.ws.rs.HeaderParam;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.core.MediaType;
-
-import org.jclouds.Fallbacks.EmptyFluentIterableOnNotFoundOr404;
-import org.jclouds.blobstore.BlobStoreFallbacks.NullOnContainerNotFound;
-import org.jclouds.hpcloud.objectstorage.domain.CDNContainer;
-import org.jclouds.hpcloud.objectstorage.functions.ParseCDNContainerFromHeaders;
-import org.jclouds.hpcloud.objectstorage.functions.ParseCDNUriFromHeaders;
-import org.jclouds.hpcloud.objectstorage.options.ListCDNContainerOptions;
-import org.jclouds.hpcloud.objectstorage.reference.HPCloudObjectStorageHeaders;
-import org.jclouds.hpcloud.services.HPExtensionCDN;
-import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
-import org.jclouds.rest.annotations.Endpoint;
-import org.jclouds.rest.annotations.Fallback;
-import org.jclouds.rest.annotations.Headers;
-import org.jclouds.rest.annotations.QueryParams;
-import org.jclouds.rest.annotations.RequestFilters;
-import org.jclouds.rest.annotations.ResponseParser;
-
-import com.google.common.annotations.Beta;
-import com.google.common.collect.FluentIterable;
-import com.google.common.util.concurrent.ListenableFuture;
-
-/**
- * Provides asynchronous access to HP Cloud Object Storage via the REST API.
- *
- *
- * All commands return a ListenableFuture of the result. Any exceptions incurred
- * during processing will be backend in an
- * {@link java.util.concurrent.ExecutionException} as documented in
- * {@link ListenableFuture#get()}.
- *
- * @see HPCloudObjectStorageApi
- * @see HP
- * Cloud Object Storage API
- */
-@RequestFilters(AuthenticateRequest.class)
-@Endpoint(HPExtensionCDN.class)
-public interface CDNContainerAsyncApi {
- /**
- * @see HPCloudObjectStorageApi#list()
- */
- @Beta
- @Named("ListCDNEnabledContainers")
- @GET
- @Consumes(MediaType.APPLICATION_JSON)
- @QueryParams(keys = "format", values = "json")
- @Fallback(EmptyFluentIterableOnNotFoundOr404.class)
- @Path("/")
- ListenableFuture> list();
-
- /**
- * @see HPCloudObjectStorageApi#list(ListCDNContainerOptions)
- */
- @Beta
- @Named("ListCDNEnabledContainers")
- @GET
- @Consumes(MediaType.APPLICATION_JSON)
- @QueryParams(keys = "format", values = "json")
- @Fallback(EmptyFluentIterableOnNotFoundOr404.class)
- @Path("/")
- ListenableFuture> list(ListCDNContainerOptions options);
-
- /**
- * @see HPCloudObjectStorageApi#get(String)
- */
- @Beta
- @Named("ListCDNEnabledContainerMetadata")
- @HEAD
- @ResponseParser(ParseCDNContainerFromHeaders.class)
- @Fallback(NullOnContainerNotFound.class)
- @Path("/{container}")
- ListenableFuture get(@PathParam("container") String container);
-
- /**
- * @see HPCloudObjectStorageApi#enable(String, long)
- */
- @Beta
- @Named("CDNEnableContainer")
- @PUT
- @Path("/{container}")
- @Headers(keys = HPCloudObjectStorageHeaders.CDN_ENABLED, values = "True")
- @ResponseParser(ParseCDNUriFromHeaders.class)
- ListenableFuture enable(@PathParam("container") String container,
- @HeaderParam(HPCloudObjectStorageHeaders.CDN_TTL) long ttl);
-
- /**
- * @see HPCloudObjectStorageApi#enable(String)
- */
- @Beta
- @Named("CDNEnableContainer")
- @PUT
- @Path("/{container}")
- @Headers(keys = HPCloudObjectStorageHeaders.CDN_ENABLED, values = "True")
- @ResponseParser(ParseCDNUriFromHeaders.class)
- ListenableFuture enable(@PathParam("container") String container);
-
- /**
- * @see HPCloudObjectStorageApi#update(String, long)
- */
- @Beta
- @Named("UpdateCDNEnabledContainerMetadata")
- @POST
- @Path("/{container}")
- @ResponseParser(ParseCDNUriFromHeaders.class)
- ListenableFuture update(@PathParam("container") String container,
- @HeaderParam(HPCloudObjectStorageHeaders.CDN_TTL) long ttl);
-
- /**
- * @see HPCloudObjectStorageApi#disable(String)
- */
- @Beta
- @Named("DisableCDNEnabledContainer")
- @PUT
- @Path("/{container}")
- @Headers(keys = HPCloudObjectStorageHeaders.CDN_ENABLED, values = "False")
- ListenableFuture disable(@PathParam("container") String container);
-
-}
diff --git a/providers/hpcloud-objectstorage/src/test/java/org/jclouds/hpcloud/objectstorage/HPCloudObjectStorageClientLiveTest.java b/providers/hpcloud-objectstorage/src/test/java/org/jclouds/hpcloud/objectstorage/HPCloudObjectStorageClientLiveTest.java
index b5c7028ed3..a86123c9c6 100644
--- a/providers/hpcloud-objectstorage/src/test/java/org/jclouds/hpcloud/objectstorage/HPCloudObjectStorageClientLiveTest.java
+++ b/providers/hpcloud-objectstorage/src/test/java/org/jclouds/hpcloud/objectstorage/HPCloudObjectStorageClientLiveTest.java
@@ -39,7 +39,7 @@ public class HPCloudObjectStorageClientLiveTest extends CommonSwiftClientLiveTes
@Override
public HPCloudObjectStorageApi getApi() {
- return view.unwrap(HPCloudObjectStorageApiMetadata.CONTEXT_TOKEN).getApi();
+ return view.unwrapApi(HPCloudObjectStorageApi.class);
}
@Override
diff --git a/providers/hpcloud-objectstorage/src/test/java/org/jclouds/hpcloud/objectstorage/blobstore/HPCloudObjectStorageBlobSignerExpectTest.java b/providers/hpcloud-objectstorage/src/test/java/org/jclouds/hpcloud/objectstorage/blobstore/HPCloudObjectStorageBlobSignerExpectTest.java
index 5aa225ee05..e06e68acb2 100644
--- a/providers/hpcloud-objectstorage/src/test/java/org/jclouds/hpcloud/objectstorage/blobstore/HPCloudObjectStorageBlobSignerExpectTest.java
+++ b/providers/hpcloud-objectstorage/src/test/java/org/jclouds/hpcloud/objectstorage/blobstore/HPCloudObjectStorageBlobSignerExpectTest.java
@@ -25,12 +25,12 @@ import org.jclouds.blobstore.internal.BaseBlobSignerExpectTest;
import org.jclouds.hpcloud.objectstorage.HPCloudObjectStorageApiMetadata;
import org.jclouds.hpcloud.objectstorage.HPCloudObjectStorageApiMetadata.HPCloudObjectStorageTemporaryUrlExtensionModule;
import org.jclouds.hpcloud.objectstorage.blobstore.config.HPCloudObjectStorageBlobStoreContextModule;
-import org.jclouds.hpcloud.objectstorage.config.HPCloudObjectStorageRestClientModule;
+import org.jclouds.hpcloud.objectstorage.config.HPCloudObjectStorageHttpApiModule;
import org.jclouds.http.HttpRequest;
import org.jclouds.http.HttpResponse;
-import org.jclouds.openstack.keystone.v2_0.config.MappedAuthenticationApiModule;
+import org.jclouds.openstack.keystone.v2_0.config.AuthenticationApiModule;
import org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule.RegionModule;
-import org.jclouds.openstack.swift.config.SwiftRestClientModule.KeystoneStorageEndpointModule;
+import org.jclouds.openstack.swift.config.SwiftHttpApiModule.KeystoneStorageEndpointModule;
import org.testng.annotations.Test;
import com.google.common.collect.ImmutableMap;
@@ -132,10 +132,10 @@ public class HPCloudObjectStorageBlobSignerExpectTest extends BaseBlobSignerExpe
protected ApiMetadata createApiMetadata() {
return new HPCloudObjectStorageApiMetadata().toBuilder()
.defaultModules(ImmutableSet.>builder()
- .add(MappedAuthenticationApiModule.class)
+ .add(AuthenticationApiModule.class)
.add(KeystoneStorageEndpointModule.class)
.add(RegionModule.class)
- .add(HPCloudObjectStorageRestClientModule.class)
+ .add(HPCloudObjectStorageHttpApiModule.class)
.add(HPCloudObjectStorageBlobStoreContextModule.class)
.add(StaticTimeAndTemporaryUrlKeyModule.class).build()).build();
}
diff --git a/providers/hpcloud-objectstorage/src/test/java/org/jclouds/hpcloud/objectstorage/config/HPCloudObjectStorageEndpointModuleTest.java b/providers/hpcloud-objectstorage/src/test/java/org/jclouds/hpcloud/objectstorage/config/HPCloudObjectStorageEndpointModuleTest.java
index 119ea782d9..dee2547c59 100644
--- a/providers/hpcloud-objectstorage/src/test/java/org/jclouds/hpcloud/objectstorage/config/HPCloudObjectStorageEndpointModuleTest.java
+++ b/providers/hpcloud-objectstorage/src/test/java/org/jclouds/hpcloud/objectstorage/config/HPCloudObjectStorageEndpointModuleTest.java
@@ -78,7 +78,7 @@ public class HPCloudObjectStorageEndpointModuleTest {
@Test
public void testObjectStorageRegion() {
- final HPCloudObjectStorageRestClientModule.HPCloudObjectStorageEndpointModule moduleToTest = new HPCloudObjectStorageRestClientModule.HPCloudObjectStorageEndpointModule();
+ final HPCloudObjectStorageHttpApiModule.HPCloudObjectStorageEndpointModule moduleToTest = new HPCloudObjectStorageHttpApiModule.HPCloudObjectStorageEndpointModule();
for (int i = 1; i <= 3; i++) {
Supplier resultingSupplier = moduleToTest.provideStorageUrl(mockFactory, apiVersion, String.format("region%1$s", i));
@@ -93,7 +93,7 @@ public class HPCloudObjectStorageEndpointModuleTest {
@Test
public void testCDNRegion() {
- final HPCloudObjectStorageRestClientModule moduleToTest = new HPCloudObjectStorageRestClientModule();
+ final HPCloudObjectStorageHttpApiModule moduleToTest = new HPCloudObjectStorageHttpApiModule();
for (int i = 1; i <= 3; i++) {
Supplier resultingSupplier = moduleToTest.provideCDNUrl(mockCDNFactory, apiVersion, String.format("region%1$s", i));
@@ -111,7 +111,7 @@ public class HPCloudObjectStorageEndpointModuleTest {
*/
@Test
public void testObjectStorageUndefinedRegion() {
- final HPCloudObjectStorageRestClientModule.HPCloudObjectStorageEndpointModule moduleToTest = new HPCloudObjectStorageRestClientModule.HPCloudObjectStorageEndpointModule();
+ final HPCloudObjectStorageHttpApiModule.HPCloudObjectStorageEndpointModule moduleToTest = new HPCloudObjectStorageHttpApiModule.HPCloudObjectStorageEndpointModule();
Supplier resultingSupplier = moduleToTest.provideStorageUrl(mockFactory, apiVersion, "region-that-dne");
assertNotNull(resultingSupplier);
@@ -121,7 +121,7 @@ public class HPCloudObjectStorageEndpointModuleTest {
@Test
public void testCDNUndefinedRegion() {
- final HPCloudObjectStorageRestClientModule moduleToTest = new HPCloudObjectStorageRestClientModule();
+ final HPCloudObjectStorageHttpApiModule moduleToTest = new HPCloudObjectStorageHttpApiModule();
Supplier resultingSupplier = moduleToTest.provideCDNUrl(mockCDNFactory, apiVersion, "region-that-dne");
assertNotNull(resultingSupplier);