Move ProxySettings to an HTTP-related provider

ProxySettings interface is bound to an actual implementation ONLY when
used in a WebModule.
As we already inject it into the HttpClientProvider for reading the 
proxy settings, it makes sense to apply the JVM-wide settings as well
in the same place.

Change-Id: I1acdd1c5b51363af4945f635949cb2e511884ff3
diff --git a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/GitHubOAuthConfig.java b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/GitHubOAuthConfig.java
index 12f02e4..ca242d6 100644
--- a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/GitHubOAuthConfig.java
+++ b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/GitHubOAuthConfig.java
@@ -18,7 +18,6 @@
 import com.google.common.base.Preconditions;
 import com.google.common.base.Strings;
 import com.google.common.collect.Maps;
-import com.google.gerrit.httpd.ProxyProperties;
 import com.google.gerrit.reviewdb.client.AuthType;
 import com.google.gerrit.server.config.AuthConfig;
 import com.google.gerrit.server.config.CanonicalWebUrl;
@@ -68,8 +67,7 @@
   protected
   GitHubOAuthConfig(@GerritServerConfig Config config,
       @CanonicalWebUrl String canonicalWebUrl, 
-      AuthConfig authConfig,
-      ProxyProperties proxyProperties) {
+      AuthConfig authConfig) {
     httpHeader =
         Preconditions.checkNotNull(
             config.getString("auth", null, "httpHeader"),
@@ -107,21 +105,6 @@
         config.getInt(CONF_SECTION, "fileUpdateMaxRetryCount", 3);
     fileUpdateMaxRetryIntervalMsec =
         config.getInt(CONF_SECTION, "fileUpdateMaxRetryIntervalMsec", 3000);
-
-    URL proxyUrl = proxyProperties.getProxyUrl();
-    if (proxyUrl != null) {
-      setProxyProperty("proxyHost", proxyUrl.getHost());
-      setProxyProperty("proxyPort", "" + proxyUrl.getPort());
-      setProxyProperty("proxyUser", proxyProperties.getUsername());
-      setProxyProperty("proxyPassword", proxyProperties.getPassword());
-    }
-  }
-
-  private static void setProxyProperty(String property, String value) {
-    if (value != null) {
-      System.setProperty("http." + property, value);
-      System.setProperty("https." + property, value);
-    }
   }
 
   private Map<String, List<Scope>> getScopes(Config config) {
diff --git a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/PooledHttpClientProvider.java b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/PooledHttpClientProvider.java
index 0263877..4376242 100644
--- a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/PooledHttpClientProvider.java
+++ b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/PooledHttpClientProvider.java
@@ -41,12 +41,27 @@
   PooledHttpClientProvider(@GerritServerConfig Config config,
       ProxyProperties proxyProperties) {
     this.proxy = proxyProperties;
+    URL proxyUrl = proxyProperties.getProxyUrl();
+    if (proxyUrl != null) {
+      setProxyProperty("proxyHost", proxyUrl.getHost());
+      setProxyProperty("proxyPort", "" + proxyUrl.getPort());
+      setProxyProperty("proxyUser", proxyProperties.getUsername());
+      setProxyProperty("proxyPassword", proxyProperties.getPassword());
+    }
+
     maxConnectionPerRoute = config.getInt("http", null,
         "pooledMaxConnectionsPerRoute", 16);
     maxTotalConnection = config.getInt("http", null,
         "pooledMaxTotalConnections", 32);
   }
 
+  private static void setProxyProperty(String property, String value) {
+    if (value != null) {
+      System.setProperty("http." + property, value);
+      System.setProperty("https." + property, value);
+    }
+  }
+
   @Override
   public HttpClient get() {
     HttpClientBuilder builder = HttpClientBuilder
diff --git a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/GitHubConfig.java b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/GitHubConfig.java
index 51e63a7..249a61e 100644
--- a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/GitHubConfig.java
+++ b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/GitHubConfig.java
@@ -15,7 +15,6 @@
 
 import com.google.common.base.MoreObjects;
 import com.google.common.collect.Maps;
-import com.google.gerrit.httpd.ProxyProperties;
 import com.google.gerrit.server.config.AllProjectsNameProvider;
 import com.google.gerrit.server.config.AuthConfig;
 import com.google.gerrit.server.config.CanonicalWebUrl;
@@ -79,10 +78,9 @@
       final SitePaths site, 
       AllProjectsNameProvider allProjectsNameProvider,
       @CanonicalWebUrl String canonicalWebUrl, 
-      AuthConfig authConfig,
-      ProxyProperties proxyProperties)
+      AuthConfig authConfig)
       throws MalformedURLException {
-    super(config, canonicalWebUrl, authConfig, proxyProperties);
+    super(config, canonicalWebUrl, authConfig);
     String[] wizardFlows =
         config.getStringList(CONF_SECTION, null, CONF_WIZARD_FLOW);
     for (String fromTo : wizardFlows) {