View Javadoc
1   package org.springframework.security.oauth.consumer.client;
2   
3   import org.springframework.http.client.ClientHttpRequestFactory;
4   import org.springframework.http.client.SimpleClientHttpRequestFactory;
5   import org.springframework.security.oauth.consumer.OAuthConsumerSupport;
6   import org.springframework.security.oauth.consumer.ProtectedResourceDetails;
7   import org.springframework.web.client.RestTemplate;
8   
9   /**
10   * Rest template that is able to make OAuth-authenticated REST requests with the credentials of the provided resource.
11   *
12   * @author Ryan Heaton
13   */
14  public class OAuthRestTemplate extends RestTemplate {
15  
16    private final ProtectedResourceDetails resource;
17    private OAuthConsumerSupport support = new CoreOAuthConsumerSupport();
18  
19    public OAuthRestTemplate(ProtectedResourceDetails resource) {
20      this(new SimpleClientHttpRequestFactory(), resource);
21    }
22  
23    public OAuthRestTemplate(ClientHttpRequestFactory requestFactory, ProtectedResourceDetails resource) {
24      super();
25      if (resource == null) {
26        throw new IllegalArgumentException("An OAuth resource must be supplied.");
27      }
28      if (support == null) {
29        throw new IllegalArgumentException("OAuth support must be supplied.");
30      }
31  
32      this.resource = resource;
33      setRequestFactory(requestFactory);
34    }
35  
36    @Override
37    public void setRequestFactory(ClientHttpRequestFactory requestFactory) {
38      if (!(requestFactory instanceof OAuthClientHttpRequestFactory)) {
39        requestFactory = new OAuthClientHttpRequestFactory(requestFactory, getResource(), getSupport());
40      }
41      super.setRequestFactory(requestFactory);
42    }
43  
44  
45    public ProtectedResourceDetails getResource() {
46      return resource;
47    }
48  
49    /**
50     * The support logic to use.
51     *
52     * @return The support logic to use.
53     */
54    public OAuthConsumerSupport getSupport() {
55      return support;
56    }
57  
58    /**
59     * The support logic to use.
60     *
61     * @param support The support logic to use.
62     */
63    public void setSupport(OAuthConsumerSupport support) {
64      this.support = support;
65    }
66  
67  }