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 RequestBatcher<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 Details

    • RequestBatcher

      protected RequestBatcher(F requestFactory)
  • Method Details

    • get

      public C get()
      Returns a mutable RequestContext.
    • get

      public C get(Receiver<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).
    • getRequestFactory

      public F 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

      protected abstract C createContext(F requestFactory)
      Subclasses must implement this method to return an instance of a RequestContext.
    • getScheduler

      protected Scheduler getScheduler()
      Returns Scheduler.get(), but may be overridden for testing purposes.