Skip to content

Instantly share code, notes, and snippets.

@hmg65
Last active October 3, 2023 08:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hmg65/430c1dd4d05b5f1bbd7081597ea90418 to your computer and use it in GitHub Desktop.
Save hmg65/430c1dd4d05b5f1bbd7081597ea90418 to your computer and use it in GitHub Desktop.
GSoC Summary

apchelogo gsoc_logo mifos_logo



Introducing Lombok to Reduce Getters/ Setters and Mapstruct to map REST DTO to Entity Objects

Student Info

Mentors Info

  • Benura Abeywardena
  • Manthan Surkar

Project Abstract

Mifos X and Apache Fineract is widely used by financial institutions of all different sizes and methodologies around the world. The purpose of this project is to increase the maintainability of Fineract and reduce the boilerplate code by introducing various libraries to the codebase. The major part of this project will include introducing Lombok and Mapstruct libraries to the codebase. Lombok will basically eliminate the Getter/Setter and constructors from the code. MapStruct library will generate 2-way mappings between DTO and internal domain classes. There were roughly 60 modules for which Lombok and Mapstruct needed to be implemented during this project. All of the imporvements are related to Apache Fineract Project.

GitHub Organization Repo

Apache Fineract

GitHub Forked Repo

Apache Fineract

PRs Merged - Apache Fineract [Lombok]

FinancialActivityAccount Module
Closure Module
GLAccount Module
ProducttoAccountMapping Module
Provisioning Module
Rule Module
AdHocQuery Module
Batch Module
BusinessDate Module
Cache Module
Configuration Module
CreditBureau Module
EntityAccess Module
Jobs Module
ReportMailingJobs Module

PRs Yet to Merged - Apache Fineract [Lombok]

JournalEntry Module
Cob Module
Commands Module
AccountNumberFormat Module
BulkImport Module
EmailCampaigns Module
SmsCampaigns Module
Codes Module
DataQueries Module
DocumentManagement Module
GCM Module
Hooks Module
Security Module
SMS Module
Survey Module

Modules for which PR Yet to Sumbit - Apache Fineract [Lombok]

There are approximately 20 modules for which PR is waiting to be submitted.

Work Summary

What Covered

Fineract Server

  • Implemented Lombok to each module subpackage-wise.
  • Data - annotate with @Data, @NoArgConstructor and @Accessors to eliminiate the boilerplate code such as Getters, Setters and constructors.
  • Domain - annotate with @Getter, @Setter @NoArgConstructor and @Accessors to reduce the boilerplate code such as Getters, Setters and constructors.
  • Service - annoate with @RequiredArgsConstructor to remove construcotrs in service class altogether.

What's left

  • Solving build errors (mainly integeration test error) related to some PRs.
  • PR submission for rest of the modules.

Future Work

  • Implement MapStruct for mapping DTO to Entity Objects

Detailed Description

Project Description
JIRA Ticket

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment