View Javadoc
1   package com.atlassian.sal.core.net;
2   
3   import org.apache.commons.lang3.StringUtils;
4   import org.slf4j.Logger;
5   import org.slf4j.LoggerFactory;
6   
7   import java.util.Arrays;
8   
9   /**
10   * Proxy configuration drawn from standard System properties
11   */
12  public class SystemPropertiesProxyConfig implements ProxyConfig {
13  
14      private static final Logger log = LoggerFactory.getLogger(SystemPropertiesProxyConfig.class);
15  
16      public static final String PROXY_HOST_PROPERTY_NAME = "http.proxyHost";
17      public static final String PROXY_PORT_PROPERTY_NAME = "http.proxyPort";
18      public static final String PROXY_USER_PROPERTY_NAME = "http.proxyUser";
19      public static final String PROXY_PASSWORD_PROPERTY_NAME = "http.proxyPassword";
20      public static final String PROXY_NON_HOSTS_PROPERTY_NAME = "http.nonProxyHosts";
21  
22      public static final int DEFAULT_PROXY_PORT = 80;
23  
24      private final String proxyHost;
25      private final int proxyPort;
26      private final String proxyUser;
27      private final String proxyPassword;
28      private final String[] nonProxyHosts;
29  
30      public SystemPropertiesProxyConfig() {
31          proxyHost = System.getProperty(PROXY_HOST_PROPERTY_NAME);
32          proxyPort = Integer.getInteger(PROXY_PORT_PROPERTY_NAME, DEFAULT_PROXY_PORT);
33          proxyUser = System.getProperty(PROXY_USER_PROPERTY_NAME);
34          proxyPassword = System.getProperty(PROXY_PASSWORD_PROPERTY_NAME);
35          nonProxyHosts = System.getProperty(PROXY_NON_HOSTS_PROPERTY_NAME, "").split("\\|");
36          if (log.isDebugEnabled()) {
37              log.debug("Found nonProxyHosts - " + Arrays.toString(nonProxyHosts));
38          }
39      }
40  
41      @Override
42      public boolean isSet() {
43          return StringUtils.isNotBlank(proxyHost);
44      }
45  
46      @Override
47      public boolean requiresAuthentication() {
48          return isSet() && StringUtils.isNotBlank(proxyUser);
49      }
50  
51      @Override
52      public String getHost() {
53          return proxyHost;
54      }
55  
56      @Override
57      public int getPort() {
58          return proxyPort;
59      }
60  
61      @Override
62      public String getUser() {
63          return proxyUser;
64      }
65  
66      @Override
67      public String getPassword() {
68          return proxyPassword;
69      }
70  
71      @Override
72      public String[] getNonProxyHosts() {
73          return nonProxyHosts;
74      }
75  
76      @Override
77      public String toString() {
78          return "SystemPropertiesProxyConfig{" +
79                  "proxyHost='" + proxyHost + '\'' +
80                  ", proxyPort=" + proxyPort +
81                  ", proxyUser='" + proxyUser + '\'' +
82                  ", proxyPassword='" + proxyPassword + '\'' +
83                  ", nonProxyHosts=" + Arrays.toString(nonProxyHosts) +
84                  '}';
85      }
86  }