You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by st...@apache.org on 2006/01/18 22:11:32 UTC
svn commit: r370259 - in /ant/core/trunk: ./ src/main/org/apache/tools/ant/
src/main/org/apache/tools/ant/taskdefs/optional/net/
src/main/org/apache/tools/ant/util/
src/main/org/apache/tools/ant/util/java15/
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;
+
+ /** {@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);
+ }
+
+ 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: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org