Class ClientPOJOAdapter

java.lang.Object
org.apache.hc.core5.testing.framework.ClientPOJOAdapter
Direct Known Subclasses:
ClassicTestClientAdapter

public abstract class ClientPOJOAdapter extends Object

This adapter expects a request to be made up of POJOs such as Maps and Lists. In Groovy the request could be expressed like this:


 def request = [
                   path    : "a/path",
                   method  : "GET",
                   query   : [
                                parm1 : "1",
                                parm2 : "2",
                             ]
                   headers : [
                                header1 : "stuff",
                                header2 : "more_stuff",
                             ]
                   contentType : "application/json",
                   body        : '{"location" : "home" }',
                ]
 

The adapter will translate this request into calls specific to a particular HTTP client.

The response is then returned with POJOs with this structure:


 def response = [
                    status      : 200,
                    headers     : [
                                      header1 : "response_stuff",
                                  ]
                    contentType : "application/json",
                    body        : '{"location" : "work" }',
                ]
 
Since:
5.0
  • Field Details

  • Constructor Details

    • ClientPOJOAdapter

      public ClientPOJOAdapter()
  • Method Details

    • getClientName

      public abstract String getClientName()
      Name of the HTTP Client that this adapter uses.
      Returns:
      name of the HTTP Client.
    • execute

      public abstract Map<String,Object> execute(String defaultURI, Map<String,Object> request) throws Exception
      Execute an HTTP request.
      Parameters:
      defaultURI - the URI used by default. The path in the request is usually appended to it.
      request - the request as specified above.
      Returns:
      the response to the request as specified above.
      Throws:
      Exception - in case of a problem
    • checkRequestSupport

      public String checkRequestSupport(Map<String,Object> request)

      Check if a request is supported.

      Usually called directly by a testing framework. If an HTTP client does not support a particular request, a non-null reason should be returned. Otherwise, if the request is supported, return null.

      If this method is overridden, then the execute method should probably call assertRequestSupported() at the beginning.

      Parameters:
      request - the request as specified above.
      Returns:
      null if the request is supported; Otherwise, return a reason.
    • assertRequestSupported

      public void assertRequestSupported(Map<String,Object> request) throws Exception

      Assert that the request is supported

      Usually called by the execute method. Throws an exception if the request is not supported.

      Parameters:
      request - the request as specified above.
      Throws:
      Exception - if the request is not supported.
    • modifyRequest

      public Map<String,Object> modifyRequest(Map<String,Object> request)

      Modify the request.

      In a testing context, a testing framework can call this method to allow the adapter to change the request. The request is then given to a special request handler of the in-process HttpServer which will later check an actual HTTP request against what is expected.

      In a production context, this is called by the execute method (if at all).

      Parameters:
      request - the request as specified above.
      Returns:
      the same request or a modification of it.