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 RequestFactory
C - 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: