Skip to content
Marcelo Riss edited this page Dec 22, 2023 · 7 revisions

Requirements Draft

Extensible Async Http Client

Registered method methods:

  • call(Map) - parameters
  • call(Map, Configurator) - Configurator with fluid API
  • getParent (implemented at Abstract class returning "default" string by default)

Server methods:

  • getRegisteredMethods

Implementation notes:

  • All logs will be level INFO of slf4j. We can make this configurable with more fluid api
  • Use fluid API at the moment of configuring the calling
  • registeredMethodName
  • map with parameters <String, Object>
    • Object can be string or
    • Collection: at this case, all elements will be repeated with same parameter name
    • Multipart binary file: at this case we should also send the mime type
  • failOnError: default false
  • logOnError: default true
  • logOnSuccess: default true
  • logConnectionParameters: default: true
  • implement using a server having multiple methods children of multiples servers. implement a default server which will be parent of all service methods by default
    • inject children service methods into the server using iPojo default injection for collections ???
  • Implement configurator class with fluid API and initial HTTP connection configuration (timeout, connection method, response codes to handle etc.)
  • Three layers of default configurator objects following the same fluid interface:
    • per server
    • per method
    • per connection
  • Two object to configure connections, per server
    • HttpConnector (commons-http, java URL.connect, Async Http Client)
      • Connector shoud return if it is assync or not
    • HttpAssyncProvider (implementation of an assync http connection)
      • In case the HttpConnector instance return true for isAssync, this should deffer to it for assync way of connection.
    • Maybe use AbstractFactory to attach connection management objects propertly?
  • Use single listener class with success, connection and error processing as separated processes.
    • connection with http connection code.
    • success with parsed content. define parsing and translation sub-systems.
    • error in case of throwable.
    • define pre-condition assync check returning a boolean
    • define a more complete workflow having progress information, in case of sending multiple items using multiple connections. Investigate a "method collection" decorator to implement this.
      • Method type allowing execution of multiple method calls or calling the same method multiple times with different parameters.
  • Automatically implement configurable number of tentatives in case of connection Exception.
  • Allows direct connection by GET using jsessionid parameter. Handle exceptions where method calls use this method, in despite of login process is already completed.
  • Encapsulate login/session creation process using JAAS.