Compare commits

...
500 Commits
Author SHA1 Message Date
abraham.menyhartandAdam Saghy d6c10e8303 FINERACT-1724: Sonar fixes
Fineract Docker build - MariaDB / build (push) Canceled after 0s
Fineract Docker build - PostgreSQL / build (push) Canceled after 0s
Fineract Kafka Smoke / build (push) Canceled after 0s
Fineract Documentation build / build (push) Canceled after 0s
Fineract Build & Test - MariaDB / build (push) Canceled after 0s
Fineract Build & Test - MySQL / build (push) Canceled after 0s
Fineract Build & Test - PostgreSQL / build (push) Canceled after 0s
Fineract ActiveMQ Smoke / build (push) Canceled after 0s
2023-08-10 12:56:45 +02:00
abraham.menyhartandAdam Saghy 33c1aa7874 FINERACT-1724: Creating accrual entry should not be done by native queries 2023-08-10 12:55:31 +02:00
taskain7 b27653c055 [FINERACT-1965] Change date resolvement from SMART to STRICT 2023-08-09 00:08:26 +02:00
taskain7 38872a036f [FINERACT-1724] Transaction Summary With Asset Owner report typo fix 2023-08-08 13:23:08 +02:00
Adam Saghy d8882ac471 Revert "FINERACT-1905: Same day repayment + charge handling improvement"
This reverts commit 15838e5406

Except LoanCharge and liquibase changes. Those are unrelated. not causing any issues, and better to leave them for compatibility
2023-08-07 21:17:21 +02:00
taskain7 e29714a728 [FINERACT-1724] Transaction Summary With Asset Owner report typo fix 2023-08-07 16:56:54 +02:00
Ruchi DhamankarandAdam Saghy 315f62d8dc FINERACT-1958-Configuration-down-payment 2023-08-07 15:27:00 +02:00
taskain7 7559e90ce2 [FINERACT-1678] Configuration for enabling/disabling Loan COB 2023-08-07 14:32:39 +02:00
MkkorandAdam Saghy a04c8da659 FINERACT-1943 Fix submitted on date references 2023-08-07 13:42:54 +02:00
jmartaandAdam Saghy 5b3d088f7b FINERACT-1939: Hold Amount - should be debit 2023-08-07 13:42:30 +02:00
Peter BagrijandAdam Saghy 53ebbc6c46 FINERACT-1724
- kafka revision is also pinned.
2023-08-07 11:48:20 +02:00
Peter BagrijandArnold Gálovics 477b2fd091 FINERACT-1724
- setting the timezone for the unit test
2023-08-04 15:02:15 +02:00
Adam Saghy 15838e5406 FINERACT-1905: Same day repayment + charge handling improvement 2023-08-03 21:53:09 +02:00
Peter BagrijandAdam Saghy cd463168c1 FINERACT-1724
- activemq is pinned to 5.15.9-alpine
2023-08-03 11:52:20 +02:00
Peter KovacsandAdam Saghy 38f537ea8a FINERACT-1724 Loan account lock API fix 2023-08-02 23:44:57 +02:00
Janos HaberandAdam Saghy dbe71b8f7e FINERACT-1724: Fix Multi Disburse internal server error
- [x] Fix wrong mapping
- [x] Add empty hashmap for initialization
2023-08-02 15:57:06 +02:00
Adam Saghy 3869c19296 Revert "FINERACT-1905: Same day repayment + charge handling improvement"
This reverts commit c50fc832c1.
2023-08-01 17:12:05 +02:00
Adam Saghy c50fc832c1 FINERACT-1905: Same day repayment + charge handling improvement 2023-08-01 17:09:04 +02:00
Adam Saghy f640c790c3 FINERACT-1724: Fix update last cob date of loan update query 2023-08-01 14:07:50 +02:00
jmartaandAdam Saghy 987d414ac6 FINERACT-1724: fix sql injection pattern check 2023-08-01 14:05:31 +02:00
Adam Saghy 70b14e601e FINERACT-1724: Fix date handling of testRecurringDepositAccountWithClosureTypeTransferToSavings_WITH_HOLD_TAX 2023-08-01 12:59:24 +02:00
Peter BagrijandAdam Saghy a9b73aa9f6 FINERACT-1724
- Fixing broken kafka config
 - kafka image is pinned to 3.3.2
2023-08-01 10:10:13 +02:00
Peter BagrijandArnold Gálovics 7741340ef3 FINERACT-1724
- Supress error messages related to invalid maven pom model version in old eclipse artifacts.
2023-07-28 15:14:58 +02:00
Peter BagrijandAdam Saghy 3e193975ef FINERACT-1724
- no need to create a new loan product for each loan
 - unused variables removed.
