-
Story
-
Resolution: Done
-
Normal
-
None
-
None
-
False
-
-
False
-
None
-
Unset
-
None
-
-
We have multiple Java clients now which have some cross cutting concerns copied between both libraries:
- Client instantiation. This should always be wrapped to allow us to inject / update middleware between library releases without code changes required from services using the libraries.
- Authentication. Currently this code is copied between libraries.
- Config. Some config abstractions may be able to be pulled out (especially to support common concerns in a library, like authentication)
Ideally no code should be copied except in trivial cases. So, a Java library should be factored out which includes common code, which the client libraries then depend on.
Note: Managing versioning and dependencies for this library may be tedious when maintaining the multiple clients. We should consider bringing all Java clients into a common repo with different Maven modules so they can be changed and versioned together. Otherwise incorporating a change in the common lib to the libraries will require 1 pull request, publishing a new version, then 2 follow up PRs to include the new version, and then publishing the new version of those libraries. With one multi module repo this would be 1 PR followed by 1 bulk publish.