2011-09-30 10 views
6

¿Hay alguna forma de interceptar las solicitudes de RequestFactory en el lado del cliente?Intercepting GWT RequestFactory requests

quiero para interceptar llamadas así:

dummyRequest.dummyOperation().fire(new Receiver<String>() { 
    @Override 
    public void onSuccess(String response) {   
    } 
}); 

La idea es mostrar una cierta indicación de carga cuando se comunica con el servidor.

Respuesta

6

Puede anular la implementación de transporte por defecto y pasarlo durante RF inicialización:

SampleRequestFactory factory = GWT.create(SampleRequestFactory.class); 
factory.initialize(new SimpleEventBus(), new DefaultRequestTransport()); 

Puede heredar de DefaultRequestTransport y reemplazar el método

send(String payload, TransportReceiver receiver) 

hacer algo de procesamiento antes de llamar a la super-implementación y ajuste el TransportReceiver con un delegado para manejar el resultado.

3
final DefaultRequestTransport requestTransport = new DefaultRequestTransport() { 
     @Override 
     public void send(final String payload, final TransportReceiver receiver) { 
      GWT.log("making rpc"); 
      final TransportReceiver proxy = new TransportReceiver() { 
       @Override 
       public void onTransportFailure(final ServerFailure failure) { 
        GWT.log("rpc returned"); 
        receiver.onTransportFailure(failure); 
       } 

       @Override 
       public void onTransportSuccess(final String payload) { 
        GWT.log("rpc returned"); 
        receiver.onTransportSuccess(payload); 
       } 
      }; 

      super.send(payload, proxy); 

} 
Cuestiones relacionadas