diff --git a/core/pom.xml b/core/pom.xml index cea171c70d..8883e1f839 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -90,7 +90,7 @@ com.google.guava guava - 14.0.1 + 15.0-rc1 org.osgi 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 0facd9754b..ff2ebd6f70 100644 --- a/core/src/main/java/org/jclouds/concurrent/config/WithSubmissionTrace.java +++ b/core/src/main/java/org/jclouds/concurrent/config/WithSubmissionTrace.java @@ -26,6 +26,7 @@ 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; @@ -113,7 +114,8 @@ public class WithSubmissionTrace { private static final Set stackTracesToTrim = ImmutableSet.of(WithSubmissionTrace.class.getName(), ListeningExecutorService.class.getName(), ListenableFuture.class.getName(), - ListeningScheduledExecutorService.class.getName(), ScheduledFuture.class.getName()); + ListeningScheduledExecutorService.class.getName(), ScheduledFuture.class.getName(), + ListenableScheduledFuture.class.getName()); /** returns the stack trace at the caller */ private static StackTraceElement[] getStackTraceHere() { @@ -182,25 +184,25 @@ public class WithSubmissionTrace { @SuppressWarnings({ "rawtypes", "unchecked" }) @Override - public ScheduledFuture schedule(Runnable command, long delay, TimeUnit unit) { - return new ScheduledFuture(delegate().schedule(command, delay, unit)); + public ListenableScheduledFuture schedule(Runnable command, long delay, TimeUnit unit) { + return new ListenableScheduledFuture(delegate().schedule(command, delay, unit)); } @Override - public ScheduledFuture schedule(Callable callable, long delay, TimeUnit unit) { - return new ScheduledFuture(delegate().schedule(callable, delay, unit)); + public ListenableScheduledFuture schedule(Callable callable, long delay, TimeUnit unit) { + return new ListenableScheduledFuture(delegate().schedule(callable, delay, unit)); } @SuppressWarnings({ "rawtypes", "unchecked" }) @Override - public ScheduledFuture scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit) { - return new ScheduledFuture(delegate().scheduleAtFixedRate(command, initialDelay, period, unit)); + public ListenableScheduledFuture scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit) { + return new ListenableScheduledFuture(delegate().scheduleAtFixedRate(command, initialDelay, period, unit)); } @SuppressWarnings({ "rawtypes", "unchecked" }) @Override - public ScheduledFuture scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit) { - return new ScheduledFuture(delegate().scheduleWithFixedDelay(command, initialDelay, delay, unit)); + public ListenableScheduledFuture scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit) { + return new ListenableScheduledFuture(delegate().scheduleWithFixedDelay(command, initialDelay, delay, unit)); } } @@ -250,4 +252,15 @@ public class WithSubmissionTrace { } } + private static class ListenableScheduledFuture extends ScheduledFuture + implements com.google.common.util.concurrent.ListenableScheduledFuture { + private ListenableScheduledFuture(com.google.common.util.concurrent.ListenableScheduledFuture delegate) { + super(delegate); + } + + @Override + public void addListener(Runnable listener, Executor executor) { + ((com.google.common.util.concurrent.ListenableScheduledFuture) delegate()).addListener(listener, executor); + } + } } 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 0c57cef771..8a3e62cf18 100644 --- a/core/src/test/java/org/jclouds/json/internal/DeserializationConstructorAndReflectiveTypeAdapterFactoryTest.java +++ b/core/src/test/java/org/jclouds/json/internal/DeserializationConstructorAndReflectiveTypeAdapterFactoryTest.java @@ -116,7 +116,8 @@ public final class DeserializationConstructorAndReflectiveTypeAdapterFactoryTest } } - @Test(expectedExceptions = IllegalArgumentException.class, expectedExceptionsMessageRegExp = "duplicate key: foo") + @Test(expectedExceptions = IllegalArgumentException.class, + expectedExceptionsMessageRegExp = "Multiple entries with same key: foo.*") public void testNoDuplicateSerializedNamesRequiredOnAllParameters() { parameterizedCtorFactory.create(gson, TypeToken.get(DuplicateSerializedNames.class)); }