Class RequestBatcher<F extends RequestFactory,​C extends RequestContext>

  • Type Parameters:
    F - the type of RequestFactory
    C - any RequestContext type

    public abstract class RequestBatcher<F extends RequestFactory,​C extends RequestContext>
    extends java.lang.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 {
       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:
    Scheduler.scheduleFinally(ScheduledCommand)
    • Constructor Detail

      • RequestBatcher

        protected RequestBatcher​(F requestFactory)
    • Method Detail

      • 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.