2011-09-30 163 views
6

有没有办法拦截在客户端请求RequestFactory?拦截GWT RequestFactory请求

我想拦截来电这样的:

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

的想法是与服务器通信时表现出一定的负载指示。

回答

6

您可以覆盖默认传输实现和RF初始化期间传递:

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

您可以从DefaultRequestTransport调用超级实施前继承和覆盖的方法

send(String payload, TransportReceiver receiver) 

做一些处理并用代理包装TransportReceiver来处理结果。

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); 

}