Package org.forgerock.util.promise


package org.forgerock.util.promise
An implementation of the Promise API in Java. Promises provide a simple API for chaining together asynchronous tasks and result transformation.

Example using CREST:

 final ConnectionFactory server = getConnectionFactory();
 final AtomicReference<Connection> connectionHolder = new AtomicReference<Connection>();
 final Promise<Resource, ResourceException> promise = server.getConnectionAsync()
     .thenAsync(new AsyncFunction<Connection, Resource, ResourceException>() {
         // Read resource.
         public Promise<Resource, ResourceException> apply(final Connection connection)
                 throws ResourceException {
             connectionHolder.set(connection); // Save connection for later.
             return connection.readAsync(ctx(), Requests.newReadRequest("users/1"));
         }
     }).thenAsync(new AsyncFunction<Resource, Resource, ResourceException>() {
         // Update resource.
         public Promise<Resource, ResourceException> apply(final Resource user) throws ResourceException {
             return connectionHolder.get().updateAsync(ctx(),
                     Requests.newUpdateRequest("users/1", userAliceWithIdAndRev(1, 1)));
         }
     }).then(new SuccessHandler<Resource>() {
         // Check updated resource.
         public void handleResult(final Resource user) {
             // Update successful!
         }
     }).thenAlways(new Runnable() {
         // Close the connection.
         public void run() {
             final Connection connection = connectionHolder.get();
             if (connection != null) {
                 connection.close();
             }
         }
     });
 
See Also:
  • Class
    Description
    A completion handler for consuming exceptions which occur during the execution of asynchronous tasks.
    The NeverThrowsException class is an uninstantiable placeholder exception which should be used for indicating that a Function or AsyncFunction never throws an exception (i.e.
    Promise<V,E extends Exception>
    A Promise represents the result of an asynchronous task.
    PromiseImpl<V,E extends Exception>
    An implementation of Promise which can be used as is, or as the basis for more complex asynchronous behavior.
    Utility methods for creating and composing Promises.
    Ordered list of joined asynchronous results.
    A completion handler for consuming the results of asynchronous tasks.
    A completion handler for consuming runtime exceptions which occur during the execution of asynchronous tasks.