You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by an...@apache.org on 2014/01/23 08:34:37 UTC

git commit: Avoiding TypeToken type parameter replacement with bounds

Updated Branches:
  refs/heads/JCLOUDS-427 efa01315f -> e00bf7eb8


Avoiding TypeToken type parameter replacement with bounds


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

Branch: refs/heads/JCLOUDS-427
Commit: e00bf7eb82ab226259f6ff594aa048dea5a4bb6f
Parents: efa0131
Author: Andrew Phillips <an...@apache.org>
Authored: Thu Jan 23 02:33:49 2014 -0500
Committer: Andrew Phillips <an...@apache.org>
Committed: Thu Jan 23 02:33:49 2014 -0500

----------------------------------------------------------------------
 .../main/java/org/jclouds/internal/BaseView.java    | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/e00bf7eb/core/src/main/java/org/jclouds/internal/BaseView.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/internal/BaseView.java b/core/src/main/java/org/jclouds/internal/BaseView.java
index 092fa22..64576f5 100644
--- a/core/src/main/java/org/jclouds/internal/BaseView.java
+++ b/core/src/main/java/org/jclouds/internal/BaseView.java
@@ -70,14 +70,18 @@ public abstract class BaseView extends ForwardingObject implements View {
    public <A extends Closeable> A unwrapApi(Class<A> apiClass) {
       checkArgument(ApiContext.class.isAssignableFrom(backendType.getRawType()),
             "backend type: %s should be an ApiContext", backendType);
-      TypeToken<ApiContext<? extends A>> contextToken = new TypeToken<ApiContext<? extends A>>(delegate().getClass()) {
+      /*
+       * Revert back to ApiContext<? extends A>...where...A, apiClass as soon as
+       * https://code.google.com/p/guava-libraries/issues/detail?id=1635
+       * is resolved.
+       */
+      TypeToken<ApiContext<? extends Closeable>> contextToken = new TypeToken<ApiContext<? extends Closeable>>() {
          private static final long serialVersionUID = 1L;
       };
-      System.out.println("**** first: " + contextToken);
-      contextToken = contextToken.where(new TypeParameter<A>() {
-      }, TypeToken.of(apiClass));
-      System.out.println("**** after: " + contextToken);
-      return unwrap(contextToken).getApi();
+      Closeable api = unwrap(contextToken).getApi();
+      checkArgument(apiClass.isAssignableFrom(api.getClass()),
+            "API type: %s not assignable to %s", api.getClass(), apiClass);
+      return apiClass.cast(api);
    }
 
    @Override