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

commit d9b9238e8004cad1f7b7556e3c66fb9c189e0d4d
Author: Francesco Chicchiriccò <[email protected]>
AuthorDate: Thu Oct 31 10:35:19 2024 +0100

    [SYNCOPE-1719] Long-waiting fix for Console and Enduser
---
 .../commons/wizards/any/AbstractGroupsModel.java   | 29 +++----
 .../syncope/client/console/wizards/any/Groups.java | 68 ++++------------
 .../syncope/client/enduser/panels/any/Groups.java  | 37 +--------
 .../persistence/api/dao/search/AssignableCond.java | 92 ----------------------
 4 files changed, 31 insertions(+), 195 deletions(-)

diff --git 
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/wizards/any/AbstractGroupsModel.java
 
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/wizards/any/AbstractGroupsModel.java
index 66d799f4c7..395db18d56 100644
--- 
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/wizards/any/AbstractGroupsModel.java
+++ 
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/wizards/any/AbstractGroupsModel.java
@@ -31,22 +31,17 @@ public abstract class AbstractGroupsModel extends 
ListModel<GroupTO> {
 
     protected List<MembershipTO> memberships;
 
-    protected String realm;
-
-    @Override
-    public List<GroupTO> getObject() {
-        reload();
-        return groups;
-    }
-
     /**
      * Retrieve the first MAX_GROUP_LIST_CARDINALITY assignable.
      */
     protected abstract void reloadObject();
 
-    public List<MembershipTO> getMemberships() {
-        reload();
-        return memberships;
+    @Override
+    public List<GroupTO> getObject() {
+        if (groups == null) {
+            reloadObject();
+        }
+        return groups;
     }
 
     /**
@@ -54,15 +49,17 @@ public abstract class AbstractGroupsModel extends 
ListModel<GroupTO> {
      */
     protected abstract void reloadMemberships();
 
-    public abstract List<String> getDynMemberships();
+    public List<MembershipTO> getMemberships() {
+        if (memberships == null) {
+            reloadMemberships();
+        }
+        return memberships;
+    }
 
     /**
      * Retrieve dyn group memberships.
      */
     protected abstract void reloadDynMemberships();
 
-    /**
-     * Reload data if the realm changes (see SYNCOPE-1135).
-     */
-    protected abstract void reload();
+    public abstract List<String> getDynMemberships();
 }
diff --git 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/Groups.java
 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/Groups.java
index ac6ff5496f..e1c83b6209 100644
--- 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/Groups.java
+++ 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/Groups.java
@@ -28,7 +28,6 @@ import org.apache.commons.lang3.StringUtils;
 import org.apache.cxf.jaxrs.ext.search.client.CompleteCondition;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.SyncopeWebApplication;
-import org.apache.syncope.client.console.commons.RealmsUtils;
 import org.apache.syncope.client.console.rest.GroupRestClient;
 import org.apache.syncope.client.console.rest.SyncopeRestClient;
 import org.apache.syncope.client.lib.SyncopeClient;
@@ -92,8 +91,9 @@ public class Groups extends AbstractGroups {
         addDynamicRealmsContainer();
     }
 
-    protected List<GroupTO> searchAssignable(final String realm, final String 
term) {
-        return syncopeRestClient.searchAssignableGroups(realm, term, 1, 
Constants.MAX_GROUP_LIST_SIZE);
+    protected List<GroupTO> searchAssignable(final String term) {
+        return syncopeRestClient.searchAssignableGroups(
+                SyncopeConstants.ROOT_REALM, term, 1, 
Constants.MAX_GROUP_LIST_SIZE);
     }
 
     @Override
@@ -157,7 +157,7 @@ public class Groups extends AbstractGroups {
                             ? List.of()
                             : ("*".equals(filter)
                                     ? groupsModel.getObject()
-                                    : searchAssignable(anyTO.getRealm(), 
filter)).stream().
+                                    : searchAssignable(filter)).stream().
                                     map(group -> new 
MembershipTO.Builder(group.getKey()).
                                     groupName(group.getName()).build()).
                                     collect(Collectors.toList());
@@ -200,32 +200,14 @@ public class Groups extends AbstractGroups {
 
         private static final long serialVersionUID = -4541954630939063927L;
 
-        protected List<GroupTO> groupsObj;
-
-        protected List<MembershipTO> membershipsObj;
-
-        protected List<String> dynMembershipsObj;
-
-        protected String realmObj;
-
-        @Override
-        public List<GroupTO> getObject() {
-            reload();
-            return groupsObj;
-        }
+        protected List<String> dynMemberships;
 
         /**
          * Retrieve the first MAX_GROUP_LIST_SIZE assignable.
          */
         @Override
         protected void reloadObject() {
-            groupsObj = searchAssignable(realmObj, null);
-        }
-
-        @Override
-        public List<MembershipTO> getMemberships() {
-            reload();
-            return membershipsObj;
+            groups = searchAssignable(null);
         }
 
         /**
@@ -251,7 +233,7 @@ public class Groups extends AbstractGroups {
 
                 if (!conditions.isEmpty()) {
                     assignedGroups.putAll(groupRestClient.search(
-                            realmObj,
+                            SyncopeConstants.ROOT_REALM,
                             builder.or(conditions).query(),
                             1,
                             Constants.MAX_GROUP_LIST_SIZE,
@@ -266,19 +248,10 @@ public class Groups extends AbstractGroups {
                     forEach(m -> 
m.setGroupName(assignedGroups.get(m.getGroupKey())));
             GroupableRelatableTO.class.cast(anyTO).getMemberships().removeIf(m 
-> m.getGroupName() == null);
 
-            membershipsObj = 
GroupableRelatableTO.class.cast(anyTO).getMemberships();
-            
membershipsObj.sort(Comparator.comparing(MembershipTO::getGroupName));
-        }
-
-        @Override
-        public List<String> getDynMemberships() {
-            reload();
-            return dynMembershipsObj;
+            memberships = 
GroupableRelatableTO.class.cast(anyTO).getMemberships();
+            memberships.sort(Comparator.comparing(MembershipTO::getGroupName));
         }
 
-        /**
-         * Retrieve dyn group memberships.
-         */
         @Override
         protected void reloadDynMemberships() {
             GroupFiqlSearchConditionBuilder builder = 
SyncopeClient.getGroupSearchConditionBuilder();
@@ -288,9 +261,9 @@ public class Groups extends AbstractGroups {
                     equalTo(membership.getGroupKey()).wrap()).
                     collect(Collectors.toList());
 
-            dynMembershipsObj = new ArrayList<>();
+            dynMemberships = new ArrayList<>();
             if 
(SyncopeConsoleSession.get().owns(IdRepoEntitlement.GROUP_SEARCH) && 
!conditions.isEmpty()) {
-                dynMembershipsObj.addAll(groupRestClient.search(
+                dynMemberships.addAll(groupRestClient.search(
                         SyncopeConstants.ROOT_REALM,
                         builder.or(conditions).query(),
                         -1,
@@ -300,25 +273,12 @@ public class Groups extends AbstractGroups {
             }
         }
 
-        /**
-         * Reload data if the realm changes (see SYNCOPE-1135).
-         */
         @Override
-        protected void reload() {
-            boolean reload;
-            if (Groups.this.templateMode) {
-                reload = realmObj == null;
-                realmObj = SyncopeConstants.ROOT_REALM;
-            } else {
-                reload = 
!Groups.this.anyTO.getRealm().equalsIgnoreCase(realmObj);
-                realmObj = 
RealmsUtils.getFullPath(Groups.this.anyTO.getRealm());
-            }
-
-            if (reload) {
-                reloadObject();
-                reloadMemberships();
+        public List<String> getDynMemberships() {
+            if (dynMemberships == null) {
                 reloadDynMemberships();
             }
+            return dynMemberships;
         }
     }
 }
diff --git 
a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/any/Groups.java
 
b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/any/Groups.java
index 6de07c2974..c767c3544d 100644
--- 
a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/any/Groups.java
+++ 
b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/any/Groups.java
@@ -28,6 +28,7 @@ import 
org.apache.syncope.client.ui.commons.markup.html.form.AjaxPalettePanel;
 import org.apache.syncope.client.ui.commons.wizards.any.AbstractGroupsModel;
 import org.apache.syncope.client.ui.commons.wizards.any.AnyWrapper;
 import org.apache.syncope.client.ui.commons.wizards.any.UserWrapper;
+import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.to.AnyTO;
 import org.apache.syncope.common.lib.to.GroupTO;
 import org.apache.syncope.common.lib.to.GroupableRelatableTO;
@@ -174,30 +175,18 @@ public class Groups extends Panel {
 
         private static final long serialVersionUID = -4541954630939063927L;
 
-        @Override
-        public List<GroupTO> getObject() {
-            reload();
-            return groups;
-        }
-
         /**
          * Retrieve the first MAX_GROUP_LIST_CARDINALITY assignable.
          */
         @Override
         protected void reloadObject() {
             groups = groupRestClient.searchAssignableGroups(
-                    realm,
+                    SyncopeConstants.ROOT_REALM,
                     null,
                     1,
                     MAX_GROUP_LIST_CARDINALITY);
         }
 
-        @Override
-        public List<MembershipTO> getMemberships() {
-            reload();
-            return memberships;
-        }
-
         /**
          * Retrieve group memberships.
          */
@@ -206,32 +195,14 @@ public class Groups extends Panel {
             memberships = 
GroupableRelatableTO.class.cast(anyTO).getMemberships();
         }
 
-        @Override
-        public List<String> getDynMemberships() {
-            return List.of();
-        }
-
-        /**
-         * Retrieve dyn group memberships.
-         */
         @Override
         protected void reloadDynMemberships() {
             // DO NOTHING
         }
 
-        /**
-         * Reload data if the realm changes (see SYNCOPE-1135).
-         */
         @Override
-        protected void reload() {
-            boolean reload = Groups.this.anyTO.getRealm() != null
-                    && !Groups.this.anyTO.getRealm().equalsIgnoreCase(realm);
-            realm = Groups.this.anyTO.getRealm();
-
-            if (reload) {
-                reloadObject();
-                reloadMemberships();
-            }
+        public List<String> getDynMemberships() {
+            return List.of();
         }
     }
 }
diff --git 
a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/AssignableCond.java
 
b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/AssignableCond.java
deleted file mode 100644
index dae0a447b9..0000000000
--- 
a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/AssignableCond.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * 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.syncope.core.persistence.api.dao.search;
-
-import org.apache.commons.lang3.builder.EqualsBuilder;
-import org.apache.commons.lang3.builder.HashCodeBuilder;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-
-public class AssignableCond extends AbstractSearchCond {
-
-    private static final long serialVersionUID = 1237627275756159522L;
-
-    private String realmFullPath;
-
-    /**
-     * Whether this condition should be evaluated from the assignable group's 
or instead the
-     * assignee's point of view (default).
-     * The converter from FIQL will ignore this setting, which is meant for 
internal usage.
-     */
-    private boolean fromGroup = false;
-
-    public String getRealmFullPath() {
-        return realmFullPath;
-    }
-
-    public void setRealmFullPath(final String realmFullPath) {
-        this.realmFullPath = realmFullPath;
-    }
-
-    public boolean isFromGroup() {
-        return fromGroup;
-    }
-
-    public void setFromGroup(final boolean fromGroup) {
-        this.fromGroup = fromGroup;
-    }
-
-    @Override
-    public final boolean isValid() {
-        return realmFullPath != null;
-    }
-
-    @Override
-    public int hashCode() {
-        return new HashCodeBuilder().
-                append(realmFullPath).
-                append(fromGroup).
-                build();
-    }
-
-    @Override
-    public boolean equals(final Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj == null) {
-            return false;
-        }
-        if (getClass() != obj.getClass()) {
-            return false;
-        }
-        final AssignableCond other = (AssignableCond) obj;
-        return new EqualsBuilder().
-                append(realmFullPath, other.realmFullPath).
-                append(fromGroup, other.fromGroup).
-                build();
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this).
-                append(realmFullPath).
-                append(fromGroup).
-                build();
-    }
-}

Reply via email to