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 9fee79ecde9aaaff690e5f1913ef5fc75682d935
Author: Arnold Galovics <[email protected]>
AuthorDate: Tue May 16 17:19:10 2023 +0200

    FINERACT-1926: Minor fixes with module static weaving
---
 fineract-investor/build.gradle                     | 19 +++++++++++
 .../api/ExternalAssetOwnersApiResource.java        |  2 +-
 .../investor}/domain/AbstractAuditableCustom.java  | 14 ++------
 .../domain/AbstractPersistableCustom.java          | 12 ++-----
 .../investor/domain/ExternalAssetOwner.java        |  1 -
 .../domain/ExternalAssetOwnerTransfer.java         |  1 -
 .../ExternalAssetOwnerTransferLoanMapping.java     |  1 -
 .../main/resources/jpa/investor/persistence.xml    | 37 ++++++++++++++++++++++
 .../core/domain/AbstractAuditableCustom.java       |  2 ++
 .../core/domain/AbstractPersistableCustom.java     |  2 ++
 10 files changed, 67 insertions(+), 24 deletions(-)

diff --git a/fineract-investor/build.gradle b/fineract-investor/build.gradle
index 3d5d695d5..d6e05c3fd 100644
--- a/fineract-investor/build.gradle
+++ b/fineract-investor/build.gradle
@@ -23,6 +23,25 @@ apply plugin: 'eclipse'
 
 check.dependsOn('cucumber')
 
+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, '-classpath', 
sourceSets.main.runtimeClasspath, source, target
+        classpath sourceSets.main.runtimeClasspath
+    }
+    delete {
+        delete "${source}/META-INF/persistence.xml"
+    }
+}
+
 // 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
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
index 0213e26af..09744ce19 100644
--- 
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
@@ -33,7 +33,7 @@ import org.apache.commons.lang3.NotImplementedException;
 import 
org.apache.fineract.infrastructure.security.service.PlatformUserRightsContext;
 import org.springframework.stereotype.Component;
 
-@Path("/external-asset-owners")
+@Path("/v1/external-asset-owners")
 @Component
 @Tag(name = "External Asset Owners", description = "External Asset Owners")
 @RequiredArgsConstructor
diff --git 
a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableCustom.java
 
b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/AbstractAuditableCustom.java
similarity index 83%
copy from 
fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableCustom.java
copy to 
fineract-investor/src/main/java/org/apache/fineract/investor/domain/AbstractAuditableCustom.java
index 01a229849..a7b782623 100644
--- 
a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableCustom.java
+++ 
b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/AbstractAuditableCustom.java
@@ -16,25 +16,17 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.fineract.infrastructure.core.domain;
+package org.apache.fineract.investor.domain;
 
 import java.time.LocalDateTime;
 import java.util.Optional;
 import javax.persistence.Column;
 import javax.persistence.MappedSuperclass;
 import org.springframework.data.domain.Auditable;
-import org.springframework.data.jpa.domain.AbstractAuditable;
 
 /**
- * A custom copy of {@link AbstractAuditable} to override the column names 
used on database. It also uses Instant
- * instead of LocalDateTime for created and modified.
- *
- * Abstract base class for auditable entities. Stores the audit values in 
persistent fields.
- *
- * @param <U>
- *            the auditing type. Typically some kind of user.
- * @param <PK>
- *            the type of the auditing type's identifier
+ * This class is a copy paste from the fineract-provider module since 
EclipseLink not weaves the class properly if it's
+ * placed in the fineract-core module.
  */
 @MappedSuperclass
 public abstract class AbstractAuditableCustom extends 
AbstractPersistableCustom implements Auditable<Long, Long, LocalDateTime> {
diff --git 
a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractPersistableCustom.java
 
b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/AbstractPersistableCustom.java
similarity index 75%
copy from 
fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractPersistableCustom.java
copy to 
fineract-investor/src/main/java/org/apache/fineract/investor/domain/AbstractPersistableCustom.java
index 824374341..d9dfae037 100644
--- 
a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractPersistableCustom.java
+++ 
b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/AbstractPersistableCustom.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.fineract.infrastructure.core.domain;
+package org.apache.fineract.investor.domain;
 
 import java.io.Serializable;
 import javax.persistence.GeneratedValue;
@@ -33,14 +33,8 @@ import lombok.Setter;
 import org.springframework.data.domain.Persistable;
 
 /**
- * Abstract base class for entities.
- *
- * Inspired by {@link 
org.springframework.data.jpa.domain.AbstractPersistable}, but Id is always Long 
(and this class
- * thus does not require generic parameterization), and auto-generation is of 
strategy
- * {@link javax.persistence.GenerationType#IDENTITY}.
- *
- * The {@link #equals(Object)} and {@link #hashCode()} methods are NOT 
implemented here, which is untypical for JPA
- * (it's usually implemented based on the Id), because "we end up with issues 
on OpenJPA" (TODO clarify this).
+ * This class is a copy paste from the fineract-provider module since 
EclipseLink not weaves the class properly if it's
+ * placed in the fineract-core module.
  */
 @MappedSuperclass
 @Getter
diff --git 
a/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwner.java
 
b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwner.java
index ba186a81b..9214e61a2 100644
--- 
a/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwner.java
+++ 
b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwner.java
@@ -25,7 +25,6 @@ import lombok.AccessLevel;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
-import org.apache.fineract.infrastructure.core.domain.AbstractAuditableCustom;
 
 @Getter
 @Setter
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
index a638ec802..1cc9ca1cb 100644
--- 
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
@@ -27,7 +27,6 @@ import lombok.AccessLevel;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
-import org.apache.fineract.infrastructure.core.domain.AbstractAuditableCustom;
 
 @Getter
 @Setter
diff --git 
a/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerTransferLoanMapping.java
 
b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerTransferLoanMapping.java
index 37a9d4ac3..129e7a089 100644
--- 
a/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerTransferLoanMapping.java
+++ 
b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerTransferLoanMapping.java
@@ -25,7 +25,6 @@ import lombok.AccessLevel;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
-import org.apache.fineract.infrastructure.core.domain.AbstractAuditableCustom;
 
 @Getter
 @Setter
diff --git a/fineract-investor/src/main/resources/jpa/investor/persistence.xml 
b/fineract-investor/src/main/resources/jpa/investor/persistence.xml
new file mode 100644
index 000000000..105688157
--- /dev/null
+++ b/fineract-investor/src/main/resources/jpa/investor/persistence.xml
@@ -0,0 +1,37 @@
+<?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.
+
+-->
+
+
+<persistence version="2.0"
+    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";>
+
+    <!--  This file is only used for static weaving, nothing more.  -->
+    <!--  You can find the runtime configuration in the JPAConfig class  -->
+    <persistence-unit name="jpa-pu" transaction-type="RESOURCE_LOCAL">
+        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
+        <exclude-unlisted-classes>false</exclude-unlisted-classes>
+        <properties>
+            <property name="eclipselink.weaving" value="static" />
+        </properties>
+    </persistence-unit>
+</persistence>
diff --git 
a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableCustom.java
 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableCustom.java
similarity index 97%
rename from 
fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableCustom.java
rename to 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableCustom.java
index 01a229849..dcb4708d4 100644
--- 
a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableCustom.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableCustom.java
@@ -26,6 +26,8 @@ import org.springframework.data.domain.Auditable;
 import org.springframework.data.jpa.domain.AbstractAuditable;
 
 /**
+ * Make sure to modify the same class in the modules (fineract-investor, etc)
+ *
  * A custom copy of {@link AbstractAuditable} to override the column names 
used on database. It also uses Instant
  * instead of LocalDateTime for created and modified.
  *
diff --git 
a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractPersistableCustom.java
 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractPersistableCustom.java
similarity index 96%
rename from 
fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractPersistableCustom.java
rename to 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractPersistableCustom.java
index 824374341..f313893ca 100644
--- 
a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractPersistableCustom.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractPersistableCustom.java
@@ -33,6 +33,8 @@ import lombok.Setter;
 import org.springframework.data.domain.Persistable;
 
 /**
+ * Make sure to modify the same class in the modules (fineract-investor, etc)
+ *
  * Abstract base class for entities.
  *
  * Inspired by {@link 
org.springframework.data.jpa.domain.AbstractPersistable}, but Id is always Long 
(and this class

Reply via email to