//------------------------------------------------------------------------------ // Copyright (c) 2005, 2006 IBM Corporation and others. // All rights reserved. This program and the accompanying materials // are made available under the terms of the Eclipse Public License v1.0 // which accompanies this distribution, and is available at // http://www.eclipse.org/legal/epl-v10.html // // Contributors: // IBM Corporation - initial implementation //------------------------------------------------------------------------------ package org.eclipse.epf.publishing.util.http; import java.io.IOException; import java.io.PrintStream; import java.net.URL; import sun.net.www.http.HttpClient; class HttpURLConnectionTimeout extends sun.net.www.protocol.http.HttpURLConnection { private int timeout; private HttpTimeoutHandler timeoutHandler; HttpURLConnectionTimeout(URL u, HttpTimeoutHandler handler, int timeout) throws IOException { super(u, handler); this.timeout = timeout; timeoutHandler = handler; } HttpURLConnectionTimeout(URL u, String host, int port, int timeout) throws IOException { super(u, host, port); this.timeout = timeout; } public void connect() throws IOException { if (connected) { return; } try { if ("http".equals(url.getProtocol()) /* && !failedOnce <- PRIVATE */ ) { //$NON-NLS-1$ // for safety's sake, as reported by KLGroup synchronized (url) { http = HttpClientTimeout.GetNew(url, timeout); } } else { // make sure to construct new connection if first // attempt failed http = new HttpClientTimeout(url, timeoutHandler.getProxy(), timeoutHandler.getProxyPort(), timeout); } ps = (PrintStream)http.getOutputStream(); } catch (IOException e) { throw e; } // this was missing from the original version connected = true; } protected HttpClient getProxiedClient(URL url, String s, int i) throws IOException { return (HttpClient)new HttpClientTimeout(url, s, i, timeout); } /** * Create a new HttpClient object, bypassing the cache of * HTTP client objects/connections. * * @param url the URL being accessed */ protected HttpClient getNewClient(URL url) throws IOException { return (HttpClient)(new HttpClientTimeout (url, (String)null, -1, timeout)); } }