1 package com.atlassian.sal.core.net;
2
3 import com.atlassian.sal.api.net.NonMarshallingRequestFactory;
4 import com.atlassian.sal.api.net.Request.MethodType;
5 import com.atlassian.sal.api.user.UserManager;
6 import com.atlassian.sal.core.trusted.CertificateFactory;
7 import org.apache.commons.httpclient.HttpClient;
8 import org.apache.commons.httpclient.params.HttpConnectionManagerParams;
9 import org.apache.log4j.Logger;
10
11
12
13
14
15 public class HttpClientRequestFactory implements NonMarshallingRequestFactory<HttpClientRequest>
16 {
17 private static final Logger log = Logger.getLogger(HttpClientRequestFactory.class);
18
19 private final CertificateFactory certificateFactory;
20 private final UserManager userManager;
21
22 public HttpClientRequestFactory(final CertificateFactory certificateFactory, final UserManager userManager)
23 {
24 this.certificateFactory = certificateFactory;
25 this.userManager = userManager;
26 }
27
28
29
30
31 public static final int DEFAULT_SOCKET_TIMEOUT=Integer.parseInt(System.getProperty("http.socketTimeout", "10000"));
32
33
34
35
36 public static final int DEFAULT_CONNECTION_TIMEOUT=Integer.parseInt(System.getProperty("http.connectionTimeout", "10000"));
37
38
39
40
41 public HttpClientRequest createRequest(final MethodType methodType, final String url)
42 {
43 final HttpClient httpClient = getHttpClient(url);
44 return new HttpClientRequest(httpClient, methodType, url, certificateFactory, userManager);
45 }
46
47
48
49
50
51 protected HttpClient getHttpClient(final String url)
52 {
53 final HttpClient httpClient = new HttpClient();
54 configureProxy(httpClient, url);
55 configureConnectionParameters(httpClient);
56 return httpClient;
57 }
58
59
60
61
62
63
64 protected void configureConnectionParameters(final HttpClient httpClient)
65 {
66 final HttpConnectionManagerParams params = httpClient.getHttpConnectionManager().getParams();
67 params.setSoTimeout(DEFAULT_SOCKET_TIMEOUT);
68 params.setConnectionTimeout(DEFAULT_CONNECTION_TIMEOUT);
69 }
70
71
72
73
74
75 protected void configureProxy(final HttpClient client, final String remoteUrl)
76 {
77 new HttpClientProxyConfig().configureProxy(client, remoteUrl);
78 }
79
80 public boolean supportsHeader()
81 {
82 return true;
83 }
84 }