Package aQute.bnd.http
Class HttpClient
- java.lang.Object
-
- aQute.bnd.http.HttpClient
-
- All Implemented Interfaces:
URLConnector
,java.io.Closeable
,java.lang.AutoCloseable
public class HttpClient extends java.lang.Object implements java.io.Closeable, URLConnector
A simple Http Client that inter-works with the bnd registry. It provides an easy way to construct a URL request. The request is then decorated with third parties that are in the bnd registry for proxies and authentication models.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) class
HttpClient.HttpConnection<T>
-
Field Summary
Fields Modifier and Type Field Description private URLCache
cache
(package private) static JSONCodec
codec
private java.util.List<URLConnectionHandler>
connectionHandlers
private ConnectionSettings
connectionSettings
(package private) static long
FINAL_TIMEOUT
private boolean
inited
(package private) static long
INITIAL_TIMEOUT
(package private) static org.slf4j.Logger
logger
(package private) static long
MAX_RETRY_DELAY
private java.util.concurrent.atomic.AtomicBoolean
offline
private java.lang.ThreadLocal<java.net.PasswordAuthentication>
passwordAuthentication
private org.osgi.util.promise.PromiseFactory
promiseFactory
private java.util.List<ProxyHandler>
proxyHandlers
private Registry
registry
private Reporter
reporter
(package private) int
retries
(package private) long
retryDelay
static java.text.SimpleDateFormat
sdf
Deprecated.
-
Constructor Summary
Constructors Constructor Description HttpClient()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addProxyHandler(ProxyHandler proxyHandler)
void
addURLConnectionHandler(URLConnectionHandler handler)
HttpRequest<java.lang.Object>
build()
URLCache
cache()
void
close()
java.io.InputStream
connect(java.net.URL url)
Connect to the specified URL.TaggedData
connectTagged(java.net.URL url)
Connect to the specified URL, also returning the ETag if available.TaggedData
connectTagged(java.net.URL url, java.lang.String tag)
Connect to the specified URL while providing the last known tag for the remote resource; the response will benull
if the remote resource is unchanged.<T> T
connectWithProxy(ProxyHandler.ProxySetup proxySetup, java.util.concurrent.Callable<T> r)
(package private) java.io.InputStream
createProgressWrappedStream(java.io.InputStream inputStream, java.lang.String name, int size, ProgressPlugin.Task task, long timeout)
URLConnectionHandler
findMatchingHandler(java.net.URL url)
java.io.File
getCacheFileFor(java.net.URI url)
private java.util.Collection<? extends ProxyHandler>
getProxyHandlers()
ProxyHandler.ProxySetup
getProxySetup(java.net.URL url)
Reporter
getReporter()
private java.util.Collection<? extends URLConnectionHandler>
getURLConnectionHandlers()
java.lang.String
getUserFor(java.lang.String base)
(package private) void
init()
boolean
isOffline()
java.net.URI
makeDir(java.net.URI uri)
org.osgi.util.promise.PromiseFactory
promiseFactory()
void
readSettings(Processor processor)
void
reportSettings(java.util.Formatter out)
HttpClient
retries(int retries)
HttpClient
retryDelay(int retryDelay)
<T> T
send(HttpRequest<T> request)
TaggedData
send0(HttpRequest<?> request)
(package private) <T> org.osgi.util.promise.Promise<T>
sendAsync(HttpRequest<T> request)
private <T> org.osgi.util.promise.Promise<T>
sendAsync(HttpRequest<T> request, int retries, long delay)
void
setCache(java.io.File cache)
void
setLog(java.io.File log)
void
setOffline(java.util.concurrent.atomic.AtomicBoolean offline)
void
setRegistry(Registry registry)
void
setReporter(Reporter reporter)
java.lang.String
toName(java.net.URI url)
-
-
-
Field Detail
-
logger
static final org.slf4j.Logger logger
-
sdf
@Deprecated public static final java.text.SimpleDateFormat sdf
Deprecated.
-
INITIAL_TIMEOUT
static final long INITIAL_TIMEOUT
-
FINAL_TIMEOUT
static final long FINAL_TIMEOUT
-
MAX_RETRY_DELAY
static final long MAX_RETRY_DELAY
-
proxyHandlers
private final java.util.List<ProxyHandler> proxyHandlers
-
connectionHandlers
private final java.util.List<URLConnectionHandler> connectionHandlers
-
passwordAuthentication
private java.lang.ThreadLocal<java.net.PasswordAuthentication> passwordAuthentication
-
inited
private boolean inited
-
codec
static final JSONCodec codec
-
cache
private URLCache cache
-
registry
private Registry registry
-
reporter
private Reporter reporter
-
offline
private volatile java.util.concurrent.atomic.AtomicBoolean offline
-
promiseFactory
private final org.osgi.util.promise.PromiseFactory promiseFactory
-
connectionSettings
private ConnectionSettings connectionSettings
-
retries
int retries
-
retryDelay
long retryDelay
-
-
Method Detail
-
init
void init()
-
close
public void close()
- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
-
connect
public java.io.InputStream connect(java.net.URL url) throws java.lang.Exception
Description copied from interface:URLConnector
Connect to the specified URL.- Specified by:
connect
in interfaceURLConnector
- Throws:
java.io.IOException
java.lang.Exception
-
connectTagged
public TaggedData connectTagged(java.net.URL url) throws java.lang.Exception
Description copied from interface:URLConnector
Connect to the specified URL, also returning the ETag if available.- Specified by:
connectTagged
in interfaceURLConnector
- Parameters:
url
- The remote URL.- Returns:
- An instance of
TaggedData
; note that theTaggedData.getTag()
method may returnnull
if the resource has no tag. - Throws:
java.io.IOException
- @since 1.1java.lang.Exception
-
connectTagged
public TaggedData connectTagged(java.net.URL url, java.lang.String tag) throws java.lang.Exception
Description copied from interface:URLConnector
Connect to the specified URL while providing the last known tag for the remote resource; the response will benull
if the remote resource is unchanged.- Specified by:
connectTagged
in interfaceURLConnector
- Parameters:
url
- The remote URL.tag
- The last known tag value for the resource.- Returns:
- An instance of
TaggedData
, ornull
if the resource has not modified (i.e., if it has the same tag value). - Throws:
java.io.IOException
- @since 1.1java.lang.Exception
-
build
public HttpRequest<java.lang.Object> build()
-
sendAsync
<T> org.osgi.util.promise.Promise<T> sendAsync(HttpRequest<T> request)
-
sendAsync
private <T> org.osgi.util.promise.Promise<T> sendAsync(HttpRequest<T> request, int retries, long delay)
-
send
public <T> T send(HttpRequest<T> request) throws java.lang.Exception
- Throws:
java.lang.Exception
-
send0
public TaggedData send0(HttpRequest<?> request) throws java.lang.Exception
- Throws:
java.lang.Exception
-
getProxySetup
public ProxyHandler.ProxySetup getProxySetup(java.net.URL url) throws java.lang.Exception
- Throws:
java.lang.Exception
-
connectWithProxy
public <T> T connectWithProxy(ProxyHandler.ProxySetup proxySetup, java.util.concurrent.Callable<T> r) throws java.lang.Exception
- Throws:
java.lang.Exception
-
findMatchingHandler
public URLConnectionHandler findMatchingHandler(java.net.URL url)
-
getURLConnectionHandlers
private java.util.Collection<? extends URLConnectionHandler> getURLConnectionHandlers()
-
getProxyHandlers
private java.util.Collection<? extends ProxyHandler> getProxyHandlers() throws java.lang.Exception
- Throws:
java.lang.Exception
-
createProgressWrappedStream
java.io.InputStream createProgressWrappedStream(java.io.InputStream inputStream, java.lang.String name, int size, ProgressPlugin.Task task, long timeout)
-
setCache
public void setCache(java.io.File cache)
-
setReporter
public void setReporter(Reporter reporter)
-
setRegistry
public void setRegistry(Registry registry)
-
addURLConnectionHandler
public void addURLConnectionHandler(URLConnectionHandler handler)
-
getReporter
public Reporter getReporter()
-
addProxyHandler
public void addProxyHandler(ProxyHandler proxyHandler)
-
setLog
public void setLog(java.io.File log) throws java.io.IOException
- Throws:
java.io.IOException
-
getUserFor
public java.lang.String getUserFor(java.lang.String base) throws java.net.MalformedURLException, java.lang.Exception
- Throws:
java.net.MalformedURLException
java.lang.Exception
-
toName
public java.lang.String toName(java.net.URI url) throws java.lang.Exception
- Throws:
java.lang.Exception
-
getCacheFileFor
public java.io.File getCacheFileFor(java.net.URI url) throws java.lang.Exception
- Throws:
java.lang.Exception
-
readSettings
public void readSettings(Processor processor) throws java.io.IOException, java.lang.Exception
- Throws:
java.io.IOException
java.lang.Exception
-
makeDir
public java.net.URI makeDir(java.net.URI uri) throws java.net.URISyntaxException
- Throws:
java.net.URISyntaxException
-
isOffline
public boolean isOffline()
-
setOffline
public void setOffline(java.util.concurrent.atomic.AtomicBoolean offline)
-
promiseFactory
public org.osgi.util.promise.PromiseFactory promiseFactory()
-
cache
public URLCache cache()
-
reportSettings
public void reportSettings(java.util.Formatter out)
-
retries
public HttpClient retries(int retries)
-
retryDelay
public HttpClient retryDelay(int retryDelay)
-
-