Type-safe result listeners. Whee!

git-svn-id: https://samskivert.googlecode.com/svn/trunk@1832 6335cc39-0255-0410-8fd6-9bcaacd3b74c
This commit is contained in:
mdb
2006-04-25 23:23:37 +00:00
parent 5d6272c0ce
commit ec436833fb
2 changed files with 10 additions and 19 deletions
@@ -16,7 +16,7 @@ package com.samskivert.util;
* more clearly than the previous paragraph of flowery prose: * more clearly than the previous paragraph of flowery prose:
* *
* <pre> * <pre>
* public void doSomeStuff (ResultListener listener) * public void doSomeStuff (ResultListener<String> listener)
* { * {
* Runnable run = new Runnable () { * Runnable run = new Runnable () {
* public void run () { * public void run () {
@@ -34,26 +34,17 @@ package com.samskivert.util;
* *
* @see IntResultListener * @see IntResultListener
*/ */
public interface ResultListener public interface ResultListener<T>
{ {
/** /**
* Called to communicate that the request succeeded and that the * Called to communicate that the request succeeded and that the
* result is available. * result is available.
*/ */
public void requestCompleted (Object result); public void requestCompleted (T result);
/** /**
* Called to communicate that the request failed and to provide the * Called to communicate that the request failed and to provide the
* reason for failure. * reason for failure.
*/ */
public void requestFailed (Exception cause); public void requestFailed (Exception cause);
/** Useful when you want to allow optional result listeners but don't
* want to have to check before calling. */
public static final ResultListener NOOP = new ResultListener() {
public void requestCompleted (Object result) {
}
public void requestFailed (Exception cause) {
}
};
} }
@@ -6,8 +6,8 @@ package com.samskivert.util;
/** /**
* Multiplexes ResultListener responses to multiple ResultListeners. * Multiplexes ResultListener responses to multiple ResultListeners.
*/ */
public class ResultListenerList extends ObserverList<ResultListener> public class ResultListenerList<T> extends ObserverList<ResultListener<T>>
implements ResultListener implements ResultListener<T>
{ {
/** /**
* Create a ResultListenerList with the FAST_UNSAFE_NOTIFY policy. * Create a ResultListenerList with the FAST_UNSAFE_NOTIFY policy.
@@ -29,10 +29,10 @@ public class ResultListenerList extends ObserverList<ResultListener>
* Multiplex a requestCompleted response to all the ResultListeners in * Multiplex a requestCompleted response to all the ResultListeners in
* this list. * this list.
*/ */
public void requestCompleted (final Object result) public void requestCompleted (final T result)
{ {
apply(new ObserverOp<ResultListener>() { apply(new ObserverOp<ResultListener<T>>() {
public boolean apply (ResultListener observer) { public boolean apply (ResultListener<T> observer) {
observer.requestCompleted(result); observer.requestCompleted(result);
return true; return true;
} }
@@ -45,8 +45,8 @@ public class ResultListenerList extends ObserverList<ResultListener>
*/ */
public void requestFailed (final Exception cause) public void requestFailed (final Exception cause)
{ {
apply(new ObserverOp<ResultListener>() { apply(new ObserverOp<ResultListener<T>>() {
public boolean apply (ResultListener observer) { public boolean apply (ResultListener<T> observer) {
observer.requestFailed(cause); observer.requestFailed(cause);
return true; return true;
} }