Client Library

Client module which invokes Custom Processing Settings should import cps-client-port and use CustomProcessingSettingsClientPort provided interface to invoke CPS service logic.

Following Maven dependency should be added:

<dependency>
    <groupId>com.iconsolutions.ipf.cps</groupId>
    <artifactId>cps-client-port</artifactId>
    <version>${custom-processing-settings-api.version}</version>
</dependency>

Custom Processing Settings currently supports connector implementation of client port interfaces.

Following Maven dependency should be added:

<dependency>
    <groupId>com.iconsolutions.ipf.cps</groupId>
    <artifactId>cps-client-connector</artifactId>
    <version>${custom-processing-settings-api.version}</version>
</dependency>

How to configure client library

As mentioned, client implementation supports HTTP connector transport. HTTP client configuration:

ipf.custom-processing-settings-api {
  http.client {
    host = "localhost"
    port = "8080"
  }
}

The default connector configuration can be overridden. The provided configuration:

ipf.custom-processing-settings-api {
  connector {
    get-custom-processing-settings = ${ipf.custom-processing-settings-api.default-connector}
  }

  default-connector {
    resiliency-settings {
      # Determines the maximum number of retries to be made. Note that this includes the first failed attempt.
      max-attempts = 2
      # Retry if HTTP error code is in the list
      retryable-status-codes = [500, 503]
      # Determines the minimum number of calls (within a sliding window period) that need to be made before the circuit breaker can calculate the error rate to determine the transport health.
      minimum-number-of-calls = 10
    }
  }
}

CustomProcessingSettingsClientConnector

Example of how to use this connector:

GetCustomProcessingSettingsCriteria getCustomProcessingSettingsCriteria = GetCustomProcessingSettingsCriteria.builder()
                .processingEntity("001")
                .settingCategories(List.of("InitiationSettings", "ExecutionSettings"))
                .settingName("paymentTypes")
                .build();
 CompletionStage<Response<CustomProcessingSettingsResponseDto>> response = customProcessingSettingsClientPort.getCustomProcessingSettings(processingContext, supportingContext, getCustomProcessingSettingsCriteria);