2023-07-27 17:14:42 +02:00
woony-kimandAdam Saghy aaddb3141c FINERACT-1724: Refactoring SQLInjectionValidator 2023-07-27 15:22:19 +02:00
Janos HaberandAdam Saghy ea172db712 FINERACT-1954: Waive null pointer and due date fix
- [x] Fix Waive due date handle
- [x] Fix null pointer exception
- [x] Integration test
2023-07-27 13:37:43 +02:00
MkkorandAdam Saghy fe5d7cccee FINERACT-1943 Add SubmittedOnDate to Savings Transaction 2023-07-26 13:51:36 +02:00
Ruchi DhamankarandAdam Saghy dd8e0cf6e4 FINERACT-1724-Snooze-fee-due-date-payment-due-new-fee-failure 2023-07-26 11:01:37 +02:00
Adam Saghy 2e69071f35 FINERACT-1806: Fix sql syntax 2023-07-25 22:30:31 +02:00
Peter BagrijandArnold Gálovics 900d0c2827 FINERACT-1678
- ThreadPoolTaskExecutor task executor is added to COB workers which allows concurrent processing of chunks.
2023-07-25 18:52:23 +02:00
Adam SaghyandArnold Gálovics fc9525f966 FINERACT-1926: Asset externalization of non-active loans 2023-07-25 14:53:58 +02:00
Adam Saghy d11ca18cb2 FINERACT-1946: Change the loan transaction ordering 2023-07-25 14:46:08 +02:00
dependabot[bot]andArnold Gálovics b66a0a012f Bump actions/setup-java from 3.11.0 to 3.12.0
Bumps [actions/setup-java](https://github.com/actions/setup-java) from 3.11.0 to 3.12.0.
- [Release notes](https://github.com/actions/setup-java/releases)
- [Commits](https://github.com/actions/setup-java/compare/5ffc13f4174014e2d4d4572b3d74c3fa61aeb2c2...cd89f46ac9d01407894225f350157564c9c7cee2)

---
updated-dependencies:
- dependency-name: actions/setup-java
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-25 11:55:02 +02:00
Peter BagrijandArnold Gálovics c5aeae62d8 FINERACT-1824
- Documentation update for Kafka Support
 - Adding docker-compose-postgresql-kafka-msk.yml
 - application.properties ENV var fixed
2023-07-25 07:45:22 +02:00
abraham.menyhartandAdam Saghy 61915bbcc4 FINERACT-1724: Asset externalization of non-active loans 2023-07-24 20:29:08 +02:00
Arnold GalovicsandArnold Gálovics 7c80bf2ffc FINERACT-1724: Client search API fix when external ID is null 2023-07-24 15:55:43 +02:00
Arnold GalovicsandArnold Gálovics 81a41e7b7e FINERACT-1724: Compilation error fix 2023-07-24 10:41:50 +02:00
Peter KovacsandArnold Gálovics ddc3ce83f0 FINERACT-1724 LoansApiResourceSwagger fix 2023-07-24 10:41:50 +02:00
Peter BagrijandArnold Gálovics 32945c6573 FINERACT-1824
- Kafka support for remote batch jobs: cob
 - Kafka support for external events
2023-07-24 09:48:31 +02:00
Yash SanchetiandArnold Gálovics 866136ed31 FINERACT-1724 Migrate logging to SLF4J 2023-07-24 09:29:28 +02:00
Mend RenovateandArnold Gálovics 1aa881ee71 Update ghcr.io/navikt/mock-oauth2-server Docker tag to v1 2023-07-24 09:27:59 +02:00
dependabot[bot]andArnold Gálovics 9bc33043f3 Bump gradle/wrapper-validation-action
Bumps [gradle/wrapper-validation-action](https://github.com/gradle/wrapper-validation-action) from 064a97fb0b4cef86a65f09898c572382f3af10e0 to 56b90f209b02bf6d1deae490e9ef18b21a389cd4.
- [Release notes](https://github.com/gradle/wrapper-validation-action/releases)
- [Commits](https://github.com/gradle/wrapper-validation-action/compare/064a97fb0b4cef86a65f09898c572382f3af10e0...56b90f209b02bf6d1deae490e9ef18b21a389cd4)

---
updated-dependencies:
- dependency-name: gradle/wrapper-validation-action
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-24 08:51:33 +02:00
taskain7andArnold Gálovics 8fa1c4571a [FINERACT-1760] Client transaction by transaction external ID 2023-07-24 08:27:07 +02:00
MkkorandAdam Saghy a439952476 FINERACT-1911 Disable UnnecessaryDefaultInEnumSwitch 2023-07-21 13:20:05 +02:00
MkkorandAdam Saghy 9dc417efb1 FINERACT-1911 Assign datatable to Savings transaction 2023-07-21 13:20:05 +02:00
Peter BagrijandArnold Gálovics 572aa4d3bf FINERACT-1724
- pin localstack version
2023-07-21 11:01:19 +02:00
Jose Alberto HernandezandAdam Saghy 332da52730 FINERACT-1754: Fix Search API 2023-07-20 17:17:46 +02:00
taskain7andAdam Saghy 88635972eb [FINERACT-1953] Matured on date fix 2023-07-18 17:24:56 +02:00
Ruchi DhamankarandAdam Saghy d40c023a0d FINERACT-1724-Duplicate-repayment-schedule-on-second-disbursement 2023-07-17 21:36:44 +02:00
Adam Saghy 0a9657b774 FINERACT-1806: Stop recognizing income after charge-off 2023-07-17 21:35:44 +02:00
Peter KovacsandAdam Saghy 948af9ab2b FINERACT-1724 swagger fix 2023-07-17 11:25:07 +02:00
taskain7andAdam Saghy be935cd55b [FINERACT-1760] Loan product external id 2023-07-13 19:57:28 +02:00
Adam Saghy d65de7a8e9 FINERACT-1926: Add external id validation for buyback and sale 2023-07-11 17:08:04 +02:00
abraham.menyhartandAdam Saghy 1ef6b9d739 FINERACT-1724: Add index to m_loan_transaction_relation 2023-07-11 12:36:15 +02:00
taskain7andAdam Saghy 8dcb711e44 [FINERACT-1760] Client transactions APIs with external client ID 2023-07-11 11:30:51 +02:00
Peter BagrijandAdam Saghy 2afd9d35e7 FINERACT-1724
- Error handler is springified, exception mappers are retrieved as spring beans
 - backward compatibility is maintained
2023-07-10 16:56:12 +02:00
abraham.menyhartandAdam Saghy 749a77efac FINERACT-1724: Improve CoB performance by indices 2023-07-10 15:55:51 +02:00
Arnold GalovicsandArnold Gálovics 9c3393394e Changed mariadb healthcheck 2023-07-07 23:03:45 +02:00
Mend RenovateandArnold Gálovics b146b582aa Update mariadb Docker tag to v11 2023-07-07 23:03:45 +02:00
Arnold GalovicsandArnold Gálovics f412ee7529 Integration test fix 2023-07-07 23:03:32 +02:00
Mend RenovateandArnold Gálovics 191734461b Update non-major 2023-07-07 23:03:32 +02:00
Janos HaberandAdam Saghy 23486d7742 FINERACT-1926: COB Effective date fix
- [x] Add effectiveTo filter to decide which transaction is not cancelled or already closed
- [x] Integration test
- [x] Database change log for UQ key status + externalTransferId
2023-07-07 16:27:24 +02:00
taskain7 273787d249 [FINERACT-1678] LoanCOBFilterHelper call service instead of repository 2023-07-07 13:01:28 +02:00
Ruchi Dhamankarandtaskain7 c6008d60f8 FINERACT-1926-unnecessary-account-snapshot-event-denied-transfer 2023-07-06 22:29:57 +02:00
taskain7andAdam Saghy bffc61eb39 [FINERACT-1825] fixing integration tests failing on specific dates 2023-07-06 15:19:19 +02:00
Adam Saghy 43639bf0a3 FINERACT-1905: Distribution logic fix 2023-07-06 15:09:55 +02:00
Peter BagrijandArnold Gálovics b691ec4b1d FINERACT-1724 read timeout for fineract client is added. 2023-07-06 12:13:23 +02:00
dependabot[bot]andArnold Gálovics 09f4c049ab Bump actions/setup-node from 3.6.0 to 3.7.0
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 3.6.0 to 3.7.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c...e33196f7422957bea03ed53f6fbb155025ffc7b8)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-06 12:12:56 +02:00
abraham.menyhartandAdam Saghy 28747fecd1 FINERACT-1724: Approval limit calculation modification 2023-07-05 16:19:21 +02:00
Peter BagrijandAdam Saghy 1cb1372e68 FINERACT-1924
3 node configuration (1 manager, 2 workers) with activeMQ is added.
2023-07-05 16:19:11 +02:00
Arnold GalovicsandArnold Gálovics 232a954093 Fixes for dep upgrades 2023-07-05 15:54:41 +02:00
Arnold GalovicsandArnold Gálovics 7e61256a7b Excluded FastDoubleParser-NOTICE file from classpath check 2023-07-05 15:54:41 +02:00
Arnold GalovicsandArnold Gálovics eb6c5f90a3 Downgrade a few swagger deps and guava 2023-07-05 15:54:41 +02:00
Mend RenovateandArnold Gálovics a023a4e912 Update all non-major dependencies 2023-07-05 15:54:41 +02:00
Janos HaberandAdam Saghy 812a2825ee FINERACT-1926: Remove unnecessary cancel event
- [x] Remove events
2023-07-05 09:32:19 +02:00
Peter BagrijandArnold Gálovics 46cde14149 FINERACT-1724 - Code quality checks are optimized.
- the presense of license check is performed under the check gradle task which is implicitly executed when build task is called.
- errorProne plugin is enabled when build or check task is called.

As a result of the above execution time for unit tests from IDE is faster while the quality checks are still enforced.
2023-07-04 15:17:32 +02:00
Ruchi DhamankarandArnold Gálovics 9571a51025 FINERACT-1724-reversal-date-not-included-in-events 2023-07-03 14:49:40 +02:00
Peter BagrijandArnold Gálovics 479a52013d FINERACT-1678
- COB Partitioning tasks creates fully balanced id ranges where the number of the loans between the min max are matching with the defined pageSize.
2023-07-03 10:32:46 +02:00
dependabot[bot]andArnold Gálovics 1d8ee9acce Bump gradle/wrapper-validation-action
Bumps [gradle/wrapper-validation-action](https://github.com/gradle/wrapper-validation-action) from ccb4328a959376b642e027874838f60f8e596de3 to 064a97fb0b4cef86a65f09898c572382f3af10e0.
- [Release notes](https://github.com/gradle/wrapper-validation-action/releases)
- [Commits](https://github.com/gradle/wrapper-validation-action/compare/ccb4328a959376b642e027874838f60f8e596de3...064a97fb0b4cef86a65f09898c572382f3af10e0)

---
updated-dependencies:
- dependency-name: gradle/wrapper-validation-action
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-03 08:37:13 +02:00
Janos HaberandAdam Saghy 4c7c3544d2 FINERACT-1724: Fineract Idempotency status null fix
- [x] Return 500 when the idempotency status is inconsistent in the database
- [x] Unit test for the mapper to avoid NullPointerException
2023-06-30 13:33:57 +02:00
Adam Saghy 69a2ba0109 FINERACT-1724: Upgrade sonarqube plugin 2023-06-29 19:39:03 +02:00
taskain7 a119296a0e [FINERACT-1926] transaction summary report fixes 2023-06-28 19:47:03 +02:00
taskain7 e03decb84f [FINERACT-1926] transaction summary report fixes 2023-06-28 13:21:41 +02:00
Janos HaberandArnold Gálovics a90506c7e0 FINERACT-1926: Fineract Asset Externalization - Cancel
- [x] Latest transfer id fetching fix
2023-06-27 16:02:42 +02:00
abraham.menyhartandArnold Gálovics 852f7f80c9 FINERACT-1724: Liquibase script : trial balance summary report with asset owner 2023-06-27 14:12:22 +02:00
abraham.menyhartandArnold Gálovics 573b4bb998 FINERACT-1724: Loan product creation - duplicate short name fix 2023-06-27 13:30:02 +02:00
Peter BagrijandArnold Gálovics 0109d24934 FINERACT-1724 overrides default statusListener with NopStatusListener so jansi related missing class exception will not be shown. (The exception is irrelevant because intellij and windows terminal can already handle ansi color codes) 2023-06-27 13:05:46 +02:00
Ruchi DhamankarandArnold Gálovics 227f5746e5 FINERACT-1806-undo-charge-off-reverse-external-id-support 2023-06-26 12:56:24 +02:00
Peter BagrijandArnold Gálovics e6e08814ec FINERACT-1724 restore default build log level. 2023-06-26 12:18:12 +02:00
Janos HaberandAdam Saghy 0079780e30 FINERACT-1926: Fineract Asset Externalization - Cancel
- [x] Cancel API
- [x] Event raised on cancel
- [x] Integration test for cancel
2023-06-23 14:09:29 +02:00
Adam Saghy 90c10a5ade FINERACT-1806: Reverse-replay logic for Charge-off transaction 2023-06-23 08:46:52 +02:00
Arnold GalovicsandAdam Saghy df39965483 FINERACT-1724: Fixed avro schema to use primitive long instead of Object for LoanOwnershipTransferDataV1 2023-06-22 21:26:54 +02:00
Ruchi DhamankarandAdam Saghy d704d3d027 FINERACT-1724-COB-hardlocked-loans-and-inline-cob-issue 2023-06-22 10:21:43 +02:00
Ruchi DhamankarandArnold Gálovics 03fd2ac7ce FINERACT-1942-api-graceful-shutdown 2023-06-21 14:44:00 +02:00
Arnold GalovicsandArnold Gálovics cf9d102e19 FINERACT-1724: Internal server error when transaction related errors happen in batch executions 2023-06-21 10:17:48 +02:00
Renovate BotandArnold Gálovics 3b4b5e9109 Update dependency jakarta.servlet:jakarta.servlet-api to v6 2023-06-19 16:24:50 +02:00
Adam SaghyandArnold Gálovics d5686ed45a FINERACT-1926: Fix request validation 2023-06-16 20:58:38 +02:00
Adam Saghy 58d4cb6a8d FINERACT-1926: Remove unnecessary changes field from response 2023-06-16 16:31:30 +02:00
Adam SaghyandArnold Gálovics c398c5affa FINERACT-1724: Do not include NULL fields in response 2023-06-16 09:12:45 +02:00
Arnold GalovicsandArnold Gálovics 4211b9e8ea FINERACT-1724: Avoiding stackoverflowerror with GH builds 2023-06-15 11:37:55 +02:00
Adam Saghy eacf28192a FINERACT-1926: Fix wrong type of transfer in cancellation event + fix NPE 2023-06-14 21:10:24 +02:00
taskain7andAdam Saghy 78d9a0201e [FINERACT-1941] change task executors to threadpool task executor 2023-06-14 15:06:29 +02:00
Ruchi DhamankarandArnold Gálovics 6f677a3dd1 FINERACT-1806-Post-ChargeOff-Scenarios-1 2023-06-14 10:30:21 +02:00
MkkorandArnold Gálovics 5d011077e7 FINERACT-1912 Refactored Implementation of Savings Account Transaction Search
FINERACT-1912 Refactored Implementation of Savings Account Transaction Search

FINERACT-1912 Refactored Implementation of Savings Account Transaction Search

FINERACT-1912 Savings Account Transaction Advanced Search Support

FINERACT-1912 Savings Account Transaction Advanced Search Support

Support Pagination, Sorting and Filtering By transaction Type, Transaction Date and Amount

Supported Filtering for Amount and Date,
GTE, LTE, GT, LT
Supported Multiple Transaction Types Filtering
2023-06-13 16:37:42 +02:00
Peter BagrijandArnold Gálovics 25d7a9228a FINERACT-1926: Fineract Asset Externalization new asset events
- [x] Add LoanOwnershipTransferBusinessEvent
- [x] Add LoanAccountSnapshotBusinessEvent
- [x] Move packages to the right packages
- [X] Implement LoanOwnershipTransferBusinessEvent serializer
- [x] Call cancel/buyback/sale event
- [x] Unit tests
2023-06-13 15:28:51 +02:00
Janos HaberandAdam Saghy d37c0e1de2 FINERACT-1926: Fineract Asset Externalization - event
- [x] Unit test for external asset propagation
2023-06-13 10:58:52 +02:00
Adam Saghy 7cb4b6957b FINERACT-1724: Add missing Params annotations 2023-06-12 15:01:10 +02:00
Adam Saghy db4a4b2b83 FINERACT-1926: External owner accounting - fix (error handling) 2023-06-12 13:56:41 +02:00
abraham.menyhartandAdam Saghy a770597dc0 FINERACT-1926: Fineract Asset Externalization events - fix for LoanTransactionData events 2023-06-12 12:10:21 +02:00
Adam Saghy 062675e76f FINERACT-1724: Remove auto retry (due to bug) 2023-06-12 12:09:44 +02:00
Adam SaghyandArnold Gálovics 582f36ad34 FINERACT-1926: External owner accounting 2023-06-12 11:24:31 +02:00
dependabot[bot]andArnold Gálovics 437b8e9cae Bump actions/checkout from 3.5.2 to 3.5.3
Bumps [actions/checkout](https://github.com/actions/checkout) from 3.5.2 to 3.5.3.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/8e5e7e5ab8b370d6c329ec480221332ada57f0ab...c85c95e3d7251135ab7dc9ce3241c5835cc595a9)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-12 09:32:25 +02:00
abraham.menyhartandAdam Saghy 81e3e2200b FINERACT-1724: Accrual transactions - external id fix 2023-06-09 11:28:39 +02:00
Arnold GalovicsandArnold Gálovics 47aceb923d FINERACT-1724: Added retry to build & test github workflow steps 2023-06-09 10:08:22 +02:00
Arnold GalovicsandArnold Gálovics 971179ce6d FINERACT-1724: Ignore fineract-client dependencies for renovate upgrades since they are on specific versions for a reason 2023-06-09 10:08:22 +02:00
taskain7andAdam Saghy 244febbb2c [FINERACT-1937] refactor isCatchUpRunning SQL 2023-06-09 09:27:50 +02:00
taskain7andArnold Gálovics 22a3ca4fd8 [FINERACT-1724] currency data in LoanAccountDataV1 2023-06-09 08:22:04 +02:00
Arnold GalovicsandArnold Gálovics c1a8fe867b Switched generating fineract-client from YAML to JSON to avoid SnakeYAML random dependency issues 2023-06-08 14:42:18 +02:00
Arnold GalovicsandArnold Gálovics b5c85f1ac3 Added classpath exclusion on doubleparser package in jackson 2023-06-08 14:42:18 +02:00
Renovate BotandArnold Gálovics 0323f62edf Update all non-major dependencies 2023-06-08 14:42:18 +02:00
Peter BagrijandAdam Saghy 14a78412b7 FINERACT-1926 improve integration test readability 2023-06-08 07:51:21 +02:00
Adam Saghy 2e534d7ba5 FINERACT-1926: Fix sale error handling 2023-06-07 22:09:46 +02:00
Adam SaghyandArnold Gálovics af062d1ac5 FINERACT-1926: Fix buyback effective date to 2023-06-07 17:26:10 +02:00
Arnold Galovicsandtaskain7 20c9c688ba FINERACT-1724: OpenAPI generator SnakeYaml dependency conflict fix 2023-06-07 17:14:59 +02:00
Peter BagrijandArnold Gálovics 79c7138f3f FINERACT-1724 Disable fail fast for integration tests 2023-06-07 14:38:42 +02:00
Adam Saghy 3cec111964 FINERACT-1926: Lift loan status validation for buyback 2023-06-07 12:13:30 +02:00
Clay JohnsonandAleksandar Vidakovic 66b3618ea4 Publish Build Scans to https://ge.apache.org 2023-06-07 11:19:45 +02:00
Peter BagrijandAdam Saghy 6172b62456 FINERACT-1926 AssetOwnerTransferDetails added 2023-06-06 17:50:49 +02:00
Arnold GalovicsandArnold Gálovics ebd1ea2696 FINERACT-1724: EclipseLink 4.0.0 renovate restriction due to a bug 2023-06-06 16:28:02 +02:00
Arnold GalovicsandArnold Gálovics a8af5f60f7 FINERACT-1724: Removed unused instancemode-tests folder 2023-06-06 16:28:02 +02:00
Janos HaberandAdam Saghy 99470c0cf8 FINERACT-1926: Fineract Asset Externalization events
- [x] Change events
- [x] Create data enricher
- [x] Core changes
- [x] Remove AbstractBusinessEventSerializer
- [x] BusinessEventSerializer.toAvroDto added and change the event serializers
2023-06-06 15:20:42 +02:00
Arnold GalovicsandAdam Saghy e4754b299b FINERACT-1724: Removed restrictions from renovate.json and upgraded spotless plugin 2023-06-06 14:10:21 +02:00
abraham.menyhartandAdam Saghy 500e7720b7 FINERACT-1724: Datatables query API fix - invalid tablename 2023-06-06 14:09:29 +02:00
Arnold GalovicsandArnold Gálovics d87d483665 FINERACT-1724: Web security adjustments 2023-06-06 11:45:08 +02:00
Arnold GalovicsandArnold Gálovics c437c5a48b FINERACT-1724: Backward compatibility fix for MariaDB on sequence vs table incrementers + SQL grammar fix for Loan COB catchup 2023-06-06 11:45:08 +02:00
Arnold GalovicsandArnold Gálovics 76f6df746f FINERACT-1724: Swagger UI upgrade 2023-06-06 11:45:08 +02:00
Arnold GalovicsandArnold Gálovics 8176b6ec81 FINERACT-1724: Tomcat adjustments for the cargo test running 2023-06-06 11:45:08 +02:00
Arnold GalovicsandArnold Gálovics 7f2a81b828 FINERACT-1724: Spring Batch 5 upgrade liquibase fix 2023-06-06 11:45:08 +02:00
Arnold GalovicsandArnold Gálovics 119ac6d592 FINERACT-1724: Documentation fix not to refer spring.factories anymore 2023-06-06 11:45:08 +02:00
Arnold GalovicsandArnold Gálovics f8654a51bd FINERACT-1724: Spotbugs fix 2023-06-06 11:45:08 +02:00
Arnold GalovicsandArnold Gálovics 2b9928bc7e FINERACT-1724: Further fixes for the cucumber tests 2023-06-06 11:45:08 +02:00
Arnold GalovicsandArnold Gálovics e865d31dd9 FINERACT-1724: Excluding Spring autoconfiguration import file from license checking 2023-06-06 11:45:08 +02:00
Arnold GalovicsandArnold Gálovics 5a0407fb3e FINERACT-1724: Formatting & minor fixes 2023-06-06 11:45:08 +02:00
Arnold GalovicsandArnold Gálovics aa249cc16f FINERACT-1724: Further fixes 2023-06-06 11:45:08 +02:00
Arnold GalovicsandArnold Gálovics a7d5f834d5 FINERACT-1724: EclipseLink upgrade fixes + Spring Security chain fixes 2023-06-06 11:45:08 +02:00
Arnold GalovicsandArnold Gálovics abb5d4abb5 FINERACT-1724: Further upgrades 2023-06-06 11:45:08 +02:00
Arnold GalovicsandArnold Gálovics bc4b707646 FINERACT-1724: Jakarta namespace introduction + relevant upgrades + EclipseLink 4 upgrade along with Spring Boot 3 2023-06-06 11:45:08 +02:00
Arnold GalovicsandArnold Gálovics 84abf365c8 FINERACT-1724: Spring Boot upgrade to 3.x 2023-06-06 11:45:08 +02:00
taskain7 94a552bbde [FINERACT-1936] fixing SQL queries that was failing on Maria DB 2023-06-05 23:25:37 +02:00
Adam SaghyandArnold Gálovics 9698b6d5b3 FINERACT-1926: Asset externalisation logic enhancements and bugfixes 2023-06-05 11:13:38 +02:00
Jose Alberto HernandezandAdam Saghy b1af8a3f83 FINERACT-1724: Arrears configuration at loan creation is not considered correctly 2023-06-05 09:40:45 +02:00
taskain7andAdam Saghy dabe78d5dc [FINERACT-1926] Fix settlement date type in swagger response 2023-06-02 15:33:57 +02:00
taskain7andArnold Gálovics a7d539a531 [FINERACT-1926] Fix settlement date type in swagger 2023-06-02 10:45:15 +02:00
taskain7andArnold Gálovics 9fe7927d7e [FINERACT-1724] trigger arrears aging on LoanBalanceChangedBusinessEvent 2023-06-02 08:30:32 +02:00
taskain7andArnold Gálovics 60cb0cbe11 [FINERACT-1926] Fix Internal Server Error on non existing loan 2023-06-01 08:19:32 +02:00
taskain7andArnold Gálovics 6a68d3b134 [FINERACT-1926] Fix request swagger 2023-06-01 08:18:45 +02:00
Janos HaberandAdam Saghy f43e13a0ee FINERACT-1926: Fineract Asset Externalization - GET Pagination
- [x] Added Pagination to response
- [x] Added limit and offset to the request
2023-05-31 17:15:59 +02:00
taskain7andAdam Saghy d76e6aef3d [FINERACT-1926] Fix request body parameter names 2023-05-31 13:35:11 +02:00
abraham.menyhartandAdam Saghy 31f41558fc FINERACT-1724: Datatables query API fix - invalid query filter 2023-05-31 11:20:22 +02:00
Adam Saghy d639b20af1 FINERACT-1926: Asset transfer to external owner COB business step 2023-05-31 08:42:58 +02:00
Jose Alberto HernandezandAdam Saghy b4cdb58fbe FINERACT-1724: Negative numbers in delinquentDays field 2023-05-30 20:23:39 +02:00
taskain7andAdam Saghy edff4a410e [FINERACT-1724] Fix disabled integration tests 2023-05-30 20:19:58 +02:00
Ruchi DhamankarandAdam Saghy 7c300942d8 FINERACT-1678-loan-cob-drop-softlocking-use-lastclosedbusinessdate-tests 2023-05-30 10:00:42 +02:00
Ruchi DhamankarandAdam Saghy e9bc0fe8c2 FINERACT-1678-loan-cob-drop-softlocking-use-lastclosedbusinessdate 2023-05-26 12:48:44 +02:00
taskain7andAdam Saghy 005af94291 [FINERACT-1926] loan transfer validation error fix 2023-05-26 09:23:57 +02:00
Adam Saghy 2e3b96df19 FINERACT-1932: Add loan module (WIP) 2023-05-25 17:57:28 +02:00
taskain7andAdam Saghy 105b4ed154 [FINERACT-1926] POST API for asset externalization fixes 2023-05-25 14:12:53 +02:00
taskain7andAdam Saghy 045f0ec121 [FINERACT-1926] POST API for asset externalization 2023-05-24 11:26:54 +02:00
Arnold GalovicsandArnold Gálovics fd27401de4 FINERACT-1724: Final touches for Client V2 search API 2023-05-24 09:58:59 +02:00
Arnold GalovicsandArnold Gálovics 68c6053bd7 FINERACT-1724: Client search V2 API 2023-05-23 13:41:30 +02:00
Ruchi DhamankarandAdam Saghy c18fead7f3 FINERACT-1905-Charge-submitted-date-Accrual-entry-reverse-issue 2023-05-22 11:32:39 +02:00
Janos HaberandAdam Saghy f045752d7d FINERACT-1926: Fineract Asset Externalization models
- [x] JPA Model changes
- [x] External Asset Owner Platform services
- [x] External Asset Owner Swagger
- [x] Core changes
2023-05-19 12:41:21 +02:00
Adam Saghy f647d10a01 FINERACT-1724: Enhance global configuration request swagger 2023-05-19 12:08:42 +02:00
Michael Vorburger ⛑️andArnold Gálovics 5d3bd3a3d7 docs: Fix client.adoc link on fineract-client/README.md 2023-05-18 15:22:19 +02:00
Janos HaberandArnold Gálovics debc8e94a4 FINERACT-1926: Fineract Asset Externalization models
- [x] JPA model changes
2023-05-17 19:47:30 +02:00
Arnold GalovicsandArnold Gálovics 9fee79ecde FINERACT-1926: Minor fixes with module static weaving 2023-05-16 21:43:54 +02:00
Janos HaberandArnold Gálovics da1aa9e5a8 Fineract Asset Externalization models
- [x] Liquibase database model
- [x] JPA model
- [x] API endpoint without implementation
- [x] API endpoint requirements
  - [x] Json Serialization and Deserialization and dependencies
  - [x] New Authentication check interface to the core level
  - [x] CommandWrapperBuilder and dependencies
2023-05-16 21:43:54 +02:00
taskain7 6e69e66b86 [FINERACT-1906] Add disbursement charge to accrual transactions 2023-05-16 14:04:54 +02:00
Ruchi DhamankarandArnold Gálovics aaa94007ee FINERACT-1905-Charges-Accrual-entries-on-created-date 2023-05-16 11:53:32 +02:00
Arnold GalovicsandArnold Gálovics 216b39ce0c FINERACT-1724: Added default ordering by id for search queries 2023-05-15 20:54:49 +02:00
Janos HaberandArnold Gálovics 240039f979 - [x] Create fineract-core module - used to common cross module classes and interfaces
- [x] Create fineract-investor module for build
- [x] modify tenant liquibase loader to using module based liquibase processing
- [x] sample liquibase into the fineract-investor module
- [x] Move NewCommandSourceHandler and dependencies to the fineract-core
2023-05-15 16:02:59 +02:00
Arnold GalovicsandArnold Gálovics 037f7f264f FINERACT-1724: Preparation for versioned APIs 2023-05-15 13:19:06 +02:00
Michael Vorburger ⛑️andArnold Gálovics 190d995628 docs: Fix GitHub links on client.adoc 2023-05-15 08:18:47 +02:00
Arnold GalovicsandArnold Gálovics 5b6f334379 FINERACT-1724: Limiting query result for search API to prevent OOMs and support for loanId parameter for retrieving loan reschedule requests 2023-05-10 21:47:17 +02:00
Janos HaberandArnold Gálovics 0f1559cc7a - [x] Fix Batch API internal error 2023-05-10 10:58:07 +02:00
Janos HaberandArnold Gálovics ac1aeea12d - [x] Move from JobParameter to CustomJobParameter
- [x] Improve CustomJobParameterResolver to raise custom exception and work with StepExecution
- [x] Improve tests
2023-05-10 10:49:04 +02:00
Adam SaghyandArnold Gálovics 0458643d8f FINERACT-1724: Periodic accrual fix for charge on disbursement date 2023-05-10 07:51:39 +02:00
Adam SaghyandArnold Gálovics 70c93484f4 FINERACT-1678: Add retry limit to COB 2023-05-10 07:51:10 +02:00
Adam SaghyandArnold Gálovics b86a70397f FINERACT-1724: Enhance LoanCatchUpIntegrationTest 2023-05-10 07:50:22 +02:00
Ruchi DhamankarandAdam Saghy d15fc994e3 FINERACT-1724-Accrual-reversal-multiple-disbursement 2023-05-09 22:00:05 +02:00
Arnold GalovicsandAdam Saghy 7f5b87694b FINERACT-1724: Ability to override tenant datasource min/max configuration from env variables 2023-05-08 19:17:57 +02:00
Adam SaghyandArnold Gálovics f24c9f8084 FINERACT-1724: Enhance external event datetime precision 2023-05-08 12:54:30 +02:00
Adam Saghy 0e6f5eab9d Revert "FINERACT-1724: Fix entity reload logic of COB"
This reverts commit 5fe708a90f.
2023-05-03 19:52:03 +02:00
Adam Saghy cf94eb8d81 FINERACT-1925: New repayment schedule 2023-05-03 15:12:53 +02:00
Ruchi DhamankarandAdam Saghy c7e777c37c FINERACT-1706-Allow-Chargeback-on-payment-type-transactions 2023-05-03 13:41:44 +02:00
Janos HaberandAdam Saghy 5238e29449 FINERACT-1724 - BatchTransaction fix
- [x] Handle `enclosingTransaction=false` flag correctly.
2023-05-03 13:40:38 +02:00
Adam Saghy 629d2da7f9 FINERACT-1724: Fee's are not included in total balance amount, when we have multiple disbursements on first day 2023-05-03 10:27:25 +02:00
Ruchi DhamankarandArnold Gálovics a29f95414e FINERACT-1923-Add-db-indices-loan-table 2023-04-27 20:47:00 +02:00
logoutdhavalandGitHub eaad5fdf0c FINERACT-1920:Create Interoperation Loan Repayment API (#3119) 2023-04-27 15:14:32 +05:30
Ruchi DhamankarandArnold Gálovics 57a1cb2f8c FINERACT-1761-Repayment-due-event-configuration-at-product-level 2023-04-27 08:34:37 +02:00
Adam Saghy 5fe708a90f FINERACT-1724: Fix entity reload logic of COB 2023-04-26 20:38:49 +02:00
Jose Alberto HernandezandAdam Saghy 6f2b0198a2 FINERACT-1757: Uppercase letters in the datatable name is failing on postgres 2023-04-26 17:56:00 +02:00
Janos Haberandtaskain7 5f713be7ec FINERACT-1724 - Fraud set error when status is 100 or 200. 2023-04-26 14:12:12 +02:00
Janos Haberandtaskain7 88ab3dedbb FINERACT-1724 - Loan CatchUp fix
- [x] Update null loan cob date when hard lock
- [x] Update hard lock to soft lock
- [x] Ignore null loan cob date when catch up
2023-04-26 14:11:25 +02:00
David KariukiandAdam Saghy 0cd3ac1cb0 docs: Capitalize headings
Capitalize headings and add line breaks to improve on readability.
2023-04-24 16:20:15 +02:00
Arnold GalovicsandArnold Gálovics 636b33196b FINERACT-1724: More batch support for datatables APIs 2023-04-24 14:28:50 +02:00
Ruchi DhamankarandArnold Gálovics d2082fe2cb FINERACT-1724-Regular-loan-cob-job-having-catch-up-true-catchup-api 2023-04-24 14:15:19 +02:00
Janos HaberandAdam Saghy 1d86a8f0cb FINERACT-1724 - Remove Restriction from faurd mark 2023-04-22 23:26:45 +02:00
Adam SaghyandArnold Gálovics cefcb53424 FINERACT-1724: Add final accrual when loan is overpaid 2023-04-21 14:20:03 +02:00
Adam Saghy 0e3ad8f73b FINERACT-1724: Upgrade liquibase and set proper liquibase logging 2023-04-19 23:15:57 +02:00
Janos HaberandAdam Saghy 4166ce477a FINERACT-1921
- [x] - Rewrite error handling
2023-04-19 21:47:34 +02:00
Adam SaghyandArnold Gálovics 542971053e FINERACT-1724: Increase schema RO password length 2023-04-19 14:07:53 +02:00
taskain7andAdam Saghy 82231101c8 [FINERACT-1922] Skip business date job when business date is not enabled 2023-04-19 12:21:15 +02:00
Adam Saghy e4c26e7e5c FINERACT-1724: Downgrade liquibase due to invalid behaviour 2023-04-18 23:36:36 +02:00
Adam Saghy 4aa4e77d7a FINERACT-1724: Set prefetch message count to 1 for COB 2023-04-17 23:43:47 +02:00
Adam Saghy 748b775051 FINERACT-1724: Use services instead of repositories in COB 2023-04-17 17:50:44 +02:00
Arnold GalovicsandArnold Gálovics 234583c8e1 Modernizer configuration to disable forcing the Optional.orElseThrow construct 2023-04-17 10:56:45 +02:00
Renovate BotandArnold Gálovics 09632c0c41 chore(deps): update all non-major dependencies 2023-04-17 10:56:45 +02:00
Arnold GalovicsandArnold Gálovics f985e0101b Dependency fixes 2023-04-15 21:40:49 +02:00
Renovate BotandArnold Gálovics bbcfc5f3f3 chore(deps): update all non-major dependencies 2023-04-15 21:40:49 +02:00
Ruchi DhamankarandArnold Gálovics c18e506832 FINERACT-1913-Initializing-db-connection-pool-at-startup 2023-04-15 10:40:52 +02:00
Adam SaghyandArnold Gálovics d570e359ae FINERACT-1724: Fix error code for Batch API 2023-04-15 10:29:42 +02:00
Adam SaghyandArnold Gálovics 54ff12f824 FINERACT-1678: Fix applying soft locks on loans during COB 2023-04-15 08:10:33 +02:00
Arnold GalovicsandArnold Gálovics c62fb30c7a FINERACT-1724: Using externalizable retrieval service for Loan COB so custom modules can override the input for it 2023-04-14 13:32:53 +02:00
dependabot[bot]andArnold Gálovics 08ecacd52d chore(deps): bump actions/checkout from 3.5.1 to 3.5.2
Bumps [actions/checkout](https://github.com/actions/checkout) from 3.5.1 to 3.5.2.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/83b7061638ee4956cf7545a6f7efe594e5ad0247...8e5e7e5ab8b370d6c329ec480221332ada57f0ab)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-14 11:07:03 +02:00
Arnold GalovicsandArnold Gálovics f643d3c2f9 Revert "FINERACT-1724-Regular-loan-cob-job-having-catch-up-true"
This reverts commit 63fa315f15.
2023-04-13 16:48:19 +02:00
Arnold GalovicsandArnold Gálovics 158d7c9726 FINERACT-1724: Loading the entire loan with relationships in case of loan cob 2023-04-13 15:27:09 +02:00
Adam SaghyandArnold Gálovics 573a0dd1f6 FINERACT-1724: Fix swagger of loan reschedule api 2023-04-13 13:31:58 +02:00
taskain7andAdam Saghy 6eba33758b [FINERACT-1678] Exclude loan IDs from execution context 2023-04-13 10:36:19 +02:00
dependabot[bot]andArnold Gálovics fbd0bb91c0 chore(deps): bump actions/checkout from 3.5.0 to 3.5.1
Bumps [actions/checkout](https://github.com/actions/checkout) from 3.5.0 to 3.5.1.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/8f4b7f84864484a7bf31766abe9204da3cbe65b3...83b7061638ee4956cf7545a6f7efe594e5ad0247)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-13 09:33:09 +02:00
Adam Saghy fb6e78fa2b FINERACT-1724: Improve reliability of integration tests 2023-04-12 17:43:14 +02:00
taskain7andAdam Saghy ace0786024 [FINERACT-1678] Exclude loan IDs from execution context 2023-04-12 15:03:12 +02:00
Ruchi DhamankarandAdam Saghy 63fa315f15 FINERACT-1724-Regular-loan-cob-job-having-catch-up-true 2023-04-12 14:53:54 +02:00
Mohit SinhaandGitHub 3c7c6dfd1d FINERACT-1919: Fix monthly loan schedule due dates to maximize accord… (#3109)
* FINERACT-1919: Fix monthly loan schedule due dates to maximize according to seed date and number of days in the month
2023-04-12 15:56:22 +05:30
Jose Alberto HernandezandArnold Gálovics 3b6c652c31 FINERACT-1724: Applying delinquency range by COB job is not working properly 2023-04-11 09:07:43 +02:00
Mohit SinhaandGitHub d803228d07 Merge pull request #3111 from balancehero-neal/FINERACT-1780
FINERACT-1780: Introduce Lombok to workingdays module
2023-04-11 12:13:33 +05:30
neal.lee 1d6a95f7ef FINERACT-1780: Introduce Lombok to workingdays module 2023-04-11 09:02:55 +09:00
Adam Saghy 185551c572 FINERACT-1724: Fix integration test order 2023-04-07 07:31:23 +02:00
Adam Saghy 3999b761b6 FINERACT-1734: Loan installment rescheduled event 2023-04-06 22:14:45 +02:00
Adam Saghy 638ebf5bc4 FINERACT-1724: Fix in advance amount on repayment schedule 2023-04-06 15:49:00 +02:00
Ruchi DhamankarandAdam Saghy b555b35845 FINERACT-1724-Last-repayment-amount-date-closed-overpaid-loans 2023-04-05 22:58:20 +02:00
Arnold Galovicsandtaskain7 8a51abda78 FINERACT-1724: Added nullcheck for batch API for enhanced reliability 2023-04-05 16:44:44 +02:00
taskain7andAdam Saghy 3184b16372 [FINERACT-1888] Chargeback acoounting fix 2023-04-05 12:56:04 +02:00
Arnold GalovicsandArnold Gálovics df03ef9576 FINERACT-1724: Support for async sending of external events + tests for ExternalEvent 2023-04-04 11:01:01 +02:00
Arnold GalovicsandAdam Saghy 6bdd6b1ace FINERACT-1724: Fixed storing the aggregate root ID for external events 2023-04-03 18:13:45 +02:00
Adam Saghy 94105f26e6 FINERACT-1724: Improvements for datatables and reporting 2023-04-03 18:13:29 +02:00
Sinha, AbhinavandAdam Saghy 2778381288 Fix typos in README.md (FINERACT-1914) 2023-04-03 17:29:55 +02:00
Janos HaberandAdam Saghy 3789abdb29 FINERACT-1724 - Initial schema read only property support
- [x] New read only properties and environment variables
- [x] Run only when read only password, read only username and schema name is null
- [x] Update and encrypt the password
- [x] Doc properties update
2023-04-03 16:45:43 +02:00
Arnold GalovicsandArnold Gálovics 9e9dab196e FINERACT-1724: Sampling enhancements 2023-04-03 12:03:47 +02:00
Adam Saghy 6fda3d3fb3 FINERACT-1905: Fix for new repayment strategy 2023-03-31 19:47:38 +02:00
Adam Saghy e7268997bc FINERACT-1678: Improvements around locking 2023-03-31 12:17:04 +02:00
Jose Alberto HernandezandAdam Saghy 5a18f00e2b FINERACT-1724: Fix Delinquency and Chargeback Integration Test 2023-03-31 12:16:53 +02:00
Jose Alberto HernandezandAdam Saghy b96e2417ed FINERACT-1853: Fix accounting transaction summary report 2023-03-31 10:51:07 +02:00
Adam SaghyandArnold Gálovics c8d7f9397b FINERACT-1724: Improvements around maker-checker check 2023-03-31 09:14:40 +02:00
Arnold GalovicsandArnold Gálovics 883761bd80 FINERACT-1724: Sampling support for performance measurements 2023-03-30 21:43:00 +02:00
Renovate BotandArnold Gálovics 0db4610367 fix(deps): update dependency com.puppycrawl.tools:checkstyle to v10.9.3 2023-03-28 17:51:16 +02:00
Vic RomeroandArnold Gálovics fda35f22dd Add dependency management fix for publishing 2023-03-28 17:33:08 +02:00
dependabot[bot]andArnold Gálovics ff55cea103 chore(deps): bump actions/setup-java from 3.10.0 to 3.11.0
Bumps [actions/setup-java](https://github.com/actions/setup-java) from 3.10.0 to 3.11.0.
- [Release notes](https://github.com/actions/setup-java/releases)
- [Commits](https://github.com/actions/setup-java/compare/3f07048e3d294f56e9b90ac5ea2c6f74e9ad0f98...5ffc13f4174014e2d4d4572b3d74c3fa61aeb2c2)

---
updated-dependencies:
- dependency-name: actions/setup-java
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-28 17:23:34 +02:00
Arnold GalovicsandArnold Gálovics da8cd2ca9d FINERACT-1724: Abstracting out Loan ID set retrieval for Loan COB
catch-up and inline Loan COB
2023-03-28 16:55:51 +02:00
Arnold GalovicsandArnold Gálovics dbfedf5cfd FINERACT-1724: Optimizing the account locking for Loan COB 2023-03-28 14:45:04 +02:00
Arnold GalovicsandArnold Gálovics f0d2e9326d FINERACT-1724: Closing JMS sessions explicitly to avoid memory leaking for multi external event producer 2023-03-28 12:32:33 +02:00
Janos HaberandAdam Saghy ae8ad4b689 FINERACT-1724 - Transaction handling fix
- [x] Fix Fetch new transaction
2023-03-28 00:34:22 +02:00
Janos HaberandAdam Saghy 92838e5fff FINERACT-1724 - Transaction handling fix
[x] - Remove requires new transaction from NewCommandSourceHandler
[x] - Rewrite batch processing
[x] - Fix Idempotency transaction handling
[x] - Fix Batch enclosingTransaction handling
2023-03-27 20:18:29 +02:00
Arnold GalovicsandAdam Saghy eb91d44c90 FINERACT-1724: JSON logging support 2023-03-27 16:03:39 +02:00
Adam SaghyandArnold Gálovics 24bc7bb5fb FINERACT-1905: New repayment strategy 2023-03-27 14:12:34 +02:00
Renovate BotandArnold Gálovics da810378f3 chore(deps): update actions/stale action to v8 2023-03-27 11:49:28 +02:00
Ruchi DhamankarandAdam Saghy 94d4877eda FINERACT-1890-LoanAccrualTransaction-created-event 2023-03-27 10:19:20 +02:00
Adam SaghyandArnold Gálovics 1eab0fe1bd FINERACT-1724: Show reverted charge-off transactions 2023-03-27 08:57:57 +02:00
Jose Alberto HernandezandAdam Saghy b40e700cc6 FINERACT-1724: Loans API get loan details/delinquent data wrong 2023-03-24 18:15:39 +01:00
dependabot[bot]andArnold Gálovics 36c5d103d7 chore(deps): bump actions/checkout from 3.4.0 to 3.5.0
Bumps [actions/checkout](https://github.com/actions/checkout) from 3.4.0 to 3.5.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/24cb9080177205b6e8c946b17badbe402adc938f...8f4b7f84864484a7bf31766abe9204da3cbe65b3)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-24 13:23:30 +01:00
0c6e230189 FINERACT-1853: Fix accounting transaction summary report (#3069)
Co-authored-by: Jose Alberto Hernandez <alberto@MacBook-Pro.local>
2023-03-23 11:19:43 -06:00
Adam SaghyandArnold Gálovics d21110f7b2 FINERACT-1724: Put user notification feature behind feature toggle 2023-03-23 09:42:52 +01:00
dependabot[bot]andArnold Gálovics 3a176f4cbf chore(deps): bump actions/stale from 7.0.0 to 8.0.0
Bumps [actions/stale](https://github.com/actions/stale) from 7.0.0 to 8.0.0.
- [Release notes](https://github.com/actions/stale/releases)
- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/stale/compare/6f05e4244c9a0b2ed3401882b05d701dd0a7289b...1160a2240286f5da8ec72b1c0816ce2481aabf84)

---
updated-dependencies:
- dependency-name: actions/stale
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-23 09:38:06 +01:00
Ruchi DhamankarandAdam Saghy 6c12b76425 FINERACT-1724-Add-fee-paid-off-loan-with-refund 2023-03-22 11:16:38 +01:00
Jose Alberto HernandezandAdam Saghy e46ec2c984 FINERACT-1853: Fix general accounting reports reconciliation 2023-03-21 12:01:28 +01:00
Arnold GalovicsandArnold Gálovics 53018a14c8 FINERACT-1724: Refactored datatable index and unique constraint handling + creating an index on fk columns for multirow datatables 2023-03-21 11:14:35 +01:00
dependabot[bot]andArnold Gálovics 66c3abcefb chore(deps): bump actions/checkout from 3.3.0 to 3.4.0
Bumps [actions/checkout](https://github.com/actions/checkout) from 3.3.0 to 3.4.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/ac593985615ec2ede58e132d2e21d2b1cbd6127c...24cb9080177205b6e8c946b17badbe402adc938f)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-19 22:05:07 +01:00
Janos HaberandArnold Gálovics 8418a23e4b FINERACT-1724 Read only tenant password encryption migration
- [x] ReadOnly tenant password encryption migration script
- [x] Documentation
- [x] Encryption password generator
2023-03-19 22:04:46 +01:00
Arnold GalovicsandArnold Gálovics e41726edfd FINERACT-1724: LoanProduct API swagger enhancements 2023-03-17 18:12:20 +01:00
taskain7andAdam Saghy bc882348df [FINERACT-1678] Set a limit to the request body list size on Inline Loan COB API 2023-03-17 10:43:58 +01:00
taskain7andArnold Gálovics 4e52bd3a02 [FINERACT-1678] all Loan COB steps are completed if there is no loan to be processed 2023-03-17 10:18:58 +01:00
Arnold GalovicsandArnold Gálovics 3b337c96ee FINERACT-1724: Making sure that the cache is empty upon starting a transaction for default cache configurations 2023-03-16 18:02:51 +01:00
taskain7andAdam Saghy 41651a6cbb [FINERACT-1724] revert removed loan repository query 2023-03-16 12:59:53 +01:00
Ruchi DhamankarandAleksandar Vidakovic 8f8fd4a172 FINERACT-1889-partial-chargeback-principal-allocation 2023-03-16 11:06:29 +01:00
Arnold GalovicsandAleksandar Vidakovic 48f7e31567 FINERACT-1724: Swagger fixes 2023-03-15 07:52:57 +01:00
taskain7andAleksandar Vidakovic 071cdae69b [FINERACT-1724] making partition for big parameter lists 2023-03-14 18:12:42 +01:00
Ruchi DhamankarandArnold Gálovics ca5c7d8747 FINERACT-1694-External-events-date-unit-change-to-milliseconds 2023-03-14 14:07:50 +01:00
Arnold GalovicsandArnold Gálovics e9e31a8190 FINERACT-1724: Making global configuration caching transaction bound 2023-03-14 13:42:51 +01:00
Janos HaberandAleksandar Vidakovic 651052c44b FINERACT-1724 - Batch step execute fix
- [x] Flush JPA data to JDBC access
2023-03-14 10:47:21 +01:00
Renovate BotandAleksandar Vidakovic 362602d3bb fix(deps): update dependency com.puppycrawl.tools:checkstyle to v10.8.1 2023-03-14 09:22:12 +01:00
meghnabajoriaandAleksandar Vidakovic fe50763549 Introduce Lombok to teller module (FINERACT-1779) 2023-03-13 18:08:27 +01:00
Adam SaghyandArnold Gálovics cd9439fbbf FINERACT-1724: Fix disbursement date validation message 2023-03-13 17:38:32 +01:00
Jose Alberto HernandezandAdam Saghy 4b5a795327 FINERACT-1801: Configuration for Arrears and Delinquency Display 2023-03-13 16:40:52 +01:00
Ruchi DhamankarandAdam Saghy 55e7f5e48c FINERACT-1596-Swagger-changes-Goodwill-Credit-Accounting 2023-03-13 13:17:23 +01:00
Adam Saghy 5ced30b864 FINERACT-1724: Create accrual entry for specific due date charge even on disbursement date 2023-03-13 11:19:45 +01:00
taskain7andAdam Saghy 9baf053d0b [FINERACT-1751] Add savings account transaction request to Batch API 2023-03-13 10:10:30 +01:00
Ruchi DhamankarandAdam Saghy ceb22456ca FINERACT-1596-Accounting-treatment-changes-goodwill-credit 2023-03-10 22:57:41 +01:00
Janos HaberandAdam Saghy 8d636fab2b FINERACT-1724 - Reschedule Loan fix
- [x] Reschedule loan COB API filter fix
- [x] Unit test for filter
2023-03-09 21:30:04 +01:00
Adam SaghyandArnold Gálovics 0928fb5136 FINERACT-1806: Charge-off validation 2023-03-09 20:05:26 +01:00
Arnold GalovicsandArnold Gálovics 83de7652e6 FINERACT-1724: Extra logging and measurements for Loan COB business steps + minor fixes here and there 2023-03-09 16:16:05 +01:00
Adam Saghy 36f907906d FINERACT-1678: Inline COB filter fix 2023-03-09 15:08:49 +01:00
Jose Alberto HernandezandAdam Saghy 18811e57b3 FINERACT-1724: Delinquency classification tests were failing 2023-03-08 15:43:18 +01:00
Janos HaberandArnold Gálovics 367550007c FINERACT-1724 - Optimistic locking fix
- [x] ReloadService for lead entities
- [x] ReloaderService iterating over ReloadService and try to find and reload the entity
- [x] Fix COBBusinessStepServiceImpl to reload the entity before business step
2023-03-08 14:27:48 +01:00
Renovate BotandArnold Gálovics baa71f6484 chore(deps): update gradle/wrapper-validation-action digest to ccb4328 2023-03-06 22:38:57 +01:00
taskain7 0031f35abf [FINERACT-1904] loanChargePaidByList fix 2023-03-03 08:49:10 +01:00
Janos HaberandArnold Gálovics 3297707817 FINERACT-1831 - Encrypted tenant passwords
- [x] Encrypt tenant passwords
- [x] Update integration tests
- [x] Check application database use encrypted passwords
- [x] One time migration for the existing password
2023-03-02 22:24:31 +01:00
Adam Saghy f1c89ac914 FINERACT-1678: Enable Scheduler API usage for batch manager only 2023-03-02 19:26:05 +01:00
Janos Haberandtaskain7 8090c614ed FINERACT-1724 Loan COB Api Filter external id fix
- [x] UUID az external id to test non-numeric id
- [x] Unit test
2023-03-02 18:58:57 +01:00
taskain7andAdam Saghy 29dd1e730c [FINERACT-1678] Exception fix if every loan fail during COB 2023-03-02 15:44:23 +01:00
Adam Saghy 3853111628 FINERACT-1724: Temporarily disable failing tests 2023-03-02 13:21:54 +01:00
Adam SaghyandArnold Gálovics ee72978a49 FINERACT-1840: Fee income is not realised if the loan got fully repaid 2023-03-01 14:08:29 +01:00
Adam SaghyandArnold Gálovics c1570049ed FINERACT-1724: Make tests more resilient 2023-03-01 14:07:38 +01:00
Arnold GalovicsandArnold Gálovics 71c11aba3c Fixing down the openapi generator version to 6.2.1 2023-02-27 13:19:01 +01:00
Renovate BotandArnold Gálovics 231f609789 chore(deps): update all non-major dependencies 2023-02-27 13:19:01 +01:00
Ruchi DhamankarandArnold Gálovics d131055c5a FINERACT-1759-Datatable-extension-Share-products 2023-02-27 13:18:48 +01:00
Arnold GalovicsandArnold Gálovics 6fd67b19dd FINERACT-1724: Swagger adjustments 2023-02-27 12:59:49 +01:00
Renovate BotandArnold Gálovics 54a5e5926d fix(deps): update dependency com.puppycrawl.tools:checkstyle to v10.8.0 2023-02-27 12:02:50 +01:00
Arnold GalovicsandArnold Gálovics 766d988e16 OpenAPI generator set to 6.2.1 2023-02-24 16:20:58 +01:00
Arnold GalovicsandArnold Gálovics 3860e0eda1 Added exclusion for some bouncycastle dependencies 2023-02-24 16:20:58 +01:00
Renovate BotandArnold Gálovics f2c98f9e95 chore(deps): update all non-major dependencies 2023-02-24 16:20:58 +01:00
Arnold GalovicsandArnold Gálovics 1220f2f4a9 FINERACT-1724: Added extra logging for traceability 2023-02-24 14:03:56 +01:00
Adam SaghyandArnold Gálovics 9b8a16a76b FINERACT-1724: Add recalculationCompoundingFrequencyInterval and recalculationCompoundingFrequencyOnDayType fields 2023-02-23 17:30:59 +01:00
dependabot[bot]andArnold Gálovics 6d6c4dd508 chore(deps): bump gradle/wrapper-validation-action
Bumps [gradle/wrapper-validation-action](https://github.com/gradle/wrapper-validation-action) from 6a97dac3d42665fcfd8ab72cb79024cd5dfd007d to 9c75b4d3d1e1ab9cf779938de55702cde22cd29f.
- [Release notes](https://github.com/gradle/wrapper-validation-action/releases)
- [Commits](https://github.com/gradle/wrapper-validation-action/compare/6a97dac3d42665fcfd8ab72cb79024cd5dfd007d...9c75b4d3d1e1ab9cf779938de55702cde22cd29f)

---
updated-dependencies:
- dependency-name: gradle/wrapper-validation-action
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-23 17:28:17 +01:00
Janos HaberandArnold Gálovics 764f3de203 FINERACT-1883 - New loan repayment parameter
- [x] New loan repayment parameter
- [x] Integration test
2023-02-23 15:11:16 +01:00
Ruchi DhamankarandAdam Saghy 670e0d55a3 FINERACT-1901-NPE-Reject-Loan-Api-Business-Event 2023-02-23 11:18:22 +01:00
Adam Saghy 77da04fa7d FINERACT-1806: Charge-off validation 2023-02-23 10:22:10 +01:00
Jose Alberto HernandezandAdam Saghy f000de5364 FINERACT-1707: Transaction Summary Report changes 2023-02-22 13:58:25 +01:00
taskain7andArnold Gálovics e10781f580 [FINERACT-1900] Swagger schema inconsistency for update role permissions 2023-02-21 16:09:40 +01:00
Aleksandar VidakovicandAleksandar Vidakovic d27d9f343d FINERACT-1894: Template request fix 2023-02-21 07:27:52 +01:00
Aleksandar VidakovicandAleksandar Vidakovic 34e8b046a2 FINERACT-1892: Paging fix 2023-02-21 07:25:45 +01:00
Adam Saghy 8135846093 FINERACT-1724: Add recalculationRestFrequencyInterval field to swagger 2023-02-20 12:57:30 +01:00
Ruchi DhamankarandArnold Gálovics 6cf37b7749 FINERACT-1678-Restrict-COB-catchup-api-for-batch-managers 2023-02-20 11:39:01 +01:00
Janos HaberandArnold Gálovics 89deb6d3b8 FINERACT-1891 - Overdue calculation fix
- [x] Arrears event not called fix
- [x] Integration test
2023-02-20 10:15:18 +01:00
Renovate BotandArnold Gálovics 5a1c3babcc chore(deps): update plugin org.sonarqube to v4 2023-02-20 10:10:03 +01:00
dependabot[bot]andArnold Gálovics d3feb8a6bc chore(deps): bump gradle/wrapper-validation-action
Bumps [gradle/wrapper-validation-action](https://github.com/gradle/wrapper-validation-action) from dabb1b52d35733fde278c288e4781d4336d4c29c to 6a97dac3d42665fcfd8ab72cb79024cd5dfd007d.
- [Release notes](https://github.com/gradle/wrapper-validation-action/releases)
- [Commits](https://github.com/gradle/wrapper-validation-action/compare/dabb1b52d35733fde278c288e4781d4336d4c29c...6a97dac3d42665fcfd8ab72cb79024cd5dfd007d)

---
updated-dependencies:
- dependency-name: gradle/wrapper-validation-action
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-20 10:09:31 +01:00
Arnold GalovicsandArnold Gálovics 6c86e15eb7 FINERACT-1724: Ability to run Fineract in Liquibase only mode for scaled environments 2023-02-17 16:31:16 +01:00
Arnold Galovicsandtaskain7 f927dd4ff9 FINERACT-1724: Added Add periodic accrual as a Loan COB business step 2023-02-17 14:58:40 +01:00
taskain7andArnold Gálovics 3744ad54ee [FINERACT-1884] write API calls on loan makes Inline COB and catches up the loan to the current COB business date 2023-02-17 13:09:26 +01:00
Ruchi DhamankarandAdam Saghy 187889539f FINERACT-1806-Fix-Charge-off-transaction-id-null-for-events 2023-02-15 15:20:35 +01:00
Arnold GalovicsandArnold Gálovics 0338479212 FINERACT-1724: Added delinquentDate to Delinquency Range Changed events 2023-02-14 17:38:13 +01:00
Ruchi DhamankarandArnold Gálovics 201295814b FINERACT-1806-Swagger-Fix-Accounting-treatments-for-Charge-off-loan-accounts 2023-02-14 14:34:34 +01:00
Ruchi DhamankarandAdam Saghy dad0c70c80 FINERACT-1888-Full-Chargeback-For-Overpaid-Loan 2023-02-14 10:03:01 +01:00
Janos HaberandAdam Saghy 0d7c93177a FINERACT-1885 - Fix Actual Maturity when Loan reopen
- [x] Fix actual maturity date
- [x] Added to actual maturity date to the timeline too
- [x] Integration test
2023-02-13 23:43:11 +01:00
Adam Saghy 521aec47ea FINERACT-1724: Fix reverse-replayed transactions order 2023-02-13 14:09:21 +01:00
Ruchi DhamankarandAdam Saghy 4a78901b7c FINERACT-1806-Accounting-treatments-for-Charge-off-loan-accounts 2023-02-13 10:47:45 +01:00
dependabot[bot]andArnold Gálovics 0df3aa82cf chore(deps): bump actions/setup-java from 3.9.0 to 3.10.0
Bumps [actions/setup-java](https://github.com/actions/setup-java) from 3.9.0 to 3.10.0.
- [Release notes](https://github.com/actions/setup-java/releases)
- [Commits](https://github.com/actions/setup-java/compare/1df8dbefe2a8cbc99770194893dd902763bee34b...3f07048e3d294f56e9b90ac5ea2c6f74e9ad0f98)

---
updated-dependencies:
- dependency-name: actions/setup-java
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-13 09:04:11 +01:00
Renovate BotandArnold Gálovics 992212a62f chore(deps): update gradle/wrapper-validation-action digest to dabb1b5 2023-02-13 09:03:31 +01:00
taskain7andArnold Gálovics 84649193fb [FINERACT-1884] fix last loan transaction 2023-02-10 12:13:47 +01:00
Adam Saghy 8bd96f55e0 FINERACT-1724: Fix journal entry order 2023-02-09 12:10:33 +01:00
taskain7 70dd1582bc [FINERACT-1678] fix get odlest cob closed loan query 2023-02-09 10:09:23 +01:00
Arnold GalovicsandArnold Gálovics 0e96b71f0e FINERACT-1724: Fixed Generate Loss Loan provisioning job + enhanced the stuck job listener to be smarter 2023-02-08 20:21:23 +01:00
Adam Saghy 8c12fbed37 FINERACT-1724: Fix journal entry swagger 2023-02-08 16:45:53 +01:00
taskain7andArnold Gálovics f5687750ff [FINERACT-1678] COB business step order fix 2023-02-08 09:21:50 +01:00
Janos HaberandArnold Gálovics f8eacbba88 FINERACT-1724 Loan COB Api Filter fix
- [x] Loan COB Api Filter fix for urls
- [x] Unit test
2023-02-07 20:25:45 +01:00
Adam Saghy 51203b173f FINERACT-1694: Fix missing payment details data for events 2023-02-07 18:07:34 +01:00
Adam Saghy 3f2feceea1 FINERACT-1839: Minor fix for Chargeback transaction relation reprocessing 2023-02-07 16:43:03 +01:00
Adam Saghy e456aa6c65 FINERACT-1840: Minor fix to avoid business logic collision 2023-02-07 14:41:21 +01:00
Arnold GalovicsandArnold Gálovics 395b7057cf FINERACT-1724: Batch worker JMS message acknowledgement support 2023-02-07 11:38:41 +01:00
Janos HaberandAdam Saghy 3d885495e2 FINERACT-1839 Accounting for CBR Reversal
- [x] Accrual and Cash Processor support
- [x] Integration test
- [x] Sonarlint code smell fix
2023-02-07 10:21:50 +01:00
taskain7andArnold Gálovics f8162a90eb [FINERACT-1880] Fix for parameter value field type mismatch in JobParameter 2023-02-06 21:48:08 +01:00
taskain7andArnold Gálovics abcaa52ef7 [FINERACT-1678] Integration test for Inline COB on write API calls when the loan account is soft locked 2023-02-06 20:22:34 +01:00
Janos HaberandArnold Gálovics d8fd8088b0 FINERACT-1707 - S3 export and dependent service
- [x] S3 export function
- [x] list all available export type services
- [x] refactor export service
- [x] unit test for export name generator
- [x] s3 integration test
- [x] localstack integration for testing
2023-02-06 19:53:00 +01:00
Adam SaghyandArnold Gálovics e08675ed54 FINERACT-1694: Add submittedOnDate and externalLoanId to LoanChargeData event 2023-02-06 10:20:11 +01:00
Renovate BotandArnold Gálovics 3f800ab3ad fix(deps): update dependency com.puppycrawl.tools:checkstyle to v10.7.0 2023-02-06 10:19:13 +01:00
Adam SaghyandArnold Gálovics 0a2db35f8d FINERACT-1839: Reversal on the loan account after CBR / Chargeback 2023-02-03 13:26:13 +01:00
Arnold GalovicsandArnold Gálovics d7acfc1e5d Renovate adjustments 2023-02-03 12:38:20 +01:00
Ruchi DhamankarandArnold Gálovics 38b46f4125 FINERACT-1855-Arrears-aging-job-as-business-step 2023-02-03 12:32:54 +01:00
Jose Alberto HernandezandAdam Saghy 95ec9eaa37 FINERACT-1840: Fee income is not realised if the loan got fully repaid 2023-02-03 11:29:11 +01:00
Arnold GalovicsandArnold Gálovics 3a2f25980f FINERACT-1724: Swagger fixes 2023-02-02 16:47:13 +01:00
Adam Saghy 073ad2a431 FINERACT-1865: Fix transaction persistence issues during reverse-replay 2023-01-31 17:26:33 +01:00
Jose Alberto HernandezandAdam Saghy 226a4321fb FINERACT-1854: Undo last disbursal function deletes all disbursals on the last date 2023-01-31 16:43:03 +01:00
Adam Saghy 25622aa6a7 FINERACT-1724: Fix grammar in error message 2023-01-31 16:19:46 +01:00
Adam SaghyandArnold Gálovics 06f5d3cbdd FINERACT-1724: Disable failing test 2023-01-31 13:49:27 +01:00
taskain7andArnold Gálovics 5a19995e35 [FINERACT-1678] Internal API for placing lock on loan account 2023-01-30 17:37:38 +01:00
Adam SaghyandArnold Gálovics c1def37088 FINERACT-1724: Test enhancement 2023-01-30 17:33:10 +01:00
Arnold GalovicsandArnold Gálovics 18126f2a78 FINERACT-1724: Swagger fixes for Loan application 2023-01-30 13:57:30 +01:00
Renovate BotandArnold Gálovics e60044c124 fix(deps): update dependency mysql:mysql-connector-java to v8.0.32 2023-01-30 07:45:52 +01:00
Renovate BotandArnold Gálovics 5919669256 chore(deps): update all non-major dependencies 2023-01-30 07:45:41 +01:00
dependabot[bot]andArnold Gálovics 9d8421e48e chore(deps): bump gradle/wrapper-validation-action
Bumps [gradle/wrapper-validation-action](https://github.com/gradle/wrapper-validation-action) from 9aa31f26bc8e536d1faf4b332bb8365350743a18 to 6c561573985cd8bd4d64efcfe270d51682d210e2.
- [Release notes](https://github.com/gradle/wrapper-validation-action/releases)
- [Commits](https://github.com/gradle/wrapper-validation-action/compare/9aa31f26bc8e536d1faf4b332bb8365350743a18...6c561573985cd8bd4d64efcfe270d51682d210e2)

---
updated-dependencies:
- dependency-name: gradle/wrapper-validation-action
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-27 14:00:53 +01:00
Adam Saghy 2cdf33881d FINERACT-1689: Fix job mismatched logic 2023-01-27 09:52:41 +01:00
Janos HaberandArnold Gálovics 1808e921ba Revert "FINERACT-1724 - Replayed bulk transaction fix [x] - Remove bulk transaction from ReplayedTransactionBusinessEventService [x] - Create Aspect and custom annotation for CommandHandler and Tasklet bulk events [x] - Add @BulkEventSupport annotation where ReplayedTransactionBusinessEventService was used [x] - Test class for Aspect call failure handling"
This reverts commit 1b2c09ea
2023-01-25 16:54:12 +01:00
Arnold GalovicsandArnold Gálovics 507556f202 FINERACT-1724: Swagger fixes for LoansApiResource 2023-01-25 15:37:15 +01:00
Arnold Gálovics a85845ba52 Revert "FINERACT-1840: Fee income is not realised if the loan got fully repaid (#2902)"
This reverts commit f3d7c042a4.
2023-01-25 13:48:42 +01:00
Arnold Gálovics 5872e14086 Revert "Fix to use only loan transaction type 2 in getLastRepaymentTransaction"
This reverts commit e1e3ba2c10.
2023-01-25 13:37:54 +01:00
Adam SaghyandArnold Gálovics b5b33b1b95 FINERACT-1678: FineractContext had wrong dates when a cron job got triggered (test) 2023-01-25 12:26:33 +01:00
Adam Saghy 1733eacf3a FINERACT-1865: Decrease optimistic lock exception probability 2023-01-25 12:22:27 +01:00
Arnold GalovicsandArnold Gálovics cd0cec0229 FINERACT-1724: Fixed unncessary fineract-provider publication since it
fails the overall publication with the following error:
Invalid publication 'mavenJava': POM file is invalid. Check any
modifications you have made to the POM file.
2023-01-25 10:49:32 +01:00
Adam Saghy 784ae1aabe FINERACT-1678: FineractContext had wrong dates when a cron job got triggered 2023-01-24 15:39:34 +01:00
Jose Alberto Hernandezandtaskain7 e1e3ba2c10 Fix to use only loan transaction type 2 in getLastRepaymentTransaction 2023-01-24 14:01:06 +01:00
Renovate BotandArnold Gálovics 36d916e8a7 Update non-major 2023-01-23 12:41:00 +01:00
Renovate BotandArnold Gálovics 9291810eea Update all non-major dependencies 2023-01-23 11:43:33 +01:00
Renovate BotandArnold Gálovics 1d45d37c66 Update gradle/wrapper-validation-action digest to 9aa31f2 2023-01-23 10:31:31 +01:00
d0ec63d150 Update dashboard table reports for postgresql (#2907)
Co-authored-by: Jose Alberto Hernandez <alberto@MacBook-Pro.local>
2023-01-22 16:42:01 -06:00
f3d7c042a4 FINERACT-1840: Fee income is not realised if the loan got fully repaid (#2902)
Co-authored-by: Jose Alberto Hernandez <alberto@MacBook-Pro.local>
2023-01-21 23:25:28 -06:00
4479196c3e Update dashboard table reports (#2905)
Co-authored-by: Jose Alberto Hernandez <alberto@MacBook-Pro.local>
2023-01-21 23:25:13 -06:00
679d297ad5 Fix to update the client externalId (#2906)
Co-authored-by: Jose Alberto Hernandez <alberto@MacBook-Pro.local>
2023-01-21 23:24:35 -06:00
Arnold GalovicsandArnold Gálovics 5a89c19d0a FINERACT-1724: Added JMS connection pooling to the external event producer 2023-01-20 15:34:45 +01:00
taskain7andArnold Gálovics 760102e3bb [FINERACT-1678] Inline Loan COB for Batch API 2023-01-20 15:11:46 +01:00
taskain7andArnold Gálovics ef153c2b69 [FINERACT-1859] Avro schema for LoanAccountsStayedLockedBusinessEvent 2023-01-20 14:47:22 +01:00
Janos HaberandArnold Gálovics e82c0cac52 FINERACT-1707 - Export refactor
[x] Refactor Datatable export
[x] Fix CSV exceptions
2023-01-19 15:45:48 +01:00
Janos HaberandArnold Gálovics 1b2c09eae5 FINERACT-1724 - Replayed bulk transaction fix
[x] - Remove bulk transaction from ReplayedTransactionBusinessEventService
[x] - Create Aspect and custom annotation for CommandHandler and Tasklet bulk events
[x] - Add @BulkEventSupport annotation where ReplayedTransactionBusinessEventService was used
[x] - Test class for Aspect call failure handling
2023-01-19 14:37:09 +01:00
Jose Alberto HernandezandAdam Saghy 6d3cac8c02 FINERACT-1847: Removing Edit function from Goodwill Credit or Payout Refund or Merchant Issued Refund transactions on API level 2023-01-19 14:06:23 +01:00
Arnold GalovicsandArnold Gálovics 66e4ac6194 FINERACT-1724: Removed accidental closing of JMS connection upon startup 2023-01-19 13:14:53 +01:00
Arnold GalovicsandArnold Gálovics 7d28646c7d FINERACT-1724: Implemented support for multiple parallel JMS producers for external events 2023-01-19 10:34:11 +01:00
Ruchi DhamankarandArnold Gálovics 54aae1c0a3 FINERACT-1844-Loan-Chargeback-Transaction-event-data-fix 2023-01-18 17:00:59 +01:00
taskain7andArnold Gálovics 220d9fe1e4 [FINERACT-1678] Loan COB Catch Up 2023-01-18 16:09:26 +01:00
Jose Alberto HernandezandArnold Gálovics 21013749f4 FINERACT-1853: General accounting summary table reports 2023-01-18 16:08:24 +01:00
Janos HaberandArnold Gálovics 1a0d81dbb0 FINERACT-1707 - S3 upgrade
[x] Upgrade S3 dependencies and libraries without code modifications
2023-01-18 15:56:42 +01:00
taskain7andArnold Gálovics 1138b969e5 [FINERACT-1863] Swagger schema fix for PutExternalEventConfigurationsRequest() and PutGlobalConfigurationsRequest() 2023-01-18 12:58:43 +01:00
Adam SaghyandArnold Gálovics f574ea7659 FINERACT-1724: Fix loan status change bug at the event of transaction replay 2023-01-17 18:48:18 +01:00
Adam SaghyandArnold Gálovics 105071ad9b FINERACT-1724: Add Charge-off transaction into r_enum_value table 2023-01-17 18:48:05 +01:00
Adam SaghyandArnold Gálovics b24cdb4a65 FINERACT-1806: Trigger event when charge-off happens 2023-01-17 15:27:21 +01:00
Ruchi DhamankarandArnold Gálovics e4106bd11d FINERACT-1694-External-event-producer-batch-size-configuration 2023-01-17 13:34:04 +01:00
Renovate BotandArnold Gálovics 6626343858 chore(deps): update all non-major dependencies 2023-01-17 13:33:45 +01:00
Adam SaghyandArnold Gálovics 1b1bbb0db4 FINERACT-1724: Fix id type of LoanAccountDataV1 2023-01-17 12:30:48 +01:00
taskain7andArnold Gálovics 20d96d9542 [FINERACT-1852] Swagger schema inconsistency for Business Step Config APIs 2023-01-17 11:55:28 +01:00
taskain7andArnold Gálovics 4a250b7a56 [FINERACT-1859] Missing configuration for LoanAccountsStayedLockedBusinessEvent 2023-01-17 09:41:51 +01:00
Jose Alberto HernandezandAdam Saghy 09a91bba01 FINERACT-1856: Fix to update datatable entry is failing after column added lately 2023-01-17 09:15:45 +01:00
Renovate BotandArnold Gálovics 894ff15aec chore(deps): update dependency org.mockito:mockito-bom to v5 2023-01-16 15:12:13 +01:00
Víctor RomeroandGitHub adb7409323 FINERACT-1848 Add support for plugins (#2872) 2023-01-15 20:23:02 -06:00
Ruchi DhamankarandArnold Gálovics 52129b03f3 FINERACT-1734-Loan-Repayment-Due-Overdue-Separate-Business-Events 2023-01-12 12:01:03 +01:00
Arnold GalovicsandArnold Gálovics 49abe22b29 FINERACT-1724: Added ExternalEventConfigurationApi to FineractClient 2023-01-11 21:25:03 +01:00
Wilfred KigenyiandArnold Gálovics e23eeafeaa FINERACT-1851 2023-01-11 12:13:48 +01:00
Ruchi DhamankarandArnold Gálovics 7683e638db FINERACT-1818-Credit-Refund-Payout-Not-Getting-Created-Test 2023-01-11 12:13:29 +01:00
Ruchi DhamankarandArnold Gálovics 24ff5e8691 FINERACT-1734-LoanBalanceChanged-Business-Event-Chargeback 2023-01-11 12:12:47 +01:00
Janos HaberandArnold Gálovics dde36f391c FINERACT-1734 - Loan Account Delinquency Changed event definition
[x] Fix Charge data because not fetched the content
2023-01-11 12:00:57 +01:00
Renovate BotandArnold Gálovics 018aca3ba4 fix(deps): update non-major 2023-01-10 14:12:48 +01:00
Ruchi Dhamankarandtaskain7 145adaa9fe FINERACT-1818-Credit-Refund-Payout-Not-Getting-Created 2023-01-10 05:11:56 -08:00
Arnold GalovicsandArnold Gálovics 61ca7bb0e0 FINERACT-1724: Added the possibility to use username and password for JMS for remote jobs + the ability to disable remote jobs completely for non-batch instances 2023-01-10 12:43:55 +01:00
taskain7 8e597e46f7 [FINERACT-1842] Wrong entityId is returned upon disbursing a loan 2023-01-10 00:56:50 -08:00
Jose Alberto HernandezandArnold Gálovics dafd4c3436 FINERACT-1785: Specified due date charges/fees cannot be applied on disbursement date 2023-01-09 23:39:56 +01:00
Renovate BotandArnold Gálovics ab51b2a4cc chore(deps): update all non-major dependencies 2023-01-09 23:38:50 +01:00
dependabot[bot]andArnold Gálovics a73ce8c562 chore(deps): bump actions/upload-artifact from 3.1.1 to 3.1.2
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3.1.1 to 3.1.2.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/83fd05a356d7e2593de66fc9913b3002723633cb...0b7f8abb1508181956e8e162db84b466c27e18ce)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-09 19:04:30 +01:00
34680f664b FINERACT-1846: Translate Flyway migrations to Liquibase for version 1… (#2847)
* FINERACT-1846: Translate Flyway migrations to Liquibase for version 1.4 to 1.6

* FINERACT-1846: Translate Flyway migrations to Liquibase for version 1.4 to 1.6

Co-authored-by: Jose Alberto Hernandez <alberto@MacBook-Pro.local>
2023-01-06 14:20:15 -06:00
a25acf0abd Fix to use notes in Savings Accounts (#2857)
Co-authored-by: Jose Alberto Hernandez <alberto@MacBook-Pro.local>
2023-01-06 14:17:35 -06:00
Arnold GalovicsandArnold Gálovics 0e391edf47 FINERACT-1724: Extended the event framework sinks to be ActiveMQ topics as well in addition to ActiveMQ queues 2023-01-06 16:17:12 +01:00
Arnold Galovicsandtaskain7 24eb9242a9 FINERACT-1724: Swagger enhancements 2023-01-06 05:27:20 -08:00
Adam SaghyandArnold Gálovics c7504680b7 FINERACT-1806: Charge-off API 2023-01-06 13:42:54 +01:00
dependabot[bot]andArnold Gálovics bd052acab0 chore(deps): bump actions/setup-node from 3.5.1 to 3.6.0
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 3.5.1 to 3.6.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/8c91899e586c5b171469028077307d293428b516...64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-06 10:49:06 +01:00
dependabot[bot]andArnold Gálovics 941093df95 chore(deps): bump actions/checkout from 3.2.0 to 3.3.0
Bumps [actions/checkout](https://github.com/actions/checkout) from 3.2.0 to 3.3.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/755da8c3cf115ac066823e79a1e1788f8940201b...ac593985615ec2ede58e132d2e21d2b1cbd6127c)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-06 10:48:59 +01:00
Ruchi Dhamankarandtaskain7 4269e3e8f1 FINERACT-1678-Config-Bulk-Event-Loan-COB 2023-01-05 06:14:24 -08:00
Renovate BotandArnold Gálovics a62d0578d5 chore(deps): update all non-major dependencies 2023-01-02 11:58:52 +01:00
Ruchi DhamankarandArnold Gálovics 64fdc39264 FINERACT-1818-LoanAccount-Avro-data-addition-Charges-Delinquent-data 2022-12-30 17:34:40 +01:00
Jose Alberto HernandezandArnold Gálovics db480f4213 FINERACT-1841 Fix Duplicated journal entries when a chargeback happens 2022-12-30 09:05:59 +01:00
Arnold GalovicsandArnold Gálovics 77ee43acb8 Fixed purge external events job 2022-12-29 12:38:16 +01:00
Arnold GalovicsandArnold Gálovics 7a9e696ac8 Removed vavr related code 2022-12-29 12:38:16 +01:00
Renovate BotandArnold Gálovics 797ba293c0 chore(deps): update dependency io.github.resilience4j:resilience4j-spring-boot2 to v2 2022-12-29 12:38:16 +01:00
Jose Alberto HernandezandArnold Gálovics fd3ad81f81 FINERACT-1837: DelinquencyBucketsIntegrationTest performance 2022-12-28 19:13:15 +01:00
Arnold GalovicsandArnold Gálovics 33610f52e3 Added GRANT ALL to public schema for GH Actions build 2022-12-28 17:13:46 +01:00
Renovate BotandArnold Gálovics 0b9c591bf0 chore(deps): update postgres docker tag to v15 2022-12-28 17:13:46 +01:00
Ruchi DhamankarandArnold Gálovics c260b045b8 FINERACT-1818-Additions-to-LoanAccount-Avro-data 2022-12-28 16:14:06 +01:00
Arnold GalovicsandArnold Gálovics fb1dbb078f Downgraded Tomcat to 9.0.69 2022-12-28 16:13:55 +01:00
Renovate BotandArnold Gálovics 91feba92d8 fix(deps): update non-major 2022-12-28 16:13:55 +01:00
Renovate BotandArnold Gálovics ad20e88792 chore(deps): update actions/stale action to v7 2022-12-27 15:50:39 +01:00
Renovate BotandArnold Gálovics 6510544478 chore(deps): update plugin org.barfuin.gradle.taskinfo to v2 2022-12-27 10:44:22 +01:00
Renovate BotandArnold Gálovics f568762f70 chore(deps): update actions/stale digest to 5ebf00e 2022-12-27 10:43:53 +01:00
Renovate BotandArnold Gálovics 67ad1546ca chore(deps): update all non-major dependencies 2022-12-27 10:43:47 +01:00
Ruchi DhamankarandArnold Gálovics 03e17c2d23 FINERACT-1734-Charge-Paid-By-List-Loan-Transaction-Events 2022-12-27 10:43:16 +01:00
Ruchi DhamankarandArnold Gálovics d3dcc760e2 FINERACT-1734-Create-Custom-Business-Event 2022-12-23 12:16:33 +01:00
Ruchi DhamankarandArnold Gálovics 0f41eb2c42 FINERACT-1734-LoanRepaymentDue-Event-Enhancements 2022-12-22 12:56:16 +01:00
Arnold GalovicsandArnold Gálovics f49a0b8e95 Downgraded tomcat to 9.0.69 for tests 2022-12-22 12:56:05 +01:00
Renovate BotandArnold Gálovics 90e829ae76 fix(deps): update non-major 2022-12-22 12:56:05 +01:00
Arnold GalovicsandArnold Gálovics 62cefcdc8b Disabling automatic Spring 6 upgrade for renovate 2022-12-21 19:46:45 +01:00
Arnold GalovicsandArnold Gálovics 77ee567c76 Explicit version numbers for slf4j packages in renovate.json to ensure no automatic upgrades. Note: SLF4J and Logback cannot be upgraded until Spring 6 is integrated 2022-12-21 19:46:45 +01:00
dependabot[bot]andArnold Gálovics e60e66b5ac chore(deps): bump actions/stale from 6.0.1 to 7.0.0
Bumps [actions/stale](https://github.com/actions/stale) from 6.0.1 to 7.0.0.
- [Release notes](https://github.com/actions/stale/releases)
- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/stale/compare/5ebf00ea0e4c1561e9b43a292ed34424fb1d4578...6f05e4244c9a0b2ed3401882b05d701dd0a7289b)

---
updated-dependencies:
- dependency-name: actions/stale
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-21 14:00:52 +01:00
Janos HaberandArnold Gálovics 4c341a16e3 FINERACT-1744 - Idempotency documentation 2022-12-21 09:08:26 +01:00
Arnold GalovicsandArnold Gálovics 8ab206aa4a FINERACT-1724: Loan Charge API support for batch APIs and a couple of other batch API enhancements 2022-12-19 22:46:36 +01:00
Renovate BotandArnold Gálovics cb39a23467 chore(deps): update plugin net.ltgt.errorprone to v3 2022-12-19 16:34:12 +01:00
Renovate BotandArnold Gálovics 6741b0e273 chore(deps): update all non-major dependencies 2022-12-19 16:15:03 +01:00
Jose Alberto HernandezandArnold Gálovics c4d065fc7c FINERACT-1838: Loan account external events with repayment schedule 2022-12-19 16:09:33 +01:00
Jose Alberto HernandezandArnold Gálovics 9fba52abbb FINERACT-1785: Waive loan charge with same disbursement date 2022-12-19 16:01:53 +01:00
Janos HaberandArnold Gálovics adcd76154e FINERACT-1734 - Loan Account Delinquency Changed event definition
Extend current Loan Account Delinquency range change event.
2022-12-19 15:48:40 +01:00
Jose Alberto HernandezandArnold Gálovics 833dddb551 FINERACT-1760: Client by External Id 2022-12-19 14:58:23 +01:00
Adam SaghyandArnold Gálovics cef826af8f FINERACT-1724: Performance improvement of SchedulerJobsTestResults (for integration tests) 2022-12-16 22:30:47 +01:00
Ruchi DhamankarandArnold Gálovics d80aa77c02 FINERACT-1734-LoanRepaymentDue-Event-Enhancements-1 2022-12-16 18:12:16 +01:00
Adam Saghy 1405b28d71 FINERACT-1724: Performance improvement of global configuration helper (for integration tests) 2022-12-16 16:41:55 +01:00
Adam SaghyandArnold Gálovics 70f2783508 FINERACT-1724: Fix NPE issues + Incorrect arguments to mysqld_stmt_bulk_execute 2022-12-16 14:20:52 +01:00
Aleksandar VidakovicandArnold Gálovics 4d5dce0309 FINERACT-1834: Remove dependency on configuration service from content repository factory 2022-12-15 23:20:23 +01:00
Adam SaghyandArnold Gálovics 69c25c282b FINERACT-1734: Trigger LoanBalanceChangedBusinessEvent for charges 2022-12-15 23:19:01 +01:00
Renovate BotandArnold Gálovics 53f2d9ad2e chore(deps): update all non-major dependencies 2022-12-15 16:11:50 +01:00
Adam Saghy 2532c58cbc FINERACT-1760: Enhanced external id support for loan 2022-12-15 14:25:47 +01:00
Ruchi DhamankarandArnold Gálovics 8457b31c0f FINERACT-1829-Store-Overpaid-Date-for-Loan 2022-12-15 14:10:44 +01:00
dependabot[bot]andArnold Gálovics 41440e4ca4 chore(deps): bump actions/setup-java from 3.8.0 to 3.9.0
Bumps [actions/setup-java](https://github.com/actions/setup-java) from 3.8.0 to 3.9.0.
- [Release notes](https://github.com/actions/setup-java/releases)
- [Commits](https://github.com/actions/setup-java/compare/c3ac5dd0ed8db40fedb61c32fbe677e6b355e94c...1df8dbefe2a8cbc99770194893dd902763bee34b)

---
updated-dependencies:
- dependency-name: actions/setup-java
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-15 12:02:34 +01:00
Arnold GalovicsandArnold Gálovics fcfa8ada5f Force Gradle version to be equal or under 7.5.1 for renovate 2022-12-14 14:11:45 +01:00
Janos HaberandArnold Gálovics 995b1ea021 FINERACT-1744
- [x] Batch api support for idempotency
- [x] BatchFilter for generic batch filtering
- [x] LoanCOBApiFilter extend with BatchFilter support
- [x] FineractRequestContextHolder generic context holder with batch and http request supports
2022-12-14 13:06:20 +01:00
Ruchi DhamankarandArnold Gálovics be958b9aef FINERACT-1818-New-Parameter-Loan-Api 2022-12-14 12:35:55 +01:00
Janos HaberandArnold Gálovics 9f43ec235a FINERACT-1724
- [x] Swagger `Changes` class name collision.
2022-12-13 17:15:47 +01:00
Jose Alberto HernandezandArnold Gálovics a987956cbc FINERACT-1785: Allow to add charge (penalty) with same disbursement date 2022-12-13 14:13:41 +01:00
dependabot[bot]andArnold Gálovics e938104b84 chore(deps): bump actions/checkout from 3.1.0 to 3.2.0
Bumps [actions/checkout](https://github.com/actions/checkout) from 3.1.0 to 3.2.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8...755da8c3cf115ac066823e79a1e1788f8940201b)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-13 11:34:49 +01:00
Ruchi DhamankarandArnold Gálovics 59871353fb FINERACT-1760-Index-or-Unique-column-creation-datatables 2022-12-12 16:01:33 +01:00
Renovate BotandArnold Gálovics bd392a6209 chore(deps): update actions/stale action to v6 2022-12-12 10:23:00 +01:00
Adam SaghyandArnold Gálovics 91e5e570ec FINERACT-1724: Fix delinquency tags swagger response type 2022-12-09 17:13:27 +01:00
Jose Alberto HernandezandArnold Gálovics 8f253a0d36 FINERACT-1707: Update r_enum_value table with new transaction_types values 2022-12-09 13:27:44 +01:00
Adam SaghyandArnold Gálovics 9999e08de2 FINERACT-1760: Batch API for datatable query update 2022-12-07 22:46:16 +01:00
Jose Alberto HernandezandArnold Gálovics 7dfbc2534d FINERACT-1827: Last installment is not closed if there is a chargeback transaction 2022-12-06 21:17:24 +01:00
Arnold GalovicsandArnold Gálovics 7bcea6676c Modernizr fixes 2022-12-06 18:09:28 +01:00
Arnold GalovicsandArnold Gálovics dfa0e98ea7 Downgrade Gradle from 7.6 to 7.5.1 2022-12-06 18:09:28 +01:00
Renovate BotandArnold Gálovics f0a9304c8e chore(deps): update all non-major dependencies 2022-12-06 18:09:28 +01:00
Adam Saghy 79b6b8d2ad FINERACT-1828: Fix datatable audit time handling 2022-12-06 16:00:26 +01:00
Jose Alberto HernandezandArnold Gálovics 804bdc28b9 Create client with datatable subentity type 2022-12-06 14:03:29 +01:00
2270 changed files with 82980 additions and 22912 deletions
+6 -4
View File
@@ -8,11 +8,13 @@ permissions:
jobs:
build:
runs-on: ubuntu-20.04
env:
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }}
steps:
- uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # tag=v3
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # tag=v3
- name: Set up JDK 17
uses: actions/setup-java@c3ac5dd0ed8db40fedb61c32fbe677e6b355e94c # v3
uses: actions/setup-java@cd89f46ac9d01407894225f350157564c9c7cee2 # v3
with:
java-version: '17'
distribution: 'zulu'
@@ -22,8 +24,8 @@ jobs:
- name: Start the stack
run: docker-compose up -d
- name: Wait for stack to come up
run: sleep 120
run: sleep 300
- name: Check health
run: curl -f -k --retry 5 --retry-connrefused --connect-timeout 30 --retry-delay 30 https://localhost:8443/fineract-provider/actuator/health
run: curl -f -k --retry 10 --retry-connrefused --connect-timeout 30 --retry-delay 30 https://localhost:8443/fineract-provider/actuator/health
- name: Check info
run: (( $(curl -f -k --retry 5 --retry-connrefused --connect-timeout 30 --retry-delay 30 https://localhost:8443/fineract-provider/actuator/info | wc --chars) > 100 ))
@@ -8,22 +8,24 @@ permissions:
jobs:
build:
runs-on: ubuntu-20.04
env:
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }}
steps:
- uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # tag=v3
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # tag=v3
- name: Set up JDK 17
uses: actions/setup-java@c3ac5dd0ed8db40fedb61c32fbe677e6b355e94c # v3
uses: actions/setup-java@cd89f46ac9d01407894225f350157564c9c7cee2 # v3
with:
java-version: '17'
distribution: 'zulu'
cache: gradle
- name: Build the image
run: ./gradlew :fineract-provider:clean :fineract-provider:jibDockerBuild -x test
- name: Start the stack
run: ./gradlew --no-daemon --console=plain :fineract-provider:clean :fineract-provider:jibDockerBuild -x test
- name: Start the Standalone Stack
run: docker-compose -f docker-compose-postgresql.yml up -d
- name: Wait for stack to come up
run: sleep 120
run: sleep 300
- name: Check health
run: curl -f -k --retry 5 --retry-connrefused --connect-timeout 30 --retry-delay 30 https://localhost:8443/fineract-provider/actuator/health
run: curl -f -k --retry 10 --retry-connrefused --connect-timeout 30 --retry-delay 30 https://localhost:8443/fineract-provider/actuator/health
- name: Check info
run: (( $(curl -f -k --retry 5 --retry-connrefused --connect-timeout 30 --retry-delay 30 https://localhost:8443/fineract-provider/actuator/info | wc --chars) > 100 ))
+6 -4
View File
@@ -7,22 +7,24 @@ permissions:
jobs:
build:
runs-on: ubuntu-20.04
env:
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }}
steps:
- name: Checkout
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # tag=v3
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # tag=v3
- name: Set up JDK 17
uses: actions/setup-java@c3ac5dd0ed8db40fedb61c32fbe677e6b355e94c # v3
uses: actions/setup-java@cd89f46ac9d01407894225f350157564c9c7cee2 # v3
with:
java-version: '17'
distribution: 'zulu'
cache: gradle
- uses: actions/setup-node@8c91899e586c5b171469028077307d293428b516 # tag=v3
- uses: actions/setup-node@e33196f7422957bea03ed53f6fbb155025ffc7b8 # tag=v3
with:
node-version: 16
- name: Congfigure vega-cli
run: npm i -g vega-cli --unsafe
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@55e685c48d84285a5b0418cd094606e199cca3b6
uses: gradle/wrapper-validation-action@56b90f209b02bf6d1deae490e9ef18b21a389cd4
- name: Install additional software
run: |
sudo apt-get update
+33 -12
View File
@@ -10,15 +10,15 @@ jobs:
services:
mariad:
image: mariadb:10.10
image: mariadb:11.0
ports:
- 3306:3306
env:
MARIADB_ROOT_PASSWORD: mysql
options: --health-cmd="mysqladmin ping" --health-interval=5s --health-timeout=2s --health-retries=3
options: --health-cmd="healthcheck.sh --su-mysql --connect --innodb_initialized" --health-interval=5s --health-timeout=2s --health-retries=3
mock-oauth2-server:
image: ghcr.io/navikt/mock-oauth2-server:0.5.6
image: ghcr.io/navikt/mock-oauth2-server:1.0.0
ports:
- 9000:9000
env:
@@ -27,22 +27,23 @@ jobs:
env:
TZ: Asia/Kolkata
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }}
steps:
- name: Checkout
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # tag=v3
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # tag=v3
- name: Set up JDK 17
uses: actions/setup-java@c3ac5dd0ed8db40fedb61c32fbe677e6b355e94c # v3
uses: actions/setup-java@cd89f46ac9d01407894225f350157564c9c7cee2 # v3
with:
java-version: '17'
distribution: 'zulu'
cache: gradle
- uses: actions/setup-node@8c91899e586c5b171469028077307d293428b516 # tag=v3
- uses: actions/setup-node@e33196f7422957bea03ed53f6fbb155025ffc7b8 # tag=v3
with:
node-version: 16
- name: Congfigure vega-cli
run: npm i -g vega-cli --unsafe
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@55e685c48d84285a5b0418cd094606e199cca3b6
uses: gradle/wrapper-validation-action@56b90f209b02bf6d1deae490e9ef18b21a389cd4
- name: Verify MariaDB connection
run: |
while ! mysqladmin ping -h"127.0.0.1" -P3306 ; do
@@ -52,20 +53,40 @@ jobs:
run: |
./gradlew --no-daemon -q createDB -PdbName=fineract_tenants
./gradlew --no-daemon -q createDB -PdbName=fineract_default
- name: Start LocalStack
env:
AWS_ENDPOINT_URL: http://localhost:4566
AWS_ACCESS_KEY_ID: localstack
AWS_SECRET_ACCESS_KEY: localstack
AWS_REGION: us-east-1
run: |
docker run -d --name localstack -p 4566:4566 -p 4510-4559:4510-4559 localstack/localstack:2.1
sleep 10
docker exec localstack awslocal s3api create-bucket --bucket fineract-reports
echo "LocalStack initialization complete"
- name: Install additional software
run: |
sudo apt-get update
sudo apt-get install ghostscript graphviz -y
- name: Build & Test
env:
AWS_ENDPOINT_URL: http://localhost:4566
AWS_ACCESS_KEY_ID: localstack
AWS_SECRET_ACCESS_KEY: localstack
AWS_REGION: us-east-1
FINERACT_REPORT_EXPORT_S3_ENABLED: true
FINERACT_REPORT_EXPORT_S3_BUCKET_NAME: fineract-reports
run: |
./gradlew --no-daemon --console=plain build test --fail-fast -x doc -x :twofactor-tests:test -x :oauth2-test:test
./gradlew --no-daemon --console=plain :twofactor-tests:test --fail-fast
./gradlew --no-daemon --console=plain :oauth2-tests:test --fail-fast
./gradlew --no-daemon --console=plain build -x cucumber -x test -x doc
./gradlew --no-daemon --console=plain cucumber
./gradlew --no-daemon --console=plain test -x :twofactor-tests:test -x :oauth2-test:test
./gradlew --no-daemon --console=plain :twofactor-tests:test
./gradlew --no-daemon --console=plain :oauth2-tests:test
- name: Archive test results
if: always()
uses: actions/upload-artifact@83fd05a356d7e2593de66fc9913b3002723633cb # tag=v3
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # tag=v3
with:
name: test-results
path: |
@@ -75,7 +96,7 @@ jobs:
- name: Archive server logs
if: always()
uses: actions/upload-artifact@83fd05a356d7e2593de66fc9913b3002723633cb # tag=v3
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # tag=v3
with:
name: server-logs
path: |
+31 -10
View File
@@ -18,7 +18,7 @@ jobs:
options: --health-cmd="mysqladmin ping" --health-interval=5s --health-timeout=2s --health-retries=3
mock-oauth2-server:
image: ghcr.io/navikt/mock-oauth2-server:0.5.6
image: ghcr.io/navikt/mock-oauth2-server:1.0.0
ports:
- 9000:9000
env:
@@ -27,22 +27,23 @@ jobs:
env:
TZ: Asia/Kolkata
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }}
steps:
- name: Checkout
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # tag=v3
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # tag=v3
- name: Set up JDK 17
uses: actions/setup-java@c3ac5dd0ed8db40fedb61c32fbe677e6b355e94c # v3
uses: actions/setup-java@cd89f46ac9d01407894225f350157564c9c7cee2 # v3
with:
java-version: '17'
distribution: 'zulu'
cache: gradle
- uses: actions/setup-node@8c91899e586c5b171469028077307d293428b516 # tag=v3
- uses: actions/setup-node@e33196f7422957bea03ed53f6fbb155025ffc7b8 # tag=v3
with:
node-version: 16
- name: Congfigure vega-cli
run: npm i -g vega-cli --unsafe
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@55e685c48d84285a5b0418cd094606e199cca3b6
uses: gradle/wrapper-validation-action@56b90f209b02bf6d1deae490e9ef18b21a389cd4
- name: Verify MariaDB connection
run: |
while ! mysqladmin ping -h"127.0.0.1" -P3306 ; do
@@ -52,20 +53,40 @@ jobs:
run: |
./gradlew --no-daemon -q createMySQLDB -PdbName=fineract_tenants
./gradlew --no-daemon -q createMySQLDB -PdbName=fineract_default
- name: Start LocalStack
env:
AWS_ENDPOINT_URL: http://localhost:4566
AWS_ACCESS_KEY_ID: localstack
AWS_SECRET_ACCESS_KEY: localstack
AWS_REGION: us-east-1
run: |
docker run -d --name localstack -p 4566:4566 -p 4510-4559:4510-4559 localstack/localstack:2.1
sleep 10
docker exec localstack awslocal s3api create-bucket --bucket fineract-reports
echo "LocalStack initialization complete"
- name: Install additional software
run: |
sudo apt-get update
sudo apt-get install ghostscript graphviz -y
- name: Build & Test
env:
AWS_ENDPOINT_URL: http://localhost:4566
AWS_ACCESS_KEY_ID: localstack
AWS_SECRET_ACCESS_KEY: localstack
AWS_REGION: us-east-1
FINERACT_REPORT_EXPORT_S3_ENABLED: true
FINERACT_REPORT_EXPORT_S3_BUCKET_NAME: fineract-reports
run: |
./gradlew --no-daemon --console=plain build test --fail-fast -x doc -x :twofactor-tests:test -x :oauth2-test:test -PdbType=mysql
./gradlew --no-daemon --console=plain :twofactor-tests:test --fail-fast -PdbType=mysql
./gradlew --no-daemon --console=plain :oauth2-tests:test --fail-fast -PdbType=mysql
./gradlew --no-daemon --console=plain build -x cucumber -x test -x doc
./gradlew --no-daemon --console=plain cucumber
./gradlew --no-daemon --console=plain test -x :twofactor-tests:test -x :oauth2-test:test -PdbType=mysql
./gradlew --no-daemon --console=plain :twofactor-tests:test -PdbType=mysql
./gradlew --no-daemon --console=plain :oauth2-tests:test -PdbType=mysql
- name: Archive test results
if: always()
uses: actions/upload-artifact@83fd05a356d7e2593de66fc9913b3002723633cb # tag=v3
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # tag=v3
with:
name: test-results
path: |
@@ -75,7 +96,7 @@ jobs:
- name: Archive server logs
if: always()
uses: actions/upload-artifact@83fd05a356d7e2593de66fc9913b3002723633cb # tag=v3
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # tag=v3
with:
name: server-logs
path: |
+32 -11
View File
@@ -10,7 +10,7 @@ jobs:
services:
postgresql:
image: postgres:13.9
image: postgres:15.3
ports:
- 5432:5432
env:
@@ -19,7 +19,7 @@ jobs:
options: --health-cmd="pg_isready -q -d postgres -U root" --health-interval=5s --health-timeout=2s --health-retries=3
mock-oauth2-server:
image: ghcr.io/navikt/mock-oauth2-server:0.5.6
image: ghcr.io/navikt/mock-oauth2-server:1.0.0
ports:
- 9000:9000
env:
@@ -28,22 +28,23 @@ jobs:
env:
TZ: Asia/Kolkata
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }}
steps:
- name: Checkout
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # tag=v3
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # tag=v3
- name: Set up JDK 17
uses: actions/setup-java@c3ac5dd0ed8db40fedb61c32fbe677e6b355e94c # v3
uses: actions/setup-java@cd89f46ac9d01407894225f350157564c9c7cee2 # v3
with:
java-version: '17'
distribution: 'zulu'
cache: gradle
- uses: actions/setup-node@8c91899e586c5b171469028077307d293428b516 # tag=v3
- uses: actions/setup-node@e33196f7422957bea03ed53f6fbb155025ffc7b8 # tag=v3
with:
node-version: 16
- name: Congfigure vega-cli
run: npm i -g vega-cli --unsafe
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@55e685c48d84285a5b0418cd094606e199cca3b6
uses: gradle/wrapper-validation-action@56b90f209b02bf6d1deae490e9ef18b21a389cd4
- name: Verify PostgreSQL connection
run: |
while ! pg_isready -d postgres -U root -h 127.0.0.1 -p 5432 ; do
@@ -53,20 +54,40 @@ jobs:
run: |
./gradlew --no-daemon -q createPGDB -PdbName=fineract_tenants
./gradlew --no-daemon -q createPGDB -PdbName=fineract_default
- name: Start LocalStack
env:
AWS_ENDPOINT_URL: http://localhost:4566
AWS_ACCESS_KEY_ID: localstack
AWS_SECRET_ACCESS_KEY: localstack
AWS_REGION: us-east-1
run: |
docker run -d --name localstack -p 4566:4566 -p 4510-4559:4510-4559 localstack/localstack:2.1
sleep 10
docker exec localstack awslocal s3api create-bucket --bucket fineract-reports
echo "LocalStack initialization complete"
- name: Install additional software
run: |
sudo apt-get update
sudo apt-get install ghostscript graphviz -y
- name: Build & Test
env:
AWS_ENDPOINT_URL: http://localhost:4566
AWS_ACCESS_KEY_ID: localstack
AWS_SECRET_ACCESS_KEY: localstack
AWS_REGION: us-east-1
FINERACT_REPORT_EXPORT_S3_ENABLED: true
FINERACT_REPORT_EXPORT_S3_BUCKET_NAME: fineract-reports
run: |
./gradlew --no-daemon --console=plain build test --fail-fast -x doc -x :twofactor-tests:test -x :oauth2-test:test -PdbType=postgresql
./gradlew --no-daemon --console=plain :twofactor-tests:test --fail-fast -PdbType=postgresql
./gradlew --no-daemon --console=plain :oauth2-tests:test --fail-fast -PdbType=postgresql
./gradlew --no-daemon --console=plain build -x cucumber -x test -x doc
./gradlew --no-daemon --console=plain cucumber
./gradlew --no-daemon --console=plain test -x :twofactor-tests:test -x :oauth2-test:test -PdbType=postgresql
./gradlew --no-daemon --console=plain :twofactor-tests:test -PdbType=postgresql
./gradlew --no-daemon --console=plain :oauth2-tests:test -PdbType=postgresql
- name: Archive test results
if: always()
uses: actions/upload-artifact@83fd05a356d7e2593de66fc9913b3002723633cb # tag=v3
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # tag=v3
with:
name: test-results
path: |
@@ -76,7 +97,7 @@ jobs:
- name: Archive server logs
if: always()
uses: actions/upload-artifact@83fd05a356d7e2593de66fc9913b3002723633cb # tag=v3
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # tag=v3
with:
name: server-logs
path: |
+37
View File
@@ -0,0 +1,37 @@
name: Fineract ActiveMQ Smoke
on: [push, pull_request]
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-20.04
env:
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }}
steps:
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # tag=v3
- name: Set up JDK 17
uses: actions/setup-java@cd89f46ac9d01407894225f350157564c9c7cee2 # v3
with:
java-version: '17'
distribution: 'zulu'
cache: gradle
- name: Build the image
run: ./gradlew --no-daemon --console=plain :fineract-provider:clean :fineract-provider:jibDockerBuild -x test
- name: Start the ActiveMQ Stack
run: docker-compose -f docker-compose-postgresql-activemq.yml up --scale fineract-worker=1 -d
- name: Wait for stack to come up
run: sleep 500
- name: Check health Manager
run: curl -f -k --retry 10 --retry-connrefused --connect-timeout 30 --retry-delay 30 https://localhost:8443/fineract-provider/actuator/health
- name: Check health Worker1
run: curl -f -k --retry 10 --retry-connrefused --connect-timeout 30 --retry-delay 30 https://localhost:8444/fineract-provider/actuator/health
- name: Check info Manager
run: (( $(curl -f -k --retry 5 --retry-connrefused --connect-timeout 30 --retry-delay 30 https://localhost:8443/fineract-provider/actuator/info | wc --chars) > 100 ))
- name: Check info Worker1
run: (( $(curl -f -k --retry 5 --retry-connrefused --connect-timeout 30 --retry-delay 30 https://localhost:8444/fineract-provider/actuator/info | wc --chars) > 100 ))
- name: Run Smoke Test with Remote COB
run: ./gradlew --no-daemon --console=plain :integration-tests:cleanTest :integration-tests:test --tests "org.apache.fineract.integrationtests.investor.externalassetowner.InitiateExternalAssetOwnerTransferTest" -PcargoDisabled
+37
View File
@@ -0,0 +1,37 @@
name: Fineract Kafka Smoke
on: [push, pull_request]
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-20.04
env:
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }}
steps:
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # tag=v3
- name: Set up JDK 17
uses: actions/setup-java@cd89f46ac9d01407894225f350157564c9c7cee2 # v3
with:
java-version: '17'
distribution: 'zulu'
cache: gradle
- name: Build the image
run: ./gradlew --no-daemon --console=plain :fineract-provider:clean :fineract-provider:jibDockerBuild -x test
- name: Start the Kafka Stack
run: docker-compose -f docker-compose-postgresql-kafka.yml up --scale fineract-worker=1 -d
- name: Wait for stack to come up
run: sleep 500
- name: Check health Manager
run: curl -f -k --retry 10 --retry-connrefused --connect-timeout 30 --retry-delay 30 https://localhost:8443/fineract-provider/actuator/health
- name: Check health Worker1
run: curl -f -k --retry 10 --retry-connrefused --connect-timeout 30 --retry-delay 30 https://localhost:8444/fineract-provider/actuator/health
- name: Check info Manager
run: (( $(curl -f -k --retry 5 --retry-connrefused --connect-timeout 30 --retry-delay 30 https://localhost:8443/fineract-provider/actuator/info | wc --chars) > 100 ))
- name: Check info Worker1
run: (( $(curl -f -k --retry 5 --retry-connrefused --connect-timeout 30 --retry-delay 30 https://localhost:8444/fineract-provider/actuator/info | wc --chars) > 100 ))
- name: Run Smoke Test with Remote COB
run: ./gradlew --no-daemon --console=plain :integration-tests:cleanTest :integration-tests:test --tests "org.apache.fineract.integrationtests.investor.externalassetowner.InitiateExternalAssetOwnerTransferTest" -PcargoDisabled
+4 -3
View File
@@ -17,16 +17,17 @@ jobs:
SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONARCLOUD_TOKEN }}
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }}
steps:
- name: Checkout
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # tag=v3
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # tag=v3
- name: Set up JDK 17
uses: actions/setup-java@c3ac5dd0ed8db40fedb61c32fbe677e6b355e94c # v3
uses: actions/setup-java@cd89f46ac9d01407894225f350157564c9c7cee2 # v3
with:
java-version: '17'
distribution: 'zulu'
cache: gradle
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@55e685c48d84285a5b0418cd094606e199cca3b6
uses: gradle/wrapper-validation-action@56b90f209b02bf6d1deae490e9ef18b21a389cd4
- name: Sonarqube
run: ./gradlew --no-daemon --console=plain -Dsonar.verbose=true -Dsonar.login=$SONAR_TOKEN -Dsonar.host.url=$SONAR_HOST_URL -Dsonar.organization=$SONAR_ORGANIZATION -Dsonar.projectKey=$SONAR_PROJECT_KEY --info --stacktrace sonarqube
+1 -1
View File
@@ -15,7 +15,7 @@ jobs:
pull-requests: write # for actions/stale to close stale PRs
runs-on: ubuntu-latest
steps:
- uses: actions/stale@5ebf00ea0e4c1561e9b43a292ed34424fb1d4578 # tag=v5
- uses: actions/stale@1160a2240286f5da8ec72b1c0816ce2481aabf84 # v8
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
# stale-issue-message: 'Stale issue message'
+69 -42
View File
@@ -2,6 +2,7 @@ Apache Fineract: A Platform for Microfinance
============
[![Swagger Validation](https://validator.swagger.io/validator?url=https://demo.fineract.dev/fineract-provider/swagger-ui/fineract.yaml)](https://validator.swagger.io/validator/debug?url=https://demo.fineract.dev/fineract-provider/swagger-ui/fineract.yaml) [![build](https://github.com/apache/fineract/actions/workflows/build.yml/badge.svg)](https://github.com/apache/fineract/actions/workflows/build.yml) [![Docker Hub](https://img.shields.io/docker/pulls/apache/fineract.svg?logo=Docker)](https://hub.docker.com/r/apache/fineract) [![Docker Build](https://img.shields.io/docker/cloud/build/apache/fineract.svg?logo=Docker)](https://hub.docker.com/r/apache/fineract/builds) [![Technical Debt](https://sonarcloud.io/api/project_badges/measure?project=apache_fineract&metric=sqale_index)](https://sonarcloud.io/summary/new_code?id=apache_fineract)
</b>
Fineract is a mature platform with open APIs that provides a reliable, robust, and affordable core banking solution for financial institutions offering services to the world’s 3 billion underbanked and unbanked.
@@ -12,16 +13,16 @@ to start contributing to this project in the online web-based IDE GitPod.io righ
(You may initially have to press F1 to Find Command and run "Java: Start Language Server".)
It's of course also possible to contribute with a "traditional" local development environment (see below).
Community
COMMUNITY
=========
If you are interested in contributing to this project, but perhaps don't quite know how and where to get started, please [join our developer mailing list](http://fineract.apache.org/#contribute), listen into our conversations, chime into threads, and just send us a "Hello!" introduction email; we're a friendly bunch, and look forward to hearing from you.
Requirements
REQUIREMENTS
============
* Java >= 17 (Azul Zulu JVM is tested by our CI on GitHub Actions)
* MariaDB 10.9
* `Java >= 17` (Azul Zulu JVM is tested by our CI on GitHub Actions)
* MariaDB `10.9`
You can run the required version of the database server in a container, instead of having to install it, like this:
@@ -31,20 +32,20 @@ and stop and destroy it like this:
docker rm -f mariadb-10.9
Beware that this database container database keeps its state inside the container and not on the host filesystem. It is lost when you destroy (rm) this container. This is typically fine for development. See [Caveats: Where to Store Data on the database container documentation](https://hub.docker.com/_/mariadb) re. how to make it persistent instead of ephemeral.
<br>Beware that this database container database keeps its state inside the container and not on the host filesystem. It is lost when you destroy (rm) this container. This is typically fine for development. See [Caveats: Where to Store Data on the database container documentation](https://hub.docker.com/_/mariadb) re. how to make it persistent instead of ephemeral.<br>
Tomcat v9 is only required if you wish to deploy the Fineract WAR to a separate external servlet container. Note that you do not require to install Tomcat to develop Fineract, or to run it in production if you use the self-contained JAR, which transparently embeds a servlet container using Spring Boot. (Until FINERACT-730, Tomcat 7/8 were also supported, but now Tomcat 9 is required.)
IMPORTANT: if you use MySQL or MariaDB
<br>IMPORTANT: If you use MySQL or MariaDB
============
Recently (after release 1.7.0) we introduced improved date time handling in Fineract. Date time is from now on stored in UTC and we are enforcing UTC timezone even on the JDBC driver, e. g. for MySQL:
Recently (after release `1.7.0`), we introduced improved date time handling in Fineract. Date time is from now on stored in UTC and we are enforcing UTC timezone even on the JDBC driver, e. g. for MySQL:
```
serverTimezone=UTC&useLegacyDatetimeCode=false&sessionVariables=time_zone=‘-00:00’
```
__DO__: If you do use MySQL as your Fineract databsae then the following configuration is highly recommended:
__DO__: If you do use MySQL as your Fineract database then the following configuration is highly recommended:
* Run the application in UTC (the default command line in our Docker image has the necessary parameters already set)
* Run the MySQL database server in UTC (if you use managed services like AWS RDS then this should be the default anyway, but it would be good to double-check)
@@ -61,7 +62,7 @@ If a previously used Fineract instance didn't run in UTC (backward compatibility
__RECOMMENDATION__: you need to shift all dates in your database by the timezone offset that your Fineract instance used.
Instructions how to run for local development
<br>INSTRUCTIONS: How to run for local development
============
Run the following commands:
@@ -70,7 +71,7 @@ Run the following commands:
1. `./gradlew bootRun`
Instructions to build the JAR file
<br>INSTRUCTIONS: How to build the JAR file
============
1. Clone the repository or download and extract the archive file to your local directory.
2. Run `./gradlew clean bootJar` to build a modern cloud native fully self contained JAR file which will be created at `fineract-provider/build/libs` directory.
@@ -86,7 +87,7 @@ The tenants database connection details are configured [via environment variable
java -jar fineract-provider.jar
Security
<br>SECURITY
============
NOTE: The HTTP Basic and OAuth2 authentication schemes are mutually exclusive. You can't enable them both at the same time. Fineract checks these settings on startup and will fail if more than one authentication scheme is enabled.
@@ -103,7 +104,7 @@ FINERACT_SECURITY_OAUTH_ENABLED=false
java -Dfineract.security.basicauth.enabled=true -Dfineract.security.oauth.enabled=false -jar fineract-provider.jar
```
OAuth2 Authentication
<br>OAuth2 AUTHENTICATION
------------
There is also an OAuth2 authentication scheme available. Again, two ways to enable it:
1. Use environment variables (best choice if you run with Docker Compose):
@@ -116,7 +117,7 @@ FINERACT_SECURITY_OAUTH_ENABLED=true
java -Dfineract.security.basicauth.enabled=false -Dfineract.security.oauth.enabled=true -jar fineract-provider.jar
```
Two Factor Authentication
TWO FACTOR AUTHENTICATION (2FA)
------------
You can also enable 2FA authentication. Depending on how you start Fineract add the following:
@@ -130,7 +131,7 @@ FINERACT_SECURITY_2FA_ENABLED=true
```
Instructions to build a WAR file
<br>INSTRUCTIONS: How to build a WAR file
============
1. Clone the repository or download and extract the archive file to your local directory.
2. Run `./gradlew :fineract-war:clean :fineract-war:war` to build a traditional WAR file which will be created at `fineract-war/build/libs` directory.
@@ -141,7 +142,7 @@ We recommend using the JAR instead of the WAR file deployment, because it's much
Note that with the 1.4 release the tenants database pool configuration changed from Tomcat DBCP in XML to an embedded Hikari, configured by environment variables, see above.
Instructions to execute Integration Tests
INSTRUCTIONS: How to execute Integration Tests
============
> Note that if this is the first time to access MySQL DB, then you may need to reset your password.
@@ -151,7 +152,7 @@ Run the following commands:
1. `./gradlew clean test`
Instructions to run and debug in Eclipse IDE
INSTRUCTIONS: How to run and debug in Eclipse IDE
============
It is possible to run Fineract in Eclipse IDE and also to debug Fineract using Eclipse's debugging facilities.
@@ -169,7 +170,7 @@ You can also use Eclipse Junit support to run tests in Eclipse (Run As->Junit Te
Finally, modifying source code in Eclipse automatically triggers hot code replace to a running instance, allowing you to immediately test your changes
Instructions to run using Docker and docker-compose
INSTRUCTIONS: How to run using Docker and docker-compose
===================================================
It is possible to do a 'one-touch' installation of Fineract using containers (AKA "Docker").
@@ -213,7 +214,7 @@ Please check `application.properties` to see which connection pool settings can
NOTE: we'll keep backwards compatibility until one of the next releases to ensure that things are working as expected. Environment variables prefixed `fineract_tenants_*` can still be used to configure the database connection, but we strongly encourage using `FINERACT_HIKARI_*` with more options.
SSL configuration
<br>SSL CONFIGURATION
=================
Read also [the HTTPS related doc](fineract-doc/src/docs/en/deployment.adoc#https).
@@ -222,16 +223,16 @@ By default SSL is enabled, but all SSL related properties are now tunable. SSL c
You can choose now easily a different SSL keystore by setting `FINERACT_SERVER_SSL_KEY_STORE` with a path to a different (not embedded) keystore. The password can be set via `FINERACT_SERVER_SSL_KEY_STORE_PASSWORD`. See the `application.properties` file and the latest Spring Boot documentation (https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html) for more details.
Tomcat configuration
<br>TOMCAT CONFIGURATION
====================
Please refer to the `application.properties` and the official Spring Boot documentation (https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html) on how to do performance tuning for Tomcat. Note: you can set now the acceptable form POST size (default is 2MB) via environment variable `FINERACT_SERVER_TOMCAT_MAX_HTTP_FORM_POST_SIZE`.
Instructions to run on Kubernetes
<br>INSTRUCTIONS: How to run on Kubernetes
=================================
General Clusters
<br>General Clusters
----------------
You can also run Fineract using containers on a Kubernetes cluster.
@@ -262,7 +263,7 @@ Now to run a new Fineract instance on Minikube you can simply:
1. `minikube service fineract-server --url --https`
1. Fineract is now running at the printed URL (note HTTP), which you can check e.g. using:
http --verify=no --timeout 240 --check-status get $(minikube service fineract-server --url --https)/fineract-provider/actuator/health
http --verify=no --timeout 240 --check-status get $(minikube service fineract-server --url --https)/fineract-provider/actuator/health
To check the status of your containers on your local minikube Kubernetes cluster, run:
@@ -285,7 +286,7 @@ To shutdown and reset your cluster, run:
We have [some open issues in JIRA with Kubernetes related enhancement ideas](https://jira.apache.org/jira/browse/FINERACT-783?jql=labels%20%3D%20kubernetes%20AND%20project%20%3D%20%22Apache%20Fineract%22%20) which you are welcome to contribute to.
Instructions to download Gradle wrapper
INSTRUCTIONS: How to download Gradle wrapper
============
The file gradle/wrapper/gradle-wrapper.jar binary is checked into this projects Git source repository,
but won't exist in your copy of the Fineract codebase if you downloaded a released source archive from apache.org.
@@ -298,16 +299,43 @@ In that case, you need to download it using the commands below:
curl --insecure -L https://github.com/apache/fineract/raw/develop/gradle/wrapper/gradle-wrapper.jar > gradle/wrapper/gradle-wrapper.jar
Instructions to run Apache RAT (Release Audit Tool)
INSTRUCTIONS: How to run Apache RAT (Release Audit Tool)
============
1. Extract the archive file to your local directory.
2. Run `./gradlew rat`. A report will be generated under build/reports/rat/rat-report.txt
Instructions to enable ActiveMQ
INSTRUCTIONS: How to enable External Message Broker (ActiveMQ or Apache Kafka)
============
Messaging configuration is disabled by default. If you want to enable it and register some message listeners, application needs to be started with the proper Spring profile, ie `-Dspring.profiles.active=activeMqEnabled` (or one of the other Spring ways to configure it).
There are two use-cases where external message broker is needed:
- External Business Events / Reliable Event Framework
- Executing Partitioned Spring Batch Jobs
External Events are business events, e.g.: `ClientCreated`, which might be important for third party systems. Apache Fineract supports ActiveMQ (or other JMS compliant brokers) and Apache Kafka endpoints for sending out Business Events. By default, they are not emitted.
In case of a large deployment with millions of accounts, the Close of Business Day Spring Batch job may run several hours. In order to speed up this task, remote partitioning of the job is supported. The Manager node partitions (breaks up) the COB job into smaller pieces (sub tasks) which then can be executed on multiple Worker nodes in parallel. The worker nodes are notified either by ActiveMQ or Kafka regarding their new sub tasks.
### Active MQ
JMS based messaging is disabled by default. In `docker-compose-postgresql-activemq.yml` an example is shown where ActiveMQ is enabled. In that configuration one Spring Batch Manager instance and two Spring Batch Worker instances are created.
Spring based events should be disabled and jms based event handling should be enabled. Furthermore, proper broker JMS URL should be configured.
```
FINERACT_REMOTE_JOB_MESSAGE_HANDLER_JMS_ENABLED=true
FINERACT_REMOTE_JOB_MESSAGE_HANDLER_SPRING_EVENTS_ENABLED=false
FINERACT_REMOTE_JOB_MESSAGE_HANDLER_JMS_BROKER_URL=tcp://activemq:61616
```
For additional ActiveMQ related configuration please take a look to the `application.properties` where the supported configuration parameters are listed with their default values.
### Kafka
Kafka support also disabled by default. In `docker-compose-postgresql-kafka.yml` an example is shown where self-hosted Kafka is enabled for both External Events and Spring Batch Remote Job execution.
During the development Fineract was tested with PLAINTEXT Kafka brokers without authentication and with AWS MSK using IAM authentication. The extra [jar file](https://github.com/aws/aws-msk-iam-auth/releases) required for IAM authentication is already added to the classpath.
An example MSK setup can be found in `docker-compose-postgresql-kafka-msk.yml`.
The full list of supported Kafka related properties are documented here: https://fineract.apache.org/docs/current/
Checkstyle and Spotless
============
@@ -360,7 +388,7 @@ As discussed in [LEGAL-462](https://issues.apache.org/jira/browse/LEGAL-462), th
complies with the [Apache Software Foundation third-party license policy](https://www.apache.org/legal/resolved.html).
Apache Fineract Platform API
<br><br>APACHE FINERACT PLATFORM API
============
The API for Fineract is documented in [apiLive.htm](fineract-provider/src/main/resources/static/api-docs/apiLive.htm), and the [apiLive.htm can be viewed on Fineract.dev](https://fineract.apache.org/legacy-docs/apiLive.htm "API Documentation"). If you have your own Fineract instance running, you can find this documentation under [/fineract-provider/api-docs/apiLive.htm](https://localhost:8443/fineract-provider/api-docs/apiLive.htm).
@@ -370,7 +398,7 @@ The Swagger documentation (work in progress; see [FINERACT-733](https://issues.a
Apache Fineract supports client code generation using [Swagger Codegen](https://github.com/swagger-api/swagger-codegen) based on the [OpenAPI Specification](https://swagger.io/specification/). For more instructions on how to generate the client code, check [docs/developers/swagger/client.md](docs/developers/swagger/client.md).
API clients (Web UIs, Mobile, etc.)
<br>API CLIENTS (Web UIs, Mobile, etc.)
============
* https://github.com/openMF/community-app/ is the "traditional" Reference Client App Web UI for the API offered by this project
@@ -379,7 +407,7 @@ API clients (Web UIs, Mobile, etc.)
* https://github.com/openMF has more related proejcts
Online Demos
<br>ONLINE DEMOS
============
* [fineract.dev](https://www.fineract.dev) always runs the latest version of this code
@@ -387,8 +415,7 @@ Online Demos
* [Swagger-UI Demo video](https://www.youtube.com/watch?v=FlVd-0YAo6c) This is a demo video for Swagger-UI documentation, more information [here](https://github.com/apache/fineract#swagger-ui-documentation).
Developers
<br>DEVELOPERS
============
Please see <https://cwiki.apache.org/confluence/display/FINERACT/Contributor%27s+Zone> for the developers wiki page.
@@ -399,47 +426,47 @@ Please see <https://cwiki.apache.org/confluence/display/FINERACT/How-to+articles
Please visit [our JIRA Dashboard](https://issues.apache.org/jira/secure/Dashboard.jspa?selectPageId=12335824) to find issues to work on, see what others are working on, or open new issues.
Video Demonstration
<br>VIDEO DEMONSTRATION
============
Apache Fineract / Mifos X Demo (November 2016) - <https://www.youtube.com/watch?v=h61g9TptMBo>
Swagger-UI Documentation
<br>SWAGGER UI DEMONSTRATION
============
We use Swagger-UI to generate and maintain our API documentation, you can see the demo video [here](https://www.youtube.com/watch?v=FlVd-0YAo6c) or a live version
[here](https://demo.fineract.dev/fineract-provider/swagger-ui/index.html). If you interested to know more about Swagger-UI you can check their [website](https://swagger.io/).
Governance and Policies
<br>GORVENANCE AND POLICIES
=======================
[Becoming a Committer](https://cwiki.apache.org/confluence/display/FINERACT/Becoming+a+Committer)
documents the process through which you can become a committer in this project.
Error Handling Guidelines
<br>ERROR HANDLING GUIDELINES
------------------
* When catching exceptions, either rethrow them, or log them. Either way, include the root cause by using `catch (SomeException e)` and then either `throw AnotherException("..details..", e)` or `LOG.error("...context...", e)`.
* Completely empty catch blocks are VERY suspicous! Are you sure that you want to just "swallow" an exception? Really, 100% totally absolutely sure?? ;-) Such "normal exceptions which just happen sometimes but are actually not really errors" are almost always a bad idea, can be a performance issue, and typically are an indication of another problem - e.g. the use of a wrong API which throws an Exception for an expected condition, when really you would want to use another API that instead returns something empty or optional.
* In tests, you'll typically never catch exceptions, but just propagate them, with `@Test void testXYZ() throws SomeException, AnotherException`..., so that the test fails if the exception happens. Unless you actually really want to test for the occurence of a problem - in that case, use [JUnit's Assert.assertThrows()](https://github.com/junit-team/junit4/wiki/Exception-testing) (but not `@Test(expected = SomeException.class)`).
* Never catch `NullPointerException` & Co.
Logging Guidelines
<br>LOGGING GUIDELINES
------------------
* We use [SLF4J](http://www.slf4j.org) as our logging API.
* Never, ever, use `System.out` and `System.err` or `printStackTrace()` anywhere, but always `LOG.info()` or `LOG.error()` instead.
* Use placeholder (`LOG.error("Could not... details: {}", something, exception)`) and never String concatenation (`LOG.error("Could not... details: " + something, exception)`)
* Which Log Level is appropriate?
* `LOG.error()` should be used to inform an "operator" running Fineract who supervises error logs of an unexpected condition. This includes technical problems with an external "environment" (e.g. can't reach a database), and situations which are likely bugs which need to be fixed in the code. They do NOT include e.g. validation errors for incoming API requests - that is signaled through the API response - and does (should) not be logged as an error. (Note that there is no _FATAL_ level in SLF4J; a "FATAL" event should just be logged as an _ERROR_.)
* `LOG.warn()` should be using sparingly. Make up your mind if it's an error (above) - or not!
* `LOG.info()` can be used notably for one-time actions taken during start-up. It should typically NOT be used to print out "regular" application usage information. The default logging configuration always outputs the application INFO logs, and in production under load, there's really no point to constantly spew out lots of information from frequently traversed paths in the code about what's going on. (Metrics are a better way.) `LOG.info()` *can* be used freely in tests though.
* `LOG.debug()` can be used anywhere in the code to log things that may be useful during investigations of specific problems. They are not shown in the default logging configuration, but can be enabled for troubleshooting. Developers should typically "turn down" most `LOG.info()` which they used while writing a new feature to "follow along what happens during local testing" to `LOG.debug()` for production before we merge their PRs.
* `LOG.trace()` is not used in Fineract.
* `LOG.error()` should be used to inform an "operator" running Fineract who supervises error logs of an unexpected condition. This includes technical problems with an external "environment" (e.g. can't reach a database), and situations which are likely bugs which need to be fixed in the code. They do NOT include e.g. validation errors for incoming API requests - that is signaled through the API response - and does (should) not be logged as an error. (Note that there is no _FATAL_ level in SLF4J; a "FATAL" event should just be logged as an _ERROR_.)
* `LOG.warn()` should be using sparingly. Make up your mind if it's an error (above) - or not!
* `LOG.info()` can be used notably for one-time actions taken during start-up. It should typically NOT be used to print out "regular" application usage information. The default logging configuration always outputs the application INFO logs, and in production under load, there's really no point to constantly spew out lots of information from frequently traversed paths in the code about what's going on. (Metrics are a better way.) `LOG.info()` *can* be used freely in tests though.
* `LOG.debug()` can be used anywhere in the code to log things that may be useful during investigations of specific problems. They are not shown in the default logging configuration, but can be enabled for troubleshooting. Developers should typically "turn down" most `LOG.info()` which they used while writing a new feature to "follow along what happens during local testing" to `LOG.debug()` for production before we merge their PRs.
* `LOG.trace()` is not used in Fineract.
Pull Requests
-------------
We request that your commit message include a FINERACT JIRA issue, recommended to be put in parenthesis add the end of the first line. Start with an upper case imperative verb (not past form), and a short but concise clear description. (E.g. _Add enforced HideUtilityClassConstructor checkstyle (FINERACT-821)_ or _Fix inability to reschedule when interest accrued larger than EMI (FINERACT-1109)_ etc.).
We request that your commit message include a FINERACT JIRA issue, recommended to be put in parentheses at the end of the first line. Start with an upper case imperative verb (not past form), and a short but concise clear description. (E.g. _Add enforced HideUtilityClassConstructor checkstyle (FINERACT-821)_ or _Fix inability to reschedule when interest accrued larger than EMI (FINERACT-1109)_ etc.).
If your PR is failing to pass our CI build due to a test failure, then:
+47 -42
View File
@@ -19,7 +19,7 @@
// TODO: this is work in progress, please follow FINERACT-1171
buildscript {
ext {
jacocoVersion = '0.8.7'
jacocoVersion = '0.8.10'
retrofitVersion = '2.9.0'
okhttpVersion = '4.9.3'
oltuVersion = '1.0.1'
@@ -27,7 +27,10 @@ buildscript {
fineractJavaProjects = subprojects.findAll{
[
'fineract-api',
'fineract-core',
'fineract-provider',
'fineract-investor',
'fineract-loan',
'integration-tests',
'twofactor-tests',
'oauth2-tests',
@@ -38,7 +41,10 @@ buildscript {
fineractPublishProjects = subprojects.findAll{
[
'fineract-avro-schemas',
'fineract-client'
'fineract-client',
'fineract-provider',
'fineract-investor',
'fineract-loan'
].contains(it.name)
}
npmRepository = 'https://npm.pkg.github.com'
@@ -49,24 +55,26 @@ buildscript {
dependencies {
classpath 'com.bmuschko:gradle-cargo-plugin:2.9.0'
classpath 'org.eclipse.persistence:eclipselink:2.7.10'
classpath 'jakarta.ws.rs:jakarta.ws.rs-api:2.1.6'
classpath 'org.eclipse.persistence:eclipselink:4.0.0'
classpath 'jakarta.ws.rs:jakarta.ws.rs-api:3.1.0'
classpath 'com.google.cloud.tools:jib-layer-filter-extension-gradle:0.3.0'
classpath 'org.apache.commons:commons-lang3:3.12.0'
classpath 'io.swagger.core.v3:swagger-jaxrs2-jakarta:2.2.11'
classpath 'jakarta.servlet:jakarta.servlet-api:6.0.0'
}
}
plugins {
id "org.barfuin.gradle.taskinfo" version "1.4.0"
id "org.barfuin.gradle.taskinfo" version "2.1.0"
id 'com.adarshr.test-logger' version '3.2.0'
id 'com.diffplug.spotless' version '6.12.0' apply false
id 'com.diffplug.spotless' version '6.19.0' apply false
id 'org.nosphere.apache.rat' version '0.8.0' apply false
id 'com.github.hierynomus.license' version '0.16.1' apply false
id 'com.github.jk1.dependency-license-report' version '2.1' apply false
id 'org.openapi.generator' version '6.2.1' apply false
id 'com.github.jk1.dependency-license-report' version '2.5' apply false
id 'org.zeroturnaround.gradle.jrebel' version '1.1.12' apply false
id 'org.springframework.boot' version '2.7.6' apply false
id 'net.ltgt.errorprone' version '2.0.2' apply false
id 'io.swagger.core.v3.swagger-gradle-plugin' version '2.2.7' apply false
id 'org.springframework.boot' version '3.1.1' apply false
id 'net.ltgt.errorprone' version '3.1.0' apply false
id 'io.swagger.core.v3.swagger-gradle-plugin' version '2.2.11' apply false
id 'com.gorylenko.gradle-git-properties' version '2.4.1' apply false
id 'org.asciidoctor.jvm.convert' version '3.3.2' apply false
id 'org.asciidoctor.jvm.pdf' version '3.3.2' apply false
@@ -74,13 +82,13 @@ plugins {
id 'org.asciidoctor.jvm.revealjs' version '3.3.2' apply false
id 'org.asciidoctor.jvm.gems' version '3.3.2' apply false
id 'org.asciidoctor.kindlegen.base' version '3.2.0' apply false
id 'com.google.cloud.tools.jib' version '3.3.1' apply false
id 'com.google.cloud.tools.jib' version '3.3.2' apply false
id 'fr.brouillard.oss.gradle.jgitver' version '0.10.0-rc03'
id 'org.sonarqube' version '3.5.0.2730'
id 'com.github.andygoossens.modernizer' version '1.6.2' apply false
id 'com.github.spotbugs' version '5.0.13' apply false
id 'org.sonarqube' version '4.2.1.3168'
id 'com.github.andygoossens.modernizer' version '1.8.0' apply false
id 'com.github.spotbugs' version '5.0.14' apply false
id 'se.thinkcode.cucumber-runner' version '0.0.11' apply false
id "com.github.davidmc24.gradle.plugin.avro-base" version "1.5.0" apply false
id "com.github.davidmc24.gradle.plugin.avro-base" version "1.7.1" apply false
}
apply from: "${rootDir}/buildSrc/src/main/groovy/org.apache.fineract.release.gradle"
@@ -89,8 +97,8 @@ description = '''\
Run as:
gradle clean bootRun'''
ext['groovy.version'] = '3.0.10'
ext['swaggerFile'] = "$rootDir/fineract-provider/build/classes/java/main/static/fineract.yaml".toString()
ext['groovy.version'] = '4.0.6'
ext['swaggerFile'] = "$rootDir/fineract-provider/build/classes/java/main/static/fineract.json".toString()
allprojects {
group = 'org.apache.fineract'
@@ -180,6 +188,7 @@ allprojects {
'**/*.github/**',
'**/MANIFEST.MF',
'**/spring.factories',
'**/org.springframework.boot.autoconfigure.AutoConfiguration.imports',
'**/*.json',
'**/*.json.template',
'**/*.txt',
@@ -282,7 +291,6 @@ configure(project.fineractJavaProjects) {
apply plugin: 'net.ltgt.errorprone'
apply plugin: 'com.github.spotbugs'
apply plugin: 'com.github.andygoossens.modernizer'
apply plugin: 'se.thinkcode.cucumber-runner'
apply from: "${rootDir}/buildSrc/src/main/groovy/org.apache.fineract.dependencies.gradle"
group = 'org.apache.fineract'
@@ -293,14 +301,16 @@ configure(project.fineractJavaProjects) {
targetCompatibility = JavaVersion.VERSION_17
/* http://stackoverflow.com/questions/19653311/jpa-repository-works-in-idea-and-production-but-not-in-gradle */
sourceSets.main.output.resourcesDir = sourceSets.main.java.outputDir
sourceSets.test.output.resourcesDir = sourceSets.test.java.outputDir
sourceSets.main.output.resourcesDir = sourceSets.main.java.classesDirectory
sourceSets.test.output.resourcesDir = sourceSets.test.java.classesDirectory
configurations {
implementation.setCanBeResolved(true)
api.setCanBeResolved(true)
}
tasks.withType(Copy) {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}
tasks.withType(JavaCompile) {
options.compilerArgs += [
"-Xlint:unchecked",
@@ -396,21 +406,21 @@ configure(project.fineractJavaProjects) {
// Configuration for the Checkstyle plugin
// https://docs.gradle.org/current/userguide/checkstyle_plugin.html
dependencies {
checkstyle 'com.puppycrawl.tools:checkstyle:10.5.0'
checkstyle 'com.github.sevntu-checkstyle:sevntu-checks:1.43.0'
checkstyle 'com.puppycrawl.tools:checkstyle:10.12.1'
checkstyle 'com.github.sevntu-checkstyle:sevntu-checks:1.44.1'
}
// Configuration for JaCoCo code coverage task
// https://www.eclemma.org/jacoco/
jacoco {
toolVersion = jacocoVersion
reportsDir = file("$buildDir/reports/jacoco")
reportsDirectory = file("$buildDir/reports/jacoco")
}
jacocoTestReport {
reports {
html.enabled=true
xml.enabled=true
html.required = true
xml.required = true
html.destination file("${buildDir}/code-coverage")
}
}
@@ -418,11 +428,12 @@ configure(project.fineractJavaProjects) {
// Configuration for the errorprone plugin
// https://github.com/tbroyer/gradle-errorprone-plugin
dependencies {
errorprone "com.google.errorprone:error_prone_core:2.16"
errorprone "com.google.errorprone:error_prone_core:2.20.0"
}
tasks.withType(JavaCompile) {
options.errorprone {
enabled = project.gradle.startParameter.taskNames.contains('build') || project.gradle.startParameter.taskNames.contains('check')
disableWarningsInGeneratedCode = true
excludedPaths = ".*/build/.*"
disable(
@@ -440,7 +451,8 @@ configure(project.fineractJavaProjects) {
"DirectInvocationOnMock",
"CanIgnoreReturnValueSuggester",
"SameNameButDifferent", // Until errorprone recognizes Lombok
"MultiVariableDeclaration" // Until errorprone recognizes Lombok
"MultiVariableDeclaration", // Until errorprone recognizes Lombok
"UnnecessaryDefaultInEnumSwitch" // FINERACT-1911
)
error(
"DefaultCharset",
@@ -503,7 +515,6 @@ configure(project.fineractJavaProjects) {
"EqualsGetClass",
"EqualsUnsafeCast",
"DoubleBraceInitialization",
"UnnecessaryDefaultInEnumSwitch",
"UnusedNestedClass",
"UnusedMethod",
"ModifiedButNotUsed",
@@ -521,7 +532,7 @@ configure(project.fineractJavaProjects) {
}
}
compileJava {
check {
dependsOn(rat, licenseMain, licenseTest)
}
@@ -548,11 +559,7 @@ configure(project.fineractJavaProjects) {
'org.bouncycastle:bcprov-jdk15to18',
'org.awaitility:awaitility',
'com.google.truth:truth',
'com.google.truth.extensions:truth-java8-extension',
'io.cucumber:cucumber-core',
'io.cucumber:cucumber-java',
'io.cucumber:cucumber-java8',
'io.cucumber:cucumber-junit-platform-engine',
'com.google.truth.extensions:truth-java8-extension'
)
}
@@ -570,12 +577,6 @@ configure(project.fineractJavaProjects) {
logLevel 'quiet'
}
cucumber {
tags = 'not @ignore'
main = 'io.cucumber.core.cli.Main'
shorten = 'argfile'
}
// Configuration for spotbugs plugin
// https://github.com/spotbugs/spotbugs-gradle-plugin
@@ -610,6 +611,10 @@ configure(project.fineractJavaProjects) {
violationLogLevel="error"
javaVersion = project.targetCompatibility
ignoreGeneratedClasses = true
// Rules can be found here: https://github.com/gaul/modernizer-maven-plugin/blob/master/modernizer-maven-plugin/src/main/resources/modernizer.xml
exclusions = [
'java/util/Optional.get:()Ljava/lang/Object;' // Disable forcing the usage of Optional.orElseThrow(java.util.function.Supplier<? extends X>)
]
}
}
+9
View File
@@ -16,6 +16,9 @@
* specific language governing permissions and limitations
* under the License.
*/
import static org.slf4j.LoggerFactory.*
plugins {
id 'io.spring.dependency-management' version '1.1.0'
id 'groovy'
@@ -23,6 +26,12 @@ plugins {
id 'groovy-gradle-plugin'
}
//Suppress errors related to invalid org.eclipse.* maven poms versions.
def loggerFactory = getILoggerFactory()
def noOpMethod = getILoggerFactory().getClass().getDeclaredMethod("addNoOpLogger", String.class)
noOpMethod.setAccessible(true)
noOpMethod.invoke(loggerFactory, "io.spring.gradle.dependencymanagement.internal.maven.EffectiveModelBuilder")
apply from: "${projectDir}/src/main/groovy/org.apache.fineract.dependencies.gradle"
description = 'Fineract Gradle Plugin'
@@ -22,14 +22,15 @@ apply plugin: 'io.spring.dependency-management'
// https://github.com/spring-gradle-plugins/dependency-management-plugin
dependencyManagement {
imports {
mavenBom 'org.springframework:spring-framework-bom:5.3.24'
mavenBom 'org.springframework.boot:spring-boot-dependencies:2.7.6'
mavenBom 'org.jetbrains.kotlin:kotlin-bom:1.7.22'
mavenBom 'org.junit:junit-bom:5.9.1'
mavenBom 'com.fasterxml.jackson:jackson-bom:2.14.1'
mavenBom 'io.cucumber:cucumber-bom:7.9.0'
mavenBom 'io.netty:netty-bom:4.1.85.Final'
mavenBom 'org.mockito:mockito-bom:4.9.0'
mavenBom 'org.springframework:spring-framework-bom:6.0.10'
mavenBom 'org.springframework.boot:spring-boot-dependencies:3.1.1'
mavenBom 'org.jetbrains.kotlin:kotlin-bom:1.8.22'
mavenBom 'org.junit:junit-bom:5.9.3'
mavenBom 'com.fasterxml.jackson:jackson-bom:2.15.2'
mavenBom 'io.cucumber:cucumber-bom:7.12.1'
mavenBom 'io.netty:netty-bom:4.1.94.Final'
mavenBom 'org.mockito:mockito-bom:5.4.0'
mavenBom 'software.amazon.awssdk:bom:2.20.97'
}
dependencies {
@@ -37,38 +38,65 @@ dependencyManagement {
// We do not use :+ to get the latest available version available on Maven Central, as that could suddenly break things.
// We use the Renovate Bot to automatically propose Pull Requests (PRs) when upgrades for all of these versions are available.
dependency 'org.slf4j:slf4j-api:1.7.36'
dependency 'org.slf4j:slf4j-simple:1.7.36'
dependency 'org.slf4j:jcl-over-slf4j:1.7.36'
dependency 'org.slf4j:jul-to-slf4j:1.7.36'
dependency 'org.slf4j:log4j-over-slf4j:1.7.36'
dependency 'ch.qos.logback:logback-core:1.2.11'
dependency 'ch.qos.logback:logback-classic:1.2.11'
dependency 'org.slf4j:slf4j-api:2.0.7'
dependency 'org.slf4j:slf4j-simple:2.0.7'
dependency 'org.slf4j:jcl-over-slf4j:2.0.7'
dependency 'org.slf4j:jul-to-slf4j:2.0.7'
dependency 'org.slf4j:log4j-over-slf4j:2.0.7'
dependency 'ch.qos.logback:logback-core:1.4.8'
dependency 'ch.qos.logback:logback-classic:1.4.8'
dependency 'ch.qos.logback.contrib:logback-json-classic:0.1.5'
dependency 'ch.qos.logback.contrib:logback-jackson:0.1.5'
dependency 'org.codehaus.janino:janino:3.1.9'
dependency 'org.eclipse.persistence:org.eclipse.persistence.jpa:2.7.10'
dependency 'com.google.guava:guava:31.1-jre'
dependency 'com.google.code.gson:gson:2.10'
dependency 'com.google.truth:truth:1.1.3'
dependency 'com.google.truth.extensions:truth-java8-extension:1.1.3'
dependency 'com.google.googlejavaformat:google-java-format:1.15.0'
dependency 'org.eclipse.persistence:org.eclipse.persistence.jpa:4.0.0'
dependency 'com.google.guava:guava:32.0.0-jre'
dependency 'com.google.code.gson:gson:2.10.1'
dependency 'com.google.truth:truth:1.1.5'
dependency 'com.google.truth.extensions:truth-java8-extension:1.1.5'
dependency 'com.google.googlejavaformat:google-java-format:1.17.0'
dependency ('org.apache.commons:commons-email:1.5') {
exclude 'com.sun.mail:javax.mail'
exclude 'javax.activation:activation'
}
dependency 'commons-io:commons-io:2.11.0'
dependency 'commons-io:commons-io:2.13.0'
dependency 'com.github.librepdf:openpdf:1.3.30'
dependency ('org.mnode.ical4j:ical4j:3.2.7') {
dependency ('org.mnode.ical4j:ical4j:3.2.11') {
exclude 'com.sun.mail:javax.mail'
exclude 'org.codehaus.groovy:groovy'
}
dependency 'org.apache.commons:commons-csv:1.10.0'
dependency 'org.quartz-scheduler:quartz:2.3.2'
dependency 'com.amazonaws:aws-java-sdk-s3:1.12.350'
dependency 'software.amazon.awssdk:bom:2.20.97'
dependency 'org.ehcache:ehcache:3.10.8'
dependency 'com.github.spullara.mustache.java:compiler:0.9.10'
dependency 'com.jayway.jsonpath:json-path:2.7.0'
dependency 'org.apache.tika:tika-core:2.6.0'
dependency ('org.apache.tika:tika-parser-microsoft-module:2.6.0') {
dependency 'com.jayway.jsonpath:json-path:2.8.0'
dependency 'org.apache.tika:tika-core:2.8.0'
dependency ('org.apache.tika:tika-parser-microsoft-module:2.8.0') {
exclude 'org.bouncycastle:bcprov-jdk15on'
exclude 'org.bouncycastle:bcmail-jdk15on'
exclude 'org.bouncycastle:bcprov-jdk18on'
exclude 'org.bouncycastle:bcmail-jdk18on'
exclude 'commons-logging:commons-logging'
exclude 'org.apache.logging.log4j:log4j-api'
exclude 'org.slf4j:slf4j-api'
exclude 'commons-io:commons-io'
exclude 'commons-logging:commons-logging'
exclude 'commons-codec:commons-codec'
exclude 'org.apache.commons:commons-compress'
exclude 'org.apache.commons:commons-lang3'
exclude 'org.apache.poi:poi'
exclude 'org.apache.poi:poi-scratchpad'
exclude 'org.glassfish.jaxb:jaxb-runtime'
exclude 'org.apache.commons:commons-compress'
exclude 'xml-apis:xml-apis'
}
dependency ('org.apache.tika:tika-parser-miscoffice-module:2.8.0') {
exclude 'org.bouncycastle:bcprov-jdk15on'
exclude 'org.bouncycastle:bcmail-jdk15on'
exclude 'org.bouncycastle:bcprov-jdk18on'
exclude 'org.bouncycastle:bcmail-jdk18on'
exclude 'commons-logging:commons-logging'
exclude 'org.apache.logging.log4j:log4j-api'
exclude 'org.slf4j:slf4j-api'
@@ -82,39 +110,25 @@ dependencyManagement {
exclude 'org.apache.commons:commons-compress'
exclude 'xml-apis:xml-apis'
}
dependency ('org.apache.tika:tika-parser-miscoffice-module:2.6.0') {
exclude 'org.bouncycastle:bcprov-jdk15on'
exclude 'org.bouncycastle:bcmail-jdk15on'
exclude 'commons-logging:commons-logging'
exclude 'org.apache.logging.log4j:log4j-api'
exclude 'org.slf4j:slf4j-api'
exclude 'commons-io:commons-io'
exclude 'commons-codec:commons-codec'
exclude 'org.apache.commons:commons-compress'
exclude 'org.apache.commons:commons-lang3'
exclude 'org.apache.poi:poi'
exclude 'org.apache.poi:poi-scratchpad'
exclude 'org.glassfish.jaxb:jaxb-runtime'
exclude 'org.apache.commons:commons-compress'
exclude 'xml-apis:xml-apis'
dependency ('org.apache.httpcomponents:httpclient:4.5.14') {
exclude 'commons-logging:commons-logging:'
}
dependency 'org.apache.httpcomponents:httpclient:4.5.13'
dependency 'jakarta.management.j2ee:jakarta.management.j2ee-api:1.1.4'
dependency 'jakarta.jms:jakarta.jms-api:2.0.3'
dependency 'jakarta.ws.rs:jakarta.ws.rs-api:2.1.6'
dependency 'org.glassfish.jersey.media:jersey-media-multipart:2.36'
dependency 'jakarta.jms:jakarta.jms-api:3.1.0'
dependency 'jakarta.ws.rs:jakarta.ws.rs-api:3.1.0'
dependency 'org.glassfish.jersey.media:jersey-media-multipart:3.1.2'
dependency 'org.glassfish.jaxb:jaxb-runtime:2.3.6' // Swagger needs exactly this version
dependency 'org.apache.bval:org.apache.bval.bundle:2.0.6'
dependency 'joda-time:joda-time:2.12.1'
dependency 'joda-time:joda-time:2.12.5'
dependency 'io.github.classgraph:classgraph:4.8.151'
dependency 'io.github.classgraph:classgraph:4.8.160'
dependency 'org.awaitility:awaitility:4.2.0'
dependency 'com.github.spotbugs:spotbugs-annotations:4.7.3'
dependency 'javax.cache:cache-api:1.1.1'
dependency 'org.mock-server:mockserver-junit-jupiter:5.14.0'
dependency 'org.webjars:webjars-locator-core:0.52'
dependency 'com.icegreen:greenmail-junit5:1.6.11'
dependency 'com.intuit.karate:karate-junit5:1.3.0'
dependency 'org.mock-server:mockserver-junit-jupiter:5.15.0'
dependency 'org.webjars:webjars-locator-core:0.53'
dependency 'com.icegreen:greenmail-junit5:2.0.0'
dependency 'com.intuit.karate:karate-junit5:1.4.0'
// fineract client dependencies
dependency "com.squareup.retrofit2:retrofit:2.9.0"
@@ -134,99 +148,104 @@ dependencyManagement {
dependency "org.apache.oltu.oauth2:org.apache.oltu.oauth2.common:1.0.1"
dependency "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.1"
dependency "org.apache.oltu.oauth2:org.apache.oltu.oauth2.httpclient4:1.0.1"
dependency "com.squareup.okhttp3:okhttp:4.10.0"
dependency "com.squareup.okhttp3:okcurl:4.10.0"
dependency "com.squareup.okhttp3:logging-interceptor:4.10.0"
dependency "com.squareup.okhttp3:okhttp:4.11.0"
dependency "com.squareup.okhttp3:okcurl:4.11.0"
dependency "com.squareup.okhttp3:logging-interceptor:4.11.0"
dependency "com.squareup.okhttp3:okhttp-apache:4.9.3"
dependency "com.squareup.okhttp3:okhttp-android-support:4.9.3"
dependency "com.squareup.okhttp3:okhttp-urlconnection:4.10.0"
dependency "com.squareup.okhttp3:okhttp-sse:4.10.0"
dependency "com.squareup.okhttp3:okhttp-urlconnection:4.11.0"
dependency "com.squareup.okhttp3:okhttp-sse:4.11.0"
dependency "io.gsonfire:gson-fire:1.8.5"
dependency "com.google.code.findbugs:jsr305:3.0.2"
dependency "commons-codec:commons-codec:1.15"
dependency "org.projectlombok:lombok:1.18.24"
dependency "commons-codec:commons-codec:1.16.0"
dependency "org.projectlombok:lombok:1.18.28"
dependency 'org.bouncycastle:bcpkix-jdk15to18:1.72'
dependency 'org.bouncycastle:bcprov-jdk15to18:1.72'
dependency 'org.bouncycastle:bcpkix-jdk15to18:1.75'
dependency 'org.bouncycastle:bcprov-jdk15to18:1.75'
dependency 'org.bouncycastle:bcprov-jdk15on:1.70'
dependency 'org.bouncycastle:bcpg-jdk15on:1.70'
dependency 'org.eclipse.jgit:org.eclipse.jgit:6.3.0.202209071007-r'
dependency 'org.eclipse.jgit:org.eclipse.jgit.ssh.apache:6.3.0.202209071007-r'
dependency 'org.eclipse.jgit:org.eclipse.jgit:6.6.0.202305301015-r'
dependency 'org.eclipse.jgit:org.eclipse.jgit.ssh.apache:6.6.0.202305301015-r'
dependency 'org.tmatesoft.svnkit:svnkit:1.10.9'
dependency 'org.tmatesoft.svnkit:svnkit:1.10.11'
dependency 'com.vdurmont:semver4j:3.1.0'
dependency 'org.beryx:text-io:3.4.1'
dependency 'org.springdoc:springdoc-openapi-ui:1.6.13'
dependency 'org.springdoc:springdoc-openapi-webmvc-core:1.6.13'
dependency 'org.springdoc:springdoc-openapi-common:1.6.13'
dependency 'org.springdoc:springdoc-openapi-security:1.6.13'
dependency 'org.springdoc:springdoc-openapi-javadoc:1.6.13'
dependency ('org.springdoc:springdoc-openapi-starter-webmvc-ui:2.1.0') {
exclude 'io.swagger.core.v3:swagger-core'
}
dependency 'com.google.cloud.sql:mysql-socket-factory-connector-j-8:1.7.2'
dependency 'com.google.cloud.sql:mysql-socket-factory-connector-j-8:1.12.0'
dependency ('org.apache.activemq:activemq-broker:5.17.2') {
dependency ('org.apache.activemq:activemq-client-jakarta:5.18.2') {
exclude 'javax.annotation:javax.annotation-api'
}
dependency 'io.swagger:swagger-annotations:1.6.9'
dependency 'io.swagger.core.v3:swagger-annotations:2.2.7'
dependency ('io.swagger.core.v3:swagger-jaxrs2:2.2.7') {
dependency 'io.swagger.core.v3:swagger-annotations-jakarta:2.2.11'
dependency ('io.swagger.core.v3:swagger-jaxrs2-jakarta:2.2.11') {
exclude 'jakarta.activation:jakarta.activation-api'
}
dependency ('io.swagger.core.v3:swagger-core:2.2.7') {
dependency ('io.swagger.core.v3:swagger-core-jakarta:2.2.11') {
exclude 'jakarta.activation:jakarta.activation-api'
}
dependency "jakarta.annotation:jakarta.annotation-api:1.3.5"
dependency 'jakarta.activation:jakarta.activation-api:2.1.0'
dependency ('com.sun.mail:jakarta.mail:1.6.7') {
dependency "jakarta.annotation:jakarta.annotation-api:2.1.1"
dependency 'jakarta.activation:jakarta.activation-api:2.1.2'
dependency ('com.sun.mail:jakarta.mail:2.0.1') {
// Spring needs this version
exclude 'com.sun.activation:jakarta.activation'
}
dependency ('jakarta.xml.bind:jakarta.xml.bind-api:2.3.3') {
dependency ('jakarta.xml.bind:jakarta.xml.bind-api:4.0.0') {
exclude 'jakarta.activation:jakarta.activation-api'
}
dependency ('org.liquibase:liquibase-core:4.17.2') {
dependency ('org.liquibase:liquibase-core:4.23.0') {
exclude 'javax.xml.bind:jaxb-api'
}
dependency ('org.dom4j:dom4j:2.1.3') {
dependency ('org.dom4j:dom4j:2.1.4') {
exclude 'relaxngDatatype:relaxngDatatype' // already in com.sun.xml.bind:jaxb-osgi:2.3.0.1
// FINERACT-940 && FINERACT-966 https://github.com/spotbugs/spotbugs/issues/1128
exclude 'xpp3:xpp3'
exclude 'pull-parser:pull-parser'
}
dependency 'org.owasp.esapi:esapi:2.5.1.0'
dependency 'org.owasp.esapi:esapi:2.5.2.0'
dependency 'org.awaitility:awaitility:4.2.0'
dependencySet(group: 'org.apache.poi', version: '5.2.2') {
dependencySet(group: 'org.apache.poi', version: '5.2.3') {
entry 'poi'
entry 'poi-ooxml'
entry 'poi-ooxml-schemas'
}
dependencySet(group: 'io.rest-assured', version: '4.5.1') {
dependencySet(group: 'io.rest-assured', version: '5.3.1') {
entry 'rest-assured'
entry 'json-path'
entry 'xml-path'
}
dependency 'org.apache.groovy:groovy-xml:4.0.13'
dependency 'org.apache.groovy:groovy-json:4.0.13'
dependency 'org.mapstruct:mapstruct:1.5.3.Final'
dependency 'org.mapstruct:mapstruct-processor:1.5.3.Final'
dependency 'org.mapstruct:mapstruct:1.5.5.Final'
dependency 'org.mapstruct:mapstruct-processor:1.5.5.Final'
dependency "org.apache.avro:avro:1.11.1"
dependency "io.github.resilience4j:resilience4j-spring-boot2:1.7.1"
dependency "io.github.resilience4j:resilience4j-spring-boot2:2.0.2"
dependency ('org.mariadb.jdbc:mariadb-java-client:3.1.0') {
dependency ('org.mariadb.jdbc:mariadb-java-client:3.1.4') {
exclude 'org.slf4j:jcl-over-slf4j'
exclude 'org.slf4j:slf4j-api'
}
dependency 'org.postgresql:postgresql:42.5.1'
dependency 'org.postgresql:postgresql:42.6.0'
dependency 'org.assertj:assertj-core:3.24.2'
dependency 'org.apache.commons:commons-math3:3.6.1'
dependency 'org.mockito:mockito-inline:5.2.0'
}
}
@@ -23,9 +23,9 @@ import org.apache.fineract.gradle.FineractPluginExtension.FineractPluginEmailPar
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import javax.mail.*
import javax.mail.internet.InternetAddress
import javax.mail.internet.MimeMessage
import jakarta.mail.*
import jakarta.mail.internet.InternetAddress
import jakarta.mail.internet.MimeMessage
class EmailService {
private static final Logger log = LoggerFactory.getLogger(EmailService.class)
@@ -0,0 +1,25 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
description = 'ACME Corp.: Fineract external events'
group = 'com.acme.fineract.event'
archivesBaseName = 'acme-fineract-event-externalevent'
apply from: 'dependencies.gradle'
@@ -0,0 +1,25 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
dependencies {
implementation(project(':fineract-core'))
implementation(project(':fineract-loan'))
implementation(project(':fineract-provider'))
implementation('org.springframework.boot:spring-boot-starter-data-jpa')
}
@@ -0,0 +1,35 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package com.acme.fineract.event.externalevent;
import java.util.List;
import org.apache.fineract.infrastructure.event.external.service.validation.ExternalEventSourceData;
import org.apache.fineract.infrastructure.event.external.service.validation.ExternalEventSourceProvider;
import org.apache.fineract.infrastructure.event.external.service.validation.SimpleExternalEventSourceProvider;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class AcmeExternalEventSourceProviderConfig {
@Bean
public ExternalEventSourceProvider acmeEventSourceProvider() {
return new SimpleExternalEventSourceProvider(List.of(new ExternalEventSourceData("com.acme.fineract.event.externalevent")));
}
}
@@ -0,0 +1,36 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package com.acme.fineract.event.externalevent;
import org.apache.fineract.infrastructure.event.business.domain.loan.LoanBusinessEvent;
import org.apache.fineract.portfolio.loanaccount.domain.Loan;
public class AcmeLoanExternalEvent extends LoanBusinessEvent {
private static final String TYPE = "AcmeLoanExternalEvent";
public AcmeLoanExternalEvent(Loan value) {
super(value);
}
@Override
public String getType() {
return TYPE;
}
}
@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.1.xsd">
<changeSet author="acme" id="1">
<insert tableName="m_external_event_configuration">
<column name="type" value="AcmeLoanExternalEvent"/>
<column name="enabled" valueBoolean="false"/>
</insert>
</changeSet>
</databaseChangeLog>
+25
View File
@@ -0,0 +1,25 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
description = 'ACME Corp.: Fineract Event Starter'
group = 'com.acme.fineract.event'
archivesBaseName = 'acme-fineract-event-starter'
apply from: 'dependencies.gradle'
@@ -0,0 +1,24 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
dependencies {
implementation(project(':fineract-core'))
implementation(project(':fineract-provider'))
implementation('org.springframework.boot:spring-boot-starter')
}
@@ -0,0 +1,27 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package com.acme.fineract.event.starter;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ComponentScans;
@AutoConfiguration
@ComponentScans({ @ComponentScan("com.acme.fineract.event.externalevent") })
public class AcmeEventAutoConfiguration {}
@@ -0,0 +1 @@
com.acme.fineract.event.starter.AcmeEventAutoConfiguration
+2
View File
@@ -18,6 +18,8 @@
*/
dependencies {
implementation(project(':fineract-core'))
implementation(project(':fineract-loan'))
implementation(project(':fineract-provider'))
implementation('org.springframework.boot:spring-boot-starter-data-jpa')
}
+2
View File
@@ -18,6 +18,8 @@
*/
dependencies {
implementation(project(':fineract-core'))
implementation(project(':fineract-loan'))
implementation(project(':fineract-provider'))
implementation('org.springframework.batch:spring-batch-integration')
implementation('org.springframework.boot:spring-boot-starter-data-jpa')
@@ -20,31 +20,34 @@ package com.acme.fineract.loan.job;
import org.springframework.batch.core.Job;
import org.springframework.batch.core.Step;
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
import org.springframework.batch.core.job.builder.JobBuilder;
import org.springframework.batch.core.launch.support.RunIdIncrementer;
import org.springframework.batch.core.repository.JobRepository;
import org.springframework.batch.core.step.builder.StepBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.PlatformTransactionManager;
@Configuration
public class AcmeNoopJobConfiguration {
@Autowired
private JobBuilderFactory jobs;
private JobRepository jobRepository;
@Autowired
private StepBuilderFactory steps;
private PlatformTransactionManager transactionManager;
@Autowired
private AcmeNoopJobTasklet tasklet;
@Bean
protected Step acmeNoopJobStep() {
return steps.get(AcmeJobName.ACME_NOOP_JOB.name()).tasklet(tasklet).build();
return new StepBuilder(AcmeJobName.ACME_NOOP_JOB.name(), jobRepository).tasklet(tasklet, transactionManager).build();
}
@Bean
public Job acmeNoopJob() {
return jobs.get(AcmeJobName.ACME_NOOP_JOB.name()).start(acmeNoopJobStep()).incrementer(new RunIdIncrementer()).build();
return new JobBuilder(AcmeJobName.ACME_NOOP_JOB.name(), jobRepository).start(acmeNoopJobStep()).incrementer(new RunIdIncrementer())
.build();
}
}
@@ -17,7 +17,8 @@
* specific language governing permissions and limitations
* under the License.
*/
import static org.junit.Assert.assertEquals;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.springframework.batch.repeat.RepeatStatus.FINISHED;
import com.acme.fineract.loan.job.AcmeNoopJobTasklet;
import org.junit.jupiter.api.BeforeEach;
@@ -47,7 +48,7 @@ public class AcmeNoopJobTaskletTest {
@Test
public void testJobExecution() throws Exception {
resultStatus = underTest.execute(stepContribution, chunkContext);
assertEquals(resultStatus, RepeatStatus.FINISHED);
assertEquals(FINISHED, resultStatus);
}
}
@@ -18,5 +18,7 @@
*/
dependencies {
implementation(project(':fineract-core'))
implementation(project(':fineract-loan'))
implementation(project(':fineract-provider'))
}
@@ -18,6 +18,8 @@
*/
dependencies {
implementation(project(':fineract-core'))
implementation(project(':fineract-loan'))
implementation(project(':fineract-provider'))
implementation(project(':custom:acme:loan:cob'))
implementation(project(':custom:acme:loan:processor'))
@@ -1,2 +0,0 @@
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.acme.fineract.loan.starter.AcmeLoanAutoConfiguration
@@ -0,0 +1 @@
com.acme.fineract.loan.starter.AcmeLoanAutoConfiguration
@@ -21,10 +21,11 @@ package com.acme.fineract.loan.starter;
import static org.assertj.core.api.Assertions.assertThat;
import io.cucumber.java8.En;
import java.util.TreeMap;
import java.util.Set;
import lombok.extern.slf4j.Slf4j;
import org.apache.fineract.cob.COBBusinessStep;
import org.apache.fineract.cob.COBBusinessStepService;
import org.apache.fineract.cob.data.BusinessStepNameAndOrder;
import org.apache.fineract.portfolio.loanaccount.domain.Loan;
import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
@@ -38,7 +39,7 @@ public class AcmeBusinessStepDefinitions implements En {
private COBBusinessStep<Loan> businessStep;
private TreeMap<Long, String> result;
private Set<BusinessStepNameAndOrder> result;
public AcmeBusinessStepDefinitions() {
Given("/^An auto configuration (.*) and a service configuration (.*)$/",
@@ -56,7 +57,7 @@ public class AcmeBusinessStepDefinitions implements En {
this.businessStep = ctx.getBean((Class<COBBusinessStep<Loan>>) Class.forName(stepClass));
// TODO: not yet working, because no storage configured/mocked
this.result = businessStepService.getCOBBusinessStepMap(this.businessStep.getClass(), stepName);
this.result = businessStepService.getCOBBusinessSteps(this.businessStep.getClass(), stepName);
});
});
@@ -23,7 +23,11 @@ import static org.mockito.Mockito.mock;
import org.apache.fineract.cob.COBBusinessStepService;
import org.apache.fineract.cob.COBBusinessStepServiceImpl;
import org.apache.fineract.cob.domain.BatchBusinessStepRepository;
import org.apache.fineract.cob.service.ReloaderService;
import org.apache.fineract.infrastructure.configuration.domain.ConfigurationDomainService;
import org.apache.fineract.infrastructure.core.config.FineractProperties;
import org.apache.fineract.infrastructure.core.diagnostics.performance.sampling.core.SamplingConfiguration;
import org.apache.fineract.infrastructure.core.diagnostics.performance.sampling.core.SamplingServiceFactory;
import org.apache.fineract.infrastructure.event.business.service.BusinessEventNotifierService;
import org.apache.fineract.portfolio.loanaccount.domain.LoanAccountDomainService;
import org.springframework.beans.factory.ListableBeanFactory;
@@ -46,8 +50,15 @@ public class TestDefaultConfiguration {
@Bean
public COBBusinessStepService cobBusinessStepService(BatchBusinessStepRepository batchBusinessStepRepository,
ApplicationContext context, ListableBeanFactory beanFactory, BusinessEventNotifierService businessEventNotifierService) {
return new COBBusinessStepServiceImpl(batchBusinessStepRepository, context, beanFactory, businessEventNotifierService);
ApplicationContext context, ListableBeanFactory beanFactory, BusinessEventNotifierService businessEventNotifierService,
ConfigurationDomainService configurationDomainService, ReloaderService reloaderService) {
return new COBBusinessStepServiceImpl(batchBusinessStepRepository, context, beanFactory, businessEventNotifierService,
configurationDomainService, reloaderService);
}
@Bean
public SamplingServiceFactory samplingServiceFactory(SamplingConfiguration samplingConfiguration) {
return new SamplingServiceFactory(samplingConfiguration);
}
@Bean
@@ -18,6 +18,7 @@
*/
dependencies {
implementation(project(':fineract-core'))
implementation(project(':fineract-provider'))
compileOnly('org.springframework.boot:spring-boot-autoconfigure')
}
@@ -20,6 +20,8 @@
dependencies {
implementation(project(':custom:acme:note:service'))
implementation('org.springframework.boot:spring-boot-starter')
testImplementation(project(':fineract-core'))
testImplementation(project(':fineract-loan'))
testImplementation(project(':fineract-provider'))
testImplementation('org.springframework.boot:spring-boot-starter-jdbc')
testImplementation('org.springframework.boot:spring-boot-starter-data-jpa')
@@ -1,2 +1 @@
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.acme.fineract.portfolio.note.starter.AcmeNoteAutoConfiguration
@@ -22,8 +22,8 @@ import static org.mockito.Mockito.mock;
import org.apache.fineract.infrastructure.core.config.FineractProperties;
import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper;
import org.apache.fineract.infrastructure.core.service.RoutingDataSource;
import org.apache.fineract.infrastructure.core.service.RoutingDataSourceServiceFactory;
import org.apache.fineract.infrastructure.core.service.database.RoutingDataSource;
import org.apache.fineract.infrastructure.core.service.database.RoutingDataSourceServiceFactory;
import org.apache.fineract.portfolio.client.domain.ClientRepositoryWrapper;
import org.apache.fineract.portfolio.group.domain.GroupRepository;
import org.apache.fineract.portfolio.loanaccount.domain.LoanRepositoryWrapper;
@@ -21,8 +21,8 @@ package com.acme.fineract.portfolio.note.starter;
import static org.mockito.Mockito.mock;
import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper;
import org.apache.fineract.infrastructure.core.service.RoutingDataSource;
import org.apache.fineract.infrastructure.core.service.RoutingDataSourceServiceFactory;
import org.apache.fineract.infrastructure.core.service.database.RoutingDataSource;
import org.apache.fineract.infrastructure.core.service.database.RoutingDataSourceServiceFactory;
import org.apache.fineract.portfolio.client.domain.ClientRepositoryWrapper;
import org.apache.fineract.portfolio.group.domain.GroupRepository;
import org.apache.fineract.portfolio.loanaccount.domain.LoanRepositoryWrapper;
+2 -1
View File
@@ -68,6 +68,7 @@ jib {
allowInsecureRegistries = true
dependencies {
implementation project(':fineract-core')
implementation project(':fineract-provider')
// NOTE: dynamically load all custom modules
file("${rootDir}/custom").eachDir { companyDir ->
@@ -85,7 +86,7 @@ jib {
}
// NOTE: other custom dependencies
implementation 'org.mariadb.jdbc:mariadb-java-client'
implementation 'mysql:mysql-connector-java:8.0.31'
implementation 'mysql:mysql-connector-java:8.0.33'
implementation 'org.postgresql:postgresql'
annotationProcessor('org.springframework.boot:spring-boot-autoconfigure-processor')
annotationProcessor('org.springframework.boot:spring-boot-configuration-processor')
+1 -1
View File
@@ -21,7 +21,7 @@ version: '3.7'
services:
# Backend service
fineractmysql:
image: mariadb:10.10
image: mariadb:11.0
volumes:
- ../../fineract-db/server_collation.cnf:/etc/mysql/conf.d/server_collation.cnf
- ../../fineract-db/docker:/docker-entrypoint-initdb.d:Z,ro
+157
View File
@@ -0,0 +1,157 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
# You can replace and test a more recent version of docker compose
version: '3.7'
services:
activemq:
image: rmohr/activemq:5.15.9-alpine
ports:
- 6161:6161
- 61616:61616
# Backend service
fineractpostgresql:
image: postgres:15.3
volumes:
- ./fineract-db/docker/postgresql:/docker-entrypoint-initdb.d/:Z,ro
restart: always
environment:
POSTGRES_USER: root
POSTGRES_PASSWORD: skdcnwauicn2ucnaecasdsajdnizucawencascdca
FINERACT_DB_USER: postgres
FINERACT_DB_PASS: skdcnwauicn2ucnaecasdsajdnizucawencascdca
FINERACT_TENANTS_DB_NAME: fineract_tenants
FINERACT_TENANT_DEFAULT_DB_NAME: fineract_default
healthcheck:
test: [ "CMD", "pg_isready", "-q", "-d", "postgres", "-U", "root" ]
timeout: 10s
retries: 10
ports:
- "5432:5432"
fineract-manager:
image: fineract:latest
volumes:
- ./fineract-provider/build/data:/data
healthcheck:
test: ["CMD", 'sh', '-c', 'echo -e "Checking for the availability of Fineract server deployment"; while ! nc -z "fineract-server" 8443; do sleep 1; printf "-"; done; echo -e " >> Fineract server has started";' ]
timeout: 10s
retries: 10
ports:
- 8443:8443
depends_on:
fineractpostgresql:
condition: service_healthy
environment:
- FINERACT_NODE_ID=1
- FINERACT_HIKARI_DRIVER_SOURCE_CLASS_NAME=org.postgresql.Driver
- FINERACT_HIKARI_JDBC_URL=jdbc:postgresql://fineractpostgresql:5432/fineract_tenants
- FINERACT_HIKARI_USERNAME=postgres
- FINERACT_HIKARI_PASSWORD=skdcnwauicn2ucnaecasdsajdnizucawencascdca
- FINERACT_HIKARI_MINIMUM_IDLE=3
- FINERACT_HIKARI_MAXIMUM_POOL_SIZE=10
- FINERACT_HIKARI_IDLE_TIMEOUT=60000
- FINERACT_HIKARI_CONNECTION_TIMEOUT=20000
- FINERACT_HIKARI_TEST_QUERY=SELECT 1
- FINERACT_HIKARI_AUTO_COMMIT=true
- FINERACT_SERVER_SSL_ENABLED=true
- FINERACT_HIKARI_DS_PROPERTIES_CACHE_PREP_STMTS=true
- FINERACT_HIKARI_DS_PROPERTIES_PREP_STMT_CACHE_SIZE=250
- FINERACT_HIKARI_DS_PROPERTIES_PREP_STMT_CACHE_SQL_LIMIT=2048
- FINERACT_HIKARI_DS_PROPERTIES_USE_SERVER_PREP_STMTS=true
- FINERACT_HIKARI_DS_PROPERTIES_USE_LOCAL_SESSION_STATE=true
- FINERACT_HIKARI_DS_PROPERTIES_REWRITE_BATCHED_STATEMENTS=true
- FINERACT_HIKARI_DS_PROPERTIES_CACHE_RESULT_SET_METADATA=true
- FINERACT_HIKARI_DS_PROPERTIES_CACHE_SERVER_CONFIGURATION=true
- FINERACT_HIKARI_DS_PROPERTIES_ELIDE_SET_AUTO_COMMITS=true
- FINERACT_HIKARI_DS_PROPERTIES_MAINTAIN_TIME_STATS=false
- FINERACT_HIKARI_DS_PROPERTIES_LOG_SLOW_QUERIES=true
- FINERACT_HIKARI_DS_PROPERTIES_DUMP_QUERIES_IN_EXCEPTION=true
- FINERACT_DEFAULT_TENANTDB_HOSTNAME=fineractpostgresql
- FINERACT_DEFAULT_TENANTDB_PORT=5432
- FINERACT_DEFAULT_TENANTDB_UID=postgres
- FINERACT_DEFAULT_TENANTDB_PWD=skdcnwauicn2ucnaecasdsajdnizucawencascdca
- FINERACT_DEFAULT_TENANTDB_CONN_PARAMS=
- FINERACT_DEFAULT_TENANTDB_TIMEZONE=Asia/Kolkata
- FINERACT_DEFAULT_TENANTDB_IDENTIFIER=default
- FINERACT_DEFAULT_TENANTDB_NAME=fineract_default
- FINERACT_DEFAULT_TENANTDB_DESCRIPTION=Default Demo Tenant
- JAVA_TOOL_OPTIONS="-Xmx1G"
- FINERACT_REMOTE_JOB_MESSAGE_HANDLER_JMS_ENABLED=true
- FINERACT_REMOTE_JOB_MESSAGE_HANDLER_SPRING_EVENTS_ENABLED=false
- FINERACT_MODE_BATCH_MANAGER_ENABLED=true
- FINERACT_MODE_BATCH_WORKER_ENABLED=false
- FINERACT_REMOTE_JOB_MESSAGE_HANDLER_JMS_BROKER_URL=tcp://activemq:61616
- LOAN_COB_CHUNK_SIZE=10
- LOAN_COB_PARTITION_SIZE=10
- SPRING_PROFILES_ACTIVE=test,diagnostics
fineract-worker:
image: fineract:latest
volumes:
- ./fineract-provider/build/data:/data
deploy:
mode: replicated
replicas: 2
healthcheck:
test: ["CMD", 'sh', '-c', 'echo -e "Checking for the availability of Fineract server deployment"; while ! nc -z "fineract-server" 8443; do sleep 1; printf "-"; done; echo -e " >> Fineract server has started";' ]
timeout: 10s
retries: 10
ports:
- "8444-8445:8443"
depends_on:
fineractpostgresql:
condition: service_healthy
environment:
- FINERACT_NODE_ID=2
- FINERACT_HIKARI_DRIVER_SOURCE_CLASS_NAME=org.postgresql.Driver
- FINERACT_HIKARI_JDBC_URL=jdbc:postgresql://fineractpostgresql:5432/fineract_tenants
- FINERACT_HIKARI_USERNAME=postgres
- FINERACT_HIKARI_PASSWORD=skdcnwauicn2ucnaecasdsajdnizucawencascdca
- FINERACT_HIKARI_MINIMUM_IDLE=3
- FINERACT_HIKARI_MAXIMUM_POOL_SIZE=10
- FINERACT_HIKARI_IDLE_TIMEOUT=60000
- FINERACT_HIKARI_CONNECTION_TIMEOUT=20000
- FINERACT_HIKARI_TEST_QUERY=SELECT 1
- FINERACT_HIKARI_AUTO_COMMIT=true
- FINERACT_SERVER_SSL_ENABLED=true
- FINERACT_HIKARI_DS_PROPERTIES_CACHE_PREP_STMTS=true
- FINERACT_HIKARI_DS_PROPERTIES_PREP_STMT_CACHE_SIZE=250
- FINERACT_HIKARI_DS_PROPERTIES_PREP_STMT_CACHE_SQL_LIMIT=2048
- FINERACT_HIKARI_DS_PROPERTIES_USE_SERVER_PREP_STMTS=true
- FINERACT_HIKARI_DS_PROPERTIES_USE_LOCAL_SESSION_STATE=true
- FINERACT_HIKARI_DS_PROPERTIES_REWRITE_BATCHED_STATEMENTS=true
- FINERACT_HIKARI_DS_PROPERTIES_CACHE_RESULT_SET_METADATA=true
- FINERACT_HIKARI_DS_PROPERTIES_CACHE_SERVER_CONFIGURATION=true
- FINERACT_HIKARI_DS_PROPERTIES_ELIDE_SET_AUTO_COMMITS=true
- FINERACT_HIKARI_DS_PROPERTIES_MAINTAIN_TIME_STATS=false
- FINERACT_HIKARI_DS_PROPERTIES_LOG_SLOW_QUERIES=true
- FINERACT_HIKARI_DS_PROPERTIES_DUMP_QUERIES_IN_EXCEPTION=true
- FINERACT_DEFAULT_TENANTDB_HOSTNAME=fineractpostgresql
- FINERACT_DEFAULT_TENANTDB_PORT=5432
- FINERACT_DEFAULT_TENANTDB_UID=postgres
- FINERACT_DEFAULT_TENANTDB_PWD=skdcnwauicn2ucnaecasdsajdnizucawencascdca
- FINERACT_DEFAULT_TENANTDB_CONN_PARAMS=
- FINERACT_DEFAULT_TENANTDB_TIMEZONE=Asia/Kolkata
- FINERACT_DEFAULT_TENANTDB_IDENTIFIER=default
- FINERACT_DEFAULT_TENANTDB_NAME=fineract_default
- FINERACT_DEFAULT_TENANTDB_DESCRIPTION=Default Demo Tenant
- JAVA_TOOL_OPTIONS="-Xmx1G"
- FINERACT_REMOTE_JOB_MESSAGE_HANDLER_JMS_ENABLED=true
- FINERACT_REMOTE_JOB_MESSAGE_HANDLER_SPRING_EVENTS_ENABLED=false
- FINERACT_MODE_BATCH_MANAGER_ENABLED=false
- FINERACT_MODE_BATCH_WORKER_ENABLED=true
- FINERACT_REMOTE_JOB_MESSAGE_HANDLER_JMS_BROKER_URL=tcp://activemq:61616
+182
View File
@@ -0,0 +1,182 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
# You can replace and test a more recent version of docker compose
version: '3.7'
services:
# Backend service
fineractpostgresql:
image: postgres:15.3
volumes:
- ./fineract-db/docker/postgresql:/docker-entrypoint-initdb.d/:Z,ro
environment:
POSTGRES_USER: root
POSTGRES_PASSWORD: skdcnwauicn2ucnaecasdsajdnizucawencascdca
FINERACT_DB_USER: postgres
FINERACT_DB_PASS: skdcnwauicn2ucnaecasdsajdnizucawencascdca
FINERACT_TENANTS_DB_NAME: fineract_tenants
FINERACT_TENANT_DEFAULT_DB_NAME: fineract_default
healthcheck:
test: [ "CMD", "pg_isready", "-q", "-d", "postgres", "-U", "root" ]
timeout: 10s
retries: 10
ports:
- "5432:5432"
fineract-manager:
image: fineract:latest
volumes:
- ./fineract-provider/build/data:/data
healthcheck:
test: ["CMD", 'sh', '-c', 'echo -e "Checking for the availability of Fineract server deployment"; while ! nc -z "fineract-server" 8443; do sleep 1; printf "-"; done; echo -e " >> Fineract server has started";' ]
timeout: 10s
retries: 10
ports:
- 8443:8443
depends_on:
fineractpostgresql:
condition: service_healthy
environment:
- AWS_ACCESS_KEY_ID=
- AWS_SECRET_ACCESS_KEY=
- FINERACT_NODE_ID=1
- FINERACT_HIKARI_DRIVER_SOURCE_CLASS_NAME=org.postgresql.Driver
- FINERACT_HIKARI_JDBC_URL=jdbc:postgresql://fineractpostgresql:5432/fineract_tenants
- FINERACT_HIKARI_USERNAME=postgres
- FINERACT_HIKARI_PASSWORD=skdcnwauicn2ucnaecasdsajdnizucawencascdca
- FINERACT_HIKARI_MINIMUM_IDLE=3
- FINERACT_HIKARI_MAXIMUM_POOL_SIZE=10
- FINERACT_HIKARI_IDLE_TIMEOUT=60000
- FINERACT_HIKARI_CONNECTION_TIMEOUT=20000
- FINERACT_HIKARI_TEST_QUERY=SELECT 1
- FINERACT_HIKARI_AUTO_COMMIT=true
- FINERACT_SERVER_SSL_ENABLED=true
- FINERACT_HIKARI_DS_PROPERTIES_CACHE_PREP_STMTS=true
- FINERACT_HIKARI_DS_PROPERTIES_PREP_STMT_CACHE_SIZE=250
- FINERACT_HIKARI_DS_PROPERTIES_PREP_STMT_CACHE_SQL_LIMIT=2048
- FINERACT_HIKARI_DS_PROPERTIES_USE_SERVER_PREP_STMTS=true
- FINERACT_HIKARI_DS_PROPERTIES_USE_LOCAL_SESSION_STATE=true
- FINERACT_HIKARI_DS_PROPERTIES_REWRITE_BATCHED_STATEMENTS=true
- FINERACT_HIKARI_DS_PROPERTIES_CACHE_RESULT_SET_METADATA=true
- FINERACT_HIKARI_DS_PROPERTIES_CACHE_SERVER_CONFIGURATION=true
- FINERACT_HIKARI_DS_PROPERTIES_ELIDE_SET_AUTO_COMMITS=true
- FINERACT_HIKARI_DS_PROPERTIES_MAINTAIN_TIME_STATS=false
- FINERACT_HIKARI_DS_PROPERTIES_LOG_SLOW_QUERIES=true
- FINERACT_HIKARI_DS_PROPERTIES_DUMP_QUERIES_IN_EXCEPTION=true
- FINERACT_DEFAULT_TENANTDB_HOSTNAME=fineractpostgresql
- FINERACT_DEFAULT_TENANTDB_PORT=5432
- FINERACT_DEFAULT_TENANTDB_UID=postgres
- FINERACT_DEFAULT_TENANTDB_PWD=skdcnwauicn2ucnaecasdsajdnizucawencascdca
- FINERACT_DEFAULT_TENANTDB_CONN_PARAMS=
- FINERACT_DEFAULT_TENANTDB_TIMEZONE=Asia/Kolkata
- FINERACT_DEFAULT_TENANTDB_IDENTIFIER=default
- FINERACT_DEFAULT_TENANTDB_NAME=fineract_default
- FINERACT_DEFAULT_TENANTDB_DESCRIPTION=Default Demo Tenant
- JAVA_TOOL_OPTIONS="-Xmx1G"
- FINERACT_REMOTE_JOB_MESSAGE_HANDLER_JMS_ENABLED=false
- FINERACT_REMOTE_JOB_MESSAGE_HANDLER_SPRING_EVENTS_ENABLED=false
- FINERACT_REMOTE_JOB_MESSAGE_HANDLER_KAFKA_ENABLED=true
- FINERACT_REMOTE_JOB_MESSAGE_HANDLER_KAFKA_BOOTSTRAP_SERVERS=b-3-public.democluster1.am2oyx.c4.kafka.eu-central-1.amazonaws.com:9198,b-2-public.democluster1.am2oyx.c4.kafka.eu-central-1.amazonaws.com:9198,b-1-public.democluster1.am2oyx.c4.kafka.eu-central-1.amazonaws.com:9198
- FINERACT_REMOTE_JOB_MESSAGE_HANDLER_KAFKA_ADMIN_EXTRA_PROPERTIES=security.protocol=SASL_SSL|sasl.mechanism=AWS_MSK_IAM|sasl.jaas.config=software.amazon.msk.auth.iam.IAMLoginModule required;|sasl.client.callback.handler.class=software.amazon.msk.auth.iam.IAMClientCallbackHandler
- FINERACT_REMOTE_JOB_MESSAGE_HANDLER_KAFKA_PRODUCER_EXTRA_PROPERTIES=security.protocol=SASL_SSL|sasl.mechanism=AWS_MSK_IAM|sasl.jaas.config=software.amazon.msk.auth.iam.IAMLoginModule required;|sasl.client.callback.handler.class=software.amazon.msk.auth.iam.IAMClientCallbackHandler
- FINERACT_REMOTE_JOB_MESSAGE_HANDLER_KAFKA_CONSUMER_EXTRA_PROPERTIES=security.protocol=SASL_SSL|sasl.mechanism=AWS_MSK_IAM|sasl.jaas.config=software.amazon.msk.auth.iam.IAMLoginModule required;|sasl.client.callback.handler.class=software.amazon.msk.auth.iam.IAMClientCallbackHandler
- FINERACT_REMOTE_JOB_MESSAGE_HANDLER_KAFKA_TOPIC_NAME=job-topic
- FINERACT_REMOTE_JOB_MESSAGE_HANDLER_KAFKA_TOPIC_REPLICAS=2
- FINERACT_MODE_BATCH_MANAGER_ENABLED=true
- FINERACT_MODE_BATCH_WORKER_ENABLED=false
- LOAN_COB_CHUNK_SIZE=10
- LOAN_COB_PARTITION_SIZE=10
- FINERACT_EXTERNAL_EVENTS_ENABLED=true
- FINERACT_EXTERNAL_EVENTS_KAFKA_ENABLED=true
- FINERACT_EXTERNAL_EVENTS_KAFKA_BOOTSTRAP_SERVERS=b-3-public.democluster1.am2oyx.c4.kafka.eu-central-1.amazonaws.com:9198,b-2-public.democluster1.am2oyx.c4.kafka.eu-central-1.amazonaws.com:9198,b-1-public.democluster1.am2oyx.c4.kafka.eu-central-1.amazonaws.com:9198
- FINERACT_EXTERNAL_EVENTS_KAFKA_ADMIN_EXTRA_PROPERTIES=security.protocol=SASL_SSL|sasl.mechanism=AWS_MSK_IAM|sasl.jaas.config=software.amazon.msk.auth.iam.IAMLoginModule required;|sasl.client.callback.handler.class=software.amazon.msk.auth.iam.IAMClientCallbackHandler
- FINERACT_EXTERNAL_EVENTS_KAFKA_PRODUCER_EXTRA_PROPERTIES:linger.ms=10|batch.size=16384|security.protocol=SASL_SSL|sasl.mechanism=AWS_MSK_IAM|sasl.jaas.config=software.amazon.msk.auth.iam.IAMLoginModule required;|sasl.client.callback.handler.class=software.amazon.msk.auth.iam.IAMClientCallbackHandler
- FINERACT_EXTERNAL_EVENTS_KAFKA_TOPIC_NAME=external-events
- FINERACT_EXTERNAL_EVENTS_KAFKA_TOPIC_REPLICAS=2
- SPRING_PROFILES_ACTIVE=test,diagnostics
fineract-worker:
image: fineract:latest
volumes:
- ./fineract-provider/build/data:/data
deploy:
mode: replicated
replicas: 2
healthcheck:
test: ["CMD", 'sh', '-c', 'echo -e "Checking for the availability of Fineract server deployment"; while ! nc -z "fineract-server" 8443; do sleep 1; printf "-"; done; echo -e " >> Fineract server has started";' ]
timeout: 10s
retries: 10
ports:
- "8444-8445:8443"
depends_on:
fineractpostgresql:
condition: service_healthy
environment:
- AWS_ACCESS_KEY_ID=
- AWS_SECRET_ACCESS_KEY=
- FINERACT_NODE_ID=1
- FINERACT_HIKARI_DRIVER_SOURCE_CLASS_NAME=org.postgresql.Driver
- FINERACT_HIKARI_JDBC_URL=jdbc:postgresql://fineractpostgresql:5432/fineract_tenants
- FINERACT_HIKARI_USERNAME=postgres
- FINERACT_HIKARI_PASSWORD=skdcnwauicn2ucnaecasdsajdnizucawencascdca
- FINERACT_HIKARI_MINIMUM_IDLE=3
- FINERACT_HIKARI_MAXIMUM_POOL_SIZE=10
- FINERACT_HIKARI_IDLE_TIMEOUT=60000
- FINERACT_HIKARI_CONNECTION_TIMEOUT=20000
- FINERACT_HIKARI_TEST_QUERY=SELECT 1
- FINERACT_HIKARI_AUTO_COMMIT=true
- FINERACT_SERVER_SSL_ENABLED=true
- FINERACT_HIKARI_DS_PROPERTIES_CACHE_PREP_STMTS=true
- FINERACT_HIKARI_DS_PROPERTIES_PREP_STMT_CACHE_SIZE=250
- FINERACT_HIKARI_DS_PROPERTIES_PREP_STMT_CACHE_SQL_LIMIT=2048
- FINERACT_HIKARI_DS_PROPERTIES_USE_SERVER_PREP_STMTS=true
- FINERACT_HIKARI_DS_PROPERTIES_USE_LOCAL_SESSION_STATE=true
- FINERACT_HIKARI_DS_PROPERTIES_REWRITE_BATCHED_STATEMENTS=true
- FINERACT_HIKARI_DS_PROPERTIES_CACHE_RESULT_SET_METADATA=true
- FINERACT_HIKARI_DS_PROPERTIES_CACHE_SERVER_CONFIGURATION=true
- FINERACT_HIKARI_DS_PROPERTIES_ELIDE_SET_AUTO_COMMITS=true
- FINERACT_HIKARI_DS_PROPERTIES_MAINTAIN_TIME_STATS=false
- FINERACT_HIKARI_DS_PROPERTIES_LOG_SLOW_QUERIES=true
- FINERACT_HIKARI_DS_PROPERTIES_DUMP_QUERIES_IN_EXCEPTION=true
- FINERACT_DEFAULT_TENANTDB_HOSTNAME=fineractpostgresql
- FINERACT_DEFAULT_TENANTDB_PORT=5432
- FINERACT_DEFAULT_TENANTDB_UID=postgres
- FINERACT_DEFAULT_TENANTDB_PWD=skdcnwauicn2ucnaecasdsajdnizucawencascdca
- FINERACT_DEFAULT_TENANTDB_CONN_PARAMS=
- FINERACT_DEFAULT_TENANTDB_TIMEZONE=Asia/Kolkata
- FINERACT_DEFAULT_TENANTDB_IDENTIFIER=default
- FINERACT_DEFAULT_TENANTDB_NAME=fineract_default
- FINERACT_DEFAULT_TENANTDB_DESCRIPTION=Default Demo Tenant
- JAVA_TOOL_OPTIONS="-Xmx1G"
- FINERACT_MODE_BATCH_MANAGER_ENABLED=false
- FINERACT_MODE_BATCH_WORKER_ENABLED=true
- FINERACT_REMOTE_JOB_MESSAGE_HANDLER_JMS_ENABLED=false
- FINERACT_REMOTE_JOB_MESSAGE_HANDLER_SPRING_EVENTS_ENABLED=false
- FINERACT_REMOTE_JOB_MESSAGE_HANDLER_KAFKA_ENABLED=true
- FINERACT_REMOTE_JOB_MESSAGE_HANDLER_KAFKA_BOOTSTRAP_SERVERS=b-3-public.democluster1.am2oyx.c4.kafka.eu-central-1.amazonaws.com:9198,b-2-public.democluster1.am2oyx.c4.kafka.eu-central-1.amazonaws.com:9198,b-1-public.democluster1.am2oyx.c4.kafka.eu-central-1.amazonaws.com:9198
- FINERACT_REMOTE_JOB_MESSAGE_HANDLER_KAFKA_ADMIN_EXTRA_PROPERTIES=security.protocol=SASL_SSL|sasl.mechanism=AWS_MSK_IAM|sasl.jaas.config=software.amazon.msk.auth.iam.IAMLoginModule required;|sasl.client.callback.handler.class=software.amazon.msk.auth.iam.IAMClientCallbackHandler
- FINERACT_REMOTE_JOB_MESSAGE_HANDLER_KAFKA_PRODUCER_EXTRA_PROPERTIES=security.protocol=SASL_SSL|sasl.mechanism=AWS_MSK_IAM|sasl.jaas.config=software.amazon.msk.auth.iam.IAMLoginModule required;|sasl.client.callback.handler.class=software.amazon.msk.auth.iam.IAMClientCallbackHandler
- FINERACT_REMOTE_JOB_MESSAGE_HANDLER_KAFKA_CONSUMER_EXTRA_PROPERTIES=security.protocol=SASL_SSL|sasl.mechanism=AWS_MSK_IAM|sasl.jaas.config=software.amazon.msk.auth.iam.IAMLoginModule required;|sasl.client.callback.handler.class=software.amazon.msk.auth.iam.IAMClientCallbackHandler
- FINERACT_REMOTE_JOB_MESSAGE_HANDLER_KAFKA_TOPIC_NAME=job-topic
- FINERACT_REMOTE_JOB_MESSAGE_HANDLER_KAFKA_TOPIC_REPLICAS=2
- FINERACT_EXTERNAL_EVENTS_ENABLED=true
- FINERACT_EXTERNAL_EVENTS_KAFKA_ENABLED=true
- FINERACT_EXTERNAL_EVENTS_KAFKA_BOOTSTRAP_SERVERS=b-3-public.democluster1.am2oyx.c4.kafka.eu-central-1.amazonaws.com:9198,b-2-public.democluster1.am2oyx.c4.kafka.eu-central-1.amazonaws.com:9198,b-1-public.democluster1.am2oyx.c4.kafka.eu-central-1.amazonaws.com:9198
- FINERACT_EXTERNAL_EVENTS_KAFKA_ADMIN_EXTRA_PROPERTIES=security.protocol=SASL_SSL|sasl.mechanism=AWS_MSK_IAM|sasl.jaas.config=software.amazon.msk.auth.iam.IAMLoginModule required;|sasl.client.callback.handler.class=software.amazon.msk.auth.iam.IAMClientCallbackHandler
- FINERACT_EXTERNAL_EVENTS_KAFKA_PRODUCER_EXTRA_PROPERTIES:linger.ms=10|batch.size=16384|security.protocol=SASL_SSL|sasl.mechanism=AWS_MSK_IAM|sasl.jaas.config=software.amazon.msk.auth.iam.IAMLoginModule required;|sasl.client.callback.handler.class=software.amazon.msk.auth.iam.IAMClientCallbackHandler
- FINERACT_EXTERNAL_EVENTS_KAFKA_TOPIC_NAME=external-events
- FINERACT_EXTERNAL_EVENTS_KAFKA_TOPIC_REPLICAS=2
- SPRING_PROFILES_ACTIVE=test,diagnostics
+177
View File
@@ -0,0 +1,177 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
# You can replace and test a more recent version of docker compose
version: '3.7'
services:
kafka:
image: 'bitnami/kafka:3.5.1-debian-11-r7'
ports:
- '9092:9092'
environment:
- KAFKA_CFG_NODE_ID=0
- KAFKA_CFG_PROCESS_ROLES=controller,broker
- KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
- KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka:9093
- KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
- ALLOW_PLAINTEXT_LISTENER=yes
- KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092
# Backend service
fineractpostgresql:
image: postgres:15.3
volumes:
- ./fineract-db/docker/postgresql:/docker-entrypoint-initdb.d/:Z,ro
environment:
POSTGRES_USER: root
POSTGRES_PASSWORD: skdcnwauicn2ucnaecasdsajdnizucawencascdca
FINERACT_DB_USER: postgres
FINERACT_DB_PASS: skdcnwauicn2ucnaecasdsajdnizucawencascdca
FINERACT_TENANTS_DB_NAME: fineract_tenants
FINERACT_TENANT_DEFAULT_DB_NAME: fineract_default
healthcheck:
test: [ "CMD", "pg_isready", "-q", "-d", "postgres", "-U", "root" ]
timeout: 10s
retries: 10
ports:
- "5432:5432"
fineract-manager:
image: fineract:latest
volumes:
- ./fineract-provider/build/data:/data
healthcheck:
test: ["CMD", 'sh', '-c', 'echo -e "Checking for the availability of Fineract server deployment"; while ! nc -z "fineract-server" 8443; do sleep 1; printf "-"; done; echo -e " >> Fineract server has started";' ]
timeout: 10s
retries: 10
ports:
- 8443:8443
depends_on:
fineractpostgresql:
condition: service_healthy
environment:
- FINERACT_NODE_ID=1
- FINERACT_HIKARI_DRIVER_SOURCE_CLASS_NAME=org.postgresql.Driver
- FINERACT_HIKARI_JDBC_URL=jdbc:postgresql://fineractpostgresql:5432/fineract_tenants
- FINERACT_HIKARI_USERNAME=postgres
- FINERACT_HIKARI_PASSWORD=skdcnwauicn2ucnaecasdsajdnizucawencascdca
- FINERACT_HIKARI_MINIMUM_IDLE=3
- FINERACT_HIKARI_MAXIMUM_POOL_SIZE=10
- FINERACT_HIKARI_IDLE_TIMEOUT=60000
- FINERACT_HIKARI_CONNECTION_TIMEOUT=20000
- FINERACT_HIKARI_TEST_QUERY=SELECT 1
- FINERACT_HIKARI_AUTO_COMMIT=true
- FINERACT_SERVER_SSL_ENABLED=true
- FINERACT_HIKARI_DS_PROPERTIES_CACHE_PREP_STMTS=true
- FINERACT_HIKARI_DS_PROPERTIES_PREP_STMT_CACHE_SIZE=250
- FINERACT_HIKARI_DS_PROPERTIES_PREP_STMT_CACHE_SQL_LIMIT=2048
- FINERACT_HIKARI_DS_PROPERTIES_USE_SERVER_PREP_STMTS=true
- FINERACT_HIKARI_DS_PROPERTIES_USE_LOCAL_SESSION_STATE=true
- FINERACT_HIKARI_DS_PROPERTIES_REWRITE_BATCHED_STATEMENTS=true
- FINERACT_HIKARI_DS_PROPERTIES_CACHE_RESULT_SET_METADATA=true
- FINERACT_HIKARI_DS_PROPERTIES_CACHE_SERVER_CONFIGURATION=true
- FINERACT_HIKARI_DS_PROPERTIES_ELIDE_SET_AUTO_COMMITS=true
- FINERACT_HIKARI_DS_PROPERTIES_MAINTAIN_TIME_STATS=false
- FINERACT_HIKARI_DS_PROPERTIES_LOG_SLOW_QUERIES=true
- FINERACT_HIKARI_DS_PROPERTIES_DUMP_QUERIES_IN_EXCEPTION=true
- FINERACT_DEFAULT_TENANTDB_HOSTNAME=fineractpostgresql
- FINERACT_DEFAULT_TENANTDB_PORT=5432
- FINERACT_DEFAULT_TENANTDB_UID=postgres
- FINERACT_DEFAULT_TENANTDB_PWD=skdcnwauicn2ucnaecasdsajdnizucawencascdca
- FINERACT_DEFAULT_TENANTDB_CONN_PARAMS=
- FINERACT_DEFAULT_TENANTDB_TIMEZONE=Asia/Kolkata
- FINERACT_DEFAULT_TENANTDB_IDENTIFIER=default
- FINERACT_DEFAULT_TENANTDB_NAME=fineract_default
- FINERACT_DEFAULT_TENANTDB_DESCRIPTION=Default Demo Tenant
- JAVA_TOOL_OPTIONS="-Xmx1G"
- FINERACT_REMOTE_JOB_MESSAGE_HANDLER_JMS_ENABLED=false
- FINERACT_REMOTE_JOB_MESSAGE_HANDLER_SPRING_EVENTS_ENABLED=false
- FINERACT_REMOTE_JOB_MESSAGE_HANDLER_KAFKA_ENABLED=true
- FINERACT_REMOTE_JOB_MESSAGE_HANDLER_KAFKA_BOOTSTRAP_SERVERS=kafka:9092
- FINERACT_REMOTE_JOB_MESSAGE_HANDLER_KAFKA_TOPIC_NAME=job-topic
- FINERACT_MODE_BATCH_MANAGER_ENABLED=true
- FINERACT_MODE_BATCH_WORKER_ENABLED=false
- LOAN_COB_CHUNK_SIZE=10
- LOAN_COB_PARTITION_SIZE=10
- FINERACT_EXTERNAL_EVENTS_ENABLED=true
- FINERACT_EXTERNAL_EVENTS_KAFKA_ENABLED=true
- FINERACT_EXTERNAL_EVENTS_KAFKA_BOOTSTRAP_SERVERS=kafka:9092
- FINERACT_EXTERNAL_EVENTS_KAFKA_TOPIC_NAME=external-events
- SPRING_PROFILES_ACTIVE=test,diagnostics
fineract-worker:
image: fineract:latest
volumes:
- ./fineract-provider/build/data:/data
deploy:
mode: replicated
replicas: 2
healthcheck:
test: ["CMD", 'sh', '-c', 'echo -e "Checking for the availability of Fineract server deployment"; while ! nc -z "fineract-server" 8443; do sleep 1; printf "-"; done; echo -e " >> Fineract server has started";' ]
timeout: 10s
retries: 10
ports:
- "8444-8445:8443"
depends_on:
fineractpostgresql:
condition: service_healthy
environment:
- FINERACT_NODE_ID=1
- FINERACT_HIKARI_DRIVER_SOURCE_CLASS_NAME=org.postgresql.Driver
- FINERACT_HIKARI_JDBC_URL=jdbc:postgresql://fineractpostgresql:5432/fineract_tenants
- FINERACT_HIKARI_USERNAME=postgres
- FINERACT_HIKARI_PASSWORD=skdcnwauicn2ucnaecasdsajdnizucawencascdca
- FINERACT_HIKARI_MINIMUM_IDLE=3
- FINERACT_HIKARI_MAXIMUM_POOL_SIZE=10
- FINERACT_HIKARI_IDLE_TIMEOUT=60000
- FINERACT_HIKARI_CONNECTION_TIMEOUT=20000
- FINERACT_HIKARI_TEST_QUERY=SELECT 1
- FINERACT_HIKARI_AUTO_COMMIT=true
- FINERACT_SERVER_SSL_ENABLED=true
- FINERACT_HIKARI_DS_PROPERTIES_CACHE_PREP_STMTS=true
- FINERACT_HIKARI_DS_PROPERTIES_PREP_STMT_CACHE_SIZE=250
- FINERACT_HIKARI_DS_PROPERTIES_PREP_STMT_CACHE_SQL_LIMIT=2048
- FINERACT_HIKARI_DS_PROPERTIES_USE_SERVER_PREP_STMTS=true
- FINERACT_HIKARI_DS_PROPERTIES_USE_LOCAL_SESSION_STATE=true
- FINERACT_HIKARI_DS_PROPERTIES_REWRITE_BATCHED_STATEMENTS=true
- FINERACT_HIKARI_DS_PROPERTIES_CACHE_RESULT_SET_METADATA=true
- FINERACT_HIKARI_DS_PROPERTIES_CACHE_SERVER_CONFIGURATION=true
- FINERACT_HIKARI_DS_PROPERTIES_ELIDE_SET_AUTO_COMMITS=true
- FINERACT_HIKARI_DS_PROPERTIES_MAINTAIN_TIME_STATS=false
- FINERACT_HIKARI_DS_PROPERTIES_LOG_SLOW_QUERIES=true
- FINERACT_HIKARI_DS_PROPERTIES_DUMP_QUERIES_IN_EXCEPTION=true
- FINERACT_DEFAULT_TENANTDB_HOSTNAME=fineractpostgresql
- FINERACT_DEFAULT_TENANTDB_PORT=5432
- FINERACT_DEFAULT_TENANTDB_UID=postgres
- FINERACT_DEFAULT_TENANTDB_PWD=skdcnwauicn2ucnaecasdsajdnizucawencascdca
- FINERACT_DEFAULT_TENANTDB_CONN_PARAMS=
- FINERACT_DEFAULT_TENANTDB_TIMEZONE=Asia/Kolkata
- FINERACT_DEFAULT_TENANTDB_IDENTIFIER=default
- FINERACT_DEFAULT_TENANTDB_NAME=fineract_default
- FINERACT_DEFAULT_TENANTDB_DESCRIPTION=Default Demo Tenant
- JAVA_TOOL_OPTIONS="-Xmx1G"
- FINERACT_MODE_BATCH_MANAGER_ENABLED=false
- FINERACT_MODE_BATCH_WORKER_ENABLED=true
- FINERACT_REMOTE_JOB_MESSAGE_HANDLER_JMS_ENABLED=false
- FINERACT_REMOTE_JOB_MESSAGE_HANDLER_SPRING_EVENTS_ENABLED=false
- FINERACT_REMOTE_JOB_MESSAGE_HANDLER_KAFKA_ENABLED=true
- FINERACT_REMOTE_JOB_MESSAGE_HANDLER_KAFKA_BOOTSTRAP_SERVERS=kafka:9092
- FINERACT_REMOTE_JOB_MESSAGE_HANDLER_KAFKA_TOPIC_NAME=job-topic
- FINERACT_EXTERNAL_EVENTS_ENABLED=true
- FINERACT_EXTERNAL_EVENTS_KAFKA_ENABLED=true
- FINERACT_EXTERNAL_EVENTS_KAFKA_BOOTSTRAP_SERVERS=kafka:9092
- FINERACT_EXTERNAL_EVENTS_KAFKA_TOPIC_NAME=external-events
- SPRING_PROFILES_ACTIVE=test,diagnostics
+1 -1
View File
@@ -21,7 +21,7 @@ version: '3.7'
services:
# Backend service
fineractpostgresql:
image: postgres:14.6
image: postgres:15.3
volumes:
- ./fineract-db/docker/postgresql:/docker-entrypoint-initdb.d/:Z,ro
restart: always
+2 -2
View File
@@ -21,7 +21,7 @@ version: '3.7'
services:
# Backend service
fineractmysql:
image: mariadb:10.10
image: mariadb:11.0
volumes:
- ./fineract-db/server_collation.cnf:/etc/mysql/conf.d/server_collation.cnf
- ./fineract-db/docker:/docker-entrypoint-initdb.d:Z,ro
@@ -29,7 +29,7 @@ services:
environment:
MYSQL_ROOT_PASSWORD: skdcnwauicn2ucnaecasdsajdnizucawencascdca
healthcheck:
test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost", "--password=skdcnwauicn2ucnaecasdsajdnizucawencascdca" ]
test: ["CMD", "healthcheck.sh", "--su-mysql", "--connect", "--innodb_initialized"]
timeout: 10s
retries: 10
ports:
@@ -66,6 +66,22 @@
"null",
"bigdecimal"
]
},
{
"default": null,
"name": "lastRepaymentDate",
"type": [
"null",
"string"
]
},
{
"default": null,
"name": "lastRepaymentAmount",
"type": [
"null",
"bigdecimal"
]
}
]
}
@@ -8,7 +8,7 @@
"name": "id",
"type": [
"null",
"int"
"long"
]
},
{
@@ -27,6 +27,30 @@
"string"
]
},
{
"default": null,
"name": "externalOwnerId",
"type": [
"null",
"string"
]
},
{
"default": null,
"name": "settlementDate",
"type": [
"null",
"string"
]
},
{
"default": null,
"name": "purchasePriceRatio",
"type": [
"null",
"string"
]
},
{
"default": null,
"name": "status",
@@ -724,6 +748,30 @@
"null",
"org.apache.fineract.avro.loan.v1.DelinquencyRangeDataV1"
]
},
{
"default": null,
"name": "overpaidOnDate",
"type": [
"null",
"string"
]
},
{
"default": null,
"name": "lastClosedBusinessDate",
"type": [
"null",
"string"
]
},
{
"default": null,
"name": "chargedOff",
"type": [
"null",
"boolean"
]
}
]
}
@@ -4,24 +4,16 @@
"type": "record",
"fields": [
{
"default": null,
"name": "id",
"type": [
"null",
"long"
]
"name": "loanId",
"type": "long"
},
{
"name": "loanAccountNo",
"type": "string"
},
{
"default": null,
"name": "accountNo",
"type": [
"null",
"string"
]
},
{
"default": null,
"name": "externalId",
"name": "loanExternalId",
"type": [
"null",
"string"
@@ -34,6 +26,30 @@
"null",
"org.apache.fineract.avro.loan.v1.DelinquencyRangeDataV1"
]
},
{
"name": "charges",
"type": {
"type": "array",
"items": "org.apache.fineract.avro.loan.v1.LoanChargeDataRangeViewV1"
}
},
{
"name": "currency",
"type": "org.apache.fineract.avro.generic.v1.CurrencyDataV1"
},
{
"name": "amount",
"doc": "Contains installments total, fee, interest, principal and penalty amount summaries",
"type": "org.apache.fineract.avro.loan.v1.LoanAmountDataV1"
},
{
"default": null,
"name": "delinquentDate",
"type": [
"null",
"string"
]
}
]
}
@@ -0,0 +1,27 @@
{
"name": "LoanAccountStayedLockedDataV1",
"namespace": "org.apache.fineract.avro.loan.v1",
"type": "record",
"fields": [
{
"name": "id",
"type": "long"
},
{
"default": null,
"name": "externalId",
"type": [
"null",
"string"
]
},
{
"default": null,
"name": "accountNo",
"type": [
"null",
"string"
]
}
]
}
@@ -0,0 +1,12 @@
{
"name": "LoanAccountsStayedLockedDataV1",
"namespace": "org.apache.fineract.avro.loan.v1",
"type": "record",
"fields": [{
"name": "loanAccounts",
"type": {
"type": "array",
"items": "org.apache.fineract.avro.loan.v1.LoanAccountStayedLockedDataV1"
}
}]
}
@@ -0,0 +1,47 @@
{
"name": "LoanAmountDataV1",
"namespace": "org.apache.fineract.avro.loan.v1",
"type": "record",
"fields": [
{
"default": null,
"name": "totalAmount",
"type": [
"null",
"bigdecimal"
]
},
{
"default": null,
"name": "principalAmount",
"type": [
"null",
"bigdecimal"
]
},
{
"default": null,
"name": "interestAmount",
"type": [
"null",
"bigdecimal"
]
},
{
"default": null,
"name": "feeAmount",
"type": [
"null",
"bigdecimal"
]
},
{
"default": null,
"name": "penaltyAmount",
"type": [
"null",
"bigdecimal"
]
}
]
}
@@ -242,6 +242,38 @@
"null",
"string"
]
},
{
"default": null,
"name": "chargedOffOnDate",
"type": [
"null",
"string"
]
},
{
"default": null,
"name": "chargedOffByUsername",
"type": [
"null",
"string"
]
},
{
"default": null,
"name": "chargedOffByFirstname",
"type": [
"null",
"string"
]
},
{
"default": null,
"name": "chargedOffByLastname",
"type": [
"null",
"string"
]
}
]
}
@@ -0,0 +1,23 @@
{
"name": "LoanChargeDataRangeViewV1",
"namespace": "org.apache.fineract.avro.loan.v1",
"type": "record",
"fields": [
{
"name": "id",
"type": "long"
},
{
"name": "name",
"type": "string"
},
{
"name": "currency",
"type": "org.apache.fineract.avro.generic.v1.CurrencyDataV1"
},
{
"name": "amount",
"type": "bigdecimal"
}
]
}
@@ -232,6 +232,30 @@
"null",
"string"
]
},
{
"default": null,
"name": "externalLoanId",
"type": [
"null",
"string"
]
},
{
"default": null,
"name": "externalOwnerId",
"type": [
"null",
"string"
]
},
{
"default": null,
"name": "submittedOnDate",
"type": [
"null",
"string"
]
}
]
}
@@ -0,0 +1,158 @@
{
"name": "LoanOwnershipTransferDataV1",
"namespace": "org.apache.fineract.avro.loan.v1",
"type": "record",
"fields": [
{
"name": "loanId",
"type": "long"
},
{
"default": null,
"name": "loanExternalId",
"type": [
"null",
"string"
]
},
{
"default": null,
"name": "type",
"type": [
"null",
"string"
]
},
{
"default": null,
"name": "transferExternalId",
"type": [
"null",
"string"
]
},
{
"default": null,
"name": "submittedDate",
"type": [
"null",
"string"
]
},
{
"default": null,
"name": "assetOwnerExternalId",
"type": [
"null",
"string"
]
},
{
"default": null,
"name": "currency",
"type": [
"null",
"org.apache.fineract.avro.generic.v1.CurrencyDataV1"
]
},
{
"default": null,
"name": "totalOutstandingBalanceAmount",
"type": [
"null",
"bigdecimal"
]
},
{
"default": null,
"name": "outstandingPrincipalPortion",
"type": [
"null",
"bigdecimal"
]
},
{
"default": null,
"name": "outstandingFeePortion",
"type": [
"null",
"bigdecimal"
]
},
{
"default": null,
"name": "outstandingPenaltyPortion",
"type": [
"null",
"bigdecimal"
]
},
{
"default": null,
"name": "outstandingInterestPortion",
"type": [
"null",
"bigdecimal"
]
},
{
"default": null,
"name": "overPaymentPortion",
"type": [
"null",
"bigdecimal"
]
},
{
"default": null,
"name": "unrecognizedIncomePortion",
"type": [
"null",
"bigdecimal"
]
},
{
"default": null,
"name": "unpaidChargeData",
"type": [
"null",
{
"type": "array",
"items": "org.apache.fineract.avro.loan.v1.UnpaidChargeDataV1"
}
]
},
{
"default": null,
"name": "transferStatus",
"type": [
"null",
"string"
]
},
{
"default": null,
"name": "transferStatusReason",
"type": [
"null",
"string"
]
},
{
"default": null,
"name": "settlementDate",
"type": [
"null",
"string"
]
},
{
"default": null,
"name": "purchasePriceRatio",
"type": [
"null",
"string"
]
}
]
}
@@ -4,32 +4,16 @@
"type": "record",
"fields": [
{
"default": null,
"name": "id",
"type": [
"null",
"long"
]
"name": "loanId",
"type": ["long"]
},
{
"name": "loanAccountNo",
"type": ["string"]
},
{
"default": null,
"name": "accountNo",
"type": [
"null",
"string"
]
},
{
"default": null,
"name": "externalId",
"type": [
"null",
"string"
]
},
{
"default": null,
"name": "dueDate",
"name": "loanExternalId",
"type": [
"null",
"string"
@@ -44,19 +28,15 @@
]
},
{
"default": null,
"name": "totalLoanAmountDue",
"type": [
"null",
"bigdecimal"
]
"name": "installment",
"type": ["org.apache.fineract.avro.loan.v1.RepaymentDueDataV1"]
},
{
"default": null,
"name": "repaymentDue",
"name": "pastDueAmount",
"type": [
"null",
"org.apache.fineract.avro.loan.v1.RepaymentDueDataV1"
"org.apache.fineract.avro.loan.v1.RepaymentPastDueDataV1"
]
}
]
@@ -306,6 +306,126 @@
"null",
"string"
]
},
{
"default": null,
"name": "totalMerchantRefund",
"type": [
"null",
"bigdecimal"
]
},
{
"default": null,
"name": "totalMerchantRefundReversed",
"type": [
"null",
"bigdecimal"
]
},
{
"default": null,
"name": "totalPayoutRefund",
"type": [
"null",
"bigdecimal"
]
},
{
"default": null,
"name": "totalPayoutRefundReversed",
"type": [
"null",
"bigdecimal"
]
},
{
"default": null,
"name": "totalGoodwillCredit",
"type": [
"null",
"bigdecimal"
]
},
{
"default": null,
"name": "totalGoodwillCreditReversed",
"type": [
"null",
"bigdecimal"
]
},
{
"default": null,
"name": "totalChargeAdjustment",
"type": [
"null",
"bigdecimal"
]
},
{
"default": null,
"name": "totalChargeAdjustmentReversed",
"type": [
"null",
"bigdecimal"
]
},
{
"default": null,
"name": "totalChargeback",
"type": [
"null",
"bigdecimal"
]
},
{
"default": null,
"name": "totalCreditBalanceRefund",
"type": [
"null",
"bigdecimal"
]
},
{
"default": null,
"name": "totalCreditBalanceRefundReversed",
"type": [
"null",
"bigdecimal"
]
},
{
"default": null,
"name": "totalRepaymentTransaction",
"type": [
"null",
"bigdecimal"
]
},
{
"default": null,
"name": "totalRepaymentTransactionReversed",
"type": [
"null",
"bigdecimal"
]
},
{
"default": null,
"name": "chargeOffReasonId",
"type": [
"null",
"long"
]
},
{
"default": null,
"name": "chargeOffReason",
"type": [
"null",
"string"
]
}
]
}
@@ -147,6 +147,14 @@
"string"
]
},
{
"default": null,
"name": "externalOwnerId",
"type": [
"null",
"string"
]
},
{
"default": null,
"name": "transfer",
@@ -216,6 +224,26 @@
"items": "org.apache.fineract.avro.loan.v1.LoanTransactionRelationDataV1"
}
]
},
{
"default": null,
"name": "unpaidCharges",
"doc": "Only used for Charge-off transaction",
"type": [
"null",
{
"type": "array",
"items": "org.apache.fineract.avro.loan.v1.UnpaidChargeDataV1"
}
]
},
{
"default": null,
"name": "reversedOnDate",
"type": [
"null",
"string"
]
}
]
}
@@ -11,6 +11,14 @@
"int"
]
},
{
"default": null,
"name": "installmentDueDate",
"type": [
"null",
"string"
]
},
{
"default": null,
"name": "principalAmountDue",
@@ -0,0 +1,47 @@
{
"name": "RepaymentPastDueDataV1",
"namespace": "org.apache.fineract.avro.loan.v1",
"type": "record",
"fields": [
{
"default": null,
"name": "totalAmount",
"type": [
"null",
"bigdecimal"
]
},
{
"default": null,
"name": "principalAmount",
"type": [
"null",
"bigdecimal"
]
},
{
"default": null,
"name": "interestAmount",
"type": [
"null",
"bigdecimal"
]
},
{
"default": null,
"name": "feeAmount",
"type": [
"null",
"bigdecimal"
]
},
{
"default": null,
"name": "penaltyAmount",
"type": [
"null",
"bigdecimal"
]
}
]
}
@@ -0,0 +1,19 @@
{
"name": "UnpaidChargeDataV1",
"namespace": "org.apache.fineract.avro.loan.v1",
"type": "record",
"fields": [
{
"name": "chargeId",
"type": "long"
},
{
"name": "chargeName",
"type": "string"
},
{
"name": "outstandingAmount",
"type": "bigdecimal"
}
]
}
+1 -1
View File
@@ -2,6 +2,6 @@ This is the source of the official Apache Fineract Java Client library.
It is mostly autogenerated using **Swagger Codegen**, but includes a number of hand-written utility classes to aid in its usage.
There is some [documentation about it here](https://github.com/apache/fineract/blob/develop/fineract-doc/src/docs/en/05_client.adoc).
There is some [documentation about it here](https://github.com/apache/fineract/blob/develop/fineract-doc/src/docs/en/chapters/sdk/client.adoc).
Please contribute improvements to this (a submodule of Apache Fineract) if this client library has gaps for what you need it for.
+4 -6
View File
@@ -16,22 +16,20 @@
* specific language governing permissions and limitations
* under the License.
*/
plugins {
id 'org.openapi.generator' version '6.6.0'
}
description = 'Fineract Client'
apply plugin: 'org.openapi.generator'
apply from: 'dependencies.gradle'
// enable when all tests are migrated
tasks.cucumber.onlyIf {false}
// TODO: @vidakovic we should publish this lib to Maven Central; do in separate PR
openApiMeta {
generatorName = 'Fineract'
packageName = 'org.apache.fineract.client'
outputFolder = "$buildDir/meta".toString()
// trick to make sure fineract.yaml is generated first
// trick to make sure fineract.json is generated first
}
openApiValidate {
+7 -3
View File
@@ -17,10 +17,13 @@
* under the License.
*/
dependencies {
// project(':fineract-provider')
// this needs to stay on exactly this version because the OpenAPI Generator
// only handles javax annotations, not jakarta ones
implementation 'jakarta.annotation:jakarta.annotation-api:1.3.5'
implementation(
'jakarta.annotation:jakarta.annotation-api',
'io.swagger:swagger-annotations',
'io.swagger.core.v3:swagger-annotations-jakarta',
'com.squareup.retrofit2:retrofit',
'com.squareup.retrofit2:adapter-java8',
'com.squareup.retrofit2:adapter-rxjava2', // TODO https://github.com/OpenAPITools/openapi-generator/issues/7758
@@ -30,6 +33,7 @@ dependencies {
'com.google.code.findbugs:jsr305',
'com.squareup.okhttp3:logging-interceptor',
)
// org.apache.oltu.oauth2 is used in org.apache.fineract.client.auth.OAuthOkHttpClient (only; can be excluded by consumers not requiring OAuth)
implementation('org.apache.oltu.oauth2:org.apache.oltu.oauth2.client') {
exclude group: 'org.apache.oltu.oauth2', module: 'org.apache.oltu.oauth2.common'
@@ -53,7 +53,7 @@ public interface DocumentsApiFixed {
* @return Call&lt;PostEntityTypeEntityIdDocumentsResponse&gt;
*/
@retrofit2.http.Multipart
@POST("{entityType}/{entityId}/documents")
@POST("v1/{entityType}/{entityId}/documents")
Call<PostEntityTypeEntityIdDocumentsResponse> createDocument(@retrofit2.http.Path("entityType") String entityType,
@retrofit2.http.Path("entityId") Long entityId, @retrofit2.http.Part okhttp3.MultipartBody.Part file,
@retrofit2.http.Part("name") String name, @retrofit2.http.Part("description") String description);
@@ -69,7 +69,7 @@ public interface DocumentsApiFixed {
* documentId (required)
* @return Call&lt;DeleteEntityTypeEntityIdDocumentsResponse&gt;
*/
@DELETE("{entityType}/{entityId}/documents/{documentId}")
@DELETE("v1/{entityType}/{entityId}/documents/{documentId}")
Call<DeleteEntityTypeEntityIdDocumentsResponse> deleteDocument(@retrofit2.http.Path("entityType") String entityType,
@retrofit2.http.Path("entityId") Long entityId, @retrofit2.http.Path("documentId") Long documentId);
@@ -85,7 +85,7 @@ public interface DocumentsApiFixed {
* documentId (required)
* @return Call&lt;Void&gt;
*/
@GET("{entityType}/{entityId}/documents/{documentId}/attachment")
@GET("v1/{entityType}/{entityId}/documents/{documentId}/attachment")
Call<ResponseBody> downloadFile(@retrofit2.http.Path("entityType") String entityType, @retrofit2.http.Path("entityId") Long entityId,
@retrofit2.http.Path("documentId") Long documentId);
@@ -101,7 +101,7 @@ public interface DocumentsApiFixed {
* documentId (required)
* @return Call&lt;GetEntityTypeEntityIdDocumentsResponse&gt;
*/
@GET("{entityType}/{entityId}/documents/{documentId}")
@GET("v1/{entityType}/{entityId}/documents/{documentId}")
Call<GetEntityTypeEntityIdDocumentsResponse> getDocument(@retrofit2.http.Path("entityType") String entityType,
@retrofit2.http.Path("entityId") Long entityId, @retrofit2.http.Path("documentId") Long documentId);
@@ -115,7 +115,7 @@ public interface DocumentsApiFixed {
* entityId (required)
* @return Call&lt;List&lt;GetEntityTypeEntityIdDocumentsResponse&gt;&gt;
*/
@GET("{entityType}/{entityId}/documents")
@GET("v1/{entityType}/{entityId}/documents")
Call<List<GetEntityTypeEntityIdDocumentsResponse>> retrieveAllDocuments(@retrofit2.http.Path("entityType") String entityType,
@retrofit2.http.Path("entityId") Long entityId);
@@ -138,7 +138,7 @@ public interface DocumentsApiFixed {
* @return Call&lt;PutEntityTypeEntityIdDocumentsResponse&gt;
*/
@retrofit2.http.Multipart
@PUT("{entityType}/{entityId}/documents/{documentId}")
@PUT("v1/{entityType}/{entityId}/documents/{documentId}")
Call<PutEntityTypeEntityIdDocumentsResponse> updateDocument(@retrofit2.http.Path("entityType") String entityType,
@retrofit2.http.Path("entityId") Long entityId, @retrofit2.http.Path("documentId") Long documentId,
@retrofit2.http.Part okhttp3.MultipartBody.Part file, @retrofit2.http.Part("name") String name,
@@ -36,21 +36,21 @@ import retrofit2.http.PUT;
*/
public interface ImagesApi {
@POST("{entityType}/{entityId}/images")
@POST("v1/{entityType}/{entityId}/images")
@retrofit2.http.Multipart
Call<Void> create(@retrofit2.http.Path("entityType") String entityType, @retrofit2.http.Path("entityId") Long entityId,
@retrofit2.http.Part okhttp3.MultipartBody.Part file);
@GET("{entityType}/{entityId}/images")
@GET("v1/{entityType}/{entityId}/images")
Call<ResponseBody> get(@retrofit2.http.Path("entityType") String entityType, @retrofit2.http.Path("entityId") Long entityId,
@retrofit2.http.Query("maxWidth") Integer maxWidth, @retrofit2.http.Query("maxHeight") Integer maxHeight,
@retrofit2.http.Query("output") String output);
@PUT("{entityType}/{entityId}/images")
@PUT("v1/{entityType}/{entityId}/images")
@retrofit2.http.Multipart
Call<Void> update(@retrofit2.http.Path("entityType") String entityType, @retrofit2.http.Path("entityId") Long entityId,
@retrofit2.http.Part okhttp3.MultipartBody.Part file);
@DELETE("{entityType}/{entityId}/images")
@DELETE("v1/{entityType}/{entityId}/images")
Call<Void> delete(@retrofit2.http.Path("entityType") String entityType, @retrofit2.http.Path("entityId") Long entityId);
}
@@ -51,14 +51,14 @@ public interface RunReportsApi {
* isSelfServiceUserReport (optional, default to false)
* @return Call&lt;GetReportNameResponse&gt;
*/
@GET("runreports/{reportName}")
@GET("v1/runreports/{reportName}")
Call<RunReportsResponse> runReportGetData(@retrofit2.http.Path("reportName") String reportName,
@QueryMap Map<String, String> parameters, @retrofit2.http.Query("isSelfServiceUserReport") Boolean isSelfServiceUserReport);
/**
* Run Report which returns a response such as a PDF, CSV, XLS or XSLX file.
*/
@GET("runreports/{reportName}")
@GET("v1/runreports/{reportName}")
Call<ResponseBody> runReportGetFile(@retrofit2.http.Path("reportName") String reportName, @QueryMap Map<String, String> parameters,
@retrofit2.http.Query("isSelfServiceUserReport") Boolean isSelfServiceUserReport);
@@ -19,6 +19,7 @@
package org.apache.fineract.client.util;
import java.io.IOException;
import lombok.extern.slf4j.Slf4j;
import retrofit2.Call;
import retrofit2.Response;
@@ -27,6 +28,7 @@ import retrofit2.Response;
*
* @author Michael Vorburger.ch
*/
@Slf4j
public class CallFailedRuntimeException extends RuntimeException {
private final Call<?> call;
@@ -46,17 +48,17 @@ public class CallFailedRuntimeException extends RuntimeException {
private static String message(Call<?> call, Response<?> response) {
StringBuilder sb = new StringBuilder("HTTP failed: " + call.request() + "; " + response);
if (response.message() != null && !response.message().isEmpty()) {
sb.append("; message: " + response.message());
if (null != response.message() && !response.message().isEmpty()) {
sb.append("; message: ").append(response.message());
}
String errorBody;
try {
errorBody = response.errorBody().string();
errorBody = response.errorBody() != null ? response.errorBody().string() : null;
if (errorBody != null) {
sb.append("; errorBody: " + errorBody);
sb.append("; errorBody: ").append(errorBody);
}
} catch (IOException e) {
// Ignore.
log.error("Exception during creating the {} message:", CallFailedRuntimeException.class.getSimpleName(), e);
}
return sb.toString();
}
@@ -23,6 +23,7 @@ import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.time.Duration;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
@@ -43,6 +44,7 @@ import org.apache.fineract.client.services.AuditsApi;
import org.apache.fineract.client.services.AuthenticationHttpBasicApi;
import org.apache.fineract.client.services.BatchApiApi;
import org.apache.fineract.client.services.BusinessDateManagementApi;
import org.apache.fineract.client.services.BusinessStepConfigurationApi;
import org.apache.fineract.client.services.CacheApi;
import org.apache.fineract.client.services.CashierJournalsApi;
import org.apache.fineract.client.services.CashiersApi;
@@ -51,6 +53,7 @@ import org.apache.fineract.client.services.ChargesApi;
import org.apache.fineract.client.services.ClientApi;
import org.apache.fineract.client.services.ClientChargesApi;
import org.apache.fineract.client.services.ClientIdentifierApi;
import org.apache.fineract.client.services.ClientSearchV2Api;
import org.apache.fineract.client.services.ClientTransactionApi;
import org.apache.fineract.client.services.ClientsAddressApi;
import org.apache.fineract.client.services.CodeValuesApi;
@@ -62,6 +65,8 @@ import org.apache.fineract.client.services.DelinquencyRangeAndBucketsManagementA
import org.apache.fineract.client.services.DocumentsApiFixed;
import org.apache.fineract.client.services.EntityDataTableApi;
import org.apache.fineract.client.services.EntityFieldConfigurationApi;
import org.apache.fineract.client.services.ExternalAssetOwnersApi;
import org.apache.fineract.client.services.ExternalEventConfigurationApi;
import org.apache.fineract.client.services.ExternalServicesApi;
import org.apache.fineract.client.services.FetchAuthenticatedUserDetailsApi;
import org.apache.fineract.client.services.FixedDepositAccountApi;
@@ -77,7 +82,9 @@ import org.apache.fineract.client.services.InterestRateChartApi;
import org.apache.fineract.client.services.InterestRateSlabAKAInterestBandsApi;
import org.apache.fineract.client.services.JournalEntriesApi;
import org.apache.fineract.client.services.ListReportMailingJobHistoryApi;
import org.apache.fineract.client.services.LoanAccountLockApi;
import org.apache.fineract.client.services.LoanChargesApi;
import org.apache.fineract.client.services.LoanCobCatchUpApi;
import org.apache.fineract.client.services.LoanCollateralApi;
import org.apache.fineract.client.services.LoanDisbursementDetailsApi;
import org.apache.fineract.client.services.LoanProductsApi;
@@ -150,7 +157,7 @@ import retrofit2.Retrofit;
import retrofit2.converter.scalars.ScalarsConverterFactory;
/**
* Fineract Client Java SDK API entry point. Use this instead of the {@link ApiClient}.
* Fineract Client Java SDK API entry point.
*
* @author Michael Vorburger.ch
*/
@@ -177,12 +184,15 @@ public final class FineractClient {
public final AuthenticationHttpBasicApi authentication;
public final BatchApiApi batches;
public final BusinessDateManagementApi businessDateManagement;
public final BusinessStepConfigurationApi businessStepConfiguration;
public final CacheApi caches;
public final CashierJournalsApi cashiersJournal;
public final CashiersApi cashiers;
public final CentersApi centers;
public final ChargesApi charges;
public final ClientApi clients;
public final ClientSearchV2Api clientSearchV2;
public final ClientChargesApi clientCharges;
public final ClientIdentifierApi clientIdentifiers;
public final ClientsAddressApi clientAddresses;
@@ -196,6 +206,7 @@ public final class FineractClient {
public final DelinquencyRangeAndBucketsManagementApi delinquencyRangeAndBucketsManagement;
public final EntityDataTableApi entityDatatableChecks;
public final EntityFieldConfigurationApi entityFieldConfigurations;
public final ExternalEventConfigurationApi externalEventConfigurationApi;
public final ExternalServicesApi externalServices;
public final FetchAuthenticatedUserDetailsApi userDetails;
public final FixedDepositAccountApi fixedDepositAccounts;
@@ -212,6 +223,7 @@ public final class FineractClient {
public final JournalEntriesApi journalEntries;
public final ListReportMailingJobHistoryApi reportMailings;
public final LoanChargesApi loanCharges;
public final LoanCobCatchUpApi loanCobCatchUpApi;
public final LoanCollateralApi loanCollaterals;
public final LoanProductsApi loanProducts;
public final LoanReschedulingApi loanSchedules;
@@ -278,10 +290,15 @@ public final class FineractClient {
public final UsersApi users;
public final WorkingDaysApi workingDays;
public final ExternalAssetOwnersApi externalAssetOwners;
public final LoanAccountLockApi loanAccountLockApi;
private FineractClient(OkHttpClient okHttpClient, Retrofit retrofit) {
this.okHttpClient = okHttpClient;
this.retrofit = retrofit;
loanAccountLockApi = retrofit.create(LoanAccountLockApi.class);
externalAssetOwners = retrofit.create(ExternalAssetOwnersApi.class);
glClosures = retrofit.create(AccountingClosureApi.class);
accountingRules = retrofit.create(AccountingRulesApi.class);
accountNumberFormats = retrofit.create(AccountNumberFormatApi.class);
@@ -291,12 +308,15 @@ public final class FineractClient {
authentication = retrofit.create(AuthenticationHttpBasicApi.class);
batches = retrofit.create(BatchApiApi.class);
businessDateManagement = retrofit.create(BusinessDateManagementApi.class);
businessStepConfiguration = retrofit.create(BusinessStepConfigurationApi.class);
externalEventConfigurationApi = retrofit.create(ExternalEventConfigurationApi.class);
caches = retrofit.create(CacheApi.class);
cashiersJournal = retrofit.create(CashierJournalsApi.class);
cashiers = retrofit.create(CashiersApi.class);
centers = retrofit.create(CentersApi.class);
charges = retrofit.create(ChargesApi.class);
clients = retrofit.create(ClientApi.class);
clientSearchV2 = retrofit.create(ClientSearchV2Api.class);
clientCharges = retrofit.create(ClientChargesApi.class);
clientIdentifiers = retrofit.create(ClientIdentifierApi.class);
clientAddresses = retrofit.create(ClientsAddressApi.class);
@@ -326,6 +346,7 @@ public final class FineractClient {
journalEntries = retrofit.create(JournalEntriesApi.class);
reportMailings = retrofit.create(ListReportMailingJobHistoryApi.class);
loanCharges = retrofit.create(LoanChargesApi.class);
loanCobCatchUpApi = retrofit.create(LoanCobCatchUpApi.class);
loanCollaterals = retrofit.create(LoanCollateralApi.class);
loanProducts = retrofit.create(LoanProductsApi.class);
loanSchedules = retrofit.create(LoanReschedulingApi.class);
@@ -454,6 +475,11 @@ public final class FineractClient {
return this;
}
public Builder readTimeout(Duration timeout) {
okBuilder.readTimeout(timeout);
return this;
}
/**
* Skip Fineract API host SSL certificate verification. DO NOT USE THIS when invoking a production server's API!
* This is intended for https://localhost:8443/ testing of development servers with self-signed certificates,
@@ -528,7 +554,6 @@ public final class FineractClient {
* Obtain the internal Retrofit Builder. This method is typically not required to be invoked for simple API
* usages, but can be a handy back door for non-trivial advanced customizations of the API client.
*
* @return the {@link ApiClient} which {@link #build()} will use.
*/
public retrofit2.Retrofit.Builder getRetrofitBuilder() {
return retrofitBuilder;
@@ -538,7 +563,6 @@ public final class FineractClient {
* Obtain the internal OkHttp Builder. This method is typically not required to be invoked for simple API
* usages, but can be a handy back door for non-trivial advanced customizations of the API client.
*
* @return the {@link ApiClient} which {@link #build()} will use.
*/
public okhttp3.OkHttpClient.Builder getOkBuilder() {
return okBuilder;
@@ -23,6 +23,7 @@ import com.google.gson.JsonParseException;
import com.google.gson.TypeAdapter;
import com.google.gson.internal.bind.util.ISO8601Utils;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonToken;
import com.google.gson.stream.JsonWriter;
import io.gsonfire.GsonFireBuilder;
import java.io.IOException;
@@ -35,8 +36,12 @@ import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.Objects;
import okhttp3.RequestBody;
import okhttp3.ResponseBody;
import org.apache.fineract.client.models.ExternalId;
import org.apache.fineract.client.util.adapter.ExternalIdAdapter;
import org.jetbrains.annotations.NotNull;
import retrofit2.Converter;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
@@ -51,12 +56,14 @@ public class JSON {
private final SqlDateTypeAdapter sqlDateTypeAdapter = new SqlDateTypeAdapter();
private final OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter();
private final LocalDateTypeAdapter localDateTypeAdapter = new LocalDateTypeAdapter();
private final ExternalIdAdapter externalIdAdapter = new ExternalIdAdapter();
public JSON() {
gson = new GsonFireBuilder().createGsonBuilder().registerTypeAdapter(Date.class, dateTypeAdapter)
.registerTypeAdapter(java.sql.Date.class, sqlDateTypeAdapter)
.registerTypeAdapter(OffsetDateTime.class, offsetDateTimeTypeAdapter)
.registerTypeAdapter(LocalDate.class, localDateTypeAdapter).create();
.registerTypeAdapter(LocalDate.class, localDateTypeAdapter).registerTypeAdapter(ExternalId.class, externalIdAdapter)
.create();
}
public Gson getGson() {
@@ -208,25 +215,28 @@ public class JSON {
@Override
public Date read(JsonReader in) throws IOException {
try {
switch (in.peek()) {
case NULL:
in.nextNull();
return null;
default:
String date = in.nextString();
try {
if (dateFormat != null) {
return dateFormat.parse(date);
}
return ISO8601Utils.parse(date, new ParsePosition(0));
} catch (ParseException e) {
throw new JsonParseException(e);
}
if (Objects.requireNonNull(in.peek()) == JsonToken.NULL) {
in.nextNull();
return null;
}
String date = in.nextString();
return parseDate(date);
} catch (IllegalArgumentException e) {
throw new JsonParseException(e);
}
}
@NotNull
private Date parseDate(String date) {
try {
if (null != dateFormat) {
return dateFormat.parse(date);
}
return ISO8601Utils.parse(date, new ParsePosition(0));
} catch (ParseException e) {
throw new JsonParseException(e);
}
}
}
// The following is not from the generated JSON class, but from the original generated ApiClient.
@@ -0,0 +1,50 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.fineract.client.util.adapter;
import com.google.gson.TypeAdapter;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import java.io.IOException;
import org.apache.fineract.client.models.ExternalId;
public class ExternalIdAdapter extends TypeAdapter<ExternalId> {
@Override
public void write(JsonWriter out, ExternalId value) throws IOException {
if (value != null && Boolean.FALSE.equals(value.getEmpty())) {
out.value(value.getValue());
} else {
out.nullValue();
}
}
@Override
public ExternalId read(JsonReader in) throws IOException {
ExternalId result = new ExternalId().empty(true);
switch (in.peek()) {
case NULL:
in.nextNull();
return result;
default:
String value = in.nextString();
return new ExternalId().empty(false).value(value);
}
}
}
@@ -32,7 +32,7 @@ import org.junit.jupiter.api.Test;
public class FineractClientTechnicalTest {
@Test
@Disabled // TODO remove Ignore once https://issues.apache.org/jira/browse/FINERACT-1221 is fixed
@Disabled("remove Ignore once https://issues.apache.org/jira/browse/FINERACT-1221 is fixed")
void testInvalidOperations() {
FineractClient.Builder builder = FineractClient.builder().baseURL("http://test/").tenant("default").basicAuth("mifos", "password");
builder.getRetrofitBuilder().validateEagerly(true); // see FINERACT-1221
+90
View File
@@ -0,0 +1,90 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
description = 'Fineract Core'
apply plugin: 'java'
apply plugin: 'eclipse'
compileJava.doLast {
def mainSS = sourceSets.main
def source = mainSS.java.classesDirectory.get()
copy {
from file("src/main/resources/jpa/core/persistence.xml")
into "${source}/META-INF/"
}
javaexec {
description = 'Performs EclipseLink static weaving of entity classes'
def target = source
main 'org.eclipse.persistence.tools.weaving.jpa.StaticWeave'
args '-persistenceinfo', source, '-classpath', sourceSets.main.runtimeClasspath, source, target
classpath sourceSets.main.runtimeClasspath
}
delete {
delete "${source}/META-INF/persistence.xml"
}
}
configurations {
providedRuntime // needed for Spring Boot executable WAR
providedCompile
compile() {
exclude module: 'hibernate-entitymanager'
exclude module: 'hibernate-validator'
exclude module: 'activation'
exclude module: 'bcmail-jdk14'
exclude module: 'bcprov-jdk14'
exclude module: 'bctsp-jdk14'
exclude module: 'c3p0'
exclude module: 'stax-api'
exclude module: 'jaxb-api'
exclude module: 'jaxb-impl'
exclude module: 'jboss-logging'
exclude module: 'itext-rtf'
exclude module: 'classworlds'
}
runtime
}
apply from: 'dependencies.gradle'
// Configuration for the modernizer plugin
// https://github.com/andygoossens/gradle-modernizer-plugin
modernizer {
ignoreClassNamePatterns = [
'.*AbstractPersistableCustom',
'.*EntityTables',
'.*domain.*'
]
}
// If we are running Gradle within Eclipse to enhance classes with OpenJPA,
// set the classes directory to point to Eclipse's default build directory
if (project.hasProperty('env') && project.getProperty('env') == 'eclipse') {
sourceSets.main.java.outputDir = new File(rootProject.projectDir, "fineract-core/bin/main")
}
if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) {
sourceSets {
test {
java {
exclude '**/core/boot/tests/**'
}
}
}
}
+131
View File
@@ -0,0 +1,131 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
dependencies {
// Never use "compile" scope, but make all dependencies either 'implementation', 'runtimeOnly' or 'testCompile'.
// Note that we never use 'api', because Fineract at least currently is a simple monolithic application ("WAR"), not a library.
// We also (normally should have) no need to ever use 'compileOnly'.
implementation(
project(path: ':fineract-avro-schemas')
)
// implementation dependencies are directly used (compiled against) in src/main (and src/test)
implementation(
'org.springframework.boot:spring-boot-starter-web',
'org.springframework.boot:spring-boot-starter-security',
'org.springframework.boot:spring-boot-starter-validation',
'org.springframework.boot:spring-boot-starter-batch',
'org.springframework.batch:spring-batch-integration',
'jakarta.ws.rs:jakarta.ws.rs-api',
'org.glassfish.jersey.media:jersey-media-multipart',
'org.apache.avro:avro',
'com.google.guava:guava',
'com.google.code.gson:gson',
'org.apache.commons:commons-lang3',
'com.jayway.jsonpath:json-path',
'com.github.spotbugs:spotbugs-annotations',
'io.swagger.core.v3:swagger-annotations-jakarta',
'com.squareup.retrofit2:converter-gson',
'org.springdoc:springdoc-openapi-starter-webmvc-ui',
'org.mapstruct:mapstruct',
'io.github.resilience4j:resilience4j-spring-boot2',
'org.apache.httpcomponents:httpcore',
)
implementation ('org.springframework.boot:spring-boot-starter-data-jpa') {
exclude group: 'org.hibernate'
}
implementation('org.eclipse.persistence:org.eclipse.persistence.jpa') {
exclude group: 'org.eclipse.persistence', module: 'jakarta.persistence'
}
implementation('org.springframework.boot:spring-boot-starter-jersey') {
exclude group: 'org.glassfish.hk2.external', module: 'aopalliance-repackaged'
exclude group: 'org.glassfish.hk2', module: 'hk2-runlevel'
exclude group: 'org.hibernate.validator', module: 'hibernate-validator'
exclude group: 'jakarta.activation', module: 'jakarta.activation-api'
}
implementation('org.dom4j:dom4j') {
exclude group: 'javax.xml.bind'
}
implementation ('jakarta.xml.bind:jakarta.xml.bind-api') {
exclude group: 'jakarta.activation'
}
implementation ('org.springframework.boot:spring-boot-starter-data-jpa') {
exclude group: 'org.hibernate'
}
implementation('org.eclipse.persistence:org.eclipse.persistence.jpa') {
exclude group: 'org.eclipse.persistence', module: 'jakarta.persistence'
}
runtimeOnly('org.glassfish.jaxb:jaxb-runtime') {
exclude group: 'com.sun.activation'
}
// runtimeOnly dependencies are things that Fineract code has no direct compile time dependency on, but which must be present at run-time
runtimeOnly(
'org.apache.bval:org.apache.bval.bundle',
// Although fineract (at the time of writing) doesn't have any compile time dep. on httpclient,
// it's useful to have this for the Spring Boot TestRestTemplate http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-rest-templates-test-utility
'org.apache.httpcomponents:httpclient'
)
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
annotationProcessor 'org.mapstruct:mapstruct-processor'
implementation 'ch.qos.logback.contrib:logback-json-classic'
implementation 'ch.qos.logback.contrib:logback-jackson'
implementation 'org.codehaus.janino:janino'
implementation 'org.apache.commons:commons-math3'
implementation 'io.github.classgraph:classgraph'
// testCompile dependencies are ONLY used in src/test, not src/main.
// Do NOT repeat dependencies which are ALREADY in implementation or runtimeOnly!
//
testImplementation( 'io.github.classgraph:classgraph')
testImplementation ('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'com.jayway.jsonpath', module: 'json-path'
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
exclude group: 'jakarta.activation'
exclude group: 'javax.activation'
exclude group: 'org.skyscreamer'
}
implementation ('org.mnode.ical4j:ical4j') {
exclude group: 'commons-logging'
exclude group: 'javax.activation'
exclude group: 'com.sun.mail', module: 'javax.mail'
}
implementation ('org.quartz-scheduler:quartz') {
exclude group: 'com.zaxxer', module: 'HikariCP-java7'
}
testImplementation ('org.mockito:mockito-inline')
implementation('org.apache.avro:avro')
implementation(
project(path: ':fineract-avro-schemas')
)
}
@@ -27,22 +27,22 @@ import io.swagger.v3.oas.annotations.parameters.RequestBody;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.DELETE;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.POST;
import jakarta.ws.rs.PUT;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.QueryParam;
import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.UriInfo;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.UriInfo;
import lombok.RequiredArgsConstructor;
import org.apache.fineract.accounting.closure.data.GLClosureData;
import org.apache.fineract.accounting.closure.service.GLClosureReadPlatformService;
@@ -55,12 +55,10 @@ import org.apache.fineract.infrastructure.core.serialization.ApiRequestJsonSeria
import org.apache.fineract.infrastructure.core.serialization.DefaultToApiJsonSerializer;
import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext;
import org.apache.fineract.organisation.office.service.OfficeReadPlatformService;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
@Path("/glclosures")
@Path("/v1/glclosures")
@Component
@Scope("singleton")
@Tag(name = "Accounting Closure", description = "An accounting closure indicates that no more journal entries may be logged (or reversed) in the system, either manually or via the portfolio with an entry date prior to the defined closure date\n"
+ "\n" + "Field Descriptions\n" + "closingDate\n" + "The date for which the accounting closure is defined\n" + "officeId\n"
+ "The identifer of the branch for which accounting has been closed\n" + "comments\n"
@@ -18,15 +18,15 @@
*/
package org.apache.fineract.accounting.closure.domain;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
import jakarta.persistence.UniqueConstraint;
import java.time.LocalDate;
import java.util.LinkedHashMap;
import java.util.Map;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;
@@ -32,11 +32,10 @@ import org.apache.fineract.infrastructure.core.exception.InvalidJsonException;
import org.apache.fineract.infrastructure.core.serialization.AbstractFromApiJsonDeserializer;
import org.apache.fineract.infrastructure.core.serialization.FromApiJsonDeserializer;
import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper;
import org.apache.fineract.portfolio.loanaccount.guarantor.command.GuarantorCommand;
import org.springframework.stereotype.Component;
/**
* Implementation of {@link FromApiJsonDeserializer} for {@link GuarantorCommand}'s.
* Implementation of {@link FromApiJsonDeserializer}
*/
@Component
@RequiredArgsConstructor
@@ -37,7 +37,10 @@ public final class AccountingConstants {
public enum CashAccountsForLoan {
FUND_SOURCE(1), LOAN_PORTFOLIO(2), INTEREST_ON_LOANS(3), INCOME_FROM_FEES(4), INCOME_FROM_PENALTIES(5), LOSSES_WRITTEN_OFF(
6), TRANSFERS_SUSPENSE(10), OVERPAYMENT(11), INCOME_FROM_RECOVERY(12), GOODWILL_CREDIT(13);
6), TRANSFERS_SUSPENSE(10), OVERPAYMENT(11), INCOME_FROM_RECOVERY(12), GOODWILL_CREDIT(13), INCOME_FROM_CHARGE_OFF_INTEREST(
14), INCOME_FROM_CHARGE_OFF_FEES(15), CHARGE_OFF_EXPENSE(16), CHARGE_OFF_FRAUD_EXPENSE(
17), INCOME_FROM_CHARGE_OFF_PENALTY(18), INCOME_FROM_GOODWILL_CREDIT_INTEREST(
19), INCOME_FROM_GOODWILL_CREDIT_FEES(20), INCOME_FROM_GOODWILL_CREDIT_PENALTY(21);
private final Integer value;
@@ -75,7 +78,10 @@ public final class AccountingConstants {
FUND_SOURCE(1), LOAN_PORTFOLIO(2), INTEREST_ON_LOANS(3), INCOME_FROM_FEES(4), INCOME_FROM_PENALTIES(5), //
LOSSES_WRITTEN_OFF(6), INTEREST_RECEIVABLE(7), FEES_RECEIVABLE(8), PENALTIES_RECEIVABLE(9), //
TRANSFERS_SUSPENSE(10), OVERPAYMENT(11), INCOME_FROM_RECOVERY(12), GOODWILL_CREDIT(13);
TRANSFERS_SUSPENSE(10), OVERPAYMENT(11), INCOME_FROM_RECOVERY(12), GOODWILL_CREDIT(13), INCOME_FROM_CHARGE_OFF_INTEREST(
14), INCOME_FROM_CHARGE_OFF_FEES(15), CHARGE_OFF_EXPENSE(16), CHARGE_OFF_FRAUD_EXPENSE(17), INCOME_FROM_CHARGE_OFF_PENALTY(
18), INCOME_FROM_GOODWILL_CREDIT_INTEREST(
19), INCOME_FROM_GOODWILL_CREDIT_FEES(20), INCOME_FROM_GOODWILL_CREDIT_PENALTY(21);
private final Integer value;
@@ -125,7 +131,15 @@ public final class AccountingConstants {
"penaltyToIncomeAccountMappings"), CHARGE_ID(
"chargeId"), INCOME_ACCOUNT_ID(
"incomeAccountId"), INCOME_FROM_RECOVERY(
"incomeFromRecoveryAccountId");
"incomeFromRecoveryAccountId"), INCOME_FROM_CHARGE_OFF_INTEREST(
"incomeFromChargeOffInterestAccountId"), INCOME_FROM_CHARGE_OFF_FEES(
"incomeFromChargeOffFeesAccountId"), CHARGE_OFF_EXPENSE(
"chargeOffExpenseAccountId"), CHARGE_OFF_FRAUD_EXPENSE(
"chargeOffFraudExpenseAccountId"), INCOME_FROM_CHARGE_OFF_PENALTY(
"incomeFromChargeOffPenaltyAccountId"), INCOME_FROM_GOODWILL_CREDIT_INTEREST(
"incomeFromGoodwillCreditInterestAccountId"), INCOME_FROM_GOODWILL_CREDIT_FEES(
"incomeFromGoodwillCreditFeesAccountId"), INCOME_FROM_GOODWILL_CREDIT_PENALTY(
"incomeFromGoodwillCreditPenaltyAccountId");
private final String value;
@@ -154,7 +168,15 @@ public final class AccountingConstants {
"transfersInSuspenseAccount"), INCOME_ACCOUNT_ID(
"incomeAccount"), INCOME_FROM_RECOVERY(
"incomeFromRecoveryAccount"), LIABILITY_TRANSFER_SUSPENSE(
"liabilityTransferInSuspenseAccount");
"liabilityTransferInSuspenseAccount"), INCOME_FROM_CHARGE_OFF_INTEREST(
"incomeFromChargeOffInterestAccount"), INCOME_FROM_CHARGE_OFF_FEES(
"incomeFromChargeOffFeesAccount"), CHARGE_OFF_EXPENSE(
"chargeOffExpenseAccount"), CHARGE_OFF_FRAUD_EXPENSE(
"chargeOffFraudExpenseAccount"), INCOME_FROM_CHARGE_OFF_PENALTY(
"incomeFromChargeOffPenaltyAccount"), INCOME_FROM_GOODWILL_CREDIT_INTEREST(
"incomeFromGoodwillCreditInterestAccount"), INCOME_FROM_GOODWILL_CREDIT_FEES(
"incomeFromGoodwillCreditFeesAccount"), INCOME_FROM_GOODWILL_CREDIT_PENALTY(
"incomeFromGoodwillCreditPenaltyAccount");
private final String value;
@@ -27,18 +27,18 @@ import io.swagger.v3.oas.annotations.parameters.RequestBody;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.DELETE;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.POST;
import jakarta.ws.rs.PUT;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.UriInfo;
import java.util.List;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.UriInfo;
import lombok.RequiredArgsConstructor;
import org.apache.fineract.accounting.financialactivityaccount.data.FinancialActivityAccountData;
import org.apache.fineract.accounting.financialactivityaccount.service.FinancialActivityAccountReadPlatformService;
@@ -50,12 +50,10 @@ import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
import org.apache.fineract.infrastructure.core.serialization.ApiRequestJsonSerializationSettings;
import org.apache.fineract.infrastructure.core.serialization.DefaultToApiJsonSerializer;
import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
@Path("/financialactivityaccounts")
@Path("/v1/financialactivityaccounts")
@Component
@Scope("singleton")
@Tag(name = "Mapping Financial Activities to Accounts", description = "Organization Level Financial Activities like Asset and Liability Transfer can be mapped to GL Account. Integrated accounting takes these accounts into consideration when an Account transfer is made between a savings to loan/savings account and vice-versa\n"
+ "\n" + "Field Descriptions\n" + "financialActivityId\n" + "The identifier of the Financial Activity\n" + "glAccountId\n"
+ "The identifier of a GL Account ( Ledger Account) which shall be used as the default account for the selected Financial Activity")

Some files were not shown because too many files have changed in this diff Show More