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/24 20:45:35 UTC

[1/2] git commit: Revert "Upgrade to Guava 15.0"

Updated Branches:
  refs/heads/JCLOUDS-427-1.6.x 17c11f2b2 -> 30dfdab77


Revert "Upgrade to Guava 15.0"

This reverts commit 49491a56a43f48d2972139cb157213d7071f249d.


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

Branch: refs/heads/JCLOUDS-427-1.6.x
Commit: 476c0fb89115a352bd9afffcc4f0f6ace8d39100
Parents: 17c11f2
Author: Andrew Phillips <an...@apache.org>
Authored: Fri Jan 24 14:41:55 2014 -0500
Committer: Andrew Phillips <an...@apache.org>
Committed: Fri Jan 24 14:43:29 2014 -0500

----------------------------------------------------------------------
 core/pom.xml                                    |  2 +-
 .../concurrent/config/WithSubmissionTrace.java  | 31 ++++++--------------
 ...ctorAndReflectiveTypeAdapterFactoryTest.java |  3 +-
 3 files changed, 11 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/476c0fb8/core/pom.xml
----------------------------------------------------------------------
diff --git a/core/pom.xml b/core/pom.xml
index c4364bd..781f2e3 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -90,7 +90,7 @@
     <dependency>
       <groupId>com.google.guava</groupId>
       <artifactId>guava</artifactId>
-      <version>15.0</version>
+      <version>14.0.1</version>
     </dependency>
     <dependency>
       <groupId>org.osgi</groupId>

http://git-wip-us.apache.org/repos/asf/jclouds/blob/476c0fb8/core/src/main/java/org/jclouds/concurrent/config/WithSubmissionTrace.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/concurrent/config/WithSubmissionTrace.java b/core/src/main/java/org/jclouds/concurrent/config/WithSubmissionTrace.java
index ff2ebd6..0facd97 100644
--- a/core/src/main/java/org/jclouds/concurrent/config/WithSubmissionTrace.java
+++ b/core/src/main/java/org/jclouds/concurrent/config/WithSubmissionTrace.java
@@ -26,7 +26,6 @@ import java.util.Set;
 import java.util.concurrent.Callable;
 import java.util.concurrent.Delayed;
 import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Executor;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 
@@ -114,8 +113,7 @@ public class WithSubmissionTrace {
 
    private static final Set<String> stackTracesToTrim = ImmutableSet.of(WithSubmissionTrace.class.getName(),
          ListeningExecutorService.class.getName(), ListenableFuture.class.getName(),
-         ListeningScheduledExecutorService.class.getName(), ScheduledFuture.class.getName(),
-         ListenableScheduledFuture.class.getName());
+         ListeningScheduledExecutorService.class.getName(), ScheduledFuture.class.getName());
 
    /** returns the stack trace at the caller */
    private static StackTraceElement[] getStackTraceHere() {
@@ -184,25 +182,25 @@ public class WithSubmissionTrace {
 
       @SuppressWarnings({ "rawtypes", "unchecked" })
       @Override
-      public ListenableScheduledFuture<?> schedule(Runnable command, long delay, TimeUnit unit) {
-         return new ListenableScheduledFuture(delegate().schedule(command, delay, unit));
+      public ScheduledFuture<?> schedule(Runnable command, long delay, TimeUnit unit) {
+         return new ScheduledFuture(delegate().schedule(command, delay, unit));
       }
 
       @Override
-      public <V> ListenableScheduledFuture<V> schedule(Callable<V> callable, long delay, TimeUnit unit) {
-         return new ListenableScheduledFuture(delegate().schedule(callable, delay, unit));
+      public <V> ScheduledFuture<V> schedule(Callable<V> callable, long delay, TimeUnit unit) {
+         return new ScheduledFuture<V>(delegate().schedule(callable, delay, unit));
       }
 
       @SuppressWarnings({ "rawtypes", "unchecked" })
       @Override
-      public ListenableScheduledFuture<?> scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit) {
-         return new ListenableScheduledFuture(delegate().scheduleAtFixedRate(command, initialDelay, period, unit));
+      public ScheduledFuture<?> scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit) {
+         return new ScheduledFuture(delegate().scheduleAtFixedRate(command, initialDelay, period, unit));
       }
 
       @SuppressWarnings({ "rawtypes", "unchecked" })
       @Override
-      public ListenableScheduledFuture<?> scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit) {
-         return new ListenableScheduledFuture(delegate().scheduleWithFixedDelay(command, initialDelay, delay, unit));
+      public ScheduledFuture<?> scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit) {
+         return new ScheduledFuture(delegate().scheduleWithFixedDelay(command, initialDelay, delay, unit));
       }
 
    }
@@ -252,15 +250,4 @@ public class WithSubmissionTrace {
       }
    }
 
