public abstract class GuavaCompatibility extends Object
The driver is compatible with Guava 16.0.1 or higher, but Guava 20 introduced incompatible breaking changes in its API, that could in turn be breaking for legacy driver clients if we simply upgraded our dependency. We don't want to increment our major version "just" for Guava (we have other changes planned).
Therefore we depend on Guava 19, which has both the deprecated and the new APIs, and detect the actual version at runtime in order to call the relevant methods.
This is a hack, and might not work with subsequent Guava releases; the real fix is to stop exposing Guava in our public API. We'll address that in version 4 of the driver.
Modifier and Type | Field and Description |
---|---|
static GuavaCompatibility |
INSTANCE
The unique instance of this class, that is compatible with the Guava version found in the classpath.
|
Constructor and Description |
---|
GuavaCompatibility() |
Modifier and Type | Method and Description |
---|---|
static void |
init()
Force the initialization of the class.
|
abstract boolean |
isSupertypeOf(TypeToken<?> target,
TypeToken<?> argument)
Returns true if
target is a supertype of argument . |
abstract Executor |
sameThreadExecutor()
Returns an
Executor that runs each task in the thread that invokes
execute , as in ThreadPoolExecutor.CallerRunsPolicy . |
abstract <I,O> ListenableFuture<O> |
transformAsync(ListenableFuture<I> input,
AsyncFunction<? super I,? extends O> function)
Returns a new
ListenableFuture whose result is asynchronously
derived from the result of the given Future . |
abstract <I,O> ListenableFuture<O> |
transformAsync(ListenableFuture<I> input,
AsyncFunction<? super I,? extends O> function,
Executor executor)
Returns a new
ListenableFuture whose result is asynchronously
derived from the result of the given Future . |
abstract <V> ListenableFuture<V> |
withFallback(ListenableFuture<? extends V> input,
AsyncFunction<Throwable,V> fallback)
Returns a
Future whose result is taken from the given primary
input or, if the primary input fails, from the Future
provided by the fallback . |
abstract <V> ListenableFuture<V> |
withFallback(ListenableFuture<? extends V> input,
AsyncFunction<Throwable,V> fallback,
Executor executor)
Returns a
Future whose result is taken from the given primary
input or, if the primary input fails, from the Future
provided by the fallback . |
public static final GuavaCompatibility INSTANCE
public static void init()
Cluster
class).public abstract <V> ListenableFuture<V> withFallback(ListenableFuture<? extends V> input, AsyncFunction<Throwable,V> fallback)
Future
whose result is taken from the given primary
input
or, if the primary input fails, from the Future
provided by the fallback
.public abstract <V> ListenableFuture<V> withFallback(ListenableFuture<? extends V> input, AsyncFunction<Throwable,V> fallback, Executor executor)
Future
whose result is taken from the given primary
input
or, if the primary input fails, from the Future
provided by the fallback
.public abstract <I,O> ListenableFuture<O> transformAsync(ListenableFuture<I> input, AsyncFunction<? super I,? extends O> function)
ListenableFuture
whose result is asynchronously
derived from the result of the given Future
. More precisely, the
returned Future
takes its result from a Future
produced by
applying the given AsyncFunction
to the result of the original
Future
.public abstract <I,O> ListenableFuture<O> transformAsync(ListenableFuture<I> input, AsyncFunction<? super I,? extends O> function, Executor executor)
ListenableFuture
whose result is asynchronously
derived from the result of the given Future
. More precisely, the
returned Future
takes its result from a Future
produced by
applying the given AsyncFunction
to the result of the original
Future
.public abstract boolean isSupertypeOf(TypeToken<?> target, TypeToken<?> argument)
target
is a supertype of argument
. "Supertype" is defined
according to the rules for type arguments introduced with Java generics.public abstract Executor sameThreadExecutor()
Executor
that runs each task in the thread that invokes
execute
, as in ThreadPoolExecutor.CallerRunsPolicy
.Copyright © 2012–2018. All rights reserved.