- From: Yves Lafon via cvs-syncmail <cvsmail@w3.org>
- Date: Tue, 23 Aug 2011 09:23:52 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2002/css-validator/org/w3c/css/util
In directory hutz:/tmp/cvs-serv28400
Modified Files:
HTTPURL.java
Log Message:
fixes http://www.w3.org/Bugs/Public/show_bug.cgi?id=11591
Index: HTTPURL.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/util/HTTPURL.java,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -d -r1.23 -r1.24
--- HTTPURL.java 14 May 2011 18:13:25 -0000 1.23
+++ HTTPURL.java 23 Aug 2011 09:23:50 -0000 1.24
@@ -29,8 +29,8 @@
import java.util.zip.GZIPInputStream;
/**
+ * @author Philippe Le Hegaret
* @version $Revision$
- * @author Philippe Le Hegaret
*/
public class HTTPURL {
@@ -42,337 +42,334 @@
public static String getHTTPStatusCode(int status) {
- switch (status) {
- case 100:
- return "Continue";
- case 101:
- return "Switching Protocols";
- case 200:
- return "OK";
- case 201:
- return "Created";
- case 202:
- return "Accepted";
- case 203:
- return "Non-Authoritative Information";
- case 204:
- return "No Content";
- case 205:
- return "Reset Content";
- case 206:
- return "Partial Content";
- case 300:
- return "Multiple Choices";
- case 301:
- return "Moved Permanently";
- case 302:
- return "Found";
- case 303:
- return "See Other";
- case 304:
- return "Not Modified";
- case 305:
- return "Use Proxy";
- case 306:
- return "(Unused)";
- case 307:
- return "Temporary Redirect";
- case 400:
- return "Bad Request";
- case 401:
- return "Unauthorized";
- case 402:
- return "Payment Required";
- case 403:
- return "Forbidden";
- case 404:
- return "Not Found";
- case 405:
- return "Method Not Allowed";
- case 406:
- return "Not Acceptable";
- case 407:
- return "Proxy Authentication Required";
- case 408:
- return "Request Timeout";
- case 409:
- return "Conflict";
- case 410:
- return "Gone";
- case 411:
- return "Length Required";
- case 412:
- return "Precondition Failed";
- case 413:
- return "Request Entity Too Large";
- case 414:
- return "Request-URI Too Long";
- case 415:
- return "Unsupported Media Type";
- case 416:
- return "Requested Range Not Satisfiable";
- case 417:
- return "Expectation Failed";
- case 500:
- return "Internal Server Error";
- case 501:
- return "Not Implemented";
- case 502:
- return "Bad Gateway";
- case 503:
- return "Service Unavailable";
- case 504:
- return "Gateway Timeout";
- case 505:
- return "HTTP Version Not Supported";
- default:
- return Integer.toString(status, 10);
- }
+ switch (status) {
+ case 100:
+ return "Continue";
+ case 101:
+ return "Switching Protocols";
+ case 200:
+ return "OK";
+ case 201:
+ return "Created";
+ case 202:
+ return "Accepted";
+ case 203:
+ return "Non-Authoritative Information";
+ case 204:
+ return "No Content";
+ case 205:
+ return "Reset Content";
+ case 206:
+ return "Partial Content";
+ case 300:
+ return "Multiple Choices";
+ case 301:
+ return "Moved Permanently";
+ case 302:
+ return "Found";
+ case 303:
+ return "See Other";
+ case 304:
+ return "Not Modified";
+ case 305:
+ return "Use Proxy";
+ case 306:
+ return "(Unused)";
+ case 307:
+ return "Temporary Redirect";
+ case 400:
+ return "Bad Request";
+ case 401:
+ return "Unauthorized";
+ case 402:
+ return "Payment Required";
+ case 403:
+ return "Forbidden";
+ case 404:
+ return "Not Found";
+ case 405:
+ return "Method Not Allowed";
+ case 406:
+ return "Not Acceptable";
+ case 407:
+ return "Proxy Authentication Required";
+ case 408:
+ return "Request Timeout";
+ case 409:
+ return "Conflict";
+ case 410:
+ return "Gone";
+ case 411:
+ return "Length Required";
+ case 412:
+ return "Precondition Failed";
+ case 413:
+ return "Request Entity Too Large";
+ case 414:
+ return "Request-URI Too Long";
+ case 415:
+ return "Unsupported Media Type";
+ case 416:
+ return "Requested Range Not Satisfiable";
+ case 417:
+ return "Expectation Failed";
+ case 500:
+ return "Internal Server Error";
+ case 501:
+ return "Not Implemented";
+ case 502:
+ return "Bad Gateway";
+ case 503:
+ return "Service Unavailable";
+ case 504:
+ return "Gateway Timeout";
+ case 505:
+ return "HTTP Version Not Supported";
+ default:
+ return Integer.toString(status, 10);
+ }
}
public static URL getURL(String url) throws IOException {
- // url = URLEncoder.encode(url);
- try {
- return new URL(url);
- } catch (MalformedURLException e) {
- //if (!url.startsWith("http:")) { // ook!? dkfj://wwww.3.org -> http://dkfj://www.w3.org
- if(url.indexOf("://") == -1) { // the protocol is missing
- return new URL("http://" + url);
- } else {
- throw (IOException) e.fillInStackTrace();
- }
- }
+ // url = URLEncoder.encode(url);
+ try {
+ return new URL(url);
+ } catch (MalformedURLException e) {
+ //if (!url.startsWith("http:")) { // ook!? dkfj://wwww.3.org -> http://dkfj://www.w3.org
+ if (url.indexOf("://") == -1) { // the protocol is missing
+ return new URL("http://" + url);
+ } else {
+ throw (IOException) e.fillInStackTrace();
+ }
+ }
}
public static URL getURL(URL base, String url)
- throws MalformedURLException
- {
- // url = URLEncoder.encode(url);
+ throws MalformedURLException {
+ // url = URLEncoder.encode(url);
- return new URL(base, url);
+ return new URL(base, url);
}
private static URLConnection getConnection(URL url, int count)
- throws IOException
- {
- return getConnection(url, count, null);
+ throws IOException {
+ return getConnection(url, count, null);
}
private static void setSSLVerifier(HttpsURLConnection uConn) {
- TrustManager[] trustAllCerts = new TrustManager[] {
- new X509TrustManager() {
- public java.security.cert.X509Certificate[] getAcceptedIssuers() {
- return null;
- }
- public void checkClientTrusted(
- java.security.cert.X509Certificate[] certs, String authType) {
- }
- public void checkServerTrusted(
- java.security.cert.X509Certificate[] certs, String authType) {
- }
- }
- };
-
- // Install the all-trusting trust manager
- try {
- SSLContext sc = SSLContext.getInstance("SSL");
- sc.init(null, trustAllCerts, new java.security.SecureRandom());
- uConn.setSSLSocketFactory(sc.getSocketFactory());
- } catch (Exception e) {
- }
-
- // Step 2: hostname verifier
- HostnameVerifier hv = new HostnameVerifier() {
- public boolean verify(String urlHostName, SSLSession session) {
- return true;
- }
- };
- uConn.setHostnameVerifier(hv);
+ TrustManager[] trustAllCerts = new TrustManager[]{
+ new X509TrustManager() {
+ public java.security.cert.X509Certificate[] getAcceptedIssuers() {
+ return null;
+ }
+
+ public void checkClientTrusted(
+ java.security.cert.X509Certificate[] certs, String authType) {
+ }
+
+ public void checkServerTrusted(
+ java.security.cert.X509Certificate[] certs, String authType) {
+ }
+ }
+ };
+
+ // Install the all-trusting trust manager
+ try {
+ SSLContext sc = SSLContext.getInstance("SSL");
+ sc.init(null, trustAllCerts, new java.security.SecureRandom());
+ uConn.setSSLSocketFactory(sc.getSocketFactory());
+ } catch (Exception e) {
+ }
+
+ // Step 2: hostname verifier
+ HostnameVerifier hv = new HostnameVerifier() {
+ public boolean verify(String urlHostName, SSLSession session) {
+ return true;
+ }
+ };
+ uConn.setHostnameVerifier(hv);
}
private static URLConnection getConnection(URL url, int count,
- ApplContext ac)
- throws IOException
- {
- if (count > 5) {
- throw new ProtocolException("Server redirected too many "+
- "times (5)");
- }
+ ApplContext ac)
+ throws IOException {
+ if (count > 5) {
+ throw new ProtocolException("Server redirected too many " +
+ "times (5)");
+ }
- if (Util.servlet) {
- String protocol = url.getProtocol();
- if (!(("https".equalsIgnoreCase(protocol)) || ("http".equalsIgnoreCase(protocol)))) {
- System.err.println( "[WARNING] : someone is trying to get the file: "
- + url );
- throw new FileNotFoundException("import " + url +
- ": Operation not permitted");
- }
- }
+ if (Util.servlet) {
+ String protocol = url.getProtocol();
+ if (!(("https".equalsIgnoreCase(protocol)) || ("http".equalsIgnoreCase(protocol)))) {
+ System.err.println("[WARNING] : someone is trying to get the file: "
+ + url);
+ throw new FileNotFoundException("import " + url +
+ ": Operation not permitted");
+ }
+ }
- URLConnection urlC = url.openConnection();
+ URLConnection urlC = url.openConnection();
- if (Util.onDebug) {
- System.err.println( "Accessing " + url);
- if (ac.getCredential() != null) {
- System.err.println( "with [" + ac.getCredential() + ']');
- }
- }
- // avoid all kind of caches
- urlC.setRequestProperty("Pragma", "no-cache");
- urlC.setRequestProperty("Cache-Control", "no-cache, no-store");
- // for the fun
- urlC.setRequestProperty("User-Agent",
- "Jigsaw/2.2.5 W3C_CSS_Validator_JFouffa/2.0");
- // relay authorization information
- if (ac.getCredential() != null) {
- urlC.setRequestProperty("Authorization",ac.getCredential());
- }
- // relay languages
- if (ac.getLang() != null) {
- if (ac.getLang().indexOf('*') == -1) {
- urlC.setRequestProperty("Accept-Language", ac.getLang() + ",*");
- } else {
- urlC.setRequestProperty("Accept-Language",ac.getLang());
- }
- }
- // should I put an Accept header?
- urlC.setRequestProperty("Accept",
- "text/css,text/html,text/xml,"
- +"application/xhtml+xml,application/xml,"
- +"image/svg+xml,*/*;q=0.1");
+ if (Util.onDebug) {
+ System.err.println("Accessing " + url);
+ if (ac.getCredential() != null) {
+ System.err.println("with [" + ac.getCredential() + ']');
+ }
+ }
+ // avoid all kind of caches
+ urlC.setRequestProperty("Pragma", "no-cache");
+ urlC.setRequestProperty("Cache-Control", "no-cache, no-store");
+ // for the fun
+ urlC.setRequestProperty("User-Agent",
+ "Jigsaw/2.2.5 W3C_CSS_Validator_JFouffa/2.0");
+ // relay authorization information
+ if (ac.getCredential() != null) {
+ urlC.setRequestProperty("Authorization", ac.getCredential());
+ }
+ // relay languages
+ if (ac.getLang() != null) {
+ if (ac.getLang().indexOf('*') == -1) {
+ urlC.setRequestProperty("Accept-Language", ac.getLang() + ",*");
+ } else {
+ urlC.setRequestProperty("Accept-Language", ac.getLang());
+ }
+ }
+ // should I put an Accept header?
+ urlC.setRequestProperty("Accept",
+ "text/css,text/html,text/xml,"
+ + "application/xhtml+xml,application/xml,"
+ + "image/svg+xml,*/*;q=0.1");
- urlC.connect();
+ if (urlC instanceof HttpURLConnection) {
+ HttpURLConnection httpURL = (HttpURLConnection) urlC;
+ int status;
- if (urlC instanceof HttpURLConnection) {
- HttpURLConnection httpURL = (HttpURLConnection) urlC;
- int status;
+ httpURL.setInstanceFollowRedirects(false);
+ if (urlC instanceof HttpsURLConnection) {
+ setSSLVerifier((HttpsURLConnection) urlC);
+ }
+ urlC.connect();
- httpURL.setInstanceFollowRedirects(false);
- if (urlC instanceof HttpsURLConnection) {
- setSSLVerifier((HttpsURLConnection) urlC);
- }
- try {
- status = httpURL.getResponseCode();
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- throw new FileNotFoundException(url + ": " +
- getHTTPStatusCode(404));
- }
+ try {
+ status = httpURL.getResponseCode();
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ throw new FileNotFoundException(url + ": " +
+ getHTTPStatusCode(404));
+ }
- switch (status) {
- case HttpURLConnection.HTTP_OK:
- // nothing to do
- break;
- case HttpURLConnection.HTTP_MOVED_PERM:
- case HttpURLConnection.HTTP_MOVED_TEMP:
- case 307:
- try {
- URL u = getURL(httpURL.getHeaderField("Location"));
- return getConnection(u, count+1, ac);
- } finally {
- httpURL.disconnect();
- }
- case HttpURLConnection.HTTP_UNAUTHORIZED:
- String realm = httpURL.getHeaderField("WWW-Authenticate");
- httpURL.disconnect();
- if (realm != null) {
- throw new ProtocolException (realm);
- }
- default:
- try {
- if (httpURL.getResponseMessage() != null) {
- throw new FileNotFoundException(url + ": " +
- httpURL.getResponseMessage());
- } else {
- throw new FileNotFoundException(url + ": " +
- getHTTPStatusCode(status));
- }
- } finally {
- httpURL.disconnect();
- }
- }
- }
- return urlC;
+ switch (status) {
+ case HttpURLConnection.HTTP_OK:
+ // nothing to do
+ break;
+ case HttpURLConnection.HTTP_MOVED_PERM:
+ case HttpURLConnection.HTTP_MOVED_TEMP:
+ case 307:
+ try {
+ URL u = getURL(httpURL.getHeaderField("Location"));
+ return getConnection(u, count + 1, ac);
+ } finally {
+ httpURL.disconnect();
+ }
+ case HttpURLConnection.HTTP_UNAUTHORIZED:
+ String realm = httpURL.getHeaderField("WWW-Authenticate");
+ httpURL.disconnect();
+ if (realm != null) {
+ throw new ProtocolException(realm);
+ }
+ default:
+ try {
+ if (httpURL.getResponseMessage() != null) {
+ throw new FileNotFoundException(url + ": " +
+ httpURL.getResponseMessage());
+ } else {
+ throw new FileNotFoundException(url + ": " +
+ getHTTPStatusCode(status));
+ }
+ } finally {
+ httpURL.disconnect();
+ }
+ }
+ } else {
+ urlC.connect();
+ }
+ return urlC;
}
public static URLConnection getConnection(URL url)
- throws IOException
- {
- return getConnection(url, 0);
+ throws IOException {
+ return getConnection(url, 0);
}
public static URLConnection getConnection(URL url, ApplContext ac)
- throws IOException
- {
- return getConnection(url, 0, ac);
+ throws IOException {
+ return getConnection(url, 0, ac);
}
/* more madness */
- public static InputStream getInputStream(ApplContext ac, URLConnection uco)
- throws IOException
- {
- InputStream orig_stream = uco.getInputStream();
- String charset;
- String encoding;
- if (orig_stream == null) {
- return orig_stream; // let it fail elsewhere
- }
- encoding = uco.getContentEncoding();
- // not set -> return
- if (encoding != null) {
- if (encoding.equalsIgnoreCase("gzip")) {
- orig_stream = new GZIPInputStream(orig_stream);
- }
- }
- charset = getCharacterEncoding(ac, uco);
- if ((charset == null) || (charset.regionMatches(true, 0, "utf", 0, 3))) {
- UnicodeInputStream is = new UnicodeInputStream(orig_stream);
- charset = is.getEncodingFromStream();
- if (charset != null) {
- ac.setCharsetForURL(uco.getURL(), charset);
- }
- return is;
- }
- return orig_stream;
+ public static InputStream getInputStream(ApplContext ac, URLConnection uco)
+ throws IOException {
+ InputStream orig_stream = uco.getInputStream();
+ String charset;
+ String encoding;
+ if (orig_stream == null) {
+ return orig_stream; // let it fail elsewhere
+ }
+ encoding = uco.getContentEncoding();
+ // not set -> return
+ if (encoding != null) {
+ if (encoding.equalsIgnoreCase("gzip")) {
+ orig_stream = new GZIPInputStream(orig_stream);
+ }
+ }
+ charset = getCharacterEncoding(ac, uco);
+ if ((charset == null) || (charset.regionMatches(true, 0, "utf", 0, 3))) {
+ UnicodeInputStream is = new UnicodeInputStream(orig_stream);
+ charset = is.getEncodingFromStream();
+ if (charset != null) {
+ ac.setCharsetForURL(uco.getURL(), charset);
+ }
+ return is;
+ }
+ return orig_stream;
}
- public static String getCharacterEncoding(ApplContext ac,
- URLConnection uco)
- {
- String charset = ac.getCharsetForURL(uco.getURL());
- if (charset != null) {
- return charset;
- }
- String mtypestr = uco.getContentType();
- if (mtypestr == null) {
- return mtypestr;
- }
- MimeType mt;
- try {
- mt = new MimeType(mtypestr);
- } catch (MimeTypeFormatException mex) {
- return null;
- }
- charset = mt.getParameterValue("charset");
- if (charset != null) {
- ac.setCharsetForURL(uco.getURL(), charset);
- }
- return charset;
+ public static String getCharacterEncoding(ApplContext ac,
+ URLConnection uco) {
+ String charset = ac.getCharsetForURL(uco.getURL());
+ if (charset != null) {
+ return charset;
+ }
+ String mtypestr = uco.getContentType();
+ if (mtypestr == null) {
+ return mtypestr;
+ }
+ MimeType mt;
+ try {
+ mt = new MimeType(mtypestr);
+ } catch (MimeTypeFormatException mex) {
+ return null;
+ }
+ charset = mt.getParameterValue("charset");
+ if (charset != null) {
+ ac.setCharsetForURL(uco.getURL(), charset);
+ }
+ return charset;
}
+
/**
*
*/
public static void main(String[] args)
- throws Exception
- {
+ throws Exception {
int c;
- InputStream in = HTTPURL.getConnection(
- getURL(args[0])).getInputStream();
+ InputStream in = HTTPURL.getConnection(
+ getURL(args[0])).getInputStream();
- while ((c = in.read()) != -1) {
- System.err.print((char) c);
- }
- System.exit(0);
+ while ((c = in.read()) != -1) {
+ System.err.print((char) c);
+ }
+ System.exit(0);
}
}
Received on Tuesday, 23 August 2011 09:23:59 UTC