-   private static class ListenableScheduledFuture<T> extends ScheduledFuture<T>
-         implements com.google.common.util.concurrent.ListenableScheduledFuture<T> {
-      private ListenableScheduledFuture(com.google.common.util.concurrent.ListenableScheduledFuture<T> delegate) {
-         super(delegate);
-      }
-
-      @Override
-      public void addListener(Runnable listener, Executor executor) {
-         ((com.google.common.util.concurrent.ListenableScheduledFuture<T>) delegate()).addListener(listener, executor);
-      }
-   }
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/476c0fb8/core/src/test/java/org/jclouds/json/internal/DeserializationConstructorAndReflectiveTypeAdapterFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/jclouds/json/internal/DeserializationConstructorAndReflectiveTypeAdapterFactoryTest.java b/core/src/test/java/org/jclouds/json/internal/DeserializationConstructorAndReflectiveTypeAdapterFactoryTest.java
index 8a3e62c..0c57cef 100644
--- a/core/src/test/java/org/jclouds/json/internal/DeserializationConstructorAndReflectiveTypeAdapterFactoryTest.java
+++ b/core/src/test/java/org/jclouds/json/internal/DeserializationConstructorAndReflectiveTypeAdapterFactoryTest.java
@@ -116,8 +116,7 @@ public final class DeserializationConstructorAndReflectiveTypeAdapterFactoryTest
       }
    }
 
-   @Test(expectedExceptions = IllegalArgumentException.class,
-         expectedExceptionsMessageRegExp = "Multiple entries with same key: foo.*")
+   @Test(expectedExceptions = IllegalArgumentException.class, expectedExceptionsMessageRegExp = "duplicate key: foo")
    public void testNoDuplicateSerializedNamesRequiredOnAllParameters() {
       parameterizedCtorFactory.create(gson, TypeToken.get(DuplicateSerializedNames.class));
    }


[2/2] git commit: All reflection magic now :-(

Posted by an...@apache.org.
All reflection magic now :-(


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

Branch: refs/heads/JCLOUDS-427-1.6.x
Commit: 30dfdab779d6d1bd69f152fb7a958ab7e4e80401
Parents: 476c0fb
Author: Andrew Phillips <an...@apache.org>
Authored: Fri Jan 24 14:41:19 2014 -0500
Committer: Andrew Phillips <an...@apache.org>
Committed: Fri Jan 24 14:43:33 2014 -0500

----------------------------------------------------------------------
 .../main/java/org/jclouds/util/TypeToken2.java  | 37 +++++++++++++++-----
 1 file changed, 29 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/30dfdab7/core/src/main/java/org/jclouds/util/TypeToken2.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/util/TypeToken2.java b/core/src/main/java/org/jclouds/util/TypeToken2.java
index 99e47e5..d63ea0e 100644
--- a/core/src/main/java/org/jclouds/util/TypeToken2.java
+++ b/core/src/main/java/org/jclouds/util/TypeToken2.java
@@ -16,6 +16,7 @@
  */
 package org.jclouds.util;
 
+import java.lang.reflect.Field;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
@@ -27,7 +28,6 @@ import org.jclouds.reflect.Reflection2;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.reflect.Invokable;
 import com.google.common.reflect.TypeParameter;
-import com.google.common.reflect.TypeResolver;
 import com.google.common.reflect.TypeToken;
 
 /*
@@ -43,24 +43,45 @@ public class TypeToken2<T> extends TypeToken<T> {
    @SuppressWarnings("unchecked")
    public <X, Y> TypeToken<T> where(TypeParameter2<X> typeParam1,
          TypeToken<X> typeArg1, TypeParameter2<Y> typeParam2, TypeToken<Y> typeArg2) {
-      // resolving both parameters in one shot seems to work around 1635
-      TypeResolver resolver = new TypeResolver();
-      // where(Map) is package-private in TypeResolver
-      Invokable<TypeResolver, TypeResolver> whereWithMap =
-            Reflection2.<TypeResolver, TypeResolver>method(TypeResolver.class, "where",
-                  Map.class);
+      /*
+       * Resolving both parameters in one shot seems to work around 1635, but
+       * TypeResolver and where(Map) are package-private in Guava 14.x
+       */
+      Type resolvedType;
       try {
+         Object resolver = newTypeResolver();
+         Invokable<Object, Object> whereWithMap = Reflection2.method(
+               (Class<Object>) resolver.getClass(), "where", Map.class);
          resolver = whereWithMap.invoke(resolver, ImmutableMap.of(
                typeParam1.getTypeVariable(), typeArg1.getType(),
                typeParam2.getTypeVariable(), typeArg2.getType()));
+         Invokable<Object, Type> resolveType = Reflection2.method(
+               (Class<Object>) resolver.getClass(), "resolveType", Type.class);
+         resolvedType = resolveType.invoke(resolver, getType());
       } catch (IllegalAccessException exception) {
          // should never happen
          throw new IllegalStateException(exception);
       } catch (InvocationTargetException exception) {
          // should never happen
          throw new IllegalStateException(exception);
+      } catch (SecurityException exception) {
+         // should never happen
+         throw new IllegalStateException(exception);
+      } catch (IllegalArgumentException exception) {
+         // should never happen
+         throw new IllegalStateException(exception);
+      } catch (NoSuchFieldException exception) {
+         // should never happen
+         throw new IllegalStateException(exception);
       }
-      return (TypeToken<T>) TypeToken.of(resolver.resolveType(getType()));
+      return (TypeToken<T>) TypeToken.of(resolvedType);
+   }
+
+   private static Object newTypeResolver() throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException {
+      TypeToken<?> anyToken = TypeToken.of(Object.class);
+      Field typeResolverField = TypeToken.class.getDeclaredField("typeResolver");
+      typeResolverField.setAccessible(true);
+      return typeResolverField.get(anyToken).getClass();
    }
 
    public <X, Y> TypeToken<T> where(TypeParameter2<X> typeParam1, Class<X> typeArg1,