Author: stevel Date: Wed Jan 18 13:11:21 2006 New Revision: 370259 URL: http://svn.apache.org/viewcvs?rev=370259&view=rev Log: extra proxy diagnostics, in a java1.5-only package. By abusing the toString() operation, we dont need any extra interfaces for this.
Added: ant/core/trunk/src/main/org/apache/tools/ant/util/java15/ ant/core/trunk/src/main/org/apache/tools/ant/util/java15/ProxyDiagnostics.java (with props) Modified: ant/core/trunk/build.xml ant/core/trunk/src/main/org/apache/tools/ant/Diagnostics.java ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/net/SetProxy.java ant/core/trunk/src/main/org/apache/tools/ant/util/ProxySetup.java Modified: ant/core/trunk/build.xml URL: http://svn.apache.org/viewcvs/ant/core/trunk/build.xml?rev=370259&r1=370258&r2=370259&view=diff ============================================================================== --- ant/core/trunk/build.xml (original) +++ ant/core/trunk/build.xml Wed Jan 18 13:11:21 2006 @@ -165,6 +165,7 @@ <selector id="needs.jdk1.5+"> <or> <filename name="${taskdefs.package}/AptTest*"/> + <filename name="${util.package}/java15/*"/> </or> </selector> Modified: ant/core/trunk/src/main/org/apache/tools/ant/Diagnostics.java URL: http://svn.apache.org/viewcvs/ant/core/trunk/src/main/org/apache/tools/ant/Diagnostics.java?rev=370259&r1=370258&r2=370259&view=diff ============================================================================== --- ant/core/trunk/src/main/org/apache/tools/ant/Diagnostics.java (original) +++ ant/core/trunk/src/main/org/apache/tools/ant/Diagnostics.java Wed Jan 18 13:11:21 2006 @@ -1,5 +1,5 @@ /* - * Copyright 2002-2005 The Apache Software Foundation + * Copyright 2002-2006 The Apache Software Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,6 +19,8 @@ import org.apache.tools.ant.util.LoaderUtils; import org.apache.tools.ant.util.FileUtils; import org.apache.tools.ant.util.JAXPUtils; +import org.apache.tools.ant.util.ProxySetup; +import org.apache.tools.ant.util.JavaEnvUtils; import org.apache.tools.ant.launch.Launcher; import org.xml.sax.XMLReader; @@ -285,6 +287,10 @@ header(out, "Locale information"); doReportLocale(out); + + header(out, "Proxy information"); + doReportProxy(out); + out.println(); } @@ -413,7 +419,8 @@ Class.forName(classname); props.remove(key); } catch (ClassNotFoundException e) { - out.println(key + " : Not Available"); + out.println(key + " : Not Available " + + "(the implementation class is not present)"); } catch (NoClassDefFoundError e) { String pkg = e.getMessage().replace('/', '.'); out.println(key + " : Missing dependency " + pkg); @@ -423,6 +430,9 @@ } if (props.size() == 0) { out.println("All defined tasks are available"); + } else { + out.println("A task being missing/unavailable should only " + +"matter if you are trying to use it"); } } catch (IOException e) { out.println(e.getMessage()); @@ -494,7 +504,7 @@ tempFile.delete(); out.println("Temp dir is writeable"); long drift = filetime - now; - out.println("temp dir alignment with system clock is " + drift + " ms"); + out.println("Temp dir alignment with system clock is " + drift + " ms"); if (Math.abs(drift) > BIG_DRIFT_LIMIT) { out.println("Warning: big clock drift -maybe a network filesystem"); } @@ -513,7 +523,7 @@ /** * Report locale information - * @param out + * @param out stream to print to */ private static void doReportLocale(PrintStream out) { //calendar stuff. @@ -530,4 +540,67 @@ + cal.get(Calendar.SECOND)) * SECONDS_PER_MILLISECOND + cal.get(Calendar.MILLISECOND))); } + + /** + * print a property name="value" pair, or name=[undefined] if there is none + * @param out + * @param name + */ + private static void printProperty(PrintStream out,String name) { + out.print(name); + out.print(" = "); + String value=System.getProperty(name); + if(value!=null) { + out.print('"'); + out.print(value); + out.println('"'); + } else { + out.println("[undefined]"); + } + + } + + /** + * Report proxy information + * + * @param out stream to print to + */ + private static void doReportProxy(PrintStream out) { + if(JavaEnvUtils.getJavaVersionNumber()>=15) { + printProperty(out, ProxySetup.USE_SYSTEM_PROXIES); + } + printProperty(out,ProxySetup.HTTP_PROXY_HOST); + printProperty(out, ProxySetup.HTTP_PROXY_PORT); + printProperty(out, ProxySetup.HTTP_PROXY_USERNAME); + printProperty(out, ProxySetup.HTTP_PROXY_PASSWORD); + printProperty(out, ProxySetup.HTTP_NON_PROXY_HOSTS); + printProperty(out, ProxySetup.HTTPS_PROXY_HOST); + printProperty(out, ProxySetup.HTTPS_PROXY_PORT); + printProperty(out, ProxySetup.HTTPS_NON_PROXY_HOSTS); + printProperty(out, ProxySetup.FTP_PROXY_HOST); + printProperty(out, ProxySetup.FTP_PROXY_PORT); + printProperty(out, ProxySetup.FTP_NON_PROXY_HOSTS); + printProperty(out, ProxySetup.SOCKS_PROXY_HOST); + printProperty(out, ProxySetup.SOCKS_PROXY_PORT); + printProperty(out, ProxySetup.SOCKS_PROXY_USERNAME); + printProperty(out, ProxySetup.SOCKS_PROXY_PASSWORD); + + final String proxyDiagClassname="org.apache.tools.ant.util.java15.ProxyDiagnostics"; + try { + Class proxyDiagClass = Class.forName(proxyDiagClassname); + Object instance =proxyDiagClass.newInstance(); + out.println("Java1.5+ proxy settings"); + out.println(instance.toString()); + } catch (ClassNotFoundException e) { + //not included, do nothing + } catch (IllegalAccessException e) { + //not included, do nothing + + } catch (InstantiationException e) { + //not included, do nothing + + } + + } + } Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/net/SetProxy.java URL: http://svn.apache.org/viewcvs/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/net/SetProxy.java?rev=370259&r1=370258&r2=370259&view=diff ============================================================================== --- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/net/SetProxy.java (original) +++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/net/SetProxy.java Wed Jan 18 13:11:21 2006 @@ -1,5 +1,5 @@ /* - * Copyright 2000-2005 The Apache Software Foundation + * Copyright 2000-2006 The Apache Software Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,6 +22,7 @@ import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Project; import org.apache.tools.ant.Task; +import org.apache.tools.ant.util.ProxySetup; /** * Sets Java's web proxy properties, so that tasks and code run in @@ -178,32 +179,32 @@ if (proxyHost.length() != 0) { traceSettingInfo(); enablingProxy = true; - sysprops.put("http.proxyHost", proxyHost); + sysprops.put(ProxySetup.HTTP_PROXY_HOST, proxyHost); String portString = Integer.toString(proxyPort); - sysprops.put("http.proxyPort", portString); - sysprops.put("https.proxyHost", proxyHost); - sysprops.put("https.proxyPort", portString); - sysprops.put("ftp.proxyHost", proxyHost); - sysprops.put("ftp.proxyPort", portString); + sysprops.put(ProxySetup.HTTP_PROXY_PORT, portString); + sysprops.put(ProxySetup.HTTPS_PROXY_HOST, proxyHost); + sysprops.put(ProxySetup.HTTPS_PROXY_PORT, portString); + sysprops.put(ProxySetup.FTP_PROXY_HOST, proxyHost); + sysprops.put(ProxySetup.FTP_PROXY_PORT, portString); if (nonProxyHosts != null) { - sysprops.put("http.nonProxyHosts", nonProxyHosts); - sysprops.put("https.nonProxyHosts", nonProxyHosts); - sysprops.put("ftp.nonProxyHosts", nonProxyHosts); + sysprops.put(ProxySetup.HTTP_NON_PROXY_HOSTS, nonProxyHosts); + sysprops.put(ProxySetup.HTTPS_NON_PROXY_HOSTS, nonProxyHosts); + sysprops.put(ProxySetup.FTP_NON_PROXY_HOSTS, nonProxyHosts); } if (proxyUser != null) { - sysprops.put("http.proxyUser", proxyUser); - sysprops.put("http.proxyPassword", proxyPassword); + sysprops.put(ProxySetup.HTTP_PROXY_USERNAME, proxyUser); + sysprops.put(ProxySetup.HTTP_PROXY_PASSWORD, proxyPassword); } } else { log("resetting http proxy", Project.MSG_VERBOSE); - sysprops.remove("http.proxyHost"); - sysprops.remove("http.proxyPort"); - sysprops.remove("http.proxyUser"); - sysprops.remove("http.proxyPassword"); - sysprops.remove("https.proxyHost"); - sysprops.remove("https.proxyPort"); - sysprops.remove("ftp.proxyHost"); - sysprops.remove("ftp.proxyPort"); + sysprops.remove(ProxySetup.HTTP_PROXY_HOST); + sysprops.remove(ProxySetup.HTTP_PROXY_PORT); + sysprops.remove(ProxySetup.HTTP_PROXY_USERNAME); + sysprops.remove(ProxySetup.HTTP_PROXY_PASSWORD); + sysprops.remove(ProxySetup.HTTPS_PROXY_HOST); + sysprops.remove(ProxySetup.HTTPS_PROXY_PORT); + sysprops.remove(ProxySetup.FTP_PROXY_HOST); + sysprops.remove(ProxySetup.FTP_PROXY_PORT); } } @@ -212,20 +213,20 @@ settingsChanged = true; if (socksProxyHost.length() != 0) { enablingProxy = true; - sysprops.put("socksProxyHost", socksProxyHost); - sysprops.put("socksProxyPort", Integer.toString(socksProxyPort)); + sysprops.put(ProxySetup.SOCKS_PROXY_HOST, socksProxyHost); + sysprops.put(ProxySetup.SOCKS_PROXY_PORT, Integer.toString(socksProxyPort)); if (proxyUser != null) { //this may be a java1.4 thingy only - sysprops.put("java.net.socks.username", proxyUser); - sysprops.put("java.net.socks.password", proxyPassword); + sysprops.put(ProxySetup.SOCKS_PROXY_USERNAME, proxyUser); + sysprops.put(ProxySetup.SOCKS_PROXY_PASSWORD, proxyPassword); } } else { log("resetting socks proxy", Project.MSG_VERBOSE); - sysprops.remove("socksProxyHost"); - sysprops.remove("socksProxyPort"); - sysprops.remove("java.net.socks.username"); - sysprops.remove("java.net.socks.password"); + sysprops.remove(ProxySetup.SOCKS_PROXY_HOST); + sysprops.remove(ProxySetup.SOCKS_PROXY_PORT); + sysprops.remove(ProxySetup.SOCKS_PROXY_USERNAME); + sysprops.remove(ProxySetup.SOCKS_PROXY_PASSWORD); } } Modified: ant/core/trunk/src/main/org/apache/tools/ant/util/ProxySetup.java URL: http://svn.apache.org/viewcvs/ant/core/trunk/src/main/org/apache/tools/ant/util/ProxySetup.java?rev=370259&r1=370258&r2=370259&view=diff ============================================================================== --- ant/core/trunk/src/main/org/apache/tools/ant/util/ProxySetup.java (original) +++ ant/core/trunk/src/main/org/apache/tools/ant/util/ProxySetup.java Wed Jan 18 13:11:21 2006 @@ -1,5 +1,5 @@ /* - * Copyright 2005 The Apache Software Foundation + * Copyright 2005-2006 The Apache Software Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -37,6 +37,21 @@ * @value */ public static final String USE_SYSTEM_PROXIES="java.net.useSystemProxies"; + public static final String HTTP_PROXY_HOST = "http.proxyHost"; + public static final String HTTP_PROXY_PORT = "http.proxyPort"; + public static final String HTTPS_PROXY_HOST = "https.proxyHost"; + public static final String HTTPS_PROXY_PORT = "https.proxyPort"; + public static final String FTP_PROXY_HOST = "ftp.proxyHost"; + public static final String FTP_PROXY_PORT = "ftp.proxyPort"; + public static final String HTTP_NON_PROXY_HOSTS = "http.nonProxyHosts"; + public static final String HTTPS_NON_PROXY_HOSTS = "https.nonProxyHosts"; + public static final String FTP_NON_PROXY_HOSTS = "ftp.nonProxyHosts"; + public static final String HTTP_PROXY_USERNAME = "http.proxyUser"; + public static final String HTTP_PROXY_PASSWORD = "http.proxyPassword"; + public static final String SOCKS_PROXY_HOST = "socksProxyHost"; + public static final String SOCKS_PROXY_PORT = "socksProxyPort"; + public static final String SOCKS_PROXY_USERNAME = "java.net.socks.username"; + public static final String SOCKS_PROXY_PASSWORD = "java.net.socks.password"; /** Added: ant/core/trunk/src/main/org/apache/tools/ant/util/java15/ProxyDiagnostics.java URL: http://svn.apache.org/viewcvs/ant/core/trunk/src/main/org/apache/tools/ant/util/java15/ProxyDiagnostics.java?rev=370259&view=auto ============================================================================== --- ant/core/trunk/src/main/org/apache/tools/ant/util/java15/ProxyDiagnostics.java (added) +++ ant/core/trunk/src/main/org/apache/tools/ant/util/java15/ProxyDiagnostics.java Wed Jan 18 13:11:21 2006 @@ -0,0 +1,107 @@ +/* + * Copyright 2006 The Apache Software Foundation + * + * Licensed 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 org.apache.tools.ant.BuildException; + +import java.net.ProxySelector; +import java.net.URI; +import java.net.URISyntaxException; +import java.net.Proxy; +import java.net.SocketAddress; +import java.net.InetSocketAddress; +import java.net.InetAddress; +import java.util.List; +import java.util.Iterator; + +/** + * 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 { + + String destination; + + URI destURI; + + /** [EMAIL PROTECTED] */ + 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 + * [EMAIL PROTECTED] #DEFAULT_DESTINATION} + */ + public ProxyDiagnostics() { + this(DEFAULT_DESTINATION); + } + + 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(); + } + + + +} Propchange: ant/core/trunk/src/main/org/apache/tools/ant/util/java15/ProxyDiagnostics.java ------------------------------------------------------------------------------ svn:eol-style = native --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]