Handling timeout with AndroidAnnotations (Spring Rest)

android, android-annotations, rest, spring, spring-mvc

Solution

Assuming tpl is a RestTemplate, you can pass a SimpleClientHttpRequestFactory as parameter to its constructor:

    List<ClientHttpRequestInterceptor> interceptors = new ArrayList<ClientHttpRequestInterceptor>();
    interceptors.add( new NetworkInterceptor() );

    SimpleClientHttpRequestFactory s = new SimpleClientHttpRequestFactory();
    s.setReadTimeout(5000);
    s.setConnectTimeout(1000);

    RestTemplate tpl = new RestTemplate(s);//Or however you instantiated it
    tpl.setInterceptors( interceptors );

    ClientHttpRequestFactory c =  tpl.getRequestFactory();

Hope it helps.

Problem

Basically, what I'm facing today is the following: - Handle Request time out when doing Rest actions. Seems simple written, but not as easy to code. This is my implementation so far: ``` List<ClientHttpRequestInterceptor> interceptors = new ArrayList<ClientHttpRequestInterceptor>(); interceptors.add( new NetworkInterceptor() ); tpl.setInterceptors( interceptors ); ``` So now, after setting interceptors, I'd like to set custom timeout configurations for the template. So I do the following: `tpl.getRequestFactory()`. This is returning a `InterceptingClientHttpRequestFactory` instead of `SimpleClientHttpRequestFactory` as would be returned in case no interceptors were set. So as it is returning that `InterceptingClientHttpRequestFactory` instance, I can't set the Timeout. You can check the sourcecode of Spring, the last method: http://grepcode.com/file_/repo1.maven.org/maven2/org.springframework/spring-web/3.1.1.RELEASE/org/springframework/http/client/support/InterceptingHttpAccessor.java/?v=source So... Any tips?

Original source