diff options
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/util/java15/ProxyDiagnostics.java')
-rw-r--r-- | framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/util/java15/ProxyDiagnostics.java | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/util/java15/ProxyDiagnostics.java b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/util/java15/ProxyDiagnostics.java new file mode 100644 index 00000000..bd2e7cac --- /dev/null +++ b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/util/java15/ProxyDiagnostics.java @@ -0,0 +1,108 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.apache.tools.ant.util.java15; + +import java.net.InetAddress; +import java.net.InetSocketAddress; +import java.net.Proxy; +import java.net.ProxySelector; +import java.net.SocketAddress; +import java.net.URI; +import java.net.URISyntaxException; +import java.util.Iterator; +import java.util.List; + +import org.apache.tools.ant.BuildException; + +/** + * This class exists to create a string that tells diagnostics about the current + * state of proxy diagnostics. + * It does this in its toString operator. + * Java1.5+ is needed to compile this class; its interface is classic typeless + * Java. + * @since Ant 1.7 + */ +public class ProxyDiagnostics { + + private String destination; + + private URI destURI; + + /** {@value} */ + public static final String DEFAULT_DESTINATION = "http://ant.apache.org/"; + + /** + * create a diagnostics binding for a specific URI + * @param destination dest to bind to + * @throws BuildException if the URI is malformed. + */ + public ProxyDiagnostics(String destination) { + this.destination = destination; + try { + this.destURI = new URI(destination); + } catch (URISyntaxException e) { + throw new BuildException(e); + } + } + + /** + * create a proxy diagnostics tool bound to + * {@link #DEFAULT_DESTINATION} + */ + public ProxyDiagnostics() { + this(DEFAULT_DESTINATION); + } + + /** + * Get the diagnostics for proxy information. + * @return the information. + */ + public String toString() { + ProxySelector selector = ProxySelector.getDefault(); + List list = selector.select(destURI); + StringBuffer result = new StringBuffer(); + Iterator proxies = list.listIterator(); + while (proxies.hasNext()) { + Proxy proxy = (Proxy) proxies.next(); + SocketAddress address = proxy.address(); + if (address == null) { + result.append("Direct connection\n"); + } else { + result.append(proxy.toString()); + if (address instanceof InetSocketAddress) { + InetSocketAddress ina = (InetSocketAddress) address; + result.append(' '); + result.append(ina.getHostName()); + result.append(':'); + result.append(ina.getPort()); + if (ina.isUnresolved()) { + result.append(" [unresolved]"); + } else { + InetAddress addr = ina.getAddress(); + result.append(" ["); + result.append(addr.getHostAddress()); + result.append(']'); + } + } + result.append('\n'); + } + } + return result.toString(); + } +} |