Hello everyone, ... we have an ongoing effort to tackle some of the technical debt that accumulated over the years. One of the areas that need some polishing is type-safety. Most of you know that we do manual JSON parsing (not only) in the REST API layer. From there command wrapper objects are created that in turn are delegated to our command processing infrastructure. Because the different services/API endpoints handle different types of data it was decided in the past to boil everything down to the least common denominator: a variable of type string.
Those that worked in these areas know that the developer experience with that type (pun intended) of variables is challenging, e.g. when you do refactoring. But that's only one very obvious implication. There are also performance and reliability related problems, and a whole bunch of associated boilerplate code that needs to be maintained. We have an opportunity (some dedicated resources) that will allow us to improve on those issues, but tackling this only on the surface (i.e. the REST API layer) where this problem is most visible would not address the source of the issue. Where all the lack of type information is actually originating from is the central command processing service that we currently have upstream. Besides the lack of type information there are also some reliability (thread congestion, relatively high error rate) and performance (synchronous processing) issues that need to be addressed. That's why I am proposing a from the ground up clean implementation of this critical component. Before I duplicate too much in this message, please go to: - FISP (Fineract Significant Improvement Proposal): https://cwiki.apache.org/confluence/display/FINERACT/FSIP-5%3A+New+command+processing+infrastructure - Jira ticket: https://issues.apache.org/jira/browse/FINERACT-2169 - pull request: https://github.com/apache/fineract/pull/4281 As you can see there is initial code available. There is a fully working unit test that demonstrates how the different moving parts would work together. And there is an initial smoke test available (can be improved to be more realistic). Please let me know what you think and if you agree with the strategy on how we should proceed (please read the wiki page). Please send your input/suggestions and leave your comments here. Cheers, Aleks