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 06:47:58 UTC

git commit: Hopefully this will be it..?

Updated Branches:
  refs/heads/JCLOUDS-427 320a8c2cd -> 294376460


Hopefully this will be it..?


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

Branch: refs/heads/JCLOUDS-427
Commit: 29437646060a654cfb672697000d1cf2b0748445
Parents: 320a8c2
Author: Andrew Phillips <an...@apache.org>
Authored: Thu Jan 23 00:47:32 2014 -0500
Committer: Andrew Phillips <an...@apache.org>
Committed: Thu Jan 23 00:47:32 2014 -0500

----------------------------------------------------------------------
 .../com/google/common/reflect/TypeToken2.java    | 19 ++++++++++++++-----
 .../rest/internal/BaseRestApiMetadata.java       |  5 +++--
 2 files changed, 17 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/29437646/core/src/main/java/com/google/common/reflect/TypeToken2.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/com/google/common/reflect/TypeToken2.java b/core/src/main/java/com/google/common/reflect/TypeToken2.java
index 7a09e49..1ca4752 100644
--- a/core/src/main/java/com/google/common/reflect/TypeToken2.java
+++ b/core/src/main/java/com/google/common/reflect/TypeToken2.java
@@ -21,15 +21,24 @@ import com.google.common.reflect.TypeParameter;
 import com.google.common.reflect.TypeToken;
 
 /*
+ * FIXME: remove this class ASAP!
+ *
  * Evil stuff, adapted from https://code.google.com/p/guava-libraries/source/browse/guava/src/com/google/common/reflect/TypeToken.java#236.
- * See https://issues.apache.org/jira/browse/JCLOUDS-427
+ * See https://issues.apache.org/jira/browse/JCLOUDS-427 and
+ * https://code.google.com/p/guava-libraries/issues/detail?id=1635
  */
 public class TypeToken2<T> extends TypeToken<T> {
    @SuppressWarnings("unchecked")
-   public <X, Y> TypeToken<T> where(TypeParameter<X> typeParam, Class<X> typeArg, TypeParameter<Y> typeParam2, Class<Y> typeArg2) {
+   public <X, Y> TypeToken<T> where(TypeParameter<X> typeParam1, 
+         TypeToken<X> typeArg1, TypeParameter<Y> typeParam2, TypeToken<Y> typeArg2) {
+      // resolving both parameters in one shot seems to work around 1635
       TypeResolver resolver = new TypeResolver()
-            .where(ImmutableMap.of(typeParam.typeVariable, of(typeArg).getType(), typeParam2.typeVariable, of(typeArg2).getType()));
-      // If there's any type error, we'd report now rather than later.
+            .where(ImmutableMap.of(typeParam1.typeVariable, typeArg1.getType(), typeParam2.typeVariable, typeArg2.getType()));
       return (TypeToken<T>) TypeToken.of(resolver.resolveType(getType()));
-   }   
+   }  
+
+   public <X, Y> TypeToken<T> where(TypeParameter<X> typeParam1, Class<X> typeArg1,
+         TypeParameter<Y> typeParam2, Class<Y> typeArg2) {
+      return where(typeParam1, of(typeArg1), typeParam2, of(typeArg2));
+   } 
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds/blob/29437646/core/src/main/java/org/jclouds/rest/internal/BaseRestApiMetadata.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/rest/internal/BaseRestApiMetadata.java b/core/src/main/java/org/jclouds/rest/internal/BaseRestApiMetadata.java
index efc3002..800ce4f 100644
--- a/core/src/main/java/org/jclouds/rest/internal/BaseRestApiMetadata.java
+++ b/core/src/main/java/org/jclouds/rest/internal/BaseRestApiMetadata.java
@@ -29,6 +29,7 @@ import com.google.common.annotations.Beta;
 import com.google.common.base.Objects.ToStringHelper;
 import com.google.common.reflect.TypeParameter;
 import com.google.common.reflect.TypeToken;
+import com.google.common.reflect.TypeToken2;
 
 /**
  * Useful in creating rest apis.
@@ -56,10 +57,10 @@ public abstract class BaseRestApiMetadata extends BaseApiMetadata implements Res
    }
    
    public static <S, A> TypeToken<org.jclouds.rest.RestContext<S, A>> contextToken(TypeToken<S> apiToken, TypeToken<A> asyncApiToken) {
-      return new TypeToken<org.jclouds.rest.RestContext<S, A>>() {
+      return new TypeToken2<org.jclouds.rest.RestContext<S, A>>() {
          private static final long serialVersionUID = 1L;
       }.where(new TypeParameter<S>() {
-      }, apiToken).where(new TypeParameter<A>() {
+      }, apiToken, new TypeParameter<A>() {
       }, asyncApiToken);
    }