Class ApacheHttpClient4Executor

java.lang.Object
org.jboss.resteasy.client.core.executors.ApacheHttpClient4Executor
All Implemented Interfaces:
ClientExecutor

public class ApacheHttpClient4Executor extends Object implements ClientExecutor
Version:
$Revision: 1 $
  • Field Details

    • BYTE_MEMORY_UNIT

      public static final String BYTE_MEMORY_UNIT
      See Also:
    • KILOBYTE_MEMORY_UNIT

      public static final String KILOBYTE_MEMORY_UNIT
      See Also:
    • MEGABYTE_MEMORY_UNIT

      public static final String MEGABYTE_MEMORY_UNIT
      See Also:
    • GIGABYTE_MEMORY_UNIT

      public static final String GIGABYTE_MEMORY_UNIT
      See Also:
    • processId

      private static 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
    • fileUploadMemoryUnit

      private ApacheHttpClient4Executor.MemoryUnit fileUploadMemoryUnit
      The unit for fileUploadInMemoryThresholdLimit.

      Defaults to MB.
      See Also:
    • fileUploadTempFileDir

      private 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 Details

    • 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 Details

    • 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<String> extractHeaders(org.apache.http.HttpResponse response)
    • createRequest

      public ClientRequest createRequest(String uriTemplate)
      Specified by:
      createRequest in interface ClientExecutor
    • createRequest

      public ClientRequest createRequest(javax.ws.rs.core.UriBuilder uriBuilder)
      Specified by:
      createRequest in interface ClientExecutor
    • createBufferedStream

      protected InputStream createBufferedStream(InputStream is)
    • execute

      public ClientResponse execute(ClientRequest request) throws Exception
      Specified by:
      execute in interface ClientExecutor
      Throws:
      Exception
    • 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:
    • createHttpMethod

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

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

      protected org.apache.http.HttpEntity buildEntity(ClientRequest request) throws IOException
      Build the HttpEntity to be sent to the Service as part of (POST) request. Creates a off-memory ApacheHttpClient4Executor.FileExposingFileEntity or a regular in-memory ByteArrayEntity depending on if the request OutputStream fit into memory when built by calling writeRequestBodyToOutputStream(ClientRequest).
      Parameters:
      request - -
      Returns:
      - the built HttpEntity
      Throws:
      IOException - -
    • writeRequestBodyToOutputStream

      private org.apache.commons.io.output.DeferredFileOutputStream writeRequestBodyToOutputStream(ClientRequest request) throws 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:
      IOException - -
    • getMemoryUnitMultiplier

      private int getMemoryUnitMultiplier()
      Returns:
      - the constant to multiply fileUploadInMemoryThresholdLimit with based on fileUploadMemoryUnit enumeration value.
    • getTempfilePrefix

      protected 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(File tempRequestFile, 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(File pTempFileDir)
      Parameters:
      pTempFileDir - the tempFileDir to set
    • setFileUploadMemoryUnit

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

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

      public void close()
      Specified by:
      close in interface ClientExecutor
    • isClosed

      public boolean isClosed()
    • finalize

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