Class RequestBatcher<F extends RequestFactory,C extends RequestContext>
java.lang.Object
com.google.web.bindery.requestfactory.gwt.client.RequestBatcher<F,C>
- Type Parameters:
F
- the type of RequestFactoryC
- any RequestContext type
public abstract class RequestBatcher<F extends RequestFactory,C extends RequestContext>
extends Object
A RequestBatcher is a convenience class that allows RequestFactory operations
to be aggregated over a single tick of the event loop and sent as one HTTP
request. Instances of RequestBatcher are reusable, so they may be used as
application-wide singleton objects or within a particular subsystem or UI.
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 RequestBatcherinvalid input: '<'MyRequestFactory, MyRequestContext> {
public MyRequestBatcher() {
// MyRequestFactory could also be injected
super(GWT.create(MyRequestFactory.class));
}
protected MyRequestContext createContext(MyRequestFactory factory) {
return factory.myRequestContext();
}
}
A singleton or otherwise scoped instance of RequestBatcher should be injected
into consuming classes. The 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()); } }
- See Also:
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected abstract C
createContext
(F requestFactory) Subclasses must implement this method to return an instance of a RequestContext.get()
Returns a mutableRequestContext
.Returns a mutableRequestContext
and enqueues the given receiver to be called as though it had been passed directly toRequestContext.fire(Receiver)
.Convenience access to the RequestFactory instance to aid developers using multiple RequestContext types.protected Scheduler
ReturnsScheduler.get()
, but may be overridden for testing purposes.
-
Constructor Details
-
RequestBatcher
-
-
Method Details
-
get
Returns a mutableRequestContext
. -
getRequestFactory
Convenience access to the RequestFactory instance to aid developers using multiple RequestContext types.RequestBatcher<MyRequestFactory, MyRequestContext> batcher; public void useOtherRequestContext() { OtherRequestContext ctx = batcher.get().append(batcher.getFactory().otherContext()); ctx.someOtherMethod().to(someReceiver); }
-
createContext
Subclasses must implement this method to return an instance of a RequestContext. -
getScheduler
ReturnsScheduler.get()
, but may be overridden for testing purposes.
-