|
GWT 2.4.0 | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
T - the type of interface that must be implemented by the derivative
class.@AsyncProxy.DefaultValue public interface AsyncProxy<T>
The AsyncProxy type is used to provide a reachability barrier between classes intended to be used with runAsync while maintaining a simple, deferred-synchronous API. The first invocation of an instance method on the AsyncProxy will trigger the instantiation of a concrete object via runAsync. All method invocations on the proxy will be recorded and played back on the newly-instantiated object after the call to runAsync returns.
Once method playback has finished, the proxy will continue to forward invocations onto the instantiated object.
Example use:
interface IFoo {
void doSomething(int a, int b);
void anotherMethad(Object o);
}
class FooImpl implements IFoo { .... }
@ConcreteType(FooImpl.class)
interface FooProxy extends AsyncProxy<IFoo>, IFoo {}
class UserOfIFoo {
private IFoo foo = GWT.create(FooProxy.class);
void makeTrouble() {
// This first call triggers a runAsync load
foo.doSomething(1, 2);
// and this second will replayed after the call to doSomething()
foo.anotherMethod("A string");
}
}
For cases where dispatch speed is critical, a ProxyCallback can be installed
in order to reassign the field containing the AsyncProxy instance with the
backing object:
class UserOfIFoo {
private IFoo fooOrProxy = GWT.create(FooProxy.class);
public UserOfIFoo() {
// When the load, initialization, and playback are done, get rid of the proxy.
((AsyncProxy<IFoo>) fooOrProxy).setProxyCallback(new ProxyCallback<IFoo>() {
public void onComplete(IFoo instance) {
fooOrProxy = instance;
}
});
}
void makeTrouble() {
// This first call triggers a runAsync load
fooOrProxy.doSomething(1, 2);
// and this second will also be replayed before the above onComplete is called
fooOrProxy.anotherMethod("A string");
}
}
| Nested Class Summary | |
|---|---|
static interface |
AsyncProxy.AllowNonVoid
If this annotation is applied to an AsyncProxy type, it will be legal for the parameterized type T to declare non-void methods. |
static interface |
AsyncProxy.ConcreteType
This interface should be applied to the AsyncProxy subtype in order to specify the Class literal that will be passed to GWT.create(Class). |
static interface |
AsyncProxy.DefaultValue
This annotation specifies the return value for primitive methods when the AsyncProxy.AllowNonVoid annotation has been applied to an AsyncProxy. |
static class |
AsyncProxy.ProxyCallback<T>
The callback used by setProxyCallback(ProxyCallback). |
| Method Summary | |
|---|---|
T |
getProxiedInstance()
Returns the underlying proxied object if it has been instantiated or null. |
void |
setProxyCallback(AsyncProxy.ProxyCallback<T> callback)
Sets a callback that can be used to influence the initialization process. |
| Method Detail |
|---|
T getProxiedInstance()
null.
void setProxyCallback(AsyncProxy.ProxyCallback<T> callback)
|
GWT 2.4.0 | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||