You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fineract.apache.org by ar...@apache.org on 2023/05/16 19:44:02 UTC
[fineract] 01/02: Fineract Asset Externalization models - [x] Liquibase database model - [x] JPA model - [x] API endpoint without implementation - [x] API endpoint requirements - [x] Json Serialization and Deserialization and dependencies - [x] New Authentication check interface to the core level - [x] CommandWrapperBuilder and dependencies
This is an automated email from the ASF dual-hosted git repository.
arnold pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract.git
commit da1aa9e5a87db5c1e9a78f6ae14462e2fabfa3b2
Author: Janos Haber <ja...@finesolution.hu>
AuthorDate: Tue May 16 00:45:03 2023 +0200
Fineract Asset Externalization models
- [x] Liquibase database model
- [x] JPA model
- [x] API endpoint without implementation
- [x] API endpoint requirements
- [x] Json Serialization and Deserialization and dependencies
- [x] New Authentication check interface to the core level
- [x] CommandWrapperBuilder and dependencies
---
custom/docker/build.gradle | 1 +
fineract-core/dependencies.gradle | 8 +-
.../accounting/common/AccountingConstants.java | 0
.../data/FinancialActivityData.java | 0
.../accounting/glaccount/domain/GLAccountType.java | 0
.../fineract/commands/domain/CommandWrapper.java | 0
.../commands/service/CommandWrapperBuilder.java | 0
.../data/AccountNumberFormatData.java | 0
.../service/AccountNumberFormatConstants.java | 0
.../core/api/ApiParameterHelper.java | 0
.../core/api/ApiRequestParameterHelper.java | 0
.../infrastructure/core/api/DateAdapter.java | 0
.../infrastructure/core/api/ExternalIdAdapter.java | 0
.../core/api/JodaDateTimeAdapter.java | 0
.../core/api/JodaMonthDayAdapter.java | 0
.../infrastructure/core/api/LocalDateAdapter.java | 0
.../core/api/LocalDateTimeAdapter.java | 0
.../infrastructure/core/api/LocalTimeAdapter.java | 0
.../core/api/OffsetDateTimeAdapter.java | 0
.../core/api/ParameterListExclusionStrategy.java | 0
.../core/api/ParameterListInclusionStrategy.java | 0
.../infrastructure/core/data/EnumOptionData.java | 0
.../core/domain/AbstractAuditableCustom.java | 0
.../core/domain/AbstractPersistableCustom.java | 0
.../ApiRequestJsonSerializationSettings.java | 0
.../CommandProcessingResultJsonSerializer.java | 0
.../core/serialization/CommandSerializer.java | 0
.../CommandSerializerDefaultToJson.java | 0
.../serialization/DefaultToApiJsonSerializer.java | 0
...hPrettyPrintingOffJsonSerializerGoogleGson.java | 0
...thPrettyPrintingOnJsonSerializerGoogleGson.java | 0
.../serialization/GoogleGsonSerializerHelper.java | 0
.../core/serialization/ToApiJsonSerializer.java | 0
.../fineract/infrastructure/core/service/Page.java | 0
.../service/PlatformUserRightsContext.java | 15 +-
.../portfolio/client/api/ClientApiConstants.java | 5 +-
.../api/PaymentTypeApiResourceConstants.java | 0
.../portfolio/savings/DepositsApiConstants.java | 0
.../portfolio/savings/SavingsApiConstants.java | 0
.../self/pockets/api/PocketApiConstants.java | 0
.../api/PasswordPreferencesApiConstants.java | 0
fineract-investor/dependencies.gradle | 33 +++-
.../api/ExternalAssetOwnersApiResource.java | 79 ++++++++
.../investor/data/ExternalTransferData.java | 21 +-
.../data/ExternalTransferLoanMappingData.java | 10 +-
.../investor/data/ExternalTransferOwnerData.java | 9 +-
.../investor/data/ExternalTransferStatus.java | 16 +-
.../investor/domain/ExternalAssetOwner.java | 31 +--
.../domain/ExternalAssetOwnerRepository.java | 13 +-
.../domain/ExternalAssetOwnerTransfer.java | 60 ++++++
.../ExternalAssetOwnerTransferLoanMapping.java | 34 ++--
.../ExternalAssetOwnerTransferRepository.java | 13 +-
.../module/investor/module-changelog-master.xml | 3 +-
.../module/investor/parts/0002_asset_schemas.xml | 220 +++++++++++++++++++++
.../security/service/PlatformSecurityContext.java | 2 +-
.../SpringSecurityPlatformSecurityContext.java | 5 +
56 files changed, 480 insertions(+), 98 deletions(-)
diff --git a/custom/docker/build.gradle b/custom/docker/build.gradle
index 50253a22c..b2259a9a7 100644
--- a/custom/docker/build.gradle
+++ b/custom/docker/build.gradle
@@ -68,6 +68,7 @@ jib {
allowInsecureRegistries = true
dependencies {
+ implementation project(':fineract-core')
implementation project(':fineract-provider')
// NOTE: dynamically load all custom modules
file("${rootDir}/custom").eachDir { companyDir ->
diff --git a/fineract-core/dependencies.gradle b/fineract-core/dependencies.gradle
index 1c41c9971..c13b498a2 100644
--- a/fineract-core/dependencies.gradle
+++ b/fineract-core/dependencies.gradle
@@ -35,7 +35,6 @@ dependencies {
'com.google.code.gson:gson',
'org.apache.commons:commons-lang3',
- 'org.liquibase:liquibase-core',
'com.jayway.jsonpath:json-path',
@@ -49,7 +48,12 @@ dependencies {
'io.github.resilience4j:resilience4j-spring-boot2',
)
-
+ implementation ('org.springframework.boot:spring-boot-starter-data-jpa') {
+ exclude group: 'org.hibernate'
+ }
+ implementation('org.eclipse.persistence:org.eclipse.persistence.jpa') {
+ exclude group: 'org.eclipse.persistence', module: 'jakarta.persistence'
+ }
implementation('org.springframework.boot:spring-boot-starter-jersey') {
exclude group: 'org.glassfish.hk2.external', module: 'aopalliance-repackaged'
exclude group: 'org.glassfish.hk2', module: 'hk2-runlevel'
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/common/AccountingConstants.java b/fineract-core/src/main/java/org/apache/fineract/accounting/common/AccountingConstants.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/common/AccountingConstants.java
rename to fineract-core/src/main/java/org/apache/fineract/accounting/common/AccountingConstants.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/financialactivityaccount/data/FinancialActivityData.java b/fineract-core/src/main/java/org/apache/fineract/accounting/financialactivityaccount/data/FinancialActivityData.java
similarity index 100%
copy from fineract-provider/src/main/java/org/apache/fineract/accounting/financialactivityaccount/data/FinancialActivityData.java
copy to fineract-core/src/main/java/org/apache/fineract/accounting/financialactivityaccount/data/FinancialActivityData.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/domain/GLAccountType.java b/fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/domain/GLAccountType.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/domain/GLAccountType.java
rename to fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/domain/GLAccountType.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/commands/domain/CommandWrapper.java b/fineract-core/src/main/java/org/apache/fineract/commands/domain/CommandWrapper.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/commands/domain/CommandWrapper.java
rename to fineract-core/src/main/java/org/apache/fineract/commands/domain/CommandWrapper.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/commands/service/CommandWrapperBuilder.java b/fineract-core/src/main/java/org/apache/fineract/commands/service/CommandWrapperBuilder.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/commands/service/CommandWrapperBuilder.java
rename to fineract-core/src/main/java/org/apache/fineract/commands/service/CommandWrapperBuilder.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/data/AccountNumberFormatData.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/data/AccountNumberFormatData.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/data/AccountNumberFormatData.java
rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/data/AccountNumberFormatData.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/service/AccountNumberFormatConstants.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/service/AccountNumberFormatConstants.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/service/AccountNumberFormatConstants.java
rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/service/AccountNumberFormatConstants.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/api/ApiParameterHelper.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/api/ApiParameterHelper.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/api/ApiParameterHelper.java
rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/core/api/ApiParameterHelper.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/api/ApiRequestParameterHelper.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/api/ApiRequestParameterHelper.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/api/ApiRequestParameterHelper.java
rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/core/api/ApiRequestParameterHelper.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/api/DateAdapter.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/api/DateAdapter.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/api/DateAdapter.java
rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/core/api/DateAdapter.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/api/ExternalIdAdapter.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/api/ExternalIdAdapter.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/api/ExternalIdAdapter.java
rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/core/api/ExternalIdAdapter.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/api/JodaDateTimeAdapter.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/api/JodaDateTimeAdapter.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/api/JodaDateTimeAdapter.java
rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/core/api/JodaDateTimeAdapter.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/api/JodaMonthDayAdapter.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/api/JodaMonthDayAdapter.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/api/JodaMonthDayAdapter.java
rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/core/api/JodaMonthDayAdapter.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/api/LocalDateAdapter.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/api/LocalDateAdapter.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/api/LocalDateAdapter.java
rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/core/api/LocalDateAdapter.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/api/LocalDateTimeAdapter.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/api/LocalDateTimeAdapter.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/api/LocalDateTimeAdapter.java
rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/core/api/LocalDateTimeAdapter.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/api/LocalTimeAdapter.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/api/LocalTimeAdapter.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/api/LocalTimeAdapter.java
rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/core/api/LocalTimeAdapter.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/api/OffsetDateTimeAdapter.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/api/OffsetDateTimeAdapter.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/api/OffsetDateTimeAdapter.java
rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/core/api/OffsetDateTimeAdapter.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/api/ParameterListExclusionStrategy.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/api/ParameterListExclusionStrategy.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/api/ParameterListExclusionStrategy.java
rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/core/api/ParameterListExclusionStrategy.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/api/ParameterListInclusionStrategy.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/api/ParameterListInclusionStrategy.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/api/ParameterListInclusionStrategy.java
rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/core/api/ParameterListInclusionStrategy.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/data/EnumOptionData.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/data/EnumOptionData.java
similarity index 100%
copy from fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/data/EnumOptionData.java
copy to fineract-core/src/main/java/org/apache/fineract/infrastructure/core/data/EnumOptionData.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableCustom.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableCustom.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableCustom.java
rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableCustom.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractPersistableCustom.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractPersistableCustom.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractPersistableCustom.java
rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractPersistableCustom.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/ApiRequestJsonSerializationSettings.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/serialization/ApiRequestJsonSerializationSettings.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/ApiRequestJsonSerializationSettings.java
rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/core/serialization/ApiRequestJsonSerializationSettings.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/CommandProcessingResultJsonSerializer.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/serialization/CommandProcessingResultJsonSerializer.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/CommandProcessingResultJsonSerializer.java
rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/core/serialization/CommandProcessingResultJsonSerializer.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/CommandSerializer.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/serialization/CommandSerializer.java
similarity index 100%
copy from fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/CommandSerializer.java
copy to fineract-core/src/main/java/org/apache/fineract/infrastructure/core/serialization/CommandSerializer.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/CommandSerializerDefaultToJson.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/serialization/CommandSerializerDefaultToJson.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/CommandSerializerDefaultToJson.java
rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/core/serialization/CommandSerializerDefaultToJson.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/DefaultToApiJsonSerializer.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/serialization/DefaultToApiJsonSerializer.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/DefaultToApiJsonSerializer.java
rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/core/serialization/DefaultToApiJsonSerializer.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/ExcludeNothingWithPrettyPrintingOffJsonSerializerGoogleGson.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/serialization/ExcludeNothingWithPrettyPrintingOffJsonSerializerGoogleGson.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/ExcludeNothingWithPrettyPrintingOffJsonSerializerGoogleGson.java
rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/core/serialization/ExcludeNothingWithPrettyPrintingOffJsonSerializerGoogleGson.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/ExcludeNothingWithPrettyPrintingOnJsonSerializerGoogleGson.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/serialization/ExcludeNothingWithPrettyPrintingOnJsonSerializerGoogleGson.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/ExcludeNothingWithPrettyPrintingOnJsonSerializerGoogleGson.java
rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/core/serialization/ExcludeNothingWithPrettyPrintingOnJsonSerializerGoogleGson.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/GoogleGsonSerializerHelper.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/serialization/GoogleGsonSerializerHelper.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/GoogleGsonSerializerHelper.java
rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/core/serialization/GoogleGsonSerializerHelper.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/ToApiJsonSerializer.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/serialization/ToApiJsonSerializer.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/ToApiJsonSerializer.java
rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/core/serialization/ToApiJsonSerializer.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/Page.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/Page.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/Page.java
rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/Page.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/CommandSerializer.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/security/service/PlatformUserRightsContext.java
similarity index 72%
copy from fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/CommandSerializer.java
copy to fineract-core/src/main/java/org/apache/fineract/infrastructure/security/service/PlatformUserRightsContext.java
index b06b1f433..519be83d7 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/CommandSerializer.java
+++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/security/service/PlatformUserRightsContext.java
@@ -16,18 +16,9 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.fineract.infrastructure.core.serialization;
+package org.apache.fineract.infrastructure.security.service;
-/**
- * Service for serializing commands into another format.
- *
- * <p>
- * Known implementations:
- * </p>
- *
- * @see CommandSerializerDefaultToJson
- */
-public interface CommandSerializer {
+public interface PlatformUserRightsContext {
- String serializeCommandToJson(Object command);
+ void isAuthenticated();
}
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/ClientApiConstants.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/client/api/ClientApiConstants.java
similarity index 98%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/ClientApiConstants.java
rename to fineract-core/src/main/java/org/apache/fineract/portfolio/client/api/ClientApiConstants.java
index 334a12992..86bd93231 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/ClientApiConstants.java
+++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/client/api/ClientApiConstants.java
@@ -21,7 +21,6 @@ package org.apache.fineract.portfolio.client.api;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
-import org.apache.fineract.portfolio.client.data.ClientData;
@SuppressWarnings({ "HideUtilityClassConstructor" })
public class ClientApiConstants {
@@ -189,8 +188,8 @@ public class ClientApiConstants {
Arrays.asList("loanAccounts", "savingsAccounts", "shareAccounts"));
/**
- * These parameters will match the class level parameters of {@link ClientData}. Where possible, we try to get
- * response parameters to match those of request parameters.
+ * These parameters will match the class level parameters of ClientData. Where possible, we try to get response
+ * parameters to match those of request parameters.
*/
protected static final Set<String> CLIENT_RESPONSE_DATA_PARAMETERS = new HashSet<>(Arrays.asList(idParamName, accountNoParamName,
externalIdParamName, statusParamName, activeParamName, activationDateParamName, firstnameParamName, middlenameParamName,
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/paymenttype/api/PaymentTypeApiResourceConstants.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/paymenttype/api/PaymentTypeApiResourceConstants.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/paymenttype/api/PaymentTypeApiResourceConstants.java
rename to fineract-core/src/main/java/org/apache/fineract/portfolio/paymenttype/api/PaymentTypeApiResourceConstants.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/DepositsApiConstants.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/DepositsApiConstants.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/DepositsApiConstants.java
rename to fineract-core/src/main/java/org/apache/fineract/portfolio/savings/DepositsApiConstants.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/SavingsApiConstants.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/SavingsApiConstants.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/SavingsApiConstants.java
rename to fineract-core/src/main/java/org/apache/fineract/portfolio/savings/SavingsApiConstants.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/pockets/api/PocketApiConstants.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/self/pockets/api/PocketApiConstants.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/self/pockets/api/PocketApiConstants.java
rename to fineract-core/src/main/java/org/apache/fineract/portfolio/self/pockets/api/PocketApiConstants.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/api/PasswordPreferencesApiConstants.java b/fineract-core/src/main/java/org/apache/fineract/useradministration/api/PasswordPreferencesApiConstants.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/useradministration/api/PasswordPreferencesApiConstants.java
rename to fineract-core/src/main/java/org/apache/fineract/useradministration/api/PasswordPreferencesApiConstants.java
diff --git a/fineract-investor/dependencies.gradle b/fineract-investor/dependencies.gradle
index d6f93f2c3..c2c6fb8dd 100644
--- a/fineract-investor/dependencies.gradle
+++ b/fineract-investor/dependencies.gradle
@@ -24,11 +24,40 @@ dependencies {
// implementation dependencies are directly used (compiled against) in src/main (and src/test)
//
- api(project(path: ':fineract-core'))
+ implementation(project(path: ':fineract-core'))
+
+ implementation(
+ 'org.springframework.boot:spring-boot-starter-web',
+ 'org.springframework.boot:spring-boot-starter-security',
+ 'jakarta.ws.rs:jakarta.ws.rs-api',
+ 'org.glassfish.jersey.media:jersey-media-multipart',
+
+ 'com.google.guava:guava',
+ 'com.google.code.gson:gson',
+
+ 'org.apache.commons:commons-lang3',
+
+ 'com.jayway.jsonpath:json-path',
+
+ 'com.github.spotbugs:spotbugs-annotations',
+ 'io.swagger.core.v3:swagger-annotations',
+
+ 'com.squareup.retrofit2:converter-gson',
+
+ 'org.springdoc:springdoc-openapi-security',
+ 'org.mapstruct:mapstruct',
+
+ 'io.github.resilience4j:resilience4j-spring-boot2',
+ )
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
annotationProcessor 'org.mapstruct:mapstruct-processor'
-
+ implementation ('org.springframework.boot:spring-boot-starter-data-jpa') {
+ exclude group: 'org.hibernate'
+ }
+ implementation('org.eclipse.persistence:org.eclipse.persistence.jpa') {
+ exclude group: 'org.eclipse.persistence', module: 'jakarta.persistence'
+ }
// testCompile dependencies are ONLY used in src/test, not src/main.
// Do NOT repeat dependencies which are ALREADY in implementation or runtimeOnly!
//
diff --git a/fineract-investor/src/main/java/org/apache/fineract/investor/api/ExternalAssetOwnersApiResource.java b/fineract-investor/src/main/java/org/apache/fineract/investor/api/ExternalAssetOwnersApiResource.java
new file mode 100644
index 000000000..0213e26af
--- /dev/null
+++ b/fineract-investor/src/main/java/org/apache/fineract/investor/api/ExternalAssetOwnersApiResource.java
@@ -0,0 +1,79 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.fineract.investor.api;
+
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+import lombok.RequiredArgsConstructor;
+import org.apache.commons.lang3.NotImplementedException;
+import org.apache.fineract.infrastructure.security.service.PlatformUserRightsContext;
+import org.springframework.stereotype.Component;
+
+@Path("/external-asset-owners")
+@Component
+@Tag(name = "External Asset Owners", description = "External Asset Owners")
+@RequiredArgsConstructor
+public class ExternalAssetOwnersApiResource {
+
+ private final PlatformUserRightsContext platformUserRightsContext;
+
+ @POST
+ @Path("/transfers/loans/{loanId}")
+ @Consumes({ MediaType.APPLICATION_JSON })
+ @Produces({ MediaType.APPLICATION_JSON })
+ public String transferRequestWithLoanId(@PathParam("loanId") final Long loanId,
+ @QueryParam("command") @Parameter(description = "command") final String commandParam,
+ @Parameter(hidden = true) final String apiRequestBodyAsJson) {
+ platformUserRightsContext.isAuthenticated();
+
+ throw new NotImplementedException("Not implemented yet");
+ }
+
+ @POST
+ @Path("/transfers/loans//external-id/{loanExternalId}")
+ @Consumes({ MediaType.APPLICATION_JSON })
+ @Produces({ MediaType.APPLICATION_JSON })
+ public String transferRequestWithLoanExternalId(@PathParam("loanExternalId") final Long loanId,
+ @QueryParam("command") @Parameter(description = "command") final String commandParam,
+ @Parameter(hidden = true) final String apiRequestBodyAsJson) {
+ platformUserRightsContext.isAuthenticated();
+
+ throw new NotImplementedException("Not implemented yet");
+ }
+
+ @GET
+ @Path("/transfers")
+ @Produces({ MediaType.APPLICATION_JSON })
+ public String getTransfer(
+ @QueryParam("transferExternalId") @Parameter(description = "transferExternalId") final String transferExternalId,
+ @QueryParam("loanId") @Parameter(description = "loanId") final String loanId,
+ @QueryParam("loanExternalId") @Parameter(description = "loanExternalId") final String loanExternalId) {
+ platformUserRightsContext.isAuthenticated();
+
+ throw new NotImplementedException("Not implemented yet");
+ }
+}
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/financialactivityaccount/data/FinancialActivityData.java b/fineract-investor/src/main/java/org/apache/fineract/investor/data/ExternalTransferData.java
similarity index 57%
copy from fineract-provider/src/main/java/org/apache/fineract/accounting/financialactivityaccount/data/FinancialActivityData.java
copy to fineract-investor/src/main/java/org/apache/fineract/investor/data/ExternalTransferData.java
index 004f9c0aa..83dec6e34 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/accounting/financialactivityaccount/data/FinancialActivityData.java
+++ b/fineract-investor/src/main/java/org/apache/fineract/investor/data/ExternalTransferData.java
@@ -16,15 +16,24 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.fineract.accounting.financialactivityaccount.data;
+package org.apache.fineract.investor.data;
+import java.math.BigDecimal;
+import java.time.LocalDate;
import lombok.Data;
-import org.apache.fineract.accounting.glaccount.domain.GLAccountType;
@Data
-public class FinancialActivityData {
+public class ExternalTransferData {
- private final Integer id;
- private final String name;
- private final GLAccountType mappedGLAccountType;
+ private final Long transferId;
+ private final ExternalTransferOwnerData owner;
+ private final ExternalTransferLoanMappingData loan;
+ private final String transferExternalId;
+ private final BigDecimal purchasePriceRatio;
+ private final LocalDate settlementDate;
+ private final ExternalTransferStatus status;
+ private final LocalDate effectiveFrom;
+ private final LocalDate effectiveTo;
+ private final String dateFormat;
+ private final String locale;
}
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/financialactivityaccount/data/FinancialActivityData.java b/fineract-investor/src/main/java/org/apache/fineract/investor/data/ExternalTransferLoanMappingData.java
similarity index 74%
copy from fineract-provider/src/main/java/org/apache/fineract/accounting/financialactivityaccount/data/FinancialActivityData.java
copy to fineract-investor/src/main/java/org/apache/fineract/investor/data/ExternalTransferLoanMappingData.java
index 004f9c0aa..0dfd8fa8d 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/accounting/financialactivityaccount/data/FinancialActivityData.java
+++ b/fineract-investor/src/main/java/org/apache/fineract/investor/data/ExternalTransferLoanMappingData.java
@@ -16,15 +16,13 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.fineract.accounting.financialactivityaccount.data;
+package org.apache.fineract.investor.data;
import lombok.Data;
-import org.apache.fineract.accounting.glaccount.domain.GLAccountType;
@Data
-public class FinancialActivityData {
+public class ExternalTransferLoanMappingData {
- private final Integer id;
- private final String name;
- private final GLAccountType mappedGLAccountType;
+ private final Long loanId;
+ private final String externalId;
}
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/financialactivityaccount/data/FinancialActivityData.java b/fineract-investor/src/main/java/org/apache/fineract/investor/data/ExternalTransferOwnerData.java
similarity index 74%
copy from fineract-provider/src/main/java/org/apache/fineract/accounting/financialactivityaccount/data/FinancialActivityData.java
copy to fineract-investor/src/main/java/org/apache/fineract/investor/data/ExternalTransferOwnerData.java
index 004f9c0aa..edc1602bd 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/accounting/financialactivityaccount/data/FinancialActivityData.java
+++ b/fineract-investor/src/main/java/org/apache/fineract/investor/data/ExternalTransferOwnerData.java
@@ -16,15 +16,12 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.fineract.accounting.financialactivityaccount.data;
+package org.apache.fineract.investor.data;
import lombok.Data;
-import org.apache.fineract.accounting.glaccount.domain.GLAccountType;
@Data
-public class FinancialActivityData {
+public class ExternalTransferOwnerData {
- private final Integer id;
- private final String name;
- private final GLAccountType mappedGLAccountType;
+ private final String externalId;
}
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/CommandSerializer.java b/fineract-investor/src/main/java/org/apache/fineract/investor/data/ExternalTransferStatus.java
similarity index 72%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/CommandSerializer.java
rename to fineract-investor/src/main/java/org/apache/fineract/investor/data/ExternalTransferStatus.java
index b06b1f433..74a410cdf 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/CommandSerializer.java
+++ b/fineract-investor/src/main/java/org/apache/fineract/investor/data/ExternalTransferStatus.java
@@ -16,18 +16,8 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.fineract.infrastructure.core.serialization;
+package org.apache.fineract.investor.data;
-/**
- * Service for serializing commands into another format.
- *
- * <p>
- * Known implementations:
- * </p>
- *
- * @see CommandSerializerDefaultToJson
- */
-public interface CommandSerializer {
-
- String serializeCommandToJson(Object command);
+public enum ExternalTransferStatus {
+ ACTIVE, DECLINED, PENDING, BUYBACK, CANCELLED
}
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/data/EnumOptionData.java b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwner.java
similarity index 58%
copy from fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/data/EnumOptionData.java
copy to fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwner.java
index 6f2251e9f..ba186a81b 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/data/EnumOptionData.java
+++ b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwner.java
@@ -16,24 +16,25 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.fineract.infrastructure.core.data;
+package org.apache.fineract.investor.domain;
-import java.io.Serializable;
-import lombok.AllArgsConstructor;
-import lombok.EqualsAndHashCode;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import lombok.AccessLevel;
import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.apache.fineract.infrastructure.core.domain.AbstractAuditableCustom;
-/**
- * <p>
- * Immutable data object representing generic enumeration value.
- * </p>
- */
@Getter
-@EqualsAndHashCode
-@AllArgsConstructor
-public class EnumOptionData implements Serializable {
+@Setter
+@Entity
+@NoArgsConstructor(access = AccessLevel.PROTECTED)
+@Table(name = "m_external_asset_owner")
+public class ExternalAssetOwner extends AbstractAuditableCustom {
+
+ @Column(name = "external_id", nullable = false, length = 100, unique = true)
+ private String externalId;
- private final Long id;
- private final String code;
- private final String value;
}
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/financialactivityaccount/data/FinancialActivityData.java b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerRepository.java
similarity index 71%
copy from fineract-provider/src/main/java/org/apache/fineract/accounting/financialactivityaccount/data/FinancialActivityData.java
copy to fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerRepository.java
index 004f9c0aa..eee4e5d8e 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/accounting/financialactivityaccount/data/FinancialActivityData.java
+++ b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerRepository.java
@@ -16,15 +16,12 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.fineract.accounting.financialactivityaccount.data;
+package org.apache.fineract.investor.domain;
-import lombok.Data;
-import org.apache.fineract.accounting.glaccount.domain.GLAccountType;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
-@Data
-public class FinancialActivityData {
+public interface ExternalAssetOwnerRepository
+ extends JpaRepository<ExternalAssetOwner, Long>, JpaSpecificationExecutor<ExternalAssetOwner> {
- private final Integer id;
- private final String name;
- private final GLAccountType mappedGLAccountType;
}
diff --git a/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerTransfer.java b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerTransfer.java
new file mode 100644
index 000000000..a638ec802
--- /dev/null
+++ b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerTransfer.java
@@ -0,0 +1,60 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.fineract.investor.domain;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import lombok.AccessLevel;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.apache.fineract.infrastructure.core.domain.AbstractAuditableCustom;
+
+@Getter
+@Setter
+@Table(name = "m_external_asset_owner_transfer")
+@NoArgsConstructor(access = AccessLevel.PROTECTED)
+@Entity
+public class ExternalAssetOwnerTransfer extends AbstractAuditableCustom {
+
+ @Column(name = "owner_id")
+ private Long ownerId;
+
+ @Column(name = "external_id", length = 100)
+ private String externalId;
+
+ @Column(name = "status", length = 50)
+ private String status;
+
+ @Column(name = "purchase_price_ratio", precision = 19, scale = 6)
+ private BigDecimal purchasePriceRatio;
+
+ @Column(name = "settlement_date")
+ private LocalDate settlementDate;
+
+ @Column(name = "effective_date_from")
+ private LocalDate effectiveDateFrom;
+
+ @Column(name = "effective_date_to")
+ private LocalDate effectiveDateTo;
+
+}
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/data/EnumOptionData.java b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerTransferLoanMapping.java
similarity index 55%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/data/EnumOptionData.java
rename to fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerTransferLoanMapping.java
index 6f2251e9f..37a9d4ac3 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/data/EnumOptionData.java
+++ b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerTransferLoanMapping.java
@@ -16,24 +16,28 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.fineract.infrastructure.core.data;
+package org.apache.fineract.investor.domain;
-import java.io.Serializable;
-import lombok.AllArgsConstructor;
-import lombok.EqualsAndHashCode;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import lombok.AccessLevel;
import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.apache.fineract.infrastructure.core.domain.AbstractAuditableCustom;
-/**
- * <p>
- * Immutable data object representing generic enumeration value.
- * </p>
- */
@Getter
-@EqualsAndHashCode
-@AllArgsConstructor
-public class EnumOptionData implements Serializable {
+@Setter
+@Table(name = "m_external_asset_owner_transfer_loan_mapping")
+@NoArgsConstructor(access = AccessLevel.PROTECTED)
+@Entity
+public class ExternalAssetOwnerTransferLoanMapping extends AbstractAuditableCustom {
+
+ @Column(name = "loan_id", nullable = false)
+ private Long loanId;
+
+ @Column(name = "owner_transfer_id")
+ private Long ownerTransferId;
- private final Long id;
- private final String code;
- private final String value;
}
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/financialactivityaccount/data/FinancialActivityData.java b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerTransferRepository.java
similarity index 69%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/financialactivityaccount/data/FinancialActivityData.java
rename to fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerTransferRepository.java
index 004f9c0aa..68675d870 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/accounting/financialactivityaccount/data/FinancialActivityData.java
+++ b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerTransferRepository.java
@@ -16,15 +16,12 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.fineract.accounting.financialactivityaccount.data;
+package org.apache.fineract.investor.domain;
-import lombok.Data;
-import org.apache.fineract.accounting.glaccount.domain.GLAccountType;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
-@Data
-public class FinancialActivityData {
+public interface ExternalAssetOwnerTransferRepository
+ extends JpaRepository<ExternalAssetOwnerTransfer, Long>, JpaSpecificationExecutor<ExternalAssetOwnerTransfer> {
- private final Integer id;
- private final String name;
- private final GLAccountType mappedGLAccountType;
}
diff --git a/fineract-investor/src/main/resources/db/changelog/tenant/module/investor/module-changelog-master.xml b/fineract-investor/src/main/resources/db/changelog/tenant/module/investor/module-changelog-master.xml
index 065386811..7f959be36 100644
--- a/fineract-investor/src/main/resources/db/changelog/tenant/module/investor/module-changelog-master.xml
+++ b/fineract-investor/src/main/resources/db/changelog/tenant/module/investor/module-changelog-master.xml
@@ -22,5 +22,6 @@
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.1.xsd">
- <include relativeToChangelogFile="true" file="parts/0001_initial_schema.xml" />
+ <include relativeToChangelogFile="true" file="parts/0001_initial_schema.xml"/>
+ <include relativeToChangelogFile="true" file="parts/0002_asset_schemas.xml"/>
</databaseChangeLog>
diff --git a/fineract-investor/src/main/resources/db/changelog/tenant/module/investor/parts/0002_asset_schemas.xml b/fineract-investor/src/main/resources/db/changelog/tenant/module/investor/parts/0002_asset_schemas.xml
new file mode 100644
index 000000000..1cb1f6c36
--- /dev/null
+++ b/fineract-investor/src/main/resources/db/changelog/tenant/module/investor/parts/0002_asset_schemas.xml
@@ -0,0 +1,220 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.1.xsd">
+
+ <!-- Create the m_external_asset_owner table -->
+ <changeSet author="fineract" id="1" context="postgresql">
+ <createTable tableName="m_external_asset_owner">
+ <column autoIncrement="true" name="id" type="BIGINT" remarks="Internal ID">
+ <constraints nullable="false" primaryKey="true"/>
+ </column>
+ <column name="external_id" type="varchar(100)" remarks="External id of asset owner">
+ <constraints nullable="false" unique="true"
+ uniqueConstraintName="UQ_external_asset_owner_external_id"/>
+ </column>
+ <column name="created_by" type="bigint" remarks=""/>
+ <column name="created_on_utc" type="TIMESTAMP WITH TIME ZONE" remarks=""/>
+ <column name="last_modified_by" type="bigint" remarks=""/>
+ <column name="last_modified_on_utc" type="TIMESTAMP WITH TIME ZONE" remarks=""/>
+ </createTable>
+ </changeSet>
+
+ <changeSet author="fineract" id="1" context="mysql">
+ <createTable tableName="m_external_asset_owner">
+ <column autoIncrement="true" name="id" type="BIGINT" remarks="Internal ID">
+ <constraints nullable="false" primaryKey="true"/>
+ </column>
+ <column name="external_id" type="varchar(100)" remarks="External id of asset owner">
+ <constraints nullable="false" unique="true"
+ uniqueConstraintName="UQ_external_asset_owner_external_id"/>
+ </column>
+ <column name="created_by" type="bigint" remarks=""/>
+ <column name="created_on_utc" type="DATETIME" remarks=""/>
+ <column name="last_modified_by" type="bigint" remarks=""/>
+ <column name="last_modified_on_utc" type="DATETIME" remarks=""/>
+ </createTable>
+ </changeSet>
+
+ <changeSet author="fineract" id="2">
+ <addForeignKeyConstraint baseColumnNames="created_by" baseTableName="m_external_asset_owner"
+ constraintName="FK_external_asset_owner_created_by" deferrable="false"
+ initiallyDeferred="false"
+ onDelete="RESTRICT" onUpdate="RESTRICT" referencedColumnNames="id"
+ referencedTableName="m_appuser" validate="true"/>
+ <addForeignKeyConstraint baseColumnNames="last_modified_by"
+ baseTableName="m_external_asset_owner"
+ constraintName="FK_external_asset_owner_modified_by" deferrable="false"
+ initiallyDeferred="false"
+ onDelete="RESTRICT" onUpdate="RESTRICT" referencedColumnNames="id"
+ referencedTableName="m_appuser" validate="true"/>
+ </changeSet>
+
+ <!-- Create m_external_asset_owner_transfer table -->
+ <changeSet author="fineract" id="3" context="mysql">
+ <createTable tableName="m_external_asset_owner_transfer">
+ <column autoIncrement="true" name="id" type="BIGINT" remarks="Internal ID">
+ <constraints nullable="false" primaryKey="true"/>
+ </column>
+ <column name="owner_id" type="BIGINT"/>
+ <column name="external_id" type="VARCHAR(100)"/>
+ <column name="status" type="VARCHAR(50)"/>
+ <column name="purchase_price_ratio" type="NUMERIC(19,6)"/>
+ <column name="settlement_date" type="DATE"/>
+ <column name="effective_date_from" type="DATE"/>
+ <column name="effective_date_to" type="DATe"/>
+ <column name="created_by" type="bigint" remarks=""/>
+ <column name="created_on_utc" type="DATETIME" remarks=""/>
+ <column name="last_modified_by" type="bigint" remarks=""/>
+ <column name="last_modified_on_utc" type="DATETIME" remarks=""/>
+ </createTable>
+ </changeSet>
+
+ <changeSet author="fineract" id="3" context="postgresql">
+ <createTable tableName="m_external_asset_owner_transfer">
+ <column autoIncrement="true" name="id" type="BIGINT" remarks="Internal ID">
+ <constraints nullable="false" primaryKey="true"/>
+ </column>
+ <column name="owner_id" type="BIGINT"/>
+ <column name="external_id" type="VARCHAR(100)"/>
+ <column name="status" type="VARCHAR(50)"/>
+ <column name="purchase_price_ratio" type="NUMERIC(19,6)"/>
+ <column name="settlement_date" type="DATE"/>
+ <column name="effective_date_from" type="DATE"/>
+ <column name="effective_date_to" type="DATe"/>
+ <column name="created_by" type="bigint" remarks=""/>
+ <column name="created_on_utc" type="TIMESTAMP WITH TIME ZONE" remarks=""/>
+ <column name="last_modified_by" type="bigint" remarks=""/>
+ <column name="last_modified_on_utc" type="TIMESTAMP WITH TIME ZONE" remarks=""/>
+ </createTable>
+ </changeSet>
+
+ <changeSet author="fineract" id="4">
+ <createIndex tableName="m_external_asset_owner_transfer"
+ indexName="external_asset_owner_transfer_external_id">
+ <column name="external_id"/>
+ </createIndex>
+ <createIndex tableName="m_external_asset_owner_transfer"
+ indexName="external_asset_owner_transfer_status">
+ <column name="status"/>
+ </createIndex>
+ <createIndex tableName="m_external_asset_owner_transfer"
+ indexName="external_asset_owner_transfer_settlement_date">
+ <column name="settlement_date"/>
+ </createIndex>
+ <createIndex tableName="m_external_asset_owner_transfer"
+ indexName="external_asset_owner_transfer_effective_date_from">
+ <column name="effective_date_from"/>
+ </createIndex>
+ <createIndex tableName="m_external_asset_owner_transfer"
+ indexName="external_asset_owner_transfer_effective_date_to">
+ <column name="effective_date_to"/>
+ </createIndex>
+
+ <addForeignKeyConstraint baseColumnNames="created_by"
+ baseTableName="m_external_asset_owner_transfer"
+ constraintName="FK_external_asset_owner_transfer_created_by" deferrable="false"
+ initiallyDeferred="false"
+ onDelete="RESTRICT" onUpdate="RESTRICT" referencedColumnNames="id"
+ referencedTableName="m_appuser" validate="true"/>
+ <addForeignKeyConstraint baseColumnNames="last_modified_by"
+ baseTableName="m_external_asset_owner_transfer"
+ constraintName="FK_external_asset_owner_transfer_modified_by" deferrable="false"
+ initiallyDeferred="false"
+ onDelete="RESTRICT" onUpdate="RESTRICT" referencedColumnNames="id"
+ referencedTableName="m_appuser" validate="true"/>
+
+ <addForeignKeyConstraint baseColumnNames="owner_id"
+ baseTableName="m_external_asset_owner_transfer"
+ constraintName="FK_external_asset_owner_transfer_owner_id" deferrable="false"
+ initiallyDeferred="false"
+ onDelete="RESTRICT" onUpdate="RESTRICT" referencedColumnNames="id"
+ referencedTableName="m_external_asset_owner" validate="true"/>
+ </changeSet>
+
+ <!-- Create table m_external_asset_owner_transfer_loan_mapping -->
+
+ <changeSet author="fineract" id="5" context="mysql">
+ <createTable tableName="m_external_asset_owner_transfer_loan_mapping">
+ <column autoIncrement="true" name="id" type="BIGINT" remarks="Internal ID">
+ <constraints nullable="false" primaryKey="true"/>
+ </column>
+ <column name="loan_id" type="bigint" remarks="Loan ID">
+ <constraints nullable="false"/>
+ </column>
+ <column name="owner_transfer_id" type="bigint" remarks="Owner">
+ </column>
+ <column name="created_by" type="bigint" remarks=""/>
+ <column name="created_on_utc" type="DATETIME" remarks=""/>
+ <column name="last_modified_by" type="bigint" remarks=""/>
+ <column name="last_modified_on_utc" type="DATETIME" remarks=""/>
+ </createTable>
+ </changeSet>
+
+ <changeSet author="fineract" id="5" context="postgresql">
+ <createTable tableName="m_external_asset_owner_transfer_loan_mapping">
+ <column autoIncrement="true" name="id" type="BIGINT" remarks="Internal ID">
+ <constraints nullable="false" primaryKey="true"/>
+ </column>
+ <column name="loan_id" type="bigint" remarks="Loan ID">
+ <constraints nullable="false"/>
+ </column>
+ <column name="owner_transfer_id" type="bigint" remarks="Owner">
+ </column>
+ <column name="created_by" type="bigint" remarks=""/>
+ <column name="created_on_utc" type="TIMESTAMP WITH TIME ZONE" remarks=""/>
+ <column name="last_modified_by" type="bigint" remarks=""/>
+ <column name="last_modified_on_utc" type="TIMESTAMP WITH TIME ZONE" remarks=""/>
+ </createTable>
+ </changeSet>
+
+ <changeSet author="fineract" id="6">
+ <addForeignKeyConstraint baseColumnNames="created_by"
+ baseTableName="m_external_asset_owner_transfer_loan_mapping"
+ constraintName="FK_external_asset_owner_transfer_loan_mapping_created_by" deferrable="false"
+ initiallyDeferred="false"
+ onDelete="RESTRICT" onUpdate="RESTRICT" referencedColumnNames="id"
+ referencedTableName="m_appuser" validate="true"/>
+ <addForeignKeyConstraint baseColumnNames="last_modified_by"
+ baseTableName="m_external_asset_owner_transfer_loan_mapping"
+ constraintName="FK_external_asset_owner_transfer_loan_mapping_modified_by" deferrable="false"
+ initiallyDeferred="false"
+ onDelete="RESTRICT" onUpdate="RESTRICT" referencedColumnNames="id"
+ referencedTableName="m_appuser" validate="true"/>
+
+ <addForeignKeyConstraint baseColumnNames="loan_id"
+ baseTableName="m_external_asset_owner_transfer_loan_mapping"
+ constraintName="FK_external_asset_owner_transfer_loan_mapping_loan_id" deferrable="false"
+ initiallyDeferred="false"
+ onDelete="RESTRICT" onUpdate="RESTRICT" referencedColumnNames="id"
+ referencedTableName="m_loan" validate="true"/>
+ <addForeignKeyConstraint baseColumnNames="owner_transfer_id"
+ baseTableName="m_external_asset_owner_transfer_loan_mapping"
+ constraintName="FK_external_asset_owner_transfer_loan_mapping_owner_transfer_id"
+ deferrable="false" initiallyDeferred="false"
+ onDelete="RESTRICT" onUpdate="RESTRICT" referencedColumnNames="id"
+ referencedTableName="m_external_asset_owner_transfer" validate="true"/>
+ </changeSet>
+
+
+</databaseChangeLog>
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/PlatformSecurityContext.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/PlatformSecurityContext.java
index 55831ce21..c02bce647 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/PlatformSecurityContext.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/PlatformSecurityContext.java
@@ -21,7 +21,7 @@ package org.apache.fineract.infrastructure.security.service;
import org.apache.fineract.commands.domain.CommandWrapper;
import org.apache.fineract.useradministration.domain.AppUser;
-public interface PlatformSecurityContext {
+public interface PlatformSecurityContext extends PlatformUserRightsContext {
AppUser authenticatedUser();
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/SpringSecurityPlatformSecurityContext.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/SpringSecurityPlatformSecurityContext.java
index 3052ca416..2c44e11da 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/SpringSecurityPlatformSecurityContext.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/SpringSecurityPlatformSecurityContext.java
@@ -78,6 +78,11 @@ public class SpringSecurityPlatformSecurityContext implements PlatformSecurityCo
return currentUser;
}
+ @Override
+ public void isAuthenticated() {
+ authenticatedUser();
+ }
+
@Override
public AppUser getAuthenticatedUserIfPresent() {