Class AbstractCheckedFuture<V,X extends java.lang.Exception>
- java.lang.Object
-
- com.google.common.collect.ForwardingObject
-
- com.google.common.util.concurrent.ForwardingFuture<V>
-
- com.google.common.util.concurrent.ForwardingListenableFuture<V>
-
- com.google.common.util.concurrent.ForwardingListenableFuture.SimpleForwardingListenableFuture<V>
-
- com.google.common.util.concurrent.AbstractCheckedFuture<V,X>
-
- All Implemented Interfaces:
CheckedFuture<V,X>
,ListenableFuture<V>
,java.util.concurrent.Future<V>
@Beta @GwtIncompatible public abstract class AbstractCheckedFuture<V,X extends java.lang.Exception> extends ForwardingListenableFuture.SimpleForwardingListenableFuture<V> implements CheckedFuture<V,X>
A delegating wrapper around aListenableFuture
that adds support for thecheckedGet()
andcheckedGet(long, TimeUnit)
methods.- Since:
- 1.0
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class com.google.common.util.concurrent.ForwardingListenableFuture
ForwardingListenableFuture.SimpleForwardingListenableFuture<V>
-
Nested classes/interfaces inherited from class com.google.common.util.concurrent.ForwardingFuture
ForwardingFuture.SimpleForwardingFuture<V>
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractCheckedFuture(ListenableFuture<V> delegate)
Constructs anAbstractCheckedFuture
that wraps a delegate.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description V
checkedGet()
Exception checking version ofFuture.get()
that will translateInterruptedException
,CancellationException
andExecutionException
into application-specific exceptions.V
checkedGet(long timeout, java.util.concurrent.TimeUnit unit)
Exception checking version ofFuture.get(long, TimeUnit)
that will translateInterruptedException
,CancellationException
andExecutionException
into application-specific exceptions.protected abstract X
mapException(java.lang.Exception e)
Translates from anInterruptedException
,CancellationException
orExecutionException
thrown byget
to an exception of typeX
to be thrown bycheckedGet
.-
Methods inherited from class com.google.common.util.concurrent.ForwardingListenableFuture.SimpleForwardingListenableFuture
delegate
-
Methods inherited from class com.google.common.util.concurrent.ForwardingListenableFuture
addListener
-
Methods inherited from class com.google.common.util.concurrent.ForwardingFuture
cancel, get, get, isCancelled, isDone
-
Methods inherited from class com.google.common.collect.ForwardingObject
toString
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface com.google.common.util.concurrent.ListenableFuture
addListener
-
-
-
-
Constructor Detail
-
AbstractCheckedFuture
protected AbstractCheckedFuture(ListenableFuture<V> delegate)
Constructs anAbstractCheckedFuture
that wraps a delegate.
-
-
Method Detail
-
mapException
protected abstract X mapException(java.lang.Exception e)
Translates from anInterruptedException
,CancellationException
orExecutionException
thrown byget
to an exception of typeX
to be thrown bycheckedGet
. Subclasses must implement this method.If
e
is anInterruptedException
, the callingcheckedGet
method has already restored the interrupt after catching the exception. If an implementation ofmapException(Exception)
wishes to swallow the interrupt, it can do so by callingThread.interrupted()
.Subclasses may choose to throw, rather than return, a subclass of
RuntimeException
to allow creating a CheckedFuture that throws both checked and unchecked exceptions.
-
checkedGet
public V checkedGet() throws X extends java.lang.Exception
Exception checking version ofFuture.get()
that will translateInterruptedException
,CancellationException
andExecutionException
into application-specific exceptions.This implementation calls
ForwardingFuture.get()
and maps that method's standard exceptions to instances of typeX
usingmapException(java.lang.Exception)
.In addition, if
get
throws anInterruptedException
, this implementation will set the current thread's interrupt status before callingmapException
.- Specified by:
checkedGet
in interfaceCheckedFuture<V,X extends java.lang.Exception>
- Returns:
- the result of executing the future.
- Throws:
X
- ifForwardingFuture.get()
throws anInterruptedException
,CancellationException
, orExecutionException
X extends java.lang.Exception
-
checkedGet
public V checkedGet(long timeout, java.util.concurrent.TimeUnit unit) throws java.util.concurrent.TimeoutException, X extends java.lang.Exception
Exception checking version ofFuture.get(long, TimeUnit)
that will translateInterruptedException
,CancellationException
andExecutionException
into application-specific exceptions. On timeout this method throws a normalTimeoutException
.This implementation calls
ForwardingFuture.get(long, TimeUnit)
and maps that method's standard exceptions (excludingTimeoutException
, which is propagated) to instances of typeX
usingmapException(java.lang.Exception)
.In addition, if
get
throws anInterruptedException
, this implementation will set the current thread's interrupt status before callingmapException
.- Specified by:
checkedGet
in interfaceCheckedFuture<V,X extends java.lang.Exception>
- Returns:
- the result of executing the future.
- Throws:
X
- ifForwardingFuture.get()
throws anInterruptedException
,CancellationException
, orExecutionException
java.util.concurrent.TimeoutException
- if retrieving the result timed out.X extends java.lang.Exception
-
-