Class 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.
    • 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
      • passwordAuthentication

        private java.lang.ThreadLocal<java.net.PasswordAuthentication> passwordAuthentication
      • inited

        private boolean inited
      • offline

        private volatile java.util.concurrent.atomic.AtomicBoolean offline
      • promiseFactory

        private final org.osgi.util.promise.PromiseFactory promiseFactory
      • retries

        int retries
      • retryDelay

        long retryDelay
    • Constructor Detail

      • HttpClient

        public HttpClient()
    • Method Detail

      • init

        void init()
      • close

        public void close()
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.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 interface URLConnector
        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 interface URLConnector
        Parameters:
        url - The remote URL.
        Returns:
        An instance of TaggedData; note that the TaggedData.getTag() method may return null if the resource has no tag.
        Throws:
        java.io.IOException - @since 1.1
        java.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 be null if the remote resource is unchanged.
        Specified by:
        connectTagged in interface URLConnector
        Parameters:
        url - The remote URL.
        tag - The last known tag value for the resource.
        Returns:
        An instance of TaggedData, or null if the resource has not modified (i.e., if it has the same tag value).
        Throws:
        java.io.IOException - @since 1.1
        java.lang.Exception
      • 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
      • 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)
      • 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()
      • reportSettings

        public void reportSettings​(java.util.Formatter out)
      • retries

        public HttpClient retries​(int retries)
      • retryDelay

        public HttpClient retryDelay​(int retryDelay)
      • validateURI

        public java.lang.String validateURI​(java.net.URI u)
        Validate a URI to see if it is supported by this client
        Parameters:
        u - the uri
        Returns:
        null if ok, otherwise a reason why it is invalid