Class ApacheHttpClient4Executor

  • All Implemented Interfaces:
    ClientExecutor

    public class ApacheHttpClient4Executor
    extends java.lang.Object
    implements ClientExecutor
    Version:
    $Revision: 1 $
    • Field Detail

      • BYTE_MEMORY_UNIT

        public static final java.lang.String BYTE_MEMORY_UNIT
        See Also:
        Constant Field Values
      • KILOBYTE_MEMORY_UNIT

        public static final java.lang.String KILOBYTE_MEMORY_UNIT
        See Also:
        Constant Field Values
      • MEGABYTE_MEMORY_UNIT

        public static final java.lang.String MEGABYTE_MEMORY_UNIT
        See Also:
        Constant Field Values
      • GIGABYTE_MEMORY_UNIT

        public static final java.lang.String GIGABYTE_MEMORY_UNIT
        See Also:
        Constant Field Values
      • processId

        private static java.lang.String processId
        Used to build temp file prefix.
      • httpClient

        protected org.apache.http.client.HttpClient httpClient
      • createdHttpClient

        protected boolean createdHttpClient
      • httpContext

        protected org.apache.http.protocol.HttpContext httpContext
      • closed

        protected boolean closed
      • fileUploadInMemoryThresholdLimit

        private int fileUploadInMemoryThresholdLimit
        For uploading File's over JAX-RS framework, this property, together with fileUploadMemoryUnit, defines the maximum File size allowed in memory. If fileSize exceeds this size, it will be stored to fileUploadTempFileDir.

        Defaults to 1 MB
      • fileUploadTempFileDir

        private java.io.File fileUploadTempFileDir
        Temp directory to write output request stream to. Any file to be uploaded has to be written out to the output request stream to be sent to the service and when the File is too huge the output request stream is written out to the disk rather than to memory.

        Defaults to JVM temp directory.
      • responseBufferSize

        protected int responseBufferSize
    • Constructor Detail

      • ApacheHttpClient4Executor

        public ApacheHttpClient4Executor()
      • ApacheHttpClient4Executor

        public ApacheHttpClient4Executor​(org.apache.http.client.HttpClient httpClient)
      • ApacheHttpClient4Executor

        public ApacheHttpClient4Executor​(org.apache.http.client.HttpClient httpClient,
                                         org.apache.http.protocol.HttpContext httpContext)
    • Method Detail

      • checkClientExceptionMapper

        private static void checkClientExceptionMapper()
      • getResponseBufferSize

        public int getResponseBufferSize()
        Response stream is wrapped in a BufferedInputStream. Default is 8192. Value of 0 will not wrap it. Value of -1 will use a SelfExpandingBufferedInputStream
        Returns:
      • setResponseBufferSize

        public void setResponseBufferSize​(int responseBufferSize)
        Response stream is wrapped in a BufferedInputStream. Default is 8192. Value of 0 will not wrap it. Value of -1 will use a SelfExpandingBufferedInputStream
        Parameters:
        responseBufferSize -
      • getHttpClient

        public org.apache.http.client.HttpClient getHttpClient()
      • getHttpContext

        public org.apache.http.protocol.HttpContext getHttpContext()
      • setHttpContext

        public void setHttpContext​(org.apache.http.protocol.HttpContext httpContext)
      • extractHeaders

        public static CaseInsensitiveMap<java.lang.String> extractHeaders​(org.apache.http.HttpResponse response)
      • createBufferedStream

        protected java.io.InputStream createBufferedStream​(java.io.InputStream is)
      • cleanUpAfterExecute

        protected void cleanUpAfterExecute​(org.apache.http.client.methods.HttpRequestBase httpMethod)
        If passed httpMethod is of type HttpPost then obtain its entity. If the entity has an enclosing File then delete it by invoking this method after the request has completed. The entity will have an enclosing File only if it was too huge to fit into memory.
        Parameters:
        httpMethod - - the httpMethod to clean up.
        See Also:
        writeRequestBodyToOutputStream(ClientRequest)
      • createHttpMethod

        private org.apache.http.client.methods.HttpRequestBase createHttpMethod​(java.lang.String url,
                                                                                java.lang.String restVerb)
      • loadHttpMethod

        public void loadHttpMethod​(ClientRequest request,
                                   org.apache.http.client.methods.HttpRequestBase httpMethod)
                            throws java.lang.Exception
        Throws:
        java.lang.Exception
      • writeRequestBodyToOutputStream

        private org.apache.commons.io.output.DeferredFileOutputStream writeRequestBodyToOutputStream​(ClientRequest request)
                                                                                              throws java.io.IOException
        Creates the request OutputStream, to be sent to the end Service invoked, as a DeferredFileOutputStream.
        Parameters:
        request - -
        Returns:
        - DeferredFileOutputStream with the ClientRequest written out per HTTP specification.
        Throws:
        java.io.IOException - -
      • getTempfilePrefix

        protected java.lang.String getTempfilePrefix()
        Use context information, which will include node name, to avoid conflicts in case of multiple VMS using same temp directory location.
        Returns:
        -
      • handleFileNotDeletedError

        private void handleFileNotDeletedError​(java.io.File tempRequestFile,
                                               java.lang.Exception ex)
        Log that the file did not get deleted but prevent the request from failing by eating the exception. Register the file to be deleted on exit, so it will get deleted eventually.
        Parameters:
        tempRequestFile - -
        ex - - a null may be passed in which case this param gets ignored.
      • setHttpClient

        void setHttpClient​(org.apache.http.client.HttpClient pHttpClient)
        Setter for the HttpClient to which this class delegates the actual HTTP call. Note that this class acts as the adapter between RestEasy and Apache HTTP Component library.
        Parameters:
        pHttpClient - -
      • setFileUploadInMemoryThresholdLimit

        public void setFileUploadInMemoryThresholdLimit​(int pInMemoryThresholdLimit)
        Parameters:
        pInMemoryThresholdLimit - - the inMemoryThresholdLimitMB to set
      • setFileUploadTempFileDir

        public void setFileUploadTempFileDir​(java.io.File pTempFileDir)
        Parameters:
        pTempFileDir - the tempFileDir to set
      • setFileUploadMemoryUnit

        public void setFileUploadMemoryUnit​(java.lang.String pMemoryUnit)
        Parameters:
        pMemoryUnit - the memoryUnit to set
      • commitHeaders

        public void commitHeaders​(ClientRequest request,
                                  org.apache.http.client.methods.HttpRequestBase httpMethod)
      • isClosed

        public boolean isClosed()
      • finalize

        public void finalize()
                      throws java.lang.Throwable
        Overrides:
        finalize in class java.lang.Object
        Throws:
        java.lang.Throwable