Java Unified SDK v9.0.0

We are releasing the next major version of the Java SDK - version 9.0.0. The full release can be found here

Note: Version 9.x of the SDK has aspects that are not backward compatible with 8.x. We are detailing the differences in our documentation.


Client Class Breakdown

The Client class was very large, at over 2,000 lines. To make this easier to work on and more testable, we have:

  • Implemented a facade for the client
  • Create a class to handle generic REST GET, PUT, POST, and DELETE
  • Created separate classes for each resource, providing a better representation of the API
  • Add unit and integration tests for new client classes

Implement POS Facade

Prior to version 9.0.0, we had two separate SDKs, the "Light" SDK, which could only use the POS facade, and the "Full" SDK, which used the merchant and payout facades. This created the need for additional effort both in maintaining and implementing the SDK.

As of version 9.0.0, the SDK supports both methods. You can use just the POS facade, which is limited in feature set but does not require signed requests (no private key to manage) or with the merchant/payout facade, which has more functionality but is more complex to implement.

This provides an easier upgrade path and reduces the duplicate work of maintaining two separate SDKs regarding dependency upgrades, bug fixes, etc.

Functional Test Suite

A functional test suite has been added to the codebase that will run against the test API. Due to there being so many outside variables from external resources, this does not run in the GitHub Actions pipeline.

Other Notes

  • Added missing fields to models
  • Updated DocBlocks to use new documentation site
  • Improved client creation to use a singleton pattern, to prevent unnecessary re-instantiation
  • General cleanup, added additional missing fields, added links to documentation
  • Added a setup script that's easy to use from Maven

Bug Fixes

  • Add "Request a webhook to be resent"
  • Add "Retrieve an event token"
  • Add "Retrieve all the rates for a given cryptocurrency"
  • Add "Retrieve the rates for a cryptocurrency / fiat pair"
  • Add refundRequestEid to Refund