org.apache.hc.core5.testing.framework

## 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 Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static String` | `BODY`
    `static String` | `CONTENT_TYPE`
    `static String` | `HEADERS`
    `static String` | `METHOD`
    `static String` | `NAME`
    `static String` | `PATH`
    `static String` | `PROTOCOL_VERSION`
    `static String` | `QUERY`
    `static String` | `REQUEST`
    `static String` | `RESPONSE`
    `static String` | `STATUS`
    `static String` | `TIMEOUT`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ClientPOJOAdapter()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `assertRequestSupported(Map<String,Object> request)` Assert that the request is supported
    `String` | `checkRequestSupport(Map<String,Object> request)` Check if a request is supported.
    `abstract Map<String,Object>` | `execute(String defaultURI, Map<String,Object> request)` Execute an HTTP request.
    `abstract String` | `getClientName()` Name of the HTTP Client that this adapter uses.
    `Map<String,Object>` | `modifyRequest(Map<String,Object> request)` Modify the request.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### BODY

          public static final String BODY

      See Also:
        Constant Field Values

    - #### CONTENT_TYPE

          public static final String CONTENT_TYPE

      See Also:
        Constant Field Values

    - #### HEADERS

          public static final String HEADERS

      See Also:
        Constant Field Values

    - #### METHOD

          public static final String METHOD

      See Also:
        Constant Field Values

    - #### NAME

          public static final String NAME

      See Also:
        Constant Field Values

    - #### PATH

          public static final String PATH

      See Also:
        Constant Field Values

    - #### PROTOCOL_VERSION

          public static final String PROTOCOL_VERSION

      See Also:
        Constant Field Values

    - #### QUERY

          public static final String QUERY

      See Also:
        Constant Field Values

    - #### REQUEST

          public static final String REQUEST

      See Also:
        Constant Field Values

    - #### RESPONSE

          public static final String RESPONSE

      See Also:
        Constant Field Values

    - #### STATUS

          public static final String STATUS

      See Also:
        Constant Field Values

    - #### TIMEOUT

          public static final String TIMEOUT

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### ClientPOJOAdapter

          public ClientPOJOAdapter()

  - ### Method Detail

    - #### 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.

Copyright © 2005–2022 The Apache Software Foundation. All rights reserved.