F
- the type of RequestFactoryC
- any RequestContext typepublic abstract class RequestBatcher<F extends RequestFactory,C extends RequestContext>
extends java.lang.Object
Subclasses need only to provide the instance of the RequestFactory used by the application and a method to provide a "default" RequestContext from the RequestFactory.
public class MyRequestBatcher extends RequestBatcherA singleton or otherwise scoped instance of RequestBatcher should be injected into consuming classes. The{ public MyRequestBatcher() { // MyRequestFactory could also be injected super(GWT.create(MyRequestFactory.class)); } protected MyRequestContext createContext(MyRequestFactory factory) { return factory.myRequestContext(); } }
RequestContext.fire()
and
Request.fire()
methods reachable from the RequestContext returned from
get()
will not trigger an HTTP request. The
RequestContext.fire(Receiver)
and
Request.fire(Receiver)
methods will register their associated Receivers as
usual. This allows consuming code to be written that can be used with or
without a RequestBatcher.
When an application uses multiple RequestContext types, the
RequestContext.append(RequestContext)
method can be used to chain
multiple RequestContext objects together:
class MyRequestBatcher { public OtherRequestContext otherContext() { return get().append(getFactory().otherContext()); } }
Modifier | Constructor and Description |
---|---|
protected |
RequestBatcher(F requestFactory) |
Modifier and Type | Method and Description |
---|---|
protected abstract C |
createContext(F requestFactory)
Subclasses must implement this method to return an instance of a
RequestContext.
|
C |
get()
Returns a mutable
RequestContext . |
C |
get(Receiver<java.lang.Void> receiver)
Returns a mutable
RequestContext and enqueues the given receiver to
be called as though it had been passed directly to
RequestContext.fire(Receiver) . |
F |
getRequestFactory()
Convenience access to the RequestFactory instance to aid developers using
multiple RequestContext types.
|
protected Scheduler |
getScheduler()
Returns
Scheduler.get() , but may be overridden for testing
purposes. |
protected RequestBatcher(F requestFactory)
public C get()
RequestContext
.public C get(Receiver<java.lang.Void> receiver)
RequestContext
and enqueues the given receiver to
be called as though it had been passed directly to
RequestContext.fire(Receiver)
.public F getRequestFactory()
RequestBatcher <MyRequestFactory, MyRequestContext> batcher; public void useOtherRequestContext() { OtherRequestContext ctx = batcher.get().append(batcher.getFactory().otherContext()); ctx.someOtherMethod().to(someReceiver); }
protected abstract C createContext(F requestFactory)
protected Scheduler getScheduler()
Scheduler.get()
, but may be overridden for testing
purposes.