//
// $Id: ResultListener.java,v 1.1 2002/03/20 07:07:48 mdb Exp $

package com.samskivert.util;

/**
 * Provides access to a future result, or the exception associated with
 * failure. In the trying course of implementing a method, one is often
 * left with no choice but to foist control off onto another thread or
 * generally postpone things beyond the lifetime of the current call. In
 * such circumstances, it is handy to have a general purpose mechanism for
 * leting the caller know when things are done and whether or not the
 * succeeded; this class serves that purpose.
 *
 * <p> The following contrived example will hopefully communicate its use
 * more clearly than the previous paragraph of flowery prose:
 *
 * <pre>
 * public void doSomeStuff (ResultListener<String> listener)
 * {
 *     Runnable run = new Runnable () {
 *         public void run () {
 *             try {
 *                 // do our thing
 *                 listener.requestCompleted("Elvis!");
 *             } catch (Exception e) {
 *                 listener.requestFailed(e);
 *             }
 *         }
 *     };
 *     new Thread(run).start();
 * }
 * </pre>
 *
 * @see IntResultListener
 */
public interface ResultListener<T>
{
    /**
     * Called to communicate that the request succeeded and that the
     * result is available.
     */
    public void requestCompleted (T result);

    /**
     * Called to communicate that the request failed and to provide the
     * reason for failure.
     */
    public void requestFailed (Exception cause);
}

@@ -1539,11 +1539,285 @@
  cause);
+%0A%0A    /** @deprecated This cannot be type safe so don't use it. */%0A    public ResultListener%3CObject%3E NOOP = new ResultListener%3CObject%3E() %7B%0A        public void requestCompleted (Object result) %7B%0A        %7D%0A        public void requestFailed (Exception cause) %7B%0A        %7D%0A    %7D;
 %0A%7D%0A

Add the NOOP back but deprecate it.