This is an automated email from the ASF dual-hosted git repository.

ilgrosso pushed a commit to branch 3_0_X
in repository https://gitbox.apache.org/repos/asf/syncope.git


The following commit(s) were added to refs/heads/3_0_X by this push:
     new 8dfa6b78ff [SYNCOPE-1752] Handling fullPath updates for descendant 
Realms
8dfa6b78ff is described below

commit 8dfa6b78ff6773a7c25842f5d7bcba0b2edfb7bc
Author: Francesco Chicchiriccò <ilgro...@apache.org>
AuthorDate: Thu Apr 20 18:05:26 2023 +0200

    [SYNCOPE-1752] Handling fullPath updates for descendant Realms
---
 .../syncope/core/persistence/jpa/dao/JPARealmDAO.java     | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARealmDAO.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARealmDAO.java
index 7ed9a96d0e..db8bb71b0b 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARealmDAO.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARealmDAO.java
@@ -286,8 +286,19 @@ public class JPARealmDAO extends AbstractDAO<Realm> 
implements RealmDAO {
 
     @Override
     public Realm save(final Realm realm) {
-        ((JPARealm) realm).setFullPath(buildFullPath(realm));
-        return entityManager().merge(realm);
+        String fullPathBefore = realm.getFullPath();
+        String fullPathAfter = buildFullPath(realm);
+        if (!fullPathAfter.equals(fullPathBefore)) {
+            ((JPARealm) realm).setFullPath(fullPathAfter);
+        }
+
+        Realm merged = entityManager().merge(realm);
+
+        if (!fullPathAfter.equals(fullPathBefore)) {
+            findChildren(realm).forEach(this::save);
+        }
+
+        return merged;
     }
 
     @Override

Reply via email to