mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
73 lines
2.1 KiB
Java
73 lines
2.1 KiB
Java
package io.ebean;
|
|
|
|
import javax.persistence.PersistenceException;
|
|
import java.util.List;
|
|
import java.util.concurrent.Future;
|
|
import java.util.concurrent.TimeUnit;
|
|
import java.util.concurrent.TimeoutException;
|
|
|
|
/**
|
|
* FutureList represents the result of a background query execution that will
|
|
* return a list of entities.
|
|
* <p>
|
|
* It extends the java.util.concurrent.Future with the ability to cancel the
|
|
* query, check if it is finished and get the resulting list waiting for the
|
|
* query to finish (ie. the standard features of java.util.concurrent.Future).
|
|
* </p>
|
|
* <p>
|
|
* A simple example:
|
|
* </p>
|
|
* <pre>{@code
|
|
*
|
|
* // create a query to find all orders
|
|
* Query<Order> query = DB.find(Order.class);
|
|
*
|
|
* // execute the query in a background thread
|
|
* // immediately returning the futureList
|
|
* FutureList<Order> futureList = query.findFutureList();
|
|
*
|
|
* // do something else ...
|
|
*
|
|
* if (!futureList.isDone()){
|
|
* // we can cancel the query execution. This will cancel
|
|
* // the underlying query if that is supported by the JDBC
|
|
* // driver and database
|
|
* futureList.cancel(true);
|
|
* }
|
|
*
|
|
* if (!futureList.isCancelled()){
|
|
* // wait for the query to finish and return the list
|
|
* List<Order> list = futureList.get();
|
|
* ...
|
|
* }
|
|
*
|
|
* }</pre>
|
|
*/
|
|
public interface FutureList<T> extends Future<List<T>> {
|
|
|
|
/**
|
|
* Return the query that is being executed by a background thread.
|
|
*/
|
|
Query<T> getQuery();
|
|
|
|
/**
|
|
* Same as {@link #get()} but wraps InterruptedException and ExecutionException in the
|
|
* unchecked PersistenceException.
|
|
*
|
|
* @return The query list result
|
|
* @throws PersistenceException when a InterruptedException or ExecutionException occurs.
|
|
*/
|
|
List<T> getUnchecked();
|
|
|
|
/**
|
|
* Same as {@link #get(long, java.util.concurrent.TimeUnit)} but wraps InterruptedException
|
|
* and ExecutionException in the unchecked PersistenceException.
|
|
*
|
|
* @return The query list result
|
|
* @throws TimeoutException if the wait timed out
|
|
* @throws PersistenceException if a InterruptedException or ExecutionException occurs.
|
|
*/
|
|
List<T> getUnchecked(long timeout, TimeUnit unit) throws TimeoutException;
|
|
|
|
}
|