From db28259b1ae6867fa2dd17f5f12fac16d0f5d97f Mon Sep 17 00:00:00 2001 From: Adam Saghy Date: Sat, 21 Jun 2025 00:48:05 +0200 Subject: [PATCH] FINERACT-2181: Gradle task rework - Optimized weaving across all modules --- STATIC_WEAVING.md | 30 ++ build.gradle | 9 +- fineract-accounting/build.gradle | 23 +- .../resources/jpa/accounting/persistence.xml | 51 --- .../fineract-accounting}/persistence.xml | 91 +++-- fineract-branch/build.gradle | 29 +- .../module/fineract-branch/persistence.xml | 100 +++++ fineract-charge/build.gradle | 29 +- .../module/fineract-charge}/persistence.xml | 93 +++-- fineract-command/dependencies.gradle | 4 +- .../persistence/CommandRepository.java | 2 +- .../{model => domain}/CommandEntity.java | 2 +- .../persistence/mapping/CommandMapper.java | 2 +- .../module/fineract-command}/persistence.xml | 10 +- fineract-core/build.gradle | 21 +- .../module/fineract-core}/persistence.xml | 76 ++-- fineract-document/build.gradle | 19 +- .../module/fineract-document}/persistence.xml | 79 ++-- fineract-investor/build.gradle | 23 +- .../module/fineract-investor}/persistence.xml | 145 ++++--- fineract-loan/build.gradle | 29 +- .../module/fineract-loan}/persistence.xml | 134 ++++--- fineract-progressive-loan/build.gradle | 23 +- .../persistence.xml | 129 +++--- fineract-provider/build.gradle | 116 +++--- .../module/fineract-provider/persistence.xml | 375 ++++++++++++++++++ fineract-rates/build.gradle | 29 +- .../module/fineract-rates}/persistence.xml | 79 ++-- fineract-report/build.gradle | 29 +- .../module/fineract-report}/persistence.xml | 72 ++-- fineract-savings/build.gradle | 29 +- .../resources/jpa/savings/persistence.xml | 74 ---- .../module/fineract-savings/persistence.xml | 122 ++++++ fineract-tax/build.gradle | 29 +- .../module/fineract-tax}/persistence.xml | 81 ++-- static-weaving.gradle | 65 +++ 36 files changed, 1310 insertions(+), 943 deletions(-) create mode 100644 STATIC_WEAVING.md delete mode 100644 fineract-accounting/src/main/resources/jpa/accounting/persistence.xml rename {fineract-loan/src/main/resources/jpa/loan => fineract-accounting/src/main/resources/jpa/static-weaving/module/fineract-accounting}/persistence.xml (74%) create mode 100644 fineract-branch/src/main/resources/jpa/static-weaving/module/fineract-branch/persistence.xml rename {fineract-rates/src/main/resources/jpa/rates => fineract-charge/src/main/resources/jpa/static-weaving/module/fineract-charge}/persistence.xml (72%) rename fineract-command/src/main/java/org/apache/fineract/command/persistence/{model => domain}/CommandEntity.java (97%) rename {fineract-core/src/main/resources/jpa/core => fineract-command/src/main/resources/jpa/static-weaving/module/fineract-command}/persistence.xml (74%) rename {fineract-charge/src/main/resources/jpa/charge => fineract-core/src/main/resources/jpa/static-weaving/module/fineract-core}/persistence.xml (75%) rename {fineract-branch/src/main/resources/jpa/branch => fineract-document/src/main/resources/jpa/static-weaving/module/fineract-document}/persistence.xml (75%) rename {fineract-provider/src/main/resources/jpa => fineract-investor/src/main/resources/jpa/static-weaving/module/fineract-investor}/persistence.xml (72%) rename {fineract-progressive-loan/src/main/resources/jpa/progressiveloan => fineract-loan/src/main/resources/jpa/static-weaving/module/fineract-loan}/persistence.xml (86%) rename {fineract-investor/src/main/resources/jpa/investor => fineract-progressive-loan/src/main/resources/jpa/static-weaving/module/fineract-progressive-loan}/persistence.xml (81%) create mode 100644 fineract-provider/src/main/resources/jpa/static-weaving/module/fineract-provider/persistence.xml rename {fineract-tax/src/main/resources/jpa/taxes => fineract-rates/src/main/resources/jpa/static-weaving/module/fineract-rates}/persistence.xml (80%) rename {fineract-document/src/main/resources/jpa/document => fineract-report/src/main/resources/jpa/static-weaving/module/fineract-report}/persistence.xml (75%) delete mode 100644 fineract-savings/src/main/resources/jpa/savings/persistence.xml create mode 100644 fineract-savings/src/main/resources/jpa/static-weaving/module/fineract-savings/persistence.xml rename {fineract-report/src/main/resources/jpa/report => fineract-tax/src/main/resources/jpa/static-weaving/module/fineract-tax}/persistence.xml (81%) create mode 100644 static-weaving.gradle diff --git a/STATIC_WEAVING.md b/STATIC_WEAVING.md new file mode 100644 index 000000000..ae8ba7805 --- /dev/null +++ b/STATIC_WEAVING.md @@ -0,0 +1,30 @@ +# Static Weaving Configuration + +This document explains the static weaving setup for JPA entities in the Fineract project. + +## Overview + +Static weaving is a process that enhances JPA entities at build time to improve runtime performance. This is done using the `org.eclipse.persistence.tools.weaving.jpa.StaticWeave` which processes the compiled classes and applies the necessary bytecode transformations. + +## Configuration + +The static weaving is configured in `static-weaving.gradle` and applied to all Java projects that contain JPA entities. + +## How It Works + +1. **Compilation**: Java source files are compiled to the standard classes directory (`build/classes/java/main`). +2. **Weaving**: Weaving happens as last step of **compileJava** task, which outputs them to the standard classes directory (`build/classes/java/main`). + +## Adding Static Weaving to a Module + +1. Add JPA entities to `src/main/java` +2. Ensure there's a `persistence.xml` file in `src/main/resources/jpa/static-weaving/module/[module-name]/` +3. The build will automatically detect and apply static weaving + +## Troubleshooting + +If you encounter issues with static weaving: + +1. Check that the `persistence.xml` file exists in the correct location +2. Verify that the output directories are being created correctly +3. Check the build logs for any weaving-related errors diff --git a/build.gradle b/build.gradle index 077ad067f..2d5252c93 100644 --- a/build.gradle +++ b/build.gradle @@ -146,6 +146,11 @@ gitVersioning.apply { ext['groovy.version'] = '4.0.17' ext['swaggerFile'] = "$rootDir/fineract-provider/build/classes/java/main/static/fineract.json".toString() +// Apply static weaving configuration to all subprojects +subprojects { subproject -> + apply from: rootProject.file('static-weaving.gradle') +} + allprojects { group = 'org.apache.fineract' @@ -406,10 +411,6 @@ configure(project.fineractJavaProjects) { group = 'org.apache.fineract' - /* http://stackoverflow.com/questions/19653311/jpa-repository-works-in-idea-and-production-but-not-in-gradle */ - sourceSets.main.output.resourcesDir = sourceSets.main.java.classesDirectory - sourceSets.test.output.resourcesDir = sourceSets.test.java.classesDirectory - configurations.named('spotbugs').configure { resolutionStrategy.eachDependency { if (it.requested.group == 'org.ow2.asm') { diff --git a/fineract-accounting/build.gradle b/fineract-accounting/build.gradle index 916069b1f..9f7ab3ab4 100644 --- a/fineract-accounting/build.gradle +++ b/fineract-accounting/build.gradle @@ -21,23 +21,8 @@ description = 'Fineract Accounting' 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/accounting/persistence.xml") - into "${source}/META-INF/" - } - javaexec { - description = 'Performs EclipseLink static weaving of entity classes' - def target = source - mainClass = 'org.eclipse.persistence.tools.weaving.jpa.StaticWeave' - args '-persistenceinfo', source, source, target - classpath sourceSets.main.runtimeClasspath - } - delete { - delete "${source}/META-INF/persistence.xml" - } +compileJava { + dependsOn ':fineract-avro-schemas:buildJavaSdk' } configurations { @@ -85,10 +70,6 @@ eclipse { } } -/* http://stackoverflow.com/questions/19653311/jpa-repository-works-in-idea-and-production-but-not-in-gradle */ -sourceSets.main.output.resourcesDir = sourceSets.main.java.classesDirectory -sourceSets.test.output.resourcesDir = sourceSets.test.java.classesDirectory - if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) { sourceSets { test { diff --git a/fineract-accounting/src/main/resources/jpa/accounting/persistence.xml b/fineract-accounting/src/main/resources/jpa/accounting/persistence.xml deleted file mode 100644 index 3e2aa1743..000000000 --- a/fineract-accounting/src/main/resources/jpa/accounting/persistence.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - org.eclipse.persistence.jpa.PersistenceProvider - - org.apache.fineract.accounting.glaccount.domain.GLAccount - org.apache.fineract.infrastructure.codes.domain.Code - org.apache.fineract.infrastructure.codes.domain.CodeValue - org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom - org.apache.fineract.organisation.office.domain.Office - org.apache.fineract.portfolio.paymenttype.domain.PaymentType - org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail - org.apache.fineract.portfolio.tax.domain.TaxComponent - org.apache.fineract.portfolio.tax.domain.TaxComponentHistory - org.apache.fineract.portfolio.tax.domain.TaxGroup - org.apache.fineract.portfolio.tax.domain.TaxGroupMappings - - org.apache.fineract.portfolio.charge.domain.Charge - false - - - - - diff --git a/fineract-loan/src/main/resources/jpa/loan/persistence.xml b/fineract-accounting/src/main/resources/jpa/static-weaving/module/fineract-accounting/persistence.xml similarity index 74% rename from fineract-loan/src/main/resources/jpa/loan/persistence.xml rename to fineract-accounting/src/main/resources/jpa/static-weaving/module/fineract-accounting/persistence.xml index bb2388765..60e55ff84 100644 --- a/fineract-loan/src/main/resources/jpa/loan/persistence.xml +++ b/fineract-accounting/src/main/resources/jpa/static-weaving/module/fineract-accounting/persistence.xml @@ -22,56 +22,69 @@ + xmlns="http://java.sun.com/xml/ns/persistence" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> org.eclipse.persistence.jpa.PersistenceProvider - - org.apache.fineract.accounting.glaccount.domain.GLAccount - org.apache.fineract.accounting.journalentry.domain.JournalEntry - org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom - org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDateTimeCustom - org.apache.fineract.infrastructure.codes.domain.Code - org.apache.fineract.infrastructure.codes.domain.CodeValue - org.apache.fineract.infrastructure.documentmanagement.domain.Image - org.apache.fineract.organisation.staff.domain.Staff - org.apache.fineract.organisation.office.domain.Office - org.apache.fineract.organisation.monetary.domain.OrganisationCurrency - org.apache.fineract.organisation.monetary.domain.ApplicationCurrency - org.apache.fineract.organisation.holiday.domain.Holiday - org.apache.fineract.organisation.workingdays.domain.WorkingDays - org.apache.fineract.portfolio.group.domain.Group - org.apache.fineract.portfolio.group.domain.GroupLevel - org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory - org.apache.fineract.portfolio.group.domain.GroupRole - org.apache.fineract.portfolio.client.domain.Client - org.apache.fineract.portfolio.client.domain.ClientIdentifier - org.apache.fineract.portfolio.rate.domain.Rate - org.apache.fineract.portfolio.fund.domain.Fund - org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket - org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange - org.apache.fineract.portfolio.paymenttype.domain.PaymentType - org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail - org.apache.fineract.portfolio.floatingrates.domain.FloatingRate - org.apache.fineract.portfolio.floatingrates.domain.FloatingRatePeriod - org.apache.fineract.portfolio.calendar.domain.Calendar - org.apache.fineract.portfolio.calendar.domain.CalendarHistory - org.apache.fineract.portfolio.calendar.domain.CalendarInstance - org.apache.fineract.useradministration.domain.AppUser + + org.apache.fineract.useradministration.domain.Role + org.apache.fineract.portfolio.fund.domain.Fund + org.apache.fineract.infrastructure.documentmanagement.domain.Image + org.apache.fineract.organisation.workingdays.domain.WorkingDays org.apache.fineract.useradministration.domain.Permission org.apache.fineract.useradministration.domain.AppUserClientMapping - + org.apache.fineract.commands.domain.CommandSource + org.apache.fineract.useradministration.domain.AppUser + org.apache.fineract.accounting.glaccount.domain.GLAccount + org.apache.fineract.organisation.monetary.domain.OrganisationCurrency + org.apache.fineract.organisation.staff.domain.Staff + org.apache.fineract.portfolio.rate.domain.Rate + org.apache.fineract.organisation.monetary.domain.ApplicationCurrency + org.apache.fineract.portfolio.calendar.domain.CalendarInstance + org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail + org.apache.fineract.portfolio.calendar.domain.Calendar + org.apache.fineract.portfolio.calendar.domain.CalendarHistory + org.apache.fineract.portfolio.client.domain.ClientIdentifier + org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket + org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange + org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory + org.apache.fineract.portfolio.group.domain.Group + org.apache.fineract.portfolio.client.domain.Client + org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEventConfiguration + org.apache.fineract.portfolio.group.domain.GroupRole + org.apache.fineract.portfolio.paymenttype.domain.PaymentType + org.apache.fineract.portfolio.group.domain.GroupLevel + org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEvent + org.apache.fineract.organisation.office.domain.Office + org.apache.fineract.organisation.holiday.domain.Holiday + org.apache.fineract.infrastructure.cache.domain.PlatformCache + org.apache.fineract.infrastructure.codes.domain.Code + org.apache.fineract.infrastructure.businessdate.domain.BusinessDate + org.apache.fineract.infrastructure.codes.domain.CodeValue + + + org.apache.fineract.accounting.closure.domain.GLClosure + org.apache.fineract.accounting.financialactivityaccount.domain.FinancialActivityAccount + org.apache.fineract.accounting.glaccount.domain.TrialBalance + org.apache.fineract.accounting.producttoaccountmapping.domain.ProductToGLAccountMapping + org.apache.fineract.accounting.rule.domain.AccountingRule + org.apache.fineract.accounting.rule.domain.AccountingTagRule + org.apache.fineract.accounting.journalentry.domain.JournalEntry + + org.apache.fineract.portfolio.charge.domain.Charge - - org.apache.fineract.portfolio.tax.domain.TaxGroup - org.apache.fineract.portfolio.tax.domain.TaxGroupMappings + + org.apache.fineract.portfolio.tax.domain.TaxComponent org.apache.fineract.portfolio.tax.domain.TaxComponentHistory - org.apache.fineract.portfolio.loanaccount.domain.LoanStatusConverter + org.apache.fineract.portfolio.tax.domain.TaxGroup + org.apache.fineract.portfolio.tax.domain.TaxGroupMappings + false diff --git a/fineract-branch/build.gradle b/fineract-branch/build.gradle index 04a3b10e4..068ca03ae 100644 --- a/fineract-branch/build.gradle +++ b/fineract-branch/build.gradle @@ -21,31 +21,10 @@ description = 'Fineract Branch' 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/branch/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, source, target - classpath sourceSets.main.runtimeClasspath - } - delete { - delete "${source}/META-INF/persistence.xml" - } +compileJava { + dependsOn ':fineract-avro-schemas:buildJavaSdk' } -// Configuration for Swagger documentation generation task -// https://github.com/swagger-api/swagger-core/tree/master/modules/swagger-gradle-plugin -import org.apache.tools.ant.filters.ReplaceTokens - - - configurations { providedRuntime // needed for Spring Boot executable WAR providedCompile @@ -91,10 +70,6 @@ eclipse { } } -/* http://stackoverflow.com/questions/19653311/jpa-repository-works-in-idea-and-production-but-not-in-gradle */ -sourceSets.main.output.resourcesDir = sourceSets.main.java.classesDirectory -sourceSets.test.output.resourcesDir = sourceSets.test.java.classesDirectory - if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) { sourceSets { test { diff --git a/fineract-branch/src/main/resources/jpa/static-weaving/module/fineract-branch/persistence.xml b/fineract-branch/src/main/resources/jpa/static-weaving/module/fineract-branch/persistence.xml new file mode 100644 index 000000000..5e972e532 --- /dev/null +++ b/fineract-branch/src/main/resources/jpa/static-weaving/module/fineract-branch/persistence.xml @@ -0,0 +1,100 @@ + + + + + + + + + + org.eclipse.persistence.jpa.PersistenceProvider + + + org.apache.fineract.useradministration.domain.Role + org.apache.fineract.portfolio.fund.domain.Fund + org.apache.fineract.infrastructure.documentmanagement.domain.Image + org.apache.fineract.organisation.workingdays.domain.WorkingDays + org.apache.fineract.useradministration.domain.Permission + org.apache.fineract.useradministration.domain.AppUserClientMapping + org.apache.fineract.commands.domain.CommandSource + org.apache.fineract.useradministration.domain.AppUser + org.apache.fineract.accounting.glaccount.domain.GLAccount + org.apache.fineract.organisation.monetary.domain.OrganisationCurrency + org.apache.fineract.organisation.staff.domain.Staff + org.apache.fineract.portfolio.rate.domain.Rate + org.apache.fineract.organisation.monetary.domain.ApplicationCurrency + org.apache.fineract.portfolio.calendar.domain.CalendarInstance + org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail + org.apache.fineract.portfolio.calendar.domain.Calendar + org.apache.fineract.portfolio.calendar.domain.CalendarHistory + org.apache.fineract.portfolio.client.domain.ClientIdentifier + org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket + org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange + org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory + org.apache.fineract.portfolio.group.domain.Group + org.apache.fineract.portfolio.client.domain.Client + org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEventConfiguration + org.apache.fineract.portfolio.group.domain.GroupRole + org.apache.fineract.portfolio.paymenttype.domain.PaymentType + org.apache.fineract.portfolio.group.domain.GroupLevel + org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEvent + org.apache.fineract.organisation.office.domain.Office + org.apache.fineract.organisation.holiday.domain.Holiday + org.apache.fineract.infrastructure.cache.domain.PlatformCache + org.apache.fineract.infrastructure.codes.domain.Code + org.apache.fineract.infrastructure.businessdate.domain.BusinessDate + org.apache.fineract.infrastructure.codes.domain.CodeValue + + + org.apache.fineract.accounting.closure.domain.GLClosure + org.apache.fineract.accounting.financialactivityaccount.domain.FinancialActivityAccount + org.apache.fineract.accounting.glaccount.domain.TrialBalance + org.apache.fineract.accounting.producttoaccountmapping.domain.ProductToGLAccountMapping + org.apache.fineract.accounting.rule.domain.AccountingRule + org.apache.fineract.accounting.rule.domain.AccountingTagRule + org.apache.fineract.accounting.journalentry.domain.JournalEntry + + + org.apache.fineract.portfolio.charge.domain.Charge + + + org.apache.fineract.organisation.teller.domain.CashierTransaction + org.apache.fineract.organisation.teller.domain.Teller + org.apache.fineract.organisation.teller.domain.Cashier + org.apache.fineract.organisation.teller.domain.TellerTransaction + + + org.apache.fineract.portfolio.tax.domain.TaxComponent + org.apache.fineract.portfolio.tax.domain.TaxComponentHistory + org.apache.fineract.portfolio.tax.domain.TaxGroup + org.apache.fineract.portfolio.tax.domain.TaxGroupMappings + + + false + + + + + diff --git a/fineract-charge/build.gradle b/fineract-charge/build.gradle index 636fc048a..2bc9d7e29 100644 --- a/fineract-charge/build.gradle +++ b/fineract-charge/build.gradle @@ -21,31 +21,10 @@ description = 'Fineract Charge' 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/charge/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, source, target - classpath sourceSets.main.runtimeClasspath - } - delete { - delete "${source}/META-INF/persistence.xml" - } +compileJava { + dependsOn ':fineract-avro-schemas:buildJavaSdk' } -// Configuration for Swagger documentation generation task -// https://github.com/swagger-api/swagger-core/tree/master/modules/swagger-gradle-plugin -import org.apache.tools.ant.filters.ReplaceTokens - - - configurations { providedRuntime // needed for Spring Boot executable WAR providedCompile @@ -91,10 +70,6 @@ eclipse { } } -/* http://stackoverflow.com/questions/19653311/jpa-repository-works-in-idea-and-production-but-not-in-gradle */ -sourceSets.main.output.resourcesDir = sourceSets.main.java.classesDirectory -sourceSets.test.output.resourcesDir = sourceSets.test.java.classesDirectory - if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) { sourceSets { test { diff --git a/fineract-rates/src/main/resources/jpa/rates/persistence.xml b/fineract-charge/src/main/resources/jpa/static-weaving/module/fineract-charge/persistence.xml similarity index 72% rename from fineract-rates/src/main/resources/jpa/rates/persistence.xml rename to fineract-charge/src/main/resources/jpa/static-weaving/module/fineract-charge/persistence.xml index b76d09e1a..695790147 100644 --- a/fineract-rates/src/main/resources/jpa/rates/persistence.xml +++ b/fineract-charge/src/main/resources/jpa/static-weaving/module/fineract-charge/persistence.xml @@ -22,54 +22,69 @@ + xmlns="http://java.sun.com/xml/ns/persistence" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> org.eclipse.persistence.jpa.PersistenceProvider - - org.apache.fineract.accounting.glaccount.domain.GLAccount - org.apache.fineract.accounting.journalentry.domain.JournalEntry - org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom - org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDateTimeCustom - org.apache.fineract.infrastructure.codes.domain.Code - org.apache.fineract.infrastructure.codes.domain.CodeValue - org.apache.fineract.infrastructure.documentmanagement.domain.Image - org.apache.fineract.organisation.staff.domain.Staff - org.apache.fineract.organisation.office.domain.Office - org.apache.fineract.organisation.office.domain.OrganisationCurrency - org.apache.fineract.organisation.monetary.domain.ApplicationCurrency - org.apache.fineract.organisation.holiday.domain.Holiday - org.apache.fineract.organisation.workingdays.domain.WorkingDays - org.apache.fineract.portfolio.group.domain.Group - org.apache.fineract.portfolio.group.domain.GroupLevel - org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory - org.apache.fineract.portfolio.group.domain.GroupRole - org.apache.fineract.portfolio.client.domain.Client - org.apache.fineract.portfolio.client.domain.ClientIdentifier - org.apache.fineract.portfolio.rate.domain.Rate - org.apache.fineract.portfolio.fund.domain.Fund - org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket - org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange - org.apache.fineract.portfolio.paymenttype.domain.PaymentType - org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail - org.apache.fineract.portfolio.tax.domain.TaxGroup - org.apache.fineract.portfolio.tax.domain.TaxGroupMappings - org.apache.fineract.portfolio.tax.domain.TaxComponent - org.apache.fineract.portfolio.tax.domain.TaxComponentHistory - org.apache.fineract.portfolio.floatingrates.domain.FloatingRate - org.apache.fineract.portfolio.floatingrates.domain.FloatingRatePeriod - org.apache.fineract.portfolio.calendar.domain.Calendar - org.apache.fineract.portfolio.calendar.domain.CalendarHistory - org.apache.fineract.portfolio.calendar.domain.CalendarInstance - org.apache.fineract.useradministration.domain.AppUser + + org.apache.fineract.useradministration.domain.Role + org.apache.fineract.portfolio.fund.domain.Fund + org.apache.fineract.infrastructure.documentmanagement.domain.Image + org.apache.fineract.organisation.workingdays.domain.WorkingDays org.apache.fineract.useradministration.domain.Permission org.apache.fineract.useradministration.domain.AppUserClientMapping - + org.apache.fineract.commands.domain.CommandSource + org.apache.fineract.useradministration.domain.AppUser + org.apache.fineract.accounting.glaccount.domain.GLAccount + org.apache.fineract.organisation.monetary.domain.OrganisationCurrency + org.apache.fineract.organisation.staff.domain.Staff + org.apache.fineract.portfolio.rate.domain.Rate + org.apache.fineract.organisation.monetary.domain.ApplicationCurrency + org.apache.fineract.portfolio.calendar.domain.CalendarInstance + org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail + org.apache.fineract.portfolio.calendar.domain.Calendar + org.apache.fineract.portfolio.calendar.domain.CalendarHistory + org.apache.fineract.portfolio.client.domain.ClientIdentifier + org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket + org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange + org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory + org.apache.fineract.portfolio.group.domain.Group + org.apache.fineract.portfolio.client.domain.Client + org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEventConfiguration + org.apache.fineract.portfolio.group.domain.GroupRole + org.apache.fineract.portfolio.paymenttype.domain.PaymentType + org.apache.fineract.portfolio.group.domain.GroupLevel + org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEvent + org.apache.fineract.organisation.office.domain.Office + org.apache.fineract.organisation.holiday.domain.Holiday + org.apache.fineract.infrastructure.cache.domain.PlatformCache + org.apache.fineract.infrastructure.codes.domain.Code + org.apache.fineract.infrastructure.businessdate.domain.BusinessDate + org.apache.fineract.infrastructure.codes.domain.CodeValue + + + org.apache.fineract.accounting.closure.domain.GLClosure + org.apache.fineract.accounting.financialactivityaccount.domain.FinancialActivityAccount + org.apache.fineract.accounting.glaccount.domain.TrialBalance + org.apache.fineract.accounting.producttoaccountmapping.domain.ProductToGLAccountMapping + org.apache.fineract.accounting.rule.domain.AccountingRule + org.apache.fineract.accounting.rule.domain.AccountingTagRule + org.apache.fineract.accounting.journalentry.domain.JournalEntry + + + org.apache.fineract.portfolio.tax.domain.TaxComponent + org.apache.fineract.portfolio.tax.domain.TaxComponentHistory + org.apache.fineract.portfolio.tax.domain.TaxGroup + org.apache.fineract.portfolio.tax.domain.TaxGroupMappings + + org.apache.fineract.portfolio.charge.domain.Charge + false diff --git a/fineract-command/dependencies.gradle b/fineract-command/dependencies.gradle index 8186f1181..5d914cfe8 100644 --- a/fineract-command/dependencies.gradle +++ b/fineract-command/dependencies.gradle @@ -41,7 +41,9 @@ dependencies { 'com.ibm.icu:icu4j', 'org.yakworks:spring-icu4j', ) - + implementation('org.eclipse.persistence:org.eclipse.persistence.jpa') { + exclude group: 'org.eclipse.persistence', module: 'jakarta.persistence' + } compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' annotationProcessor 'org.mapstruct:mapstruct-processor' diff --git a/fineract-command/src/main/java/org/apache/fineract/command/persistence/CommandRepository.java b/fineract-command/src/main/java/org/apache/fineract/command/persistence/CommandRepository.java index 98e4b3bd0..3b261553f 100644 --- a/fineract-command/src/main/java/org/apache/fineract/command/persistence/CommandRepository.java +++ b/fineract-command/src/main/java/org/apache/fineract/command/persistence/CommandRepository.java @@ -18,7 +18,7 @@ */ package org.apache.fineract.command.persistence; -import org.apache.fineract.command.persistence.model.CommandEntity; +import org.apache.fineract.command.persistence.domain.CommandEntity; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; diff --git a/fineract-command/src/main/java/org/apache/fineract/command/persistence/model/CommandEntity.java b/fineract-command/src/main/java/org/apache/fineract/command/persistence/domain/CommandEntity.java similarity index 97% rename from fineract-command/src/main/java/org/apache/fineract/command/persistence/model/CommandEntity.java rename to fineract-command/src/main/java/org/apache/fineract/command/persistence/domain/CommandEntity.java index 06b78eec7..e7d5e4e86 100644 --- a/fineract-command/src/main/java/org/apache/fineract/command/persistence/model/CommandEntity.java +++ b/fineract-command/src/main/java/org/apache/fineract/command/persistence/domain/CommandEntity.java @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.fineract.command.persistence.model; +package org.apache.fineract.command.persistence.domain; import com.fasterxml.jackson.databind.JsonNode; import jakarta.persistence.Column; diff --git a/fineract-command/src/main/java/org/apache/fineract/command/persistence/mapping/CommandMapper.java b/fineract-command/src/main/java/org/apache/fineract/command/persistence/mapping/CommandMapper.java index 45487722d..31a2c4351 100644 --- a/fineract-command/src/main/java/org/apache/fineract/command/persistence/mapping/CommandMapper.java +++ b/fineract-command/src/main/java/org/apache/fineract/command/persistence/mapping/CommandMapper.java @@ -22,7 +22,7 @@ import static org.mapstruct.InjectionStrategy.CONSTRUCTOR; import static org.mapstruct.MappingConstants.ComponentModel.SPRING; import org.apache.fineract.command.core.Command; -import org.apache.fineract.command.persistence.model.CommandEntity; +import org.apache.fineract.command.persistence.domain.CommandEntity; import org.mapstruct.InheritInverseConfiguration; import org.mapstruct.Mapper; import org.mapstruct.Mapping; diff --git a/fineract-core/src/main/resources/jpa/core/persistence.xml b/fineract-command/src/main/resources/jpa/static-weaving/module/fineract-command/persistence.xml similarity index 74% rename from fineract-core/src/main/resources/jpa/core/persistence.xml rename to fineract-command/src/main/resources/jpa/static-weaving/module/fineract-command/persistence.xml index 105688157..465ba382f 100644 --- a/fineract-core/src/main/resources/jpa/core/persistence.xml +++ b/fineract-command/src/main/resources/jpa/static-weaving/module/fineract-command/persistence.xml @@ -22,13 +22,19 @@ + xmlns="http://java.sun.com/xml/ns/persistence" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> org.eclipse.persistence.jpa.PersistenceProvider + + + org.apache.fineract.command.persistence.domain.CommandEntity + org.apache.fineract.command.persistence.converter.JsonAttributeConverter + false diff --git a/fineract-core/build.gradle b/fineract-core/build.gradle index c05ff7288..1a7d533af 100644 --- a/fineract-core/build.gradle +++ b/fineract-core/build.gradle @@ -21,25 +21,6 @@ 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, source, target - classpath sourceSets.main.runtimeClasspath - } - delete { - delete "${source}/META-INF/persistence.xml" - } -} - configurations { providedRuntime // needed for Spring Boot executable WAR providedCompile @@ -64,7 +45,7 @@ configurations { apply from: 'dependencies.gradle' compileJava { - dependsOn ':fineract-avro-schemas:jar' + dependsOn ':fineract-avro-schemas:buildJavaSdk' options.compilerArgs += ['-parameters'] } diff --git a/fineract-charge/src/main/resources/jpa/charge/persistence.xml b/fineract-core/src/main/resources/jpa/static-weaving/module/fineract-core/persistence.xml similarity index 75% rename from fineract-charge/src/main/resources/jpa/charge/persistence.xml rename to fineract-core/src/main/resources/jpa/static-weaving/module/fineract-core/persistence.xml index 9d04d96a0..aeb8e6522 100644 --- a/fineract-charge/src/main/resources/jpa/charge/persistence.xml +++ b/fineract-core/src/main/resources/jpa/static-weaving/module/fineract-core/persistence.xml @@ -22,53 +22,51 @@ + xmlns="http://java.sun.com/xml/ns/persistence" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> org.eclipse.persistence.jpa.PersistenceProvider - - org.apache.fineract.accounting.glaccount.domain.GLAccount - org.apache.fineract.accounting.journalentry.domain.JournalEntry - org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom - org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDateTimeCustom - org.apache.fineract.infrastructure.codes.domain.Code - org.apache.fineract.infrastructure.codes.domain.CodeValue - org.apache.fineract.infrastructure.documentmanagement.domain.Image - org.apache.fineract.organisation.staff.domain.Staff - org.apache.fineract.organisation.office.domain.Office - org.apache.fineract.organisation.office.domain.OrganisationCurrency - org.apache.fineract.organisation.monetary.domain.ApplicationCurrency - org.apache.fineract.organisation.holiday.domain.Holiday - org.apache.fineract.organisation.workingdays.domain.WorkingDays - org.apache.fineract.portfolio.group.domain.Group - org.apache.fineract.portfolio.group.domain.GroupLevel - org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory - org.apache.fineract.portfolio.group.domain.GroupRole - org.apache.fineract.portfolio.client.domain.Client - org.apache.fineract.portfolio.client.domain.ClientIdentifier - org.apache.fineract.portfolio.rate.domain.Rate - org.apache.fineract.portfolio.fund.domain.Fund - org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket - org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange - org.apache.fineract.portfolio.paymenttype.domain.PaymentType - org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail - org.apache.fineract.portfolio.floatingrates.domain.FloatingRate - org.apache.fineract.portfolio.floatingrates.domain.FloatingRatePeriod - org.apache.fineract.portfolio.calendar.domain.Calendar - org.apache.fineract.portfolio.calendar.domain.CalendarHistory - org.apache.fineract.portfolio.calendar.domain.CalendarInstance - org.apache.fineract.useradministration.domain.AppUser + + org.apache.fineract.useradministration.domain.Role + org.apache.fineract.portfolio.fund.domain.Fund + org.apache.fineract.infrastructure.documentmanagement.domain.Image + org.apache.fineract.organisation.workingdays.domain.WorkingDays org.apache.fineract.useradministration.domain.Permission org.apache.fineract.useradministration.domain.AppUserClientMapping - - org.apache.fineract.portfolio.tax.domain.TaxGroup - org.apache.fineract.portfolio.tax.domain.TaxGroupMappings - org.apache.fineract.portfolio.tax.domain.TaxComponent - org.apache.fineract.portfolio.tax.domain.TaxComponentHistory + org.apache.fineract.commands.domain.CommandSource + org.apache.fineract.useradministration.domain.AppUser + org.apache.fineract.accounting.glaccount.domain.GLAccount + org.apache.fineract.organisation.monetary.domain.OrganisationCurrency + org.apache.fineract.organisation.staff.domain.Staff + org.apache.fineract.portfolio.rate.domain.Rate + org.apache.fineract.organisation.monetary.domain.ApplicationCurrency + org.apache.fineract.portfolio.calendar.domain.CalendarInstance + org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail + org.apache.fineract.portfolio.calendar.domain.Calendar + org.apache.fineract.portfolio.calendar.domain.CalendarHistory + org.apache.fineract.portfolio.client.domain.ClientIdentifier + org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket + org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange + org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory + org.apache.fineract.portfolio.group.domain.Group + org.apache.fineract.portfolio.client.domain.Client + org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEventConfiguration + org.apache.fineract.portfolio.group.domain.GroupRole + org.apache.fineract.portfolio.paymenttype.domain.PaymentType + org.apache.fineract.portfolio.group.domain.GroupLevel + org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEvent + org.apache.fineract.organisation.office.domain.Office + org.apache.fineract.organisation.holiday.domain.Holiday + org.apache.fineract.infrastructure.cache.domain.PlatformCache + org.apache.fineract.infrastructure.codes.domain.Code + org.apache.fineract.infrastructure.businessdate.domain.BusinessDate + org.apache.fineract.infrastructure.codes.domain.CodeValue + false diff --git a/fineract-document/build.gradle b/fineract-document/build.gradle index 6eeb13ada..37ddda8ab 100644 --- a/fineract-document/build.gradle +++ b/fineract-document/build.gradle @@ -21,23 +21,8 @@ description = 'Fineract Document' 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/document/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" - } +compileJava { + dependsOn ':fineract-avro-schemas:buildJavaSdk' } configurations { diff --git a/fineract-branch/src/main/resources/jpa/branch/persistence.xml b/fineract-document/src/main/resources/jpa/static-weaving/module/fineract-document/persistence.xml similarity index 75% rename from fineract-branch/src/main/resources/jpa/branch/persistence.xml rename to fineract-document/src/main/resources/jpa/static-weaving/module/fineract-document/persistence.xml index ef4086d55..7b0325007 100644 --- a/fineract-branch/src/main/resources/jpa/branch/persistence.xml +++ b/fineract-document/src/main/resources/jpa/static-weaving/module/fineract-document/persistence.xml @@ -22,53 +22,54 @@ + xmlns="http://java.sun.com/xml/ns/persistence" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> org.eclipse.persistence.jpa.PersistenceProvider - org.apache.fineract.accounting.glaccount.domain.GLAccount - org.apache.fineract.accounting.journalentry.domain.JournalEntry - org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom - org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDateTimeCustom - org.apache.fineract.infrastructure.codes.domain.Code - org.apache.fineract.infrastructure.codes.domain.CodeValue - org.apache.fineract.infrastructure.documentmanagement.domain.Image - org.apache.fineract.organisation.staff.domain.Staff - org.apache.fineract.organisation.office.domain.Office - org.apache.fineract.organisation.office.domain.OrganisationCurrency - org.apache.fineract.organisation.monetary.domain.ApplicationCurrency - org.apache.fineract.organisation.holiday.domain.Holiday - org.apache.fineract.organisation.workingdays.domain.WorkingDays - org.apache.fineract.portfolio.group.domain.Group - org.apache.fineract.portfolio.group.domain.GroupLevel - org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory - org.apache.fineract.portfolio.group.domain.GroupRole - org.apache.fineract.portfolio.client.domain.Client - org.apache.fineract.portfolio.client.domain.ClientIdentifier - org.apache.fineract.portfolio.rate.domain.Rate - org.apache.fineract.portfolio.fund.domain.Fund - org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket - org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange - org.apache.fineract.portfolio.paymenttype.domain.PaymentType - org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail - org.apache.fineract.portfolio.tax.domain.TaxGroup - org.apache.fineract.portfolio.tax.domain.TaxGroupMappings - org.apache.fineract.portfolio.tax.domain.TaxComponent - org.apache.fineract.portfolio.tax.domain.TaxComponentHistory - org.apache.fineract.portfolio.floatingrates.domain.FloatingRate - org.apache.fineract.portfolio.floatingrates.domain.FloatingRatePeriod - org.apache.fineract.portfolio.calendar.domain.Calendar - org.apache.fineract.portfolio.calendar.domain.CalendarHistory - org.apache.fineract.portfolio.calendar.domain.CalendarInstance - org.apache.fineract.useradministration.domain.AppUser + + org.apache.fineract.useradministration.domain.Role + org.apache.fineract.portfolio.fund.domain.Fund + org.apache.fineract.infrastructure.documentmanagement.domain.Image + org.apache.fineract.organisation.workingdays.domain.WorkingDays org.apache.fineract.useradministration.domain.Permission org.apache.fineract.useradministration.domain.AppUserClientMapping - - org.apache.fineract.portfolio.charge.domain.Charge + org.apache.fineract.commands.domain.CommandSource + org.apache.fineract.useradministration.domain.AppUser + org.apache.fineract.accounting.glaccount.domain.GLAccount + org.apache.fineract.organisation.monetary.domain.OrganisationCurrency + org.apache.fineract.organisation.staff.domain.Staff + org.apache.fineract.portfolio.rate.domain.Rate + org.apache.fineract.organisation.monetary.domain.ApplicationCurrency + org.apache.fineract.portfolio.calendar.domain.CalendarInstance + org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail + org.apache.fineract.portfolio.calendar.domain.Calendar + org.apache.fineract.portfolio.calendar.domain.CalendarHistory + org.apache.fineract.portfolio.client.domain.ClientIdentifier + org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket + org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange + org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory + org.apache.fineract.portfolio.group.domain.Group + org.apache.fineract.portfolio.client.domain.Client + org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEventConfiguration + org.apache.fineract.portfolio.group.domain.GroupRole + org.apache.fineract.portfolio.paymenttype.domain.PaymentType + org.apache.fineract.portfolio.group.domain.GroupLevel + org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEvent + org.apache.fineract.organisation.office.domain.Office + org.apache.fineract.organisation.holiday.domain.Holiday + org.apache.fineract.infrastructure.cache.domain.PlatformCache + org.apache.fineract.infrastructure.codes.domain.Code + org.apache.fineract.infrastructure.businessdate.domain.BusinessDate + org.apache.fineract.infrastructure.codes.domain.CodeValue + + + org.apache.fineract.infrastructure.documentmanagement.domain.Document + false diff --git a/fineract-investor/build.gradle b/fineract-investor/build.gradle index 22187772f..29c9846ff 100644 --- a/fineract-investor/build.gradle +++ b/fineract-investor/build.gradle @@ -21,23 +21,8 @@ description = 'Fineract Investor' 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/investor/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, source, target - classpath sourceSets.main.runtimeClasspath - } - delete { - delete "${source}/META-INF/persistence.xml" - } +compileJava { + dependsOn ':fineract-avro-schemas:buildJavaSdk' } configurations { @@ -85,10 +70,6 @@ eclipse { } } -/* http://stackoverflow.com/questions/19653311/jpa-repository-works-in-idea-and-production-but-not-in-gradle */ -sourceSets.main.output.resourcesDir = sourceSets.main.java.classesDirectory -sourceSets.test.output.resourcesDir = sourceSets.test.java.classesDirectory - if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) { sourceSets { test { diff --git a/fineract-provider/src/main/resources/jpa/persistence.xml b/fineract-investor/src/main/resources/jpa/static-weaving/module/fineract-investor/persistence.xml similarity index 72% rename from fineract-provider/src/main/resources/jpa/persistence.xml rename to fineract-investor/src/main/resources/jpa/static-weaving/module/fineract-investor/persistence.xml index eba5ded16..656e3f3ea 100644 --- a/fineract-provider/src/main/resources/jpa/persistence.xml +++ b/fineract-investor/src/main/resources/jpa/static-weaving/module/fineract-investor/persistence.xml @@ -22,59 +22,76 @@ + xmlns="http://java.sun.com/xml/ns/persistence" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> org.eclipse.persistence.jpa.PersistenceProvider - - org.apache.fineract.accounting.glaccount.domain.GLAccount - org.apache.fineract.accounting.journalentry.domain.JournalEntry - org.apache.fineract.infrastructure.codes.domain.Code - org.apache.fineract.infrastructure.codes.domain.CodeValue - org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDateTimeCustom - org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom + + + org.apache.fineract.useradministration.domain.Role + org.apache.fineract.portfolio.fund.domain.Fund org.apache.fineract.infrastructure.documentmanagement.domain.Image - org.apache.fineract.organisation.holiday.domain.Holiday - org.apache.fineract.organisation.monetary.domain.ApplicationCurrency - org.apache.fineract.organisation.monetary.domain.OrganisationCurrency - org.apache.fineract.organisation.office.domain.Office - org.apache.fineract.organisation.staff.domain.Staff org.apache.fineract.organisation.workingdays.domain.WorkingDays + org.apache.fineract.useradministration.domain.Permission + org.apache.fineract.useradministration.domain.AppUserClientMapping + org.apache.fineract.commands.domain.CommandSource + org.apache.fineract.useradministration.domain.AppUser + org.apache.fineract.accounting.glaccount.domain.GLAccount + org.apache.fineract.organisation.monetary.domain.OrganisationCurrency + org.apache.fineract.organisation.staff.domain.Staff + org.apache.fineract.portfolio.rate.domain.Rate + org.apache.fineract.organisation.monetary.domain.ApplicationCurrency + org.apache.fineract.portfolio.calendar.domain.CalendarInstance + org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail org.apache.fineract.portfolio.calendar.domain.Calendar org.apache.fineract.portfolio.calendar.domain.CalendarHistory - org.apache.fineract.portfolio.calendar.domain.CalendarInstance - org.apache.fineract.portfolio.client.domain.Client org.apache.fineract.portfolio.client.domain.ClientIdentifier org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange - org.apache.fineract.portfolio.floatingrates.domain.FloatingRate - org.apache.fineract.portfolio.floatingrates.domain.FloatingRatePeriod - org.apache.fineract.portfolio.fund.domain.Fund - org.apache.fineract.portfolio.group.domain.Group - org.apache.fineract.portfolio.group.domain.GroupLevel - org.apache.fineract.portfolio.group.domain.GroupRole org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory - org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail + org.apache.fineract.portfolio.group.domain.Group + org.apache.fineract.portfolio.client.domain.Client + org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEventConfiguration + org.apache.fineract.portfolio.group.domain.GroupRole org.apache.fineract.portfolio.paymenttype.domain.PaymentType - org.apache.fineract.portfolio.rate.domain.Rate - org.apache.fineract.useradministration.domain.AppUser - org.apache.fineract.useradministration.domain.AppUserClientMapping - org.apache.fineract.useradministration.domain.Permission - org.apache.fineract.useradministration.domain.Role - + org.apache.fineract.portfolio.group.domain.GroupLevel + org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEvent + org.apache.fineract.organisation.office.domain.Office + org.apache.fineract.organisation.holiday.domain.Holiday + org.apache.fineract.infrastructure.cache.domain.PlatformCache + org.apache.fineract.infrastructure.codes.domain.Code + org.apache.fineract.infrastructure.businessdate.domain.BusinessDate + org.apache.fineract.infrastructure.codes.domain.CodeValue + + + org.apache.fineract.accounting.closure.domain.GLClosure + org.apache.fineract.accounting.financialactivityaccount.domain.FinancialActivityAccount + org.apache.fineract.accounting.glaccount.domain.TrialBalance + org.apache.fineract.accounting.producttoaccountmapping.domain.ProductToGLAccountMapping + org.apache.fineract.accounting.rule.domain.AccountingRule + org.apache.fineract.accounting.rule.domain.AccountingTagRule + org.apache.fineract.accounting.journalentry.domain.JournalEntry + + + org.apache.fineract.portfolio.charge.domain.Charge + + org.apache.fineract.investor.domain.ExternalAssetOwner - org.apache.fineract.investor.domain.ExternalAssetOwnerJournalEntryMapping + org.apache.fineract.investor.domain.ExternalAssetOwnerLoanProductAttributes org.apache.fineract.investor.domain.ExternalAssetOwnerTransfer org.apache.fineract.investor.domain.ExternalAssetOwnerTransferDetails org.apache.fineract.investor.domain.ExternalAssetOwnerTransferJournalEntryMapping org.apache.fineract.investor.domain.ExternalAssetOwnerTransferLoanMapping - - org.apache.fineract.portfolio.collateral.domain.LoanCollateral - org.apache.fineract.portfolio.collateralmanagement.domain.ClientCollateralManagement - org.apache.fineract.portfolio.collateralmanagement.domain.CollateralManagementDomain + org.apache.fineract.investor.domain.ExternalAssetOwnerJournalEntryMapping + + + org.apache.fineract.investor.domain.ExternalIdConverter + + org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucketMappings org.apache.fineract.portfolio.delinquency.domain.LoanDelinquencyAction org.apache.fineract.portfolio.delinquency.domain.LoanDelinquencyTagHistory @@ -85,7 +102,6 @@ org.apache.fineract.portfolio.loanaccount.domain.LoanChargePaidBy org.apache.fineract.portfolio.loanaccount.domain.LoanCollateralManagement org.apache.fineract.portfolio.loanaccount.domain.LoanCreditAllocationRule - org.apache.fineract.portfolio.loanaccount.domain.LoanCreditAllocationRule org.apache.fineract.portfolio.loanaccount.domain.LoanDisbursementDetails org.apache.fineract.portfolio.loanaccount.domain.LoanInstallmentCharge org.apache.fineract.portfolio.loanaccount.domain.LoanInterestRecalcualtionAdditionalDetails @@ -104,13 +120,8 @@ org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRelation org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionToRepaymentScheduleMapping org.apache.fineract.portfolio.loanaccount.domain.reaging.LoanReAgeParameter - org.apache.fineract.portfolio.loanaccount.domain.reaging.LoanReAgeParameter + org.apache.fineract.portfolio.loanaccount.loanschedule.domain.LoanRepaymentScheduleHistory org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanRescheduleRequest - org.apache.fineract.portfolio.loanproduct.domain.AllocationType - org.apache.fineract.portfolio.loanproduct.domain.AllocationTypeListConverter - org.apache.fineract.portfolio.loanproduct.domain.CreditAllocationTransactionType - org.apache.fineract.portfolio.loanproduct.domain.DueType - org.apache.fineract.portfolio.loanproduct.domain.FutureInstallmentAllocationRule org.apache.fineract.portfolio.loanproduct.domain.LoanProduct org.apache.fineract.portfolio.loanproduct.domain.LoanProductBorrowerCycleVariations org.apache.fineract.portfolio.loanproduct.domain.LoanProductConfigurableAttributes @@ -120,48 +131,30 @@ org.apache.fineract.portfolio.loanproduct.domain.LoanProductInterestRecalculationDetails org.apache.fineract.portfolio.loanproduct.domain.LoanProductPaymentAllocationRule org.apache.fineract.portfolio.loanproduct.domain.LoanProductVariableInstallmentConfig - org.apache.fineract.portfolio.loanproduct.domain.PaymentAllocationTransactionType - org.apache.fineract.portfolio.loanproduct.domain.PaymentAllocationType + org.apache.fineract.portfolio.repaymentwithpostdatedchecks.domain.PostDatedChecks + org.apache.fineract.portfolio.collateralmanagement.domain.ClientCollateralManagement + org.apache.fineract.portfolio.collateralmanagement.domain.CollateralManagementDomain + org.apache.fineract.portfolio.collateral.domain.LoanCollateral + + + org.apache.fineract.portfolio.loanproduct.domain.AllocationTypeListConverter + org.apache.fineract.portfolio.loanaccount.domain.AccountingRuleTypeConverter + org.apache.fineract.portfolio.loanaccount.domain.LoanSubStatusConverter + org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionTypeConverter org.apache.fineract.portfolio.loanproduct.domain.PaymentAllocationTypeListConverter org.apache.fineract.portfolio.loanproduct.domain.SupportedInterestRefundTypesListConverter - org.apache.fineract.portfolio.repaymentwithpostdatedchecks.domain.PostDatedChecks org.apache.fineract.portfolio.loanaccount.domain.LoanStatusConverter - - org.apache.fineract.interoperation.domain.InteropIdentifier - org.apache.fineract.portfolio.interestratechart.domain.InterestIncentives - org.apache.fineract.portfolio.interestratechart.domain.InterestRateChart - org.apache.fineract.portfolio.interestratechart.domain.InterestRateChartSlab - org.apache.fineract.portfolio.savings.domain.DepositAccountInterestIncentives - org.apache.fineract.portfolio.savings.domain.DepositAccountInterestRateChart - org.apache.fineract.portfolio.savings.domain.DepositAccountInterestRateChartSlabs - org.apache.fineract.portfolio.savings.domain.DepositAccountOnHoldTransaction - org.apache.fineract.portfolio.savings.domain.DepositAccountTermAndPreClosure - org.apache.fineract.portfolio.savings.domain.DepositProductRecurringDetail - org.apache.fineract.portfolio.savings.domain.DepositProductTermAndPreClosure - org.apache.fineract.portfolio.savings.domain.FixedDepositAccount - org.apache.fineract.portfolio.savings.domain.FixedDepositProduct - org.apache.fineract.portfolio.savings.domain.GroupSavingsIndividualMonitoring - org.apache.fineract.portfolio.savings.domain.RecurringDepositAccount - org.apache.fineract.portfolio.savings.domain.RecurringDepositProduct - org.apache.fineract.portfolio.savings.domain.SavingsAccount - org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge - org.apache.fineract.portfolio.savings.domain.SavingsAccountChargePaidBy - org.apache.fineract.portfolio.savings.domain.SavingsAccountTransaction - org.apache.fineract.portfolio.savings.domain.SavingsAccountTransactionTaxDetails - org.apache.fineract.portfolio.savings.domain.SavingsOfficerAssignmentHistory - org.apache.fineract.portfolio.savings.domain.SavingsProduct - - org.apache.fineract.accounting.rule.domain.AccountingRule - org.apache.fineract.accounting.rule.domain.AccountingTagRule - - org.apache.fineract.infrastructure.documentmanagement.domain.Document - - org.apache.fineract.portfolio.charge.domain.Charge - + + org.apache.fineract.portfolio.tax.domain.TaxComponent org.apache.fineract.portfolio.tax.domain.TaxComponentHistory org.apache.fineract.portfolio.tax.domain.TaxGroup org.apache.fineract.portfolio.tax.domain.TaxGroupMappings + + + org.apache.fineract.portfolio.floatingrates.domain.FloatingRate + org.apache.fineract.portfolio.floatingrates.domain.FloatingRatePeriod + false diff --git a/fineract-loan/build.gradle b/fineract-loan/build.gradle index 33b087faf..38821283d 100644 --- a/fineract-loan/build.gradle +++ b/fineract-loan/build.gradle @@ -21,31 +21,10 @@ description = 'Fineract Loan' 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/loan/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, source, target - classpath sourceSets.main.runtimeClasspath - } - delete { - delete "${source}/META-INF/persistence.xml" - } +compileJava { + dependsOn ':fineract-avro-schemas:buildJavaSdk' } -// Configuration for Swagger documentation generation task -// https://github.com/swagger-api/swagger-core/tree/master/modules/swagger-gradle-plugin -import org.apache.tools.ant.filters.ReplaceTokens - - - configurations { providedRuntime // needed for Spring Boot executable WAR providedCompile @@ -91,10 +70,6 @@ eclipse { } } -/* http://stackoverflow.com/questions/19653311/jpa-repository-works-in-idea-and-production-but-not-in-gradle */ -sourceSets.main.output.resourcesDir = sourceSets.main.java.classesDirectory -sourceSets.test.output.resourcesDir = sourceSets.test.java.classesDirectory - if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) { sourceSets { test { diff --git a/fineract-progressive-loan/src/main/resources/jpa/progressiveloan/persistence.xml b/fineract-loan/src/main/resources/jpa/static-weaving/module/fineract-loan/persistence.xml similarity index 86% rename from fineract-progressive-loan/src/main/resources/jpa/progressiveloan/persistence.xml rename to fineract-loan/src/main/resources/jpa/static-weaving/module/fineract-loan/persistence.xml index a5ff252eb..0a8b7e2fe 100644 --- a/fineract-progressive-loan/src/main/resources/jpa/progressiveloan/persistence.xml +++ b/fineract-loan/src/main/resources/jpa/static-weaving/module/fineract-loan/persistence.xml @@ -22,57 +22,68 @@ + xmlns="http://java.sun.com/xml/ns/persistence" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> org.eclipse.persistence.jpa.PersistenceProvider - - org.apache.fineract.accounting.glaccount.domain.GLAccount - org.apache.fineract.accounting.journalentry.domain.JournalEntry - org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom - org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDateTimeCustom - org.apache.fineract.infrastructure.codes.domain.Code - org.apache.fineract.infrastructure.codes.domain.CodeValue - org.apache.fineract.infrastructure.documentmanagement.domain.Image - org.apache.fineract.organisation.staff.domain.Staff - org.apache.fineract.organisation.office.domain.Office - org.apache.fineract.organisation.office.domain.OrganisationCurrency - org.apache.fineract.organisation.monetary.domain.ApplicationCurrency - org.apache.fineract.organisation.holiday.domain.Holiday - org.apache.fineract.organisation.workingdays.domain.WorkingDays - org.apache.fineract.portfolio.group.domain.Group - org.apache.fineract.portfolio.group.domain.GroupLevel - org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory - org.apache.fineract.portfolio.group.domain.GroupRole - org.apache.fineract.portfolio.client.domain.Client - org.apache.fineract.portfolio.client.domain.ClientIdentifier - org.apache.fineract.portfolio.rate.domain.Rate - org.apache.fineract.portfolio.fund.domain.Fund - org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket - org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange - org.apache.fineract.portfolio.paymenttype.domain.PaymentType - org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail - org.apache.fineract.portfolio.floatingrates.domain.FloatingRate - org.apache.fineract.portfolio.floatingrates.domain.FloatingRatePeriod - org.apache.fineract.portfolio.calendar.domain.Calendar - org.apache.fineract.portfolio.calendar.domain.CalendarHistory - org.apache.fineract.portfolio.calendar.domain.CalendarInstance - org.apache.fineract.useradministration.domain.AppUser + + org.apache.fineract.useradministration.domain.Role + org.apache.fineract.portfolio.fund.domain.Fund + org.apache.fineract.infrastructure.documentmanagement.domain.Image + org.apache.fineract.organisation.workingdays.domain.WorkingDays org.apache.fineract.useradministration.domain.Permission org.apache.fineract.useradministration.domain.AppUserClientMapping - - org.apache.fineract.portfolio.collateral.domain.LoanCollateral - org.apache.fineract.portfolio.collateralmanagement.domain.ClientCollateralManagement - org.apache.fineract.portfolio.collateralmanagement.domain.CollateralManagementDomain + org.apache.fineract.commands.domain.CommandSource + org.apache.fineract.useradministration.domain.AppUser + org.apache.fineract.accounting.glaccount.domain.GLAccount + org.apache.fineract.organisation.monetary.domain.OrganisationCurrency + org.apache.fineract.organisation.staff.domain.Staff + org.apache.fineract.portfolio.rate.domain.Rate + org.apache.fineract.organisation.monetary.domain.ApplicationCurrency + org.apache.fineract.portfolio.calendar.domain.CalendarInstance + org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail + org.apache.fineract.portfolio.calendar.domain.Calendar + org.apache.fineract.portfolio.calendar.domain.CalendarHistory + org.apache.fineract.portfolio.client.domain.ClientIdentifier + org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket + org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange + org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory + org.apache.fineract.portfolio.group.domain.Group + org.apache.fineract.portfolio.client.domain.Client + org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEventConfiguration + org.apache.fineract.portfolio.group.domain.GroupRole + org.apache.fineract.portfolio.paymenttype.domain.PaymentType + org.apache.fineract.portfolio.group.domain.GroupLevel + org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEvent + org.apache.fineract.organisation.office.domain.Office + org.apache.fineract.organisation.holiday.domain.Holiday + org.apache.fineract.infrastructure.cache.domain.PlatformCache + org.apache.fineract.infrastructure.codes.domain.Code + org.apache.fineract.infrastructure.businessdate.domain.BusinessDate + org.apache.fineract.infrastructure.codes.domain.CodeValue + + + org.apache.fineract.accounting.closure.domain.GLClosure + org.apache.fineract.accounting.financialactivityaccount.domain.FinancialActivityAccount + org.apache.fineract.accounting.glaccount.domain.TrialBalance + org.apache.fineract.accounting.producttoaccountmapping.domain.ProductToGLAccountMapping + org.apache.fineract.accounting.rule.domain.AccountingRule + org.apache.fineract.accounting.rule.domain.AccountingTagRule + org.apache.fineract.accounting.journalentry.domain.JournalEntry + + + org.apache.fineract.portfolio.charge.domain.Charge + + org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucketMappings org.apache.fineract.portfolio.delinquency.domain.LoanDelinquencyAction org.apache.fineract.portfolio.delinquency.domain.LoanDelinquencyTagHistory org.apache.fineract.portfolio.delinquency.domain.LoanInstallmentDelinquencyTag - org.apache.fineract.portfolio.loanaccount.domain.reaging.LoanReAgeParameter org.apache.fineract.portfolio.loanaccount.domain.GroupLoanIndividualMonitoringAccount org.apache.fineract.portfolio.loanaccount.domain.Loan org.apache.fineract.portfolio.loanaccount.domain.LoanCharge @@ -96,6 +107,9 @@ org.apache.fineract.portfolio.loanaccount.domain.LoanTransaction org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRelation org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionToRepaymentScheduleMapping + org.apache.fineract.portfolio.loanaccount.domain.reaging.LoanReAgeParameter + org.apache.fineract.portfolio.loanaccount.loanschedule.domain.LoanRepaymentScheduleHistory + org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanRescheduleRequest org.apache.fineract.portfolio.loanproduct.domain.LoanProduct org.apache.fineract.portfolio.loanproduct.domain.LoanProductBorrowerCycleVariations org.apache.fineract.portfolio.loanproduct.domain.LoanProductConfigurableAttributes @@ -105,35 +119,31 @@ org.apache.fineract.portfolio.loanproduct.domain.LoanProductInterestRecalculationDetails org.apache.fineract.portfolio.loanproduct.domain.LoanProductPaymentAllocationRule org.apache.fineract.portfolio.loanproduct.domain.LoanProductVariableInstallmentConfig - org.apache.fineract.portfolio.loanproduct.domain.PaymentAllocationType - org.apache.fineract.portfolio.loanproduct.domain.DueType - org.apache.fineract.portfolio.loanproduct.domain.AllocationType - org.apache.fineract.portfolio.loanproduct.domain.FutureInstallmentAllocationRule - org.apache.fineract.portfolio.loanproduct.domain.PaymentAllocationTransactionType + org.apache.fineract.portfolio.repaymentwithpostdatedchecks.domain.PostDatedChecks + org.apache.fineract.portfolio.collateralmanagement.domain.ClientCollateralManagement + org.apache.fineract.portfolio.collateralmanagement.domain.CollateralManagementDomain + org.apache.fineract.portfolio.collateral.domain.LoanCollateral + + org.apache.fineract.portfolio.loanproduct.domain.AllocationTypeListConverter - org.apache.fineract.portfolio.loanaccount.domain.LoanCreditAllocationRule - org.apache.fineract.portfolio.loanproduct.domain.CreditAllocationTransactionType + org.apache.fineract.portfolio.loanaccount.domain.AccountingRuleTypeConverter + org.apache.fineract.portfolio.loanaccount.domain.LoanSubStatusConverter + org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionTypeConverter org.apache.fineract.portfolio.loanproduct.domain.PaymentAllocationTypeListConverter org.apache.fineract.portfolio.loanproduct.domain.SupportedInterestRefundTypesListConverter - org.apache.fineract.portfolio.loanaccount.domain.reaging.LoanReAgeParameter - org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanRescheduleRequest - org.apache.fineract.portfolio.repaymentwithpostdatedchecks.domain.PostDatedChecks org.apache.fineract.portfolio.loanaccount.domain.LoanStatusConverter - - org.apache.fineract.portfolio.charge.domain.Charge - - org.apache.fineract.accounting.closure.domain.GLClosure - org.apache.fineract.accounting.financialactivityaccount.domain.FinancialActivityAccount - org.apache.fineract.accounting.glaccount.domain.GLAccount - org.apache.fineract.accounting.journalentry.domain.JournalEntry - org.apache.fineract.accounting.producttoaccountmapping.domain.ProductToGLAccountMapping - org.apache.fineract.accounting.rule.domain.AccountingRule - org.apache.fineract.accounting.rule.domain.AccountingTagRule - - org.apache.fineract.portfolio.tax.domain.TaxGroup - org.apache.fineract.portfolio.tax.domain.TaxGroupMappings + + org.apache.fineract.portfolio.tax.domain.TaxComponent org.apache.fineract.portfolio.tax.domain.TaxComponentHistory + org.apache.fineract.portfolio.tax.domain.TaxGroup + org.apache.fineract.portfolio.tax.domain.TaxGroupMappings + + + org.apache.fineract.portfolio.floatingrates.domain.FloatingRate + org.apache.fineract.portfolio.floatingrates.domain.FloatingRatePeriod + + false diff --git a/fineract-progressive-loan/build.gradle b/fineract-progressive-loan/build.gradle index 20e9f20b4..58969916d 100644 --- a/fineract-progressive-loan/build.gradle +++ b/fineract-progressive-loan/build.gradle @@ -21,23 +21,8 @@ description = 'Fineract Progressive Loan' 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/progressiveloan/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, source, target - classpath sourceSets.main.runtimeClasspath - } - delete { - delete "${source}/META-INF/persistence.xml" - } +compileJava { + dependsOn ':fineract-avro-schemas:buildJavaSdk' } configurations { @@ -85,10 +70,6 @@ eclipse { } } -/* http://stackoverflow.com/questions/19653311/jpa-repository-works-in-idea-and-production-but-not-in-gradle */ -sourceSets.main.output.resourcesDir = sourceSets.main.java.classesDirectory -sourceSets.test.output.resourcesDir = sourceSets.test.java.classesDirectory - if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) { sourceSets { test { diff --git a/fineract-investor/src/main/resources/jpa/investor/persistence.xml b/fineract-progressive-loan/src/main/resources/jpa/static-weaving/module/fineract-progressive-loan/persistence.xml similarity index 81% rename from fineract-investor/src/main/resources/jpa/investor/persistence.xml rename to fineract-progressive-loan/src/main/resources/jpa/static-weaving/module/fineract-progressive-loan/persistence.xml index e2d5a0b00..9020127fa 100644 --- a/fineract-investor/src/main/resources/jpa/investor/persistence.xml +++ b/fineract-progressive-loan/src/main/resources/jpa/static-weaving/module/fineract-progressive-loan/persistence.xml @@ -22,61 +22,68 @@ + xmlns="http://java.sun.com/xml/ns/persistence" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> org.eclipse.persistence.jpa.PersistenceProvider - org.apache.fineract.accounting.glaccount.domain.GLAccount - org.apache.fineract.accounting.journalentry.domain.JournalEntry - org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom - org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDateTimeCustom - org.apache.fineract.infrastructure.codes.domain.Code - org.apache.fineract.infrastructure.codes.domain.CodeValue - org.apache.fineract.infrastructure.documentmanagement.domain.Image - org.apache.fineract.organisation.staff.domain.Staff - org.apache.fineract.organisation.office.domain.Office - org.apache.fineract.organisation.monetary.domain.OrganisationCurrency - org.apache.fineract.organisation.monetary.domain.ApplicationCurrency - org.apache.fineract.organisation.holiday.domain.Holiday - org.apache.fineract.organisation.workingdays.domain.WorkingDays - org.apache.fineract.portfolio.group.domain.Group - org.apache.fineract.portfolio.group.domain.GroupLevel - org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory - org.apache.fineract.portfolio.group.domain.GroupRole - org.apache.fineract.portfolio.client.domain.Client - org.apache.fineract.portfolio.client.domain.ClientIdentifier - org.apache.fineract.portfolio.rate.domain.Rate - org.apache.fineract.portfolio.fund.domain.Fund - org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket - org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange - org.apache.fineract.portfolio.charge.domain.Charge - org.apache.fineract.portfolio.paymenttype.domain.PaymentType - org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail - org.apache.fineract.portfolio.tax.domain.TaxGroup - org.apache.fineract.portfolio.tax.domain.TaxGroupMappings - org.apache.fineract.portfolio.tax.domain.TaxComponent - org.apache.fineract.portfolio.tax.domain.TaxComponentHistory - org.apache.fineract.portfolio.floatingrates.domain.FloatingRate - org.apache.fineract.portfolio.floatingrates.domain.FloatingRatePeriod - org.apache.fineract.portfolio.calendar.domain.Calendar - org.apache.fineract.portfolio.calendar.domain.CalendarHistory - org.apache.fineract.portfolio.calendar.domain.CalendarInstance - org.apache.fineract.useradministration.domain.AppUser + + org.apache.fineract.useradministration.domain.Role + org.apache.fineract.portfolio.fund.domain.Fund + org.apache.fineract.infrastructure.documentmanagement.domain.Image + org.apache.fineract.organisation.workingdays.domain.WorkingDays org.apache.fineract.useradministration.domain.Permission org.apache.fineract.useradministration.domain.AppUserClientMapping - - org.apache.fineract.portfolio.collateral.domain.LoanCollateral - org.apache.fineract.portfolio.collateralmanagement.domain.ClientCollateralManagement - org.apache.fineract.portfolio.collateralmanagement.domain.CollateralManagementDomain + org.apache.fineract.commands.domain.CommandSource + org.apache.fineract.useradministration.domain.AppUser + org.apache.fineract.accounting.glaccount.domain.GLAccount + org.apache.fineract.organisation.monetary.domain.OrganisationCurrency + org.apache.fineract.organisation.staff.domain.Staff + org.apache.fineract.portfolio.rate.domain.Rate + org.apache.fineract.organisation.monetary.domain.ApplicationCurrency + org.apache.fineract.portfolio.calendar.domain.CalendarInstance + org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail + org.apache.fineract.portfolio.calendar.domain.Calendar + org.apache.fineract.portfolio.calendar.domain.CalendarHistory + org.apache.fineract.portfolio.client.domain.ClientIdentifier + org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket + org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange + org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory + org.apache.fineract.portfolio.group.domain.Group + org.apache.fineract.portfolio.client.domain.Client + org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEventConfiguration + org.apache.fineract.portfolio.group.domain.GroupRole + org.apache.fineract.portfolio.paymenttype.domain.PaymentType + org.apache.fineract.portfolio.group.domain.GroupLevel + org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEvent + org.apache.fineract.organisation.office.domain.Office + org.apache.fineract.organisation.holiday.domain.Holiday + org.apache.fineract.infrastructure.cache.domain.PlatformCache + org.apache.fineract.infrastructure.codes.domain.Code + org.apache.fineract.infrastructure.businessdate.domain.BusinessDate + org.apache.fineract.infrastructure.codes.domain.CodeValue + + + org.apache.fineract.accounting.closure.domain.GLClosure + org.apache.fineract.accounting.financialactivityaccount.domain.FinancialActivityAccount + org.apache.fineract.accounting.glaccount.domain.TrialBalance + org.apache.fineract.accounting.producttoaccountmapping.domain.ProductToGLAccountMapping + org.apache.fineract.accounting.rule.domain.AccountingRule + org.apache.fineract.accounting.rule.domain.AccountingTagRule + org.apache.fineract.accounting.journalentry.domain.JournalEntry + + + org.apache.fineract.portfolio.charge.domain.Charge + + org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucketMappings org.apache.fineract.portfolio.delinquency.domain.LoanDelinquencyAction org.apache.fineract.portfolio.delinquency.domain.LoanDelinquencyTagHistory org.apache.fineract.portfolio.delinquency.domain.LoanInstallmentDelinquencyTag - org.apache.fineract.portfolio.loanaccount.domain.reaging.LoanReAgeParameter org.apache.fineract.portfolio.loanaccount.domain.GroupLoanIndividualMonitoringAccount org.apache.fineract.portfolio.loanaccount.domain.Loan org.apache.fineract.portfolio.loanaccount.domain.LoanCharge @@ -100,6 +107,9 @@ org.apache.fineract.portfolio.loanaccount.domain.LoanTransaction org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRelation org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionToRepaymentScheduleMapping + org.apache.fineract.portfolio.loanaccount.domain.reaging.LoanReAgeParameter + org.apache.fineract.portfolio.loanaccount.loanschedule.domain.LoanRepaymentScheduleHistory + org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanRescheduleRequest org.apache.fineract.portfolio.loanproduct.domain.LoanProduct org.apache.fineract.portfolio.loanproduct.domain.LoanProductBorrowerCycleVariations org.apache.fineract.portfolio.loanproduct.domain.LoanProductConfigurableAttributes @@ -109,20 +119,33 @@ org.apache.fineract.portfolio.loanproduct.domain.LoanProductInterestRecalculationDetails org.apache.fineract.portfolio.loanproduct.domain.LoanProductPaymentAllocationRule org.apache.fineract.portfolio.loanproduct.domain.LoanProductVariableInstallmentConfig - org.apache.fineract.portfolio.loanproduct.domain.PaymentAllocationType - org.apache.fineract.portfolio.loanproduct.domain.DueType - org.apache.fineract.portfolio.loanproduct.domain.AllocationType - org.apache.fineract.portfolio.loanproduct.domain.FutureInstallmentAllocationRule - org.apache.fineract.portfolio.loanproduct.domain.PaymentAllocationTransactionType + org.apache.fineract.portfolio.repaymentwithpostdatedchecks.domain.PostDatedChecks + org.apache.fineract.portfolio.collateralmanagement.domain.ClientCollateralManagement + org.apache.fineract.portfolio.collateralmanagement.domain.CollateralManagementDomain + org.apache.fineract.portfolio.collateral.domain.LoanCollateral + + org.apache.fineract.portfolio.loanproduct.domain.AllocationTypeListConverter - org.apache.fineract.portfolio.loanaccount.domain.LoanCreditAllocationRule - org.apache.fineract.portfolio.loanproduct.domain.CreditAllocationTransactionType + org.apache.fineract.portfolio.loanaccount.domain.AccountingRuleTypeConverter + org.apache.fineract.portfolio.loanaccount.domain.LoanSubStatusConverter + org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionTypeConverter org.apache.fineract.portfolio.loanproduct.domain.PaymentAllocationTypeListConverter org.apache.fineract.portfolio.loanproduct.domain.SupportedInterestRefundTypesListConverter - org.apache.fineract.portfolio.loanaccount.domain.reaging.LoanReAgeParameter - org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanRescheduleRequest - org.apache.fineract.portfolio.repaymentwithpostdatedchecks.domain.PostDatedChecks org.apache.fineract.portfolio.loanaccount.domain.LoanStatusConverter + + + org.apache.fineract.portfolio.tax.domain.TaxComponent + org.apache.fineract.portfolio.tax.domain.TaxComponentHistory + org.apache.fineract.portfolio.tax.domain.TaxGroup + org.apache.fineract.portfolio.tax.domain.TaxGroupMappings + + + org.apache.fineract.portfolio.floatingrates.domain.FloatingRate + org.apache.fineract.portfolio.floatingrates.domain.FloatingRatePeriod + + + org.apache.fineract.portfolio.loanaccount.domain.LoanCapitalizedIncomeBalance + org.apache.fineract.portfolio.loanaccount.domain.ProgressiveLoanModel false diff --git a/fineract-provider/build.gradle b/fineract-provider/build.gradle index 9606ce545..c13a1865d 100644 --- a/fineract-provider/build.gradle +++ b/fineract-provider/build.gradle @@ -30,30 +30,19 @@ apply plugin: 'se.thinkcode.cucumber-runner' check.dependsOn('cucumber') -compileJava.doLast { - def mainSS = sourceSets.main - def source = mainSS.java.classesDirectory.get() - copy { - from file("src/main/resources/jpa/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, source, target - classpath sourceSets.main.runtimeClasspath - } - delete { - delete "${source}/META-INF/persistence.xml" - } +// Static weaving is now configured in gradle/static-weaving.gradle +// This ensures consistent configuration across all modules with JPA entities + +// Add dependency on avro schemas +compileJava { + dependsOn ':fineract-avro-schemas:buildJavaSdk' } // Configuration for Swagger documentation generation task // https://github.com/swagger-api/swagger-core/tree/master/modules/swagger-gradle-plugin import org.apache.tools.ant.filters.ReplaceTokens -task prepareInputYaml { +tasks.register('prepareInputYaml') { outputs.file("${buildDir}/tmp/swagger/fineract-input.yaml") doLast { @@ -139,10 +128,6 @@ eclipse { } } -/* http://stackoverflow.com/questions/19653311/jpa-repository-works-in-idea-and-production-but-not-in-gradle */ -sourceSets.main.output.resourcesDir = sourceSets.main.java.classesDirectory -sourceSets.test.output.resourcesDir = sourceSets.test.java.classesDirectory - if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) { sourceSets { test { @@ -176,57 +161,57 @@ configurations.driver.each {File file -> loader.addURL(file.toURL()) } -task createDB { - description= "Creates the MariaDB Database. Needs database name to be passed (like: -PdbName=someDBname)" +tasks.register('createDB') { + description = "Creates the MariaDB Database. Needs database name to be passed (like: -PdbName=someDBname)" doLast { - def sql = Sql.newInstance( 'jdbc:mariadb://localhost:3306/', mysqlUser, mysqlPassword, 'org.mariadb.jdbc.Driver' ) - sql.execute( 'CREATE DATABASE '+"`$dbName` CHARACTER SET utf8mb4" ) + def sql = Sql.newInstance('jdbc:mariadb://localhost:3306/', mysqlUser, mysqlPassword, 'org.mariadb.jdbc.Driver') + sql.execute('CREATE DATABASE ' + "`$dbName` CHARACTER SET utf8mb4") } } -task dropDB { - description= "Drops the specified MariaDB database. The database name has to be passed (like: -PdbName=someDBname)" +tasks.register('dropDB') { + description = "Drops the specified MariaDB database. The database name has to be passed (like: -PdbName=someDBname)" doLast { - def sql = Sql.newInstance( 'jdbc:mariadb://localhost:3306/', mysqlUser, mysqlPassword, 'org.mariadb.jdbc.Driver' ) - sql.execute( 'DROP DATABASE '+"`$dbName`") + def sql = Sql.newInstance('jdbc:mariadb://localhost:3306/', mysqlUser, mysqlPassword, 'org.mariadb.jdbc.Driver') + sql.execute('DROP DATABASE ' + "`$dbName`") } } -task createPGDB { - description= "Creates the PostgreSQL Database. Needs database name to be passed (like: -PdbName=someDBname)" +tasks.register('createPGDB') { + description = "Creates the PostgreSQL Database. Needs database name to be passed (like: -PdbName=someDBname)" doLast { - def sql = Sql.newInstance( 'jdbc:postgresql://localhost:5432/', pgUser, pgPassword, 'org.postgresql.Driver' ) - sql.execute( 'create database '+"$dbName" ) + def sql = Sql.newInstance('jdbc:postgresql://localhost:5432/', pgUser, pgPassword, 'org.postgresql.Driver') + sql.execute('create database ' + "$dbName") } } -task dropPGDB { - description= "Drops the specified PostgreSQL database. The database name has to be passed (like: -PdbName=someDBname)" +tasks.register('dropPGDB') { + description = "Drops the specified PostgreSQL database. The database name has to be passed (like: -PdbName=someDBname)" doLast { - def sql = Sql.newInstance( 'jdbc:postgresql://localhost:5432/', pgUser, pgPassword, 'org.postgresql.Driver' ) - sql.execute( 'DROP DATABASE '+ "$dbName") + def sql = Sql.newInstance('jdbc:postgresql://localhost:5432/', pgUser, pgPassword, 'org.postgresql.Driver') + sql.execute('DROP DATABASE ' + "$dbName") } } -task createMySQLDB { - description= "Creates the MySQL Database. Needs database name to be passed (like: -PdbName=someDBname)" +tasks.register('createMySQLDB') { + description = "Creates the MySQL Database. Needs database name to be passed (like: -PdbName=someDBname)" doLast { - def sql = Sql.newInstance( 'jdbc:mysql://localhost:3306/', mysqlUser, mysqlPassword, 'com.mysql.cj.jdbc.Driver' ) - sql.execute( 'CREATE DATABASE '+"`$dbName` CHARACTER SET utf8mb4" ) + def sql = Sql.newInstance('jdbc:mysql://localhost:3306/', mysqlUser, mysqlPassword, 'com.mysql.cj.jdbc.Driver') + sql.execute('CREATE DATABASE ' + "`$dbName` CHARACTER SET utf8mb4") } } -task dropMySQLDB { - description= "Drops the specified MySQL database. The database name has to be passed (like: -PdbName=someDBname)" +tasks.register('dropMySQLDB') { + description = "Drops the specified MySQL database. The database name has to be passed (like: -PdbName=someDBname)" doLast { - def sql = Sql.newInstance( 'jdbc:mysql://localhost:3306/', mysqlUser, mysqlPassword, 'com.mysql.cj.jdbc.Driver' ) - sql.execute( 'DROP DATABASE '+"`$dbName`") + def sql = Sql.newInstance('jdbc:mysql://localhost:3306/', mysqlUser, mysqlPassword, 'com.mysql.cj.jdbc.Driver') + sql.execute('DROP DATABASE ' + "`$dbName`") } } -task setBlankPassword { +tasks.register('setBlankPassword') { doLast { - def sql = Sql.newInstance( 'jdbc:mariadb://localhost:3306/', mysqlUser, mysqlPassword, 'org.mariadb.jdbc.Driver' ) + def sql = Sql.newInstance('jdbc:mariadb://localhost:3306/', mysqlUser, mysqlPassword, 'org.mariadb.jdbc.Driver') sql.execute('USE `fineract_tenants`') sql.execute('UPDATE fineract_tenants.tenants SET schema_server = \'localhost\', schema_server_port = \'3306\', schema_username = \'mifos\', schema_password = \'mysql\' WHERE id=1;') } @@ -234,7 +219,7 @@ task setBlankPassword { bootRun { jvmArgs = [ - "-Dspring.output.ansi.enabled=ALWAYS" + "-Dspring.output.ansi.enabled=ALWAYS" ] dependencies { @@ -290,6 +275,15 @@ jib { user = 'nobody:nogroup' } + extraDirectories { + paths { + path { + from = layout.buildDirectory.dir("resources/main").get().asFile + into = '/app/classes' + } + } + } + allowInsecureRegistries = true dependencies { @@ -311,12 +305,12 @@ jib { } } -task migrateDatabase { +tasks.register('migrateDatabase') { doFirst { - println 'Executing liquibase database migration to version '+"$dbVersion" + println 'Executing liquibase database migration to version ' + "$dbVersion" - def dbUrl='jdbc:'+"$dbType"+'://'+"$dbHost"+':'+"$dbPort"+'/'+"$dbName" - def changeLogFilePath='fineract-provider/src/main/resources/db/changelog/tenant/upgrades/0000_upgrade_to_'+"$dbVersion"+'.xml' + def dbUrl = 'jdbc:' + "$dbType" + '://' + "$dbHost" + ':' + "$dbPort" + '/' + "$dbName" + def changeLogFilePath = 'fineract-provider/src/main/resources/db/changelog/tenant/upgrades/0000_upgrade_to_' + "$dbVersion" + '.xml' liquibase { activities { @@ -372,20 +366,20 @@ javadoc { dependsOn resolve } -task devRun(type: org.springframework.boot.gradle.tasks.run.BootRun) { +tasks.register('devRun', org.springframework.boot.gradle.tasks.run.BootRun) { description = 'Runs the application quickly for development by skipping quality checks' group = 'Application' // Configure the build to skip quality checks gradle.taskGraph.whenReady { graph -> if (graph.hasTask(devRun)) { - tasks.matching { task -> + tasks.matching { task -> task.name in ['checkstyle', 'checkstyleMain', 'checkstyleTest', - 'spotlessCheck', 'spotlessApply', - 'spotbugsMain', 'spotbugsTest', - 'javadoc', 'javadocJar', - 'modernizer', - 'testClasses'] + 'spotlessCheck', 'spotlessApply', + 'spotbugsMain', 'spotbugsTest', + 'javadoc', 'javadocJar', + 'modernizer', + 'testClasses'] }.configureEach { enabled = false } @@ -400,7 +394,7 @@ task devRun(type: org.springframework.boot.gradle.tasks.run.BootRun) { classpath = bootRun.classpath mainClass = bootRun.mainClass jvmArgs = bootRun.jvmArgs - + doFirst { println "Running in development mode - quality checks are disabled" } diff --git a/fineract-provider/src/main/resources/jpa/static-weaving/module/fineract-provider/persistence.xml b/fineract-provider/src/main/resources/jpa/static-weaving/module/fineract-provider/persistence.xml new file mode 100644 index 000000000..7c7b5dd9c --- /dev/null +++ b/fineract-provider/src/main/resources/jpa/static-weaving/module/fineract-provider/persistence.xml @@ -0,0 +1,375 @@ + + + + + + + + + + org.eclipse.persistence.jpa.PersistenceProvider + + + org.apache.fineract.useradministration.domain.Role + org.apache.fineract.portfolio.fund.domain.Fund + org.apache.fineract.infrastructure.documentmanagement.domain.Image + org.apache.fineract.organisation.workingdays.domain.WorkingDays + org.apache.fineract.useradministration.domain.Permission + org.apache.fineract.useradministration.domain.AppUserClientMapping + org.apache.fineract.commands.domain.CommandSource + org.apache.fineract.useradministration.domain.AppUser + org.apache.fineract.accounting.glaccount.domain.GLAccount + org.apache.fineract.organisation.monetary.domain.OrganisationCurrency + org.apache.fineract.organisation.staff.domain.Staff + org.apache.fineract.portfolio.rate.domain.Rate + org.apache.fineract.organisation.monetary.domain.ApplicationCurrency + org.apache.fineract.portfolio.calendar.domain.CalendarInstance + org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail + org.apache.fineract.portfolio.calendar.domain.Calendar + org.apache.fineract.portfolio.calendar.domain.CalendarHistory + org.apache.fineract.portfolio.client.domain.ClientIdentifier + org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket + org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange + org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory + org.apache.fineract.portfolio.group.domain.Group + org.apache.fineract.portfolio.client.domain.Client + org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEventConfiguration + org.apache.fineract.portfolio.group.domain.GroupRole + org.apache.fineract.portfolio.paymenttype.domain.PaymentType + org.apache.fineract.portfolio.group.domain.GroupLevel + org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEvent + org.apache.fineract.organisation.office.domain.Office + org.apache.fineract.organisation.holiday.domain.Holiday + org.apache.fineract.infrastructure.cache.domain.PlatformCache + org.apache.fineract.infrastructure.codes.domain.Code + org.apache.fineract.infrastructure.businessdate.domain.BusinessDate + org.apache.fineract.infrastructure.codes.domain.CodeValue + + + org.apache.fineract.accounting.closure.domain.GLClosure + org.apache.fineract.accounting.financialactivityaccount.domain.FinancialActivityAccount + org.apache.fineract.accounting.glaccount.domain.TrialBalance + org.apache.fineract.accounting.producttoaccountmapping.domain.ProductToGLAccountMapping + org.apache.fineract.accounting.rule.domain.AccountingRule + org.apache.fineract.accounting.rule.domain.AccountingTagRule + org.apache.fineract.accounting.journalentry.domain.JournalEntry + + + org.apache.fineract.infrastructure.creditbureau.domain.CreditBureauToken + org.apache.fineract.infrastructure.creditbureau.domain.CreditReport + org.apache.fineract.infrastructure.creditbureau.domain.CreditBureau + org.apache.fineract.infrastructure.creditbureau.domain.CreditBureauLoanProductMapping + org.apache.fineract.infrastructure.creditbureau.domain.CreditBureauConfiguration + org.apache.fineract.infrastructure.creditbureau.domain.OrganisationCreditBureau + + + org.apache.fineract.infrastructure.configuration.domain.ExternalService + org.apache.fineract.infrastructure.configuration.domain.GlobalConfigurationProperty + org.apache.fineract.infrastructure.configuration.domain.ExternalServicesProperties + + + org.apache.fineract.infrastructure.bulkimport.domain.ImportDocument + + + org.apache.fineract.infrastructure.survey.domain.Likelihood + + + org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityRelation + org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityToEntityMapping + org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityAccess + + + org.apache.fineract.infrastructure.sms.domain.SmsMessage + org.apache.fineract.infrastructure.campaigns.sms.domain.SmsCampaign + + + org.apache.fineract.infrastructure.security.domain.TFAccessToken + org.apache.fineract.infrastructure.security.domain.TwoFactorConfiguration + + + org.apache.fineract.infrastructure.campaigns.email.domain.EmailCampaign + org.apache.fineract.infrastructure.campaigns.email.domain.EmailConfiguration + org.apache.fineract.infrastructure.campaigns.email.domain.EmailMessage + + + org.apache.fineract.infrastructure.accountnumberformat.domain.AccountNumberFormat + + + org.apache.fineract.portfolio.client.domain.ClientFamilyMembers + org.apache.fineract.portfolio.client.domain.ClientNonPerson + org.apache.fineract.portfolio.client.domain.ClientTransferDetails + org.apache.fineract.portfolio.client.domain.ClientAddress + org.apache.fineract.portfolio.client.domain.ClientCharge + org.apache.fineract.portfolio.client.domain.ClientTransaction + org.apache.fineract.portfolio.client.domain.ClientChargePaidBy + + + org.apache.fineract.portfolio.meeting.domain.Meeting + org.apache.fineract.portfolio.meeting.attendance.domain.ClientAttendance + + + org.apache.fineract.infrastructure.hooks.domain.Hook + org.apache.fineract.infrastructure.hooks.domain.HookResource + org.apache.fineract.infrastructure.hooks.domain.HookTemplate + org.apache.fineract.infrastructure.hooks.domain.Schema + org.apache.fineract.infrastructure.hooks.domain.HookConfiguration + + + org.apache.fineract.portfolio.address.domain.FieldConfiguration + org.apache.fineract.portfolio.address.domain.Address + + + org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityRelation + org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityToEntityMapping + org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityAccess + + + org.apache.fineract.portfolio.self.account.domain.SelfBeneficiariesTPT + org.apache.fineract.portfolio.self.device.domain.DeviceRegistration + org.apache.fineract.portfolio.self.pockets.domain.Pocket + org.apache.fineract.portfolio.self.pockets.domain.PocketAccountMapping + org.apache.fineract.portfolio.self.registration.domain.SelfServiceRegistration + + + + org.apache.fineract.command.persistence.domain.CommandEntity + org.apache.fineract.command.persistence.converter.JsonAttributeConverter + + + org.apache.fineract.portfolio.charge.domain.Charge + + + org.apache.fineract.organisation.teller.domain.CashierTransaction + org.apache.fineract.organisation.teller.domain.Teller + org.apache.fineract.organisation.teller.domain.Cashier + org.apache.fineract.organisation.teller.domain.TellerTransaction + + + org.apache.fineract.investor.domain.ExternalAssetOwner + org.apache.fineract.investor.domain.ExternalAssetOwnerLoanProductAttributes + org.apache.fineract.investor.domain.ExternalAssetOwnerTransfer + org.apache.fineract.investor.domain.ExternalAssetOwnerTransferDetails + org.apache.fineract.investor.domain.ExternalAssetOwnerTransferJournalEntryMapping + org.apache.fineract.investor.domain.ExternalAssetOwnerTransferLoanMapping + org.apache.fineract.investor.domain.ExternalAssetOwnerJournalEntryMapping + + + org.apache.fineract.investor.domain.ExternalIdConverter + + + org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucketMappings + org.apache.fineract.portfolio.delinquency.domain.LoanDelinquencyAction + org.apache.fineract.portfolio.delinquency.domain.LoanDelinquencyTagHistory + org.apache.fineract.portfolio.delinquency.domain.LoanInstallmentDelinquencyTag + org.apache.fineract.portfolio.loanaccount.domain.GroupLoanIndividualMonitoringAccount + org.apache.fineract.portfolio.loanaccount.domain.Loan + org.apache.fineract.portfolio.loanaccount.domain.LoanCharge + org.apache.fineract.portfolio.loanaccount.domain.LoanChargePaidBy + org.apache.fineract.portfolio.loanaccount.domain.LoanCollateralManagement + org.apache.fineract.portfolio.loanaccount.domain.LoanCreditAllocationRule + org.apache.fineract.portfolio.loanaccount.domain.LoanDisbursementDetails + org.apache.fineract.portfolio.loanaccount.domain.LoanInstallmentCharge + org.apache.fineract.portfolio.loanaccount.domain.LoanInterestRecalcualtionAdditionalDetails + org.apache.fineract.portfolio.loanaccount.domain.LoanInterestRecalculationDetails + org.apache.fineract.portfolio.loanaccount.domain.LoanOfficerAssignmentHistory + org.apache.fineract.portfolio.loanaccount.domain.LoanOverdueInstallmentCharge + org.apache.fineract.portfolio.loanaccount.domain.LoanPaymentAllocationRule + org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleInstallment + org.apache.fineract.portfolio.loanaccount.domain.LoanRescheduleRequestToTermVariationMapping + org.apache.fineract.portfolio.loanaccount.domain.LoanStatusChangeHistory + org.apache.fineract.portfolio.loanaccount.domain.LoanTermVariations + org.apache.fineract.portfolio.loanaccount.domain.LoanTopupDetails + org.apache.fineract.portfolio.loanaccount.domain.LoanTrancheCharge + org.apache.fineract.portfolio.loanaccount.domain.LoanTrancheDisbursementCharge + org.apache.fineract.portfolio.loanaccount.domain.LoanTransaction + org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRelation + org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionToRepaymentScheduleMapping + org.apache.fineract.portfolio.loanaccount.domain.reaging.LoanReAgeParameter + org.apache.fineract.portfolio.loanaccount.loanschedule.domain.LoanRepaymentScheduleHistory + org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanRescheduleRequest + org.apache.fineract.portfolio.loanproduct.domain.LoanProduct + org.apache.fineract.portfolio.loanproduct.domain.LoanProductBorrowerCycleVariations + org.apache.fineract.portfolio.loanproduct.domain.LoanProductConfigurableAttributes + org.apache.fineract.portfolio.loanproduct.domain.LoanProductCreditAllocationRule + org.apache.fineract.portfolio.loanproduct.domain.LoanProductFloatingRates + org.apache.fineract.portfolio.loanproduct.domain.LoanProductGuaranteeDetails + org.apache.fineract.portfolio.loanproduct.domain.LoanProductInterestRecalculationDetails + org.apache.fineract.portfolio.loanproduct.domain.LoanProductPaymentAllocationRule + org.apache.fineract.portfolio.loanproduct.domain.LoanProductVariableInstallmentConfig + org.apache.fineract.portfolio.repaymentwithpostdatedchecks.domain.PostDatedChecks + org.apache.fineract.portfolio.collateralmanagement.domain.ClientCollateralManagement + org.apache.fineract.portfolio.collateralmanagement.domain.CollateralManagementDomain + org.apache.fineract.portfolio.collateral.domain.LoanCollateral + + + org.apache.fineract.portfolio.loanproduct.domain.AllocationTypeListConverter + org.apache.fineract.portfolio.loanaccount.domain.AccountingRuleTypeConverter + org.apache.fineract.portfolio.loanaccount.domain.LoanSubStatusConverter + org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionTypeConverter + org.apache.fineract.portfolio.loanproduct.domain.PaymentAllocationTypeListConverter + org.apache.fineract.portfolio.loanproduct.domain.SupportedInterestRefundTypesListConverter + org.apache.fineract.portfolio.loanaccount.domain.LoanStatusConverter + + + org.apache.fineract.infrastructure.documentmanagement.domain.Document + + + org.apache.fineract.portfolio.tax.domain.TaxComponent + org.apache.fineract.portfolio.tax.domain.TaxComponentHistory + org.apache.fineract.portfolio.tax.domain.TaxGroup + org.apache.fineract.portfolio.tax.domain.TaxGroupMappings + + + org.apache.fineract.portfolio.floatingrates.domain.FloatingRate + org.apache.fineract.portfolio.floatingrates.domain.FloatingRatePeriod + + + org.apache.fineract.interoperation.domain.InteropIdentifier + org.apache.fineract.portfolio.interestratechart.domain.InterestIncentives + org.apache.fineract.portfolio.interestratechart.domain.InterestRateChart + org.apache.fineract.portfolio.interestratechart.domain.InterestRateChartSlab + org.apache.fineract.portfolio.savings.domain.DepositAccountInterestIncentive + org.apache.fineract.portfolio.savings.domain.DepositAccountInterestIncentives + org.apache.fineract.portfolio.savings.domain.DepositAccountInterestRateChart + org.apache.fineract.portfolio.savings.domain.DepositAccountInterestRateChartSlabs + org.apache.fineract.portfolio.savings.domain.DepositAccountOnHoldTransaction + org.apache.fineract.portfolio.savings.domain.DepositAccountTermAndPreClosure + org.apache.fineract.portfolio.savings.domain.DepositProductRecurringDetail + org.apache.fineract.portfolio.savings.domain.DepositProductTermAndPreClosure + org.apache.fineract.portfolio.savings.domain.FixedDepositProduct + org.apache.fineract.portfolio.savings.domain.GroupSavingsIndividualMonitoring + org.apache.fineract.portfolio.savings.domain.RecurringDepositProduct + org.apache.fineract.portfolio.savings.domain.SavingsAccount + org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge + org.apache.fineract.portfolio.savings.domain.SavingsAccountChargePaidBy + org.apache.fineract.portfolio.savings.domain.SavingsAccountTransaction + org.apache.fineract.portfolio.savings.domain.SavingsAccountTransactionTaxDetails + org.apache.fineract.portfolio.savings.domain.SavingsOfficerAssignmentHistory + org.apache.fineract.portfolio.savings.domain.SavingsProduct + + + org.apache.fineract.portfolio.loanaccount.domain.LoanCapitalizedIncomeBalance + org.apache.fineract.portfolio.loanaccount.domain.ProgressiveLoanModel + + + org.apache.fineract.portfolio.account.domain.AccountAssociations + org.apache.fineract.portfolio.account.domain.AccountTransferDetails + org.apache.fineract.portfolio.account.domain.AccountTransferStandingInstruction + org.apache.fineract.portfolio.account.domain.AccountTransferTransaction + + + + org.apache.fineract.notification.domain.NotificationMapper + org.apache.fineract.notification.domain.Notification + + + org.apache.fineract.adhocquery.domain.AdHoc + + + org.apache.fineract.mix.domain.MixTaxonomyMapping + + + org.apache.fineract.cob.domain.LoanAccountLock + org.apache.fineract.cob.domain.BatchBusinessStep + + + org.apache.fineract.template.domain.Template + org.apache.fineract.template.domain.TemplateMapper + + + org.apache.fineract.accounting.provisioning.domain.LoanProductProvisioningEntry + org.apache.fineract.accounting.provisioning.domain.ProvisioningEntry + + + org.apache.fineract.useradministration.domain.AppUserPreviousPassword + org.apache.fineract.useradministration.domain.PasswordValidationPolicy + + + org.apache.fineract.spm.domain.Question + org.apache.fineract.spm.domain.LookupTable + org.apache.fineract.spm.domain.Component + org.apache.fineract.spm.domain.Scorecard + org.apache.fineract.spm.domain.Survey + org.apache.fineract.spm.domain.Response + + + org.apache.fineract.portfolio.loanproduct.productmix.domain.ProductMix + + + org.apache.fineract.organisation.provisioning.domain.ProvisioningCriteria + org.apache.fineract.organisation.provisioning.domain.LoanProductProvisionCriteria + org.apache.fineract.organisation.provisioning.domain.ProvisioningCriteriaDefinition + org.apache.fineract.organisation.provisioning.domain.ProvisioningCategory + + + org.apache.fineract.organisation.office.domain.OfficeTransaction + + + org.apache.fineract.portfolio.self.registration.domain.SelfServiceRegistration + + + org.apache.fineract.portfolio.note.domain.Note + + + org.apache.fineract.portfolio.savings.domain.RecurringDepositScheduleInstallment + org.apache.fineract.portfolio.savings.domain.FixedDepositAccount + org.apache.fineract.portfolio.savings.domain.RecurringDepositAccount + org.apache.fineract.portfolio.savings.domain.DepositAccountRecurringDetail + + + org.apache.fineract.portfolio.shareproducts.domain.ShareProductDividendPayOutDetails + org.apache.fineract.portfolio.shareproducts.domain.ShareProduct + org.apache.fineract.portfolio.shareproducts.domain.ShareProductMarketPrice + + + org.apache.fineract.portfolio.shareaccounts.domain.ShareAccount + org.apache.fineract.portfolio.shareaccounts.domain.ShareAccountCharge + org.apache.fineract.portfolio.shareaccounts.domain.ShareAccountChargePaidBy + org.apache.fineract.portfolio.shareaccounts.domain.ShareAccountDividendDetails + org.apache.fineract.portfolio.shareaccounts.domain.ShareAccountTransaction + + + org.apache.fineract.infrastructure.reportmailingjob.domain.ReportMailingJob + org.apache.fineract.infrastructure.reportmailingjob.domain.ReportMailingJobConfiguration + org.apache.fineract.infrastructure.reportmailingjob.domain.ReportMailingJobRunHistory + + + org.apache.fineract.infrastructure.dataqueries.domain.RegisteredDatatable + org.apache.fineract.infrastructure.dataqueries.domain.Report + org.apache.fineract.infrastructure.dataqueries.domain.ReportParameterUsage + org.apache.fineract.infrastructure.dataqueries.domain.ReportParameter + org.apache.fineract.infrastructure.dataqueries.domain.EntityDatatableChecks + + + org.apache.fineract.portfolio.loanaccount.guarantor.domain.GuarantorFundingDetails + org.apache.fineract.portfolio.loanaccount.guarantor.domain.GuarantorFundingTransaction + org.apache.fineract.portfolio.loanaccount.guarantor.domain.Guarantor + + false + + + + + diff --git a/fineract-rates/build.gradle b/fineract-rates/build.gradle index 279cd9d99..dfd595ac6 100644 --- a/fineract-rates/build.gradle +++ b/fineract-rates/build.gradle @@ -21,31 +21,10 @@ description = 'Fineract Rates' 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/rates/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, source, target - classpath sourceSets.main.runtimeClasspath - } - delete { - delete "${source}/META-INF/persistence.xml" - } +compileJava { + dependsOn ':fineract-avro-schemas:buildJavaSdk' } -// Configuration for Swagger documentation generation task -// https://github.com/swagger-api/swagger-core/tree/master/modules/swagger-gradle-plugin -import org.apache.tools.ant.filters.ReplaceTokens - - - configurations { providedRuntime // needed for Spring Boot executable WAR providedCompile @@ -91,10 +70,6 @@ eclipse { } } -/* http://stackoverflow.com/questions/19653311/jpa-repository-works-in-idea-and-production-but-not-in-gradle */ -sourceSets.main.output.resourcesDir = sourceSets.main.java.classesDirectory -sourceSets.test.output.resourcesDir = sourceSets.test.java.classesDirectory - if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) { sourceSets { test { diff --git a/fineract-tax/src/main/resources/jpa/taxes/persistence.xml b/fineract-rates/src/main/resources/jpa/static-weaving/module/fineract-rates/persistence.xml similarity index 80% rename from fineract-tax/src/main/resources/jpa/taxes/persistence.xml rename to fineract-rates/src/main/resources/jpa/static-weaving/module/fineract-rates/persistence.xml index d3ba0d405..f6aa61581 100644 --- a/fineract-tax/src/main/resources/jpa/taxes/persistence.xml +++ b/fineract-rates/src/main/resources/jpa/static-weaving/module/fineract-rates/persistence.xml @@ -22,52 +22,55 @@ + xmlns="http://java.sun.com/xml/ns/persistence" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> org.eclipse.persistence.jpa.PersistenceProvider - - org.apache.fineract.accounting.glaccount.domain.GLAccount - org.apache.fineract.accounting.journalentry.domain.JournalEntry - org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom - org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDateTimeCustom - org.apache.fineract.infrastructure.codes.domain.Code - org.apache.fineract.infrastructure.codes.domain.CodeValue - org.apache.fineract.infrastructure.documentmanagement.domain.Image - org.apache.fineract.organisation.staff.domain.Staff - org.apache.fineract.organisation.office.domain.Office - org.apache.fineract.organisation.office.domain.OrganisationCurrency - org.apache.fineract.organisation.monetary.domain.ApplicationCurrency - org.apache.fineract.organisation.holiday.domain.Holiday - org.apache.fineract.organisation.workingdays.domain.WorkingDays - org.apache.fineract.portfolio.group.domain.Group - org.apache.fineract.portfolio.group.domain.GroupLevel - org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory - org.apache.fineract.portfolio.group.domain.GroupRole - org.apache.fineract.portfolio.client.domain.Client - org.apache.fineract.portfolio.client.domain.ClientIdentifier - org.apache.fineract.portfolio.rate.domain.Rate - org.apache.fineract.portfolio.fund.domain.Fund - org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket - org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange - org.apache.fineract.portfolio.paymenttype.domain.PaymentType - org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail - org.apache.fineract.portfolio.tax.domain.TaxGroup - org.apache.fineract.portfolio.tax.domain.TaxGroupMappings - org.apache.fineract.portfolio.tax.domain.TaxComponent - org.apache.fineract.portfolio.tax.domain.TaxComponentHistory - org.apache.fineract.portfolio.floatingrates.domain.FloatingRate - org.apache.fineract.portfolio.floatingrates.domain.FloatingRatePeriod - org.apache.fineract.portfolio.calendar.domain.Calendar - org.apache.fineract.portfolio.calendar.domain.CalendarHistory - org.apache.fineract.portfolio.calendar.domain.CalendarInstance - org.apache.fineract.useradministration.domain.AppUser + + org.apache.fineract.useradministration.domain.Role + org.apache.fineract.portfolio.fund.domain.Fund + org.apache.fineract.infrastructure.documentmanagement.domain.Image + org.apache.fineract.organisation.workingdays.domain.WorkingDays org.apache.fineract.useradministration.domain.Permission org.apache.fineract.useradministration.domain.AppUserClientMapping + org.apache.fineract.commands.domain.CommandSource + org.apache.fineract.useradministration.domain.AppUser + org.apache.fineract.accounting.glaccount.domain.GLAccount + org.apache.fineract.organisation.monetary.domain.OrganisationCurrency + org.apache.fineract.organisation.staff.domain.Staff + org.apache.fineract.portfolio.rate.domain.Rate + org.apache.fineract.organisation.monetary.domain.ApplicationCurrency + org.apache.fineract.portfolio.calendar.domain.CalendarInstance + org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail + org.apache.fineract.portfolio.calendar.domain.Calendar + org.apache.fineract.portfolio.calendar.domain.CalendarHistory + org.apache.fineract.portfolio.client.domain.ClientIdentifier + org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket + org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange + org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory + org.apache.fineract.portfolio.group.domain.Group + org.apache.fineract.portfolio.client.domain.Client + org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEventConfiguration + org.apache.fineract.portfolio.group.domain.GroupRole + org.apache.fineract.portfolio.paymenttype.domain.PaymentType + org.apache.fineract.portfolio.group.domain.GroupLevel + org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEvent + org.apache.fineract.organisation.office.domain.Office + org.apache.fineract.organisation.holiday.domain.Holiday + org.apache.fineract.infrastructure.cache.domain.PlatformCache + org.apache.fineract.infrastructure.codes.domain.Code + org.apache.fineract.infrastructure.businessdate.domain.BusinessDate + org.apache.fineract.infrastructure.codes.domain.CodeValue + + + org.apache.fineract.portfolio.floatingrates.domain.FloatingRate + org.apache.fineract.portfolio.floatingrates.domain.FloatingRatePeriod + false diff --git a/fineract-report/build.gradle b/fineract-report/build.gradle index f7239ebd4..b3e50678f 100644 --- a/fineract-report/build.gradle +++ b/fineract-report/build.gradle @@ -21,31 +21,10 @@ description = 'Fineract Report' 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/report/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, source, target - classpath sourceSets.main.runtimeClasspath - } - delete { - delete "${source}/META-INF/persistence.xml" - } +compileJava { + dependsOn ':fineract-avro-schemas:buildJavaSdk' } -// Configuration for Swagger documentation generation task -// https://github.com/swagger-api/swagger-core/tree/master/modules/swagger-gradle-plugin -import org.apache.tools.ant.filters.ReplaceTokens - - - configurations { providedRuntime // needed for Spring Boot executable WAR providedCompile @@ -91,10 +70,6 @@ eclipse { } } -/* http://stackoverflow.com/questions/19653311/jpa-repository-works-in-idea-and-production-but-not-in-gradle */ -sourceSets.main.output.resourcesDir = sourceSets.main.java.classesDirectory -sourceSets.test.output.resourcesDir = sourceSets.test.java.classesDirectory - if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) { sourceSets { test { diff --git a/fineract-document/src/main/resources/jpa/document/persistence.xml b/fineract-report/src/main/resources/jpa/static-weaving/module/fineract-report/persistence.xml similarity index 75% rename from fineract-document/src/main/resources/jpa/document/persistence.xml rename to fineract-report/src/main/resources/jpa/static-weaving/module/fineract-report/persistence.xml index 0c3e741c3..aeb8e6522 100644 --- a/fineract-document/src/main/resources/jpa/document/persistence.xml +++ b/fineract-report/src/main/resources/jpa/static-weaving/module/fineract-report/persistence.xml @@ -22,49 +22,51 @@ + xmlns="http://java.sun.com/xml/ns/persistence" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> org.eclipse.persistence.jpa.PersistenceProvider - - org.apache.fineract.accounting.glaccount.domain.GLAccount - org.apache.fineract.accounting.journalentry.domain.JournalEntry - org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom - org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDateTimeCustom - org.apache.fineract.infrastructure.codes.domain.Code - org.apache.fineract.infrastructure.codes.domain.CodeValue - org.apache.fineract.infrastructure.documentmanagement.domain.Image - org.apache.fineract.organisation.staff.domain.Staff - org.apache.fineract.organisation.office.domain.Office - org.apache.fineract.organisation.office.domain.OrganisationCurrency - org.apache.fineract.organisation.monetary.domain.ApplicationCurrency - org.apache.fineract.organisation.holiday.domain.Holiday - org.apache.fineract.organisation.workingdays.domain.WorkingDays - org.apache.fineract.portfolio.group.domain.Group - org.apache.fineract.portfolio.group.domain.GroupLevel - org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory - org.apache.fineract.portfolio.group.domain.GroupRole - org.apache.fineract.portfolio.client.domain.Client - org.apache.fineract.portfolio.client.domain.ClientIdentifier - org.apache.fineract.portfolio.fund.domain.Fund - org.apache.fineract.portfolio.paymenttype.domain.PaymentType - org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail - org.apache.fineract.portfolio.tax.domain.TaxGroup - org.apache.fineract.portfolio.tax.domain.TaxGroupMappings - org.apache.fineract.portfolio.tax.domain.TaxComponent - org.apache.fineract.portfolio.tax.domain.TaxComponentHistory - org.apache.fineract.portfolio.calendar.domain.Calendar - org.apache.fineract.portfolio.calendar.domain.CalendarHistory - org.apache.fineract.portfolio.calendar.domain.CalendarInstance - org.apache.fineract.useradministration.domain.AppUser + + org.apache.fineract.useradministration.domain.Role + org.apache.fineract.portfolio.fund.domain.Fund + org.apache.fineract.infrastructure.documentmanagement.domain.Image + org.apache.fineract.organisation.workingdays.domain.WorkingDays org.apache.fineract.useradministration.domain.Permission org.apache.fineract.useradministration.domain.AppUserClientMapping - - org.apache.fineract.portfolio.charge.domain.Charge + org.apache.fineract.commands.domain.CommandSource + org.apache.fineract.useradministration.domain.AppUser + org.apache.fineract.accounting.glaccount.domain.GLAccount + org.apache.fineract.organisation.monetary.domain.OrganisationCurrency + org.apache.fineract.organisation.staff.domain.Staff + org.apache.fineract.portfolio.rate.domain.Rate + org.apache.fineract.organisation.monetary.domain.ApplicationCurrency + org.apache.fineract.portfolio.calendar.domain.CalendarInstance + org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail + org.apache.fineract.portfolio.calendar.domain.Calendar + org.apache.fineract.portfolio.calendar.domain.CalendarHistory + org.apache.fineract.portfolio.client.domain.ClientIdentifier + org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket + org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange + org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory + org.apache.fineract.portfolio.group.domain.Group + org.apache.fineract.portfolio.client.domain.Client + org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEventConfiguration + org.apache.fineract.portfolio.group.domain.GroupRole + org.apache.fineract.portfolio.paymenttype.domain.PaymentType + org.apache.fineract.portfolio.group.domain.GroupLevel + org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEvent + org.apache.fineract.organisation.office.domain.Office + org.apache.fineract.organisation.holiday.domain.Holiday + org.apache.fineract.infrastructure.cache.domain.PlatformCache + org.apache.fineract.infrastructure.codes.domain.Code + org.apache.fineract.infrastructure.businessdate.domain.BusinessDate + org.apache.fineract.infrastructure.codes.domain.CodeValue + false diff --git a/fineract-savings/build.gradle b/fineract-savings/build.gradle index df6fa6f3a..c4dd74560 100644 --- a/fineract-savings/build.gradle +++ b/fineract-savings/build.gradle @@ -21,31 +21,10 @@ description = 'Fineract Savings' 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/savings/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, source, target - classpath sourceSets.main.runtimeClasspath - } - delete { - delete "${source}/META-INF/persistence.xml" - } +compileJava { + dependsOn ':fineract-avro-schemas:buildJavaSdk' } -// Configuration for Swagger documentation generation task -// https://github.com/swagger-api/swagger-core/tree/master/modules/swagger-gradle-plugin -import org.apache.tools.ant.filters.ReplaceTokens - - - configurations { providedRuntime // needed for Spring Boot executable WAR providedCompile @@ -91,10 +70,6 @@ eclipse { } } -/* http://stackoverflow.com/questions/19653311/jpa-repository-works-in-idea-and-production-but-not-in-gradle */ -sourceSets.main.output.resourcesDir = sourceSets.main.java.classesDirectory -sourceSets.test.output.resourcesDir = sourceSets.test.java.classesDirectory - if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) { sourceSets { test { diff --git a/fineract-savings/src/main/resources/jpa/savings/persistence.xml b/fineract-savings/src/main/resources/jpa/savings/persistence.xml deleted file mode 100644 index fcd1b4aa3..000000000 --- a/fineract-savings/src/main/resources/jpa/savings/persistence.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - org.eclipse.persistence.jpa.PersistenceProvider - - org.apache.fineract.accounting.glaccount.domain.GLAccount - org.apache.fineract.accounting.journalentry.domain.JournalEntry - org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom - org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDateTimeCustom - org.apache.fineract.infrastructure.codes.domain.Code - org.apache.fineract.infrastructure.codes.domain.CodeValue - org.apache.fineract.infrastructure.documentmanagement.domain.Image - org.apache.fineract.organisation.staff.domain.Staff - org.apache.fineract.organisation.office.domain.Office - org.apache.fineract.organisation.office.domain.OrganisationCurrency - org.apache.fineract.organisation.monetary.domain.ApplicationCurrency - org.apache.fineract.organisation.holiday.domain.Holiday - org.apache.fineract.organisation.workingdays.domain.WorkingDays - org.apache.fineract.portfolio.group.domain.Group - org.apache.fineract.portfolio.group.domain.GroupLevel - org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory - org.apache.fineract.portfolio.group.domain.GroupRole - org.apache.fineract.portfolio.client.domain.Client - org.apache.fineract.portfolio.client.domain.ClientIdentifier - org.apache.fineract.portfolio.fund.domain.Fund - org.apache.fineract.portfolio.paymenttype.domain.PaymentType - org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail - org.apache.fineract.portfolio.calendar.domain.Calendar - org.apache.fineract.portfolio.calendar.domain.CalendarHistory - org.apache.fineract.portfolio.calendar.domain.CalendarInstance - org.apache.fineract.useradministration.domain.AppUser - org.apache.fineract.useradministration.domain.Role - org.apache.fineract.useradministration.domain.Permission - org.apache.fineract.useradministration.domain.AppUserClientMapping - - org.apache.fineract.portfolio.charge.domain.Charge - - org.apache.fineract.portfolio.tax.domain.TaxGroup - org.apache.fineract.portfolio.tax.domain.TaxGroupMappings - org.apache.fineract.portfolio.tax.domain.TaxComponent - org.apache.fineract.portfolio.tax.domain.TaxComponentHistory - false - - - - - diff --git a/fineract-savings/src/main/resources/jpa/static-weaving/module/fineract-savings/persistence.xml b/fineract-savings/src/main/resources/jpa/static-weaving/module/fineract-savings/persistence.xml new file mode 100644 index 000000000..1e6e6db5b --- /dev/null +++ b/fineract-savings/src/main/resources/jpa/static-weaving/module/fineract-savings/persistence.xml @@ -0,0 +1,122 @@ + + + + + + + + + + org.eclipse.persistence.jpa.PersistenceProvider + + + org.apache.fineract.useradministration.domain.Role + org.apache.fineract.portfolio.fund.domain.Fund + org.apache.fineract.infrastructure.documentmanagement.domain.Image + org.apache.fineract.organisation.workingdays.domain.WorkingDays + org.apache.fineract.useradministration.domain.Permission + org.apache.fineract.useradministration.domain.AppUserClientMapping + org.apache.fineract.commands.domain.CommandSource + org.apache.fineract.useradministration.domain.AppUser + org.apache.fineract.accounting.glaccount.domain.GLAccount + org.apache.fineract.organisation.monetary.domain.OrganisationCurrency + org.apache.fineract.organisation.staff.domain.Staff + org.apache.fineract.portfolio.rate.domain.Rate + org.apache.fineract.organisation.monetary.domain.ApplicationCurrency + org.apache.fineract.portfolio.calendar.domain.CalendarInstance + org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail + org.apache.fineract.portfolio.calendar.domain.Calendar + org.apache.fineract.portfolio.calendar.domain.CalendarHistory + org.apache.fineract.portfolio.client.domain.ClientIdentifier + org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket + org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange + org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory + org.apache.fineract.portfolio.group.domain.Group + org.apache.fineract.portfolio.client.domain.Client + org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEventConfiguration + org.apache.fineract.portfolio.group.domain.GroupRole + org.apache.fineract.portfolio.paymenttype.domain.PaymentType + org.apache.fineract.portfolio.group.domain.GroupLevel + org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEvent + org.apache.fineract.organisation.office.domain.Office + org.apache.fineract.organisation.holiday.domain.Holiday + org.apache.fineract.infrastructure.cache.domain.PlatformCache + org.apache.fineract.infrastructure.codes.domain.Code + org.apache.fineract.infrastructure.businessdate.domain.BusinessDate + org.apache.fineract.infrastructure.codes.domain.CodeValue + + + org.apache.fineract.accounting.closure.domain.GLClosure + org.apache.fineract.accounting.financialactivityaccount.domain.FinancialActivityAccount + org.apache.fineract.accounting.glaccount.domain.TrialBalance + org.apache.fineract.accounting.producttoaccountmapping.domain.ProductToGLAccountMapping + org.apache.fineract.accounting.rule.domain.AccountingRule + org.apache.fineract.accounting.rule.domain.AccountingTagRule + org.apache.fineract.accounting.journalentry.domain.JournalEntry + + + + org.apache.fineract.portfolio.tax.domain.TaxComponent + org.apache.fineract.portfolio.tax.domain.TaxComponentHistory + org.apache.fineract.portfolio.tax.domain.TaxGroup + org.apache.fineract.portfolio.tax.domain.TaxGroupMappings + + + org.apache.fineract.portfolio.floatingrates.domain.FloatingRate + org.apache.fineract.portfolio.floatingrates.domain.FloatingRatePeriod + + + org.apache.fineract.interoperation.domain.InteropIdentifier + org.apache.fineract.portfolio.interestratechart.domain.InterestIncentives + org.apache.fineract.portfolio.interestratechart.domain.InterestRateChart + org.apache.fineract.portfolio.interestratechart.domain.InterestRateChartSlab + org.apache.fineract.portfolio.savings.domain.DepositAccountInterestIncentive + org.apache.fineract.portfolio.savings.domain.DepositAccountInterestIncentives + org.apache.fineract.portfolio.savings.domain.DepositAccountInterestRateChart + org.apache.fineract.portfolio.savings.domain.DepositAccountInterestRateChartSlabs + org.apache.fineract.portfolio.savings.domain.DepositAccountOnHoldTransaction + org.apache.fineract.portfolio.savings.domain.DepositAccountTermAndPreClosure + org.apache.fineract.portfolio.savings.domain.DepositProductRecurringDetail + org.apache.fineract.portfolio.savings.domain.DepositProductTermAndPreClosure + org.apache.fineract.portfolio.savings.domain.FixedDepositProduct + org.apache.fineract.portfolio.savings.domain.GroupSavingsIndividualMonitoring + org.apache.fineract.portfolio.savings.domain.RecurringDepositProduct + org.apache.fineract.portfolio.savings.domain.SavingsAccount + org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge + org.apache.fineract.portfolio.savings.domain.SavingsAccountChargePaidBy + org.apache.fineract.portfolio.savings.domain.SavingsAccountTransaction + org.apache.fineract.portfolio.savings.domain.SavingsAccountTransactionTaxDetails + org.apache.fineract.portfolio.savings.domain.SavingsOfficerAssignmentHistory + org.apache.fineract.portfolio.savings.domain.SavingsProduct + + + org.apache.fineract.portfolio.charge.domain.Charge + + false + + + + + diff --git a/fineract-tax/build.gradle b/fineract-tax/build.gradle index 1d0844df6..e7fe509f1 100644 --- a/fineract-tax/build.gradle +++ b/fineract-tax/build.gradle @@ -21,31 +21,10 @@ description = 'Fineract Taxes' 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/taxes/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, source, target - classpath sourceSets.main.runtimeClasspath - } - delete { - delete "${source}/META-INF/persistence.xml" - } +compileJava { + dependsOn ':fineract-avro-schemas:buildJavaSdk' } -// Configuration for Swagger documentation generation task -// https://github.com/swagger-api/swagger-core/tree/master/modules/swagger-gradle-plugin -import org.apache.tools.ant.filters.ReplaceTokens - - - configurations { providedRuntime // needed for Spring Boot executable WAR providedCompile @@ -91,10 +70,6 @@ eclipse { } } -/* http://stackoverflow.com/questions/19653311/jpa-repository-works-in-idea-and-production-but-not-in-gradle */ -sourceSets.main.output.resourcesDir = sourceSets.main.java.classesDirectory -sourceSets.test.output.resourcesDir = sourceSets.test.java.classesDirectory - if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) { sourceSets { test { diff --git a/fineract-report/src/main/resources/jpa/report/persistence.xml b/fineract-tax/src/main/resources/jpa/static-weaving/module/fineract-tax/persistence.xml similarity index 81% rename from fineract-report/src/main/resources/jpa/report/persistence.xml rename to fineract-tax/src/main/resources/jpa/static-weaving/module/fineract-tax/persistence.xml index d3ba0d405..5a440edcc 100644 --- a/fineract-report/src/main/resources/jpa/report/persistence.xml +++ b/fineract-tax/src/main/resources/jpa/static-weaving/module/fineract-tax/persistence.xml @@ -22,52 +22,57 @@ + xmlns="http://java.sun.com/xml/ns/persistence" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> org.eclipse.persistence.jpa.PersistenceProvider - - org.apache.fineract.accounting.glaccount.domain.GLAccount - org.apache.fineract.accounting.journalentry.domain.JournalEntry - org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom - org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDateTimeCustom - org.apache.fineract.infrastructure.codes.domain.Code - org.apache.fineract.infrastructure.codes.domain.CodeValue - org.apache.fineract.infrastructure.documentmanagement.domain.Image - org.apache.fineract.organisation.staff.domain.Staff - org.apache.fineract.organisation.office.domain.Office - org.apache.fineract.organisation.office.domain.OrganisationCurrency - org.apache.fineract.organisation.monetary.domain.ApplicationCurrency - org.apache.fineract.organisation.holiday.domain.Holiday - org.apache.fineract.organisation.workingdays.domain.WorkingDays - org.apache.fineract.portfolio.group.domain.Group - org.apache.fineract.portfolio.group.domain.GroupLevel - org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory - org.apache.fineract.portfolio.group.domain.GroupRole - org.apache.fineract.portfolio.client.domain.Client - org.apache.fineract.portfolio.client.domain.ClientIdentifier - org.apache.fineract.portfolio.rate.domain.Rate - org.apache.fineract.portfolio.fund.domain.Fund - org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket - org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange - org.apache.fineract.portfolio.paymenttype.domain.PaymentType - org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail - org.apache.fineract.portfolio.tax.domain.TaxGroup - org.apache.fineract.portfolio.tax.domain.TaxGroupMappings - org.apache.fineract.portfolio.tax.domain.TaxComponent - org.apache.fineract.portfolio.tax.domain.TaxComponentHistory - org.apache.fineract.portfolio.floatingrates.domain.FloatingRate - org.apache.fineract.portfolio.floatingrates.domain.FloatingRatePeriod - org.apache.fineract.portfolio.calendar.domain.Calendar - org.apache.fineract.portfolio.calendar.domain.CalendarHistory - org.apache.fineract.portfolio.calendar.domain.CalendarInstance - org.apache.fineract.useradministration.domain.AppUser + + org.apache.fineract.useradministration.domain.Role + org.apache.fineract.portfolio.fund.domain.Fund + org.apache.fineract.infrastructure.documentmanagement.domain.Image + org.apache.fineract.organisation.workingdays.domain.WorkingDays org.apache.fineract.useradministration.domain.Permission org.apache.fineract.useradministration.domain.AppUserClientMapping + org.apache.fineract.commands.domain.CommandSource + org.apache.fineract.useradministration.domain.AppUser + org.apache.fineract.accounting.glaccount.domain.GLAccount + org.apache.fineract.organisation.monetary.domain.OrganisationCurrency + org.apache.fineract.organisation.staff.domain.Staff + org.apache.fineract.portfolio.rate.domain.Rate + org.apache.fineract.organisation.monetary.domain.ApplicationCurrency + org.apache.fineract.portfolio.calendar.domain.CalendarInstance + org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail + org.apache.fineract.portfolio.calendar.domain.Calendar + org.apache.fineract.portfolio.calendar.domain.CalendarHistory + org.apache.fineract.portfolio.client.domain.ClientIdentifier + org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket + org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange + org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory + org.apache.fineract.portfolio.group.domain.Group + org.apache.fineract.portfolio.client.domain.Client + org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEventConfiguration + org.apache.fineract.portfolio.group.domain.GroupRole + org.apache.fineract.portfolio.paymenttype.domain.PaymentType + org.apache.fineract.portfolio.group.domain.GroupLevel + org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEvent + org.apache.fineract.organisation.office.domain.Office + org.apache.fineract.organisation.holiday.domain.Holiday + org.apache.fineract.infrastructure.cache.domain.PlatformCache + org.apache.fineract.infrastructure.codes.domain.Code + org.apache.fineract.infrastructure.businessdate.domain.BusinessDate + org.apache.fineract.infrastructure.codes.domain.CodeValue + + + org.apache.fineract.portfolio.tax.domain.TaxComponent + org.apache.fineract.portfolio.tax.domain.TaxComponentHistory + org.apache.fineract.portfolio.tax.domain.TaxGroup + org.apache.fineract.portfolio.tax.domain.TaxGroupMappings + false diff --git a/static-weaving.gradle b/static-weaving.gradle new file mode 100644 index 000000000..7d462ae20 --- /dev/null +++ b/static-weaving.gradle @@ -0,0 +1,65 @@ +/** + * 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. + */ +// In static-weaving.gradle + +// Wait until after project evaluation to ensure all plugins are applied +project.afterEvaluate { + // Only configure if this is a Java project + if (!project.plugins.hasPlugin('java')) { + logger.lifecycle("ℹ Skipping static weaving configuration for non-Java project: ${project.name}") + return + } + + // Check if the module contains JPA entities + def persistenceXmlFile = file("src/main/resources/jpa/static-weaving/module/${project.name}/persistence.xml") + def hasJpaEntities = persistenceXmlFile.exists() + + if (hasJpaEntities) { + logger.lifecycle("Configuring EclipseLink static weaving for ${project.name}") + + compileJava.doLast { + def source = sourceSets.main.java.classesDirectory.get() + + File weavingRoot = new File(temporaryDir, "static-weaving") + File metaInf = new File(weavingRoot, "META-INF") + metaInf.mkdirs() + + copy { + from persistenceXmlFile.toPath() + into metaInf.toPath() + } + + javaexec { + description = 'Performs EclipseLink static weaving of entity classes' + mainClass.set("org.eclipse.persistence.tools.weaving.jpa.StaticWeave") + classpath = project.sourceSets.main.runtimeClasspath + args = [ + "-persistenceinfo", + weavingRoot.absolutePath, + source, + source + ] + } + } + + logger.lifecycle("✓ EclipseLink static weaving configured for ${project.name}") + } else { + logger.lifecycle("ℹ No JPA entities found in ${project.name}, skipping static weaving configuration") + } +}