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,