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/04 08:18:19 UTC

[9/9] git commit: JCLOUDS-296 unasync hpcloud storage provider.

JCLOUDS-296 unasync hpcloud storage provider.


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

Branch: refs/heads/master
Commit: e243fa51a53a6c946e796008337c0abf754ff8b3
Parents: e3ada5b
Author: Adrian Cole <ac...@twitter.com>
Authored: Fri Oct 3 19:13:41 2014 -0700
Committer: Adrian Cole <ad...@apache.org>
Committed: Fri Oct 3 23:14:29 2014 -0700

----------------------------------------------------------------------
 .../objectstorage/HPCloudObjectStorageApi.java  |  50 +++++--
 .../HPCloudObjectStorageApiMetadata.java        |  54 +++----
 .../HPCloudObjectStorageAsyncApi.java           | 100 -------------
 .../HPCloudObjectStorageAsyncBlobStore.java     |  94 ------------
 .../HPCloudObjectStorageBlobRequestSigner.java  |   8 +-
 ...loudObjectStorageBlobStoreContextModule.java |   5 +-
 .../HPCloudObjectStorageHttpApiModule.java      |  93 ++++++++++++
 .../HPCloudObjectStorageRestClientModule.java   | 103 -------------
 .../extensions/CDNContainerApi.java             |  98 +++++++++---
 .../extensions/CDNContainerAsyncApi.java        | 148 -------------------
 .../HPCloudObjectStorageClientLiveTest.java     |   2 +-
 ...PCloudObjectStorageBlobSignerExpectTest.java |  10 +-
 .../HPCloudObjectStorageEndpointModuleTest.java |   8 +-
 13 files changed, 248 insertions(+), 525 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/e243fa51/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/HPCloudObjectStorageApi.java
----------------------------------------------------------------------
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 0ef2d46..4dbceb5 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.
- * 
- * <p/>
- * 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 <a href="https://manage.hpcloud.com/pages/build/docs/objectstorage-lvs/api">HP Cloud Object
- *      Storage API</a>
- */
+/** 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<String> getConfiguredRegions();
 
+   @Override
+   @Named("ListContainers")
+   @GET
+   @Consumes(APPLICATION_JSON)
+   @QueryParams(keys = "format", values = "json")
+   @Path("/") Set<ContainerMetadata> listContainers(ListContainerOptions... options);
+
+   @Override
+   @Named("DeleteContainer")
+   @DELETE
+   @Fallback(TrueOn404FalseOn409.class)
+   @Path("/{container}")
+   boolean deleteContainerIfEmpty(@PathParam("container") String container);
+
    /**
     * Provides synchronous access to CDN features.
     */

http://git-wip-us.apache.org/repos/asf/jclouds/blob/e243fa51/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/HPCloudObjectStorageApiMetadata.java
----------------------------------------------------------------------
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 e7c0d0f..fa3f1ad 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 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 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.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.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.KeystoneTemporaryUrlKeyApi;
 import org.jclouds.openstack.swift.extensions.TemporaryUrlKeyApi;
 import org.jclouds.rest.annotations.ApiVersion;
 
-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 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<org.jclouds.rest.RestContext<HPCloudObjectStorageApi, HPCloudObjectStorageAsyncApi>> CONTEXT_TOKEN = new TypeToken<org.jclouds.rest.RestContext<HPCloudObjectStorageApi, HPCloudObjectStorageAsyncApi>>() {
-      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<Builder> {
-      @SuppressWarnings("deprecation")
+   public static class Builder extends SwiftKeystoneApiMetadata.Builder<HPCloudObjectStorageApi, 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.<Class<? extends Module>>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<HPCloudObjectStorageAsyncApi> {
+         TemporaryUrlExtensionModule<HPCloudObjectStorageApi> {
       @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);
       }
    }
 

http://git-wip-us.apache.org/repos/asf/jclouds/blob/e243fa51/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/HPCloudObjectStorageAsyncApi.java
----------------------------------------------------------------------
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 51cb464..0000000
--- 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.
- * 
- * <p/>
- * 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 <a
- *      href="https://api-docs.hpcloud.com/hpcloud-object-storage/1.0/content/ch_object-storage-dev-overview.html">HP
- *      Cloud Object Storage API</a>
- * @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<String> getConfiguredRegions();
-
-   /**
-    * @see org.jclouds.openstack.swift.CommonSwiftClient#listContainers
-    */
-   @Named("ListContainers")
-   @GET
-   @Consumes(MediaType.APPLICATION_JSON)
-   @QueryParams(keys = "format", values = "json")
-   @Path("/")
-   ListenableFuture<? extends Set<ContainerMetadata>> listContainers(ListContainerOptions... options);
-
-   /**
-    * @see org.jclouds.openstack.swift.CommonSwiftClient#deleteContainerIfEmpty
-    */
-   @Named("DeleteContainer")
-   @DELETE
-   @Fallback(TrueOn404FalseOn409.class)
-   @Path("/{container}")
-   ListenableFuture<Boolean> deleteContainerIfEmpty(@PathParam("container") String container);
-
-   /**
-    * Provides asynchronous access to CDN features.
-    */
-   @Delegate
-   Optional<CDNContainerAsyncApi> getCDNExtension();
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/e243fa51/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/blobstore/HPCloudObjectStorageAsyncBlobStore.java
----------------------------------------------------------------------
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 dca8514..0000000
--- 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<Location> defaultLocation,
-            @Memoized Supplier<Set<? extends Location>> locations, HPCloudObjectStorageApi sync, HPCloudObjectStorageAsyncApi async,
-            ContainerToResourceMetadata container2ResourceMd,
-            BlobStoreListContainerOptionsToListContainerOptions container2ContainerListOptions,
-            ContainerToResourceList container2ResourceList, ObjectToBlob object2Blob, BlobToObject blob2Object,
-            ObjectToBlobMetadata object2BlobMd, BlobToHttpGetOptions blob2ObjectGetOptions,
-            Provider<FetchBlobMetadata> fetchBlobMetadataProvider, EnableCDNAndCache enableAndCache,
-            Provider<AsyncMultipartUploadStrategy> multipartUploadStrategy) {
-      super(context, blobUtils, userExecutor, defaultLocation, locations, sync, async, container2ResourceMd,
-               container2ContainerListOptions, container2ResourceList, object2Blob, blob2Object, object2BlobMd,
-               blob2ObjectGetOptions, fetchBlobMetadataProvider, multipartUploadStrategy);
-      this.enableAndCache = enableAndCache;
-   }
-
-   @Override
-   public ListenableFuture<Boolean> createContainerInLocation(Location location, final String container,
-            CreateContainerOptions options) {
-      if (options.isPublicRead()) {
-         return transform(immediateFuture(enableAndCache.apply(container)), new Function<URI, Boolean>() {
-            public Boolean apply(URI from) {
-               return from != null;
-            }
-         }, userExecutor);
-      }
-
-      return createContainerInLocation(location, container);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/e243fa51/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/blobstore/HPCloudObjectStorageBlobRequestSigner.java
----------------------------------------------------------------------
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 9453da8..7887f44 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

http://git-wip-us.apache.org/repos/asf/jclouds/blob/e243fa51/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/blobstore/config/HPCloudObjectStorageBlobStoreContextModule.java
----------------------------------------------------------------------
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 28ea5d5..e33788e 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);
    }
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/e243fa51/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/config/HPCloudObjectStorageHttpApiModule.java
----------------------------------------------------------------------
diff --git a/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/config/HPCloudObjectStorageHttpApiModule.java b/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/config/HPCloudObjectStorageHttpApiModule.java
new file mode 100644
index 0000000..01f88f1
--- /dev/null
+++ b/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/config/HPCloudObjectStorageHttpApiModule.java
@@ -0,0 +1,93 @@
+/*
+ * 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.config;
+
+import static org.jclouds.util.Suppliers2.getLastValueInMap;
+import static org.jclouds.util.Suppliers2.getValueInMapOrNull;
+
+import java.net.URI;
+import java.util.Map;
+
+import javax.inject.Named;
+import javax.inject.Singleton;
+
+import org.jclouds.hpcloud.objectstorage.HPCloudObjectStorageApi;
+import org.jclouds.hpcloud.services.HPExtensionCDN;
+import org.jclouds.hpcloud.services.HPExtensionServiceType;
+import org.jclouds.javax.annotation.Nullable;
+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.CommonSwiftClient;
+import org.jclouds.openstack.swift.Storage;
+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.inject.Provides;
+import com.google.inject.Scopes;
+
+@ConfiguresHttpApi
+public class HPCloudObjectStorageHttpApiModule extends SwiftHttpApiModule<HPCloudObjectStorageApi> {
+
+   public HPCloudObjectStorageHttpApiModule() {
+      super(HPCloudObjectStorageApi.class);
+   }
+
+   protected void bindResolvedClientsToCommonSwift() {
+      bind(CommonSwiftClient.class).to(HPCloudObjectStorageApi.class).in(Scopes.SINGLETON);
+   }
+
+   private static Supplier<URI> getUriSupplier(String serviceType, String apiVersion,  RegionIdToURISupplier.Factory factory, String region) {
+      Supplier<Map<String, Supplier<URI>>> endpointsSupplier = factory.createForApiTypeAndVersion(serviceType, apiVersion);
+
+      if (region.isEmpty()) {
+         return getLastValueInMap(endpointsSupplier);
+      } else {
+         return getValueInMapOrNull(endpointsSupplier, region);
+      }
+   }
+
+   @Provides
+   @Singleton
+   @HPExtensionCDN
+   @Nullable
+   protected Supplier<URI> provideCDNUrl(RegionIdToURISupplier.Factory factory,
+                                         @ApiVersion String apiVersion,
+                                         @Named(LocationConstants.PROPERTY_REGION) String region) {
+
+      return getUriSupplier(HPExtensionServiceType.CDN, apiVersion, factory, region);
+   }
+
+   // Ignores requested apiVersion to work around versionId issue in HP endpoints
+   public static class HPCloudObjectStorageEndpointModule extends KeystoneAuthenticationModule {
+      @Provides
+      @Singleton
+      @Storage
+      @Nullable
+      protected Supplier<URI> provideStorageUrl(RegionIdToURISupplier.Factory factory,
+                                                @ApiVersion String apiVersion,
+                                                @Named(LocationConstants.PROPERTY_REGION) String region) {
+
+         return getUriSupplier(ServiceType.OBJECT_STORE, null, factory, region);
+
+      }
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/e243fa51/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/config/HPCloudObjectStorageRestClientModule.java
----------------------------------------------------------------------
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/HPCloudObjectStorageRestClientModule.java
deleted file mode 100644
index 611a6e7..0000000
--- a/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/config/HPCloudObjectStorageRestClientModule.java
+++ /dev/null
@@ -1,103 +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.config;
-import static org.jclouds.reflect.Reflection2.typeToken;
-import static org.jclouds.util.Suppliers2.getLastValueInMap;
-import static org.jclouds.util.Suppliers2.getValueInMapOrNull;
-
-import java.net.URI;
-import java.util.Map;
-
-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;
-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.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<HPCloudObjectStorageApi, HPCloudObjectStorageAsyncApi> {
-   public static final Map<Class<?>, Class<?>> DELEGATE_MAP = ImmutableMap.<Class<?>, Class<?>> builder().put(
-            CDNContainerApi.class, CDNContainerAsyncApi.class).build();
-
-   public HPCloudObjectStorageRestClientModule() {
-      super(typeToken(HPCloudObjectStorageApi.class), typeToken(HPCloudObjectStorageAsyncApi.class),
-               DELEGATE_MAP);
-   }
-
-   protected void bindResolvedClientsToCommonSwift() {
-      bind(CommonSwiftClient.class).to(HPCloudObjectStorageApi.class).in(Scopes.SINGLETON);
-      bind(CommonSwiftAsyncClient.class).to(HPCloudObjectStorageAsyncApi.class).in(Scopes.SINGLETON);
-   }
-
-   private static Supplier<URI> getUriSupplier(String serviceType, String apiVersion,  RegionIdToURISupplier.Factory factory, String region) {
-      Supplier<Map<String, Supplier<URI>>> endpointsSupplier = factory.createForApiTypeAndVersion(serviceType, apiVersion);
-
-      if (region.isEmpty()) {
-         return getLastValueInMap(endpointsSupplier);
-      } else {
-         return getValueInMapOrNull(endpointsSupplier, region);
-      }
-   }
-
-   @Provides
-   @Singleton
-   @HPExtensionCDN
-   @Nullable
-   protected Supplier<URI> provideCDNUrl(RegionIdToURISupplier.Factory factory,
-                                         @ApiVersion String apiVersion,
-                                         @Named(LocationConstants.PROPERTY_REGION) String region) {
-
-      return getUriSupplier(HPExtensionServiceType.CDN, apiVersion, factory, region);
-   }
-
-   // Ignores requested apiVersion to work around versionId issue in HP endpoints
-   public static class HPCloudObjectStorageEndpointModule extends KeystoneAuthenticationModule {
-      @Provides
-      @Singleton
-      @Storage
-      @Nullable
-      protected Supplier<URI> provideStorageUrl(RegionIdToURISupplier.Factory factory,
-                                                @ApiVersion String apiVersion,
-                                                @Named(LocationConstants.PROPERTY_REGION) String region) {
-
-         return getUriSupplier(ServiceType.OBJECT_STORE, null, factory, region);
-
-      }
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/e243fa51/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/extensions/CDNContainerApi.java
----------------------------------------------------------------------
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 b3f3e4b..20a006f 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.
- * 
- * <p/>
- * 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 <a href="https://manage.hpcloud.com/pages/build/docs/objectstorage-lvs/api">HP Cloud Object
- *      Storage API</a>
- * @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<CDNContainer> list();
-   
+
+   @Beta
+   @Named("ListCDNEnabledContainers")
+   @GET
+   @Consumes(APPLICATION_JSON)
+   @QueryParams(keys = "format", values = "json")
+   @Fallback(EmptyFluentIterableOnNotFoundOr404.class)
+   @Path("/")
    FluentIterable<CDNContainer> 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);
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/e243fa51/providers/hpcloud-objectstorage/src/main/java/org/jclouds/hpcloud/objectstorage/extensions/CDNContainerAsyncApi.java
----------------------------------------------------------------------
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 c24e4fb..0000000
--- 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.
- * 
- * <p/>
- * 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 <a
- *      href="https://api-docs.hpcloud.com/hpcloud-cdn-storage/1.0/content/ch_cdn-dev-overview.html">HP
- *      Cloud Object Storage API</a>
- */
-@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<FluentIterable<CDNContainer>> list();
-
-   /**
-    * @see HPCloudObjectStorageApi#list(ListCDNContainerOptions)
-    */
-   @Beta
-   @Named("ListCDNEnabledContainers")
-   @GET
-   @Consumes(MediaType.APPLICATION_JSON)
-   @QueryParams(keys = "format", values = "json")
-   @Fallback(EmptyFluentIterableOnNotFoundOr404.class)
-   @Path("/")
-   ListenableFuture<FluentIterable<CDNContainer>> list(ListCDNContainerOptions options);
-
-   /**
-    * @see HPCloudObjectStorageApi#get(String)
-    */
-   @Beta
-   @Named("ListCDNEnabledContainerMetadata")
-   @HEAD
-   @ResponseParser(ParseCDNContainerFromHeaders.class)
-   @Fallback(NullOnContainerNotFound.class)
-   @Path("/{container}")
-   ListenableFuture<CDNContainer> 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<URI> 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<URI> enable(@PathParam("container") String container);
-
-   /**
-    * @see HPCloudObjectStorageApi#update(String, long)
-    */
-   @Beta
-   @Named("UpdateCDNEnabledContainerMetadata")
-   @POST
-   @Path("/{container}")
-   @ResponseParser(ParseCDNUriFromHeaders.class)
-   ListenableFuture<URI> 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<Boolean> disable(@PathParam("container") String container);
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/e243fa51/providers/hpcloud-objectstorage/src/test/java/org/jclouds/hpcloud/objectstorage/HPCloudObjectStorageClientLiveTest.java
----------------------------------------------------------------------
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 b5c7028..a86123c 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

http://git-wip-us.apache.org/repos/asf/jclouds/blob/e243fa51/providers/hpcloud-objectstorage/src/test/java/org/jclouds/hpcloud/objectstorage/blobstore/HPCloudObjectStorageBlobSignerExpectTest.java
----------------------------------------------------------------------
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 874fcf8..4857e98 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.<Class<? extends Module>>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();
    }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/e243fa51/providers/hpcloud-objectstorage/src/test/java/org/jclouds/hpcloud/objectstorage/config/HPCloudObjectStorageEndpointModuleTest.java
----------------------------------------------------------------------
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 119ea78..dee2547 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<URI> 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<URI> 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<URI> 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<URI> resultingSupplier = moduleToTest.provideCDNUrl(mockCDNFactory, apiVersion, "region-that-dne");
       assertNotNull(resultingSupplier);