blob: 8c86615eb3e395c6af0d942df4e3aad471853209 [file] [log] [blame]
//------------------------------------------------------------------------------
// 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));
}
}