com.google.common.util.concurrent
Class AbstractCheckedFuture<V,X extends Exception>

java.lang.Object
  extended by com.google.common.collect.ForwardingObject
      extended by com.google.common.util.concurrent.ForwardingFuture<V>
          extended by com.google.common.util.concurrent.ForwardingListenableFuture<V>
              extended by com.google.common.util.concurrent.ForwardingListenableFuture.SimpleForwardingListenableFuture<V>
                  extended by com.google.common.util.concurrent.AbstractCheckedFuture<V,X>
All Implemented Interfaces:
CheckedFuture<V,X>, ListenableFuture<V>, Future<V>

@Beta
public abstract class AbstractCheckedFuture<V,X extends Exception>
extends ForwardingListenableFuture.SimpleForwardingListenableFuture<V>
implements CheckedFuture<V,X>

A delegating wrapper around a ListenableFuture that adds support for the checkedGet() and checkedGet(long, TimeUnit) methods.

Since:
1.0
Author:
Sven Mawson

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
protected AbstractCheckedFuture(ListenableFuture<V> delegate)
          Constructs an AbstractCheckedFuture that wraps a delegate.
 
Method Summary
 V checkedGet()
          Exception checking version of Future.get() that will translate InterruptedException, CancellationException and ExecutionException into application-specific exceptions.
 V checkedGet(long timeout, TimeUnit unit)
          Exception checking version of Future.get(long, TimeUnit) that will translate InterruptedException, CancellationException and ExecutionException into application-specific exceptions.
protected abstract  X mapException(Exception e)
          Translates from an InterruptedException, CancellationException or ExecutionException thrown by get to an exception of type X to be thrown by checkedGet.
 
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
 
Methods inherited from interface java.util.concurrent.Future
cancel, get, get, isCancelled, isDone
 

Constructor Detail

AbstractCheckedFuture

protected AbstractCheckedFuture(ListenableFuture<V> delegate)
Constructs an AbstractCheckedFuture that wraps a delegate.

Method Detail

mapException

protected abstract X mapException(Exception e)
Translates from an InterruptedException, CancellationException or ExecutionException thrown by get to an exception of type X to be thrown by checkedGet. Subclasses must implement this method.

If e is an InterruptedException, the calling checkedGet method has already restored the interrupt after catching the exception. If an implementation of mapException(Exception) wishes to swallow the interrupt, it can do so by calling Thread.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 Exception
Exception checking version of Future.get() that will translate InterruptedException, CancellationException and ExecutionException into application-specific exceptions.

This implementation calls ForwardingFuture.get() and maps that method's standard exceptions to instances of type X using mapException(java.lang.Exception).

In addition, if get throws an InterruptedException, this implementation will set the current thread's interrupt status before calling mapException.

Specified by:
checkedGet in interface CheckedFuture<V,X extends Exception>
Returns:
the result of executing the future.
Throws:
X - if ForwardingFuture.get() throws an InterruptedException, CancellationException, or ExecutionException
X extends Exception

checkedGet

public V checkedGet(long timeout,
                    TimeUnit unit)
             throws TimeoutException,
                    X extends Exception
Exception checking version of Future.get(long, TimeUnit) that will translate InterruptedException, CancellationException and ExecutionException into application-specific exceptions. On timeout this method throws a normal TimeoutException.

This implementation calls ForwardingFuture.get(long, TimeUnit) and maps that method's standard exceptions (excluding TimeoutException, which is propagated) to instances of type X using mapException(java.lang.Exception).

In addition, if get throws an InterruptedException, this implementation will set the current thread's interrupt status before calling mapException.

Specified by:
checkedGet in interface CheckedFuture<V,X extends Exception>
Returns:
the result of executing the future.
Throws:
X - if ForwardingFuture.get() throws an InterruptedException, CancellationException, or ExecutionException
TimeoutException - if retrieving the result timed out.
X extends Exception


Copyright © 2010-2012. All Rights Reserved.