diff --git a/README.md b/README.md index e40c6fc..17177d8 100644 --- a/README.md +++ b/README.md @@ -114,6 +114,7 @@ Here is a configuration example with a proxy for intranet addresses, and another network: proxy: enable: true # allows disabling auto-config; enabled by default + alwaysPrint: false #allow the info log showing the proxy used every time a call is made # explicit list of proxy servers with settings servers: diff --git a/pom.xml b/pom.xml index db73c93..854662f 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ com.orange.common spring-boot-autoconfigure-proxy - 1.0.2 + 1.0.3 spring-boot-autoconfigure-proxy Spring Boot AutoConfigure Proxy diff --git a/src/main/java/com/orange/common/springboot/autoconfigure/proxy/MultiProxySelector.java b/src/main/java/com/orange/common/springboot/autoconfigure/proxy/MultiProxySelector.java index 2e530ec..638585f 100644 --- a/src/main/java/com/orange/common/springboot/autoconfigure/proxy/MultiProxySelector.java +++ b/src/main/java/com/orange/common/springboot/autoconfigure/proxy/MultiProxySelector.java @@ -85,10 +85,13 @@ public int hashCode() { private final List proxies; + private final boolean alwaysPrint; + private Map> hostname2Proxies = new HashMap<>(); - private MultiProxySelector(List proxies) { + private MultiProxySelector(List proxies, boolean alwaysPrint) { this.proxies = proxies; + this.alwaysPrint = alwaysPrint; } @Override @@ -126,7 +129,13 @@ public List select(URI uri) { throw new IllegalArgumentException("protocol = " + protocol + " host = " + host); } - return hostname2Proxies.computeIfAbsent(new SchemeAndHost(protocol, host), this::doGetProxies); + SchemeAndHost schemeAndHost = new SchemeAndHost(protocol, host); + List proxiesList = + hostname2Proxies.computeIfAbsent(schemeAndHost, this::doGetProxies); + if (alwaysPrint) { + LOGGER.info("Proxies for [{}] : {}", schemeAndHost, proxiesList); + } + return proxiesList; } private List doGetProxies(SchemeAndHost schemeAndHost) { @@ -151,7 +160,8 @@ public String toString() { '}'; } - static MultiProxySelector build(List proxies) { + static MultiProxySelector build(List proxies, + boolean alwaysPrint) { List proxyEntries = new ArrayList<>(); for (int i = 0; i < proxies.size(); i++) { NetworkProxyProperties.ProxyServerConfig cfg = proxies.get(i); @@ -190,6 +200,6 @@ static MultiProxySelector build(List p proxyEntries.add(new ProxyEntry(cfg, proxy, positiveMatchers, negativeMatchers)); } - return new MultiProxySelector(proxyEntries); + return new MultiProxySelector(proxyEntries, alwaysPrint); } } diff --git a/src/main/java/com/orange/common/springboot/autoconfigure/proxy/NetworkProxyAutoConfiguration.java b/src/main/java/com/orange/common/springboot/autoconfigure/proxy/NetworkProxyAutoConfiguration.java index 0b346e5..012813f 100644 --- a/src/main/java/com/orange/common/springboot/autoconfigure/proxy/NetworkProxyAutoConfiguration.java +++ b/src/main/java/com/orange/common/springboot/autoconfigure/proxy/NetworkProxyAutoConfiguration.java @@ -38,7 +38,8 @@ public void setupProxyConfiguration() { LOGGER.info("Configuring proxies from Spring Boot configuration"); // install proxy selector - ProxySelector.setDefault(MultiProxySelector.build(properties.getServers())); + ProxySelector.setDefault(MultiProxySelector.build(properties.getServers(), + properties.isAlwaysPrint())); // set password authentication for every proxy that need one for (NetworkProxyProperties.ProxyServerConfig cfg : properties.getServers()) { diff --git a/src/main/java/com/orange/common/springboot/autoconfigure/proxy/NetworkProxyProperties.java b/src/main/java/com/orange/common/springboot/autoconfigure/proxy/NetworkProxyProperties.java index 85b2f22..3eca2e8 100644 --- a/src/main/java/com/orange/common/springboot/autoconfigure/proxy/NetworkProxyProperties.java +++ b/src/main/java/com/orange/common/springboot/autoconfigure/proxy/NetworkProxyProperties.java @@ -21,6 +21,11 @@ public class NetworkProxyProperties implements Validator { */ private boolean enabled = true; + /** + * Whether to enable the print of the proxy used every time. + */ + private boolean alwaysPrint = false; + /** * Explicit network proxy servers configuration */ @@ -43,10 +48,19 @@ public void setServers(List servers) { this.servers = servers; } + public boolean isAlwaysPrint() { + return alwaysPrint; + } + + public void setAlwaysPrint(boolean alwaysPrint) { + this.alwaysPrint = alwaysPrint; + } + @Override public String toString() { return "NetworkProxyProperties{" + "enabled=" + enabled + + ", alwaysPrint= " +alwaysPrint + ", servers=" + servers + '}'; }