You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2022/06/16 11:37:22 UTC

[syncope] 03/03: Upgrading Elasticsearch

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

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

commit a437a9f16a31f95954b9f300a44d0d5b17ce130d
Author: Francesco Chicchiriccò <il...@apache.org>
AuthorDate: Wed Jun 15 16:23:52 2022 +0200

    Upgrading Elasticsearch
---
 .../console/panels/AnyObjectDirectoryPanel.java    | 107 ++++++------
 .../client/console/panels/GroupDirectoryPanel.java | 192 ++++++++++-----------
 .../client/console/panels/ListViewPanel.java       |  20 +--
 .../client/console/wizards/any/StatusPanel.java    |  16 +-
 .../persistence/api/dao/search/ResourceCond.java   |  18 +-
 .../persistence/api/dao/search/SearchCond.java     |   6 +-
 .../persistence/api/search/SearchCondVisitor.java  |   2 +-
 .../api/search/SearchCondConverterTest.java        |   2 +-
 .../persistence/jpa/dao/PGJPAJSONAnySearchDAO.java |   4 +-
 .../core/persistence/jpa/dao/JPAAnyMatchDAO.java   |   2 +-
 .../core/persistence/jpa/dao/JPAAnySearchDAO.java  |   4 +-
 .../core/persistence/jpa/inner/AnyMatchTest.java   |   4 +-
 .../core/persistence/jpa/inner/AnySearchTest.java  |   8 +-
 .../jpa/dao/ElasticsearchAnySearchDAO.java         |   2 +-
 pom.xml                                            |   2 +-
 .../starter/pac4j/saml/BaseWASAML2ClientTest.java  |   2 +-
 16 files changed, 194 insertions(+), 197 deletions(-)

diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/AnyObjectDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/AnyObjectDirectoryPanel.java
index e022061c2c..079bf86a82 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/AnyObjectDirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/AnyObjectDirectoryPanel.java
@@ -84,7 +84,7 @@ public class AnyObjectDirectoryPanel extends AnyDirectoryPanel<AnyObjectTO, AnyO
             @Override
             public void onClick(final AjaxRequestTarget target, final Serializable ignore) {
                 target.add(displayAttributeModal.setContent(new AnyObjectDisplayAttributesModalPanel<>(
-                    displayAttributeModal, page.getPageReference(), pSchemaNames, dSchemaNames, type)));
+                        displayAttributeModal, page.getPageReference(), pSchemaNames, dSchemaNames, type)));
                 displayAttributeModal.addSubmitButton();
                 displayAttributeModal.header(new ResourceModel("any.attr.display"));
                 displayAttributeModal.show(true);
@@ -104,16 +104,16 @@ public class AnyObjectDirectoryPanel extends AnyDirectoryPanel<AnyObjectTO, AnyO
 
         panel.add(new ActionLink<>() {
 
-                      private static final long serialVersionUID = -7978723352517770644L;
+            private static final long serialVersionUID = -7978723352517770644L;
 
-                      @Override
-                      public void onClick(final AjaxRequestTarget target, final AnyObjectTO ignore) {
-                          send(AnyObjectDirectoryPanel.this, Broadcast.EXACT,
-                              new AjaxWizard.EditItemActionEvent<>(
-                                  new AnyWrapper<>(new AnyObjectRestClient().read(model.getObject().getKey())),
-                                  target));
-                      }
-                  }, ActionType.EDIT,
+            @Override
+            public void onClick(final AjaxRequestTarget target, final AnyObjectTO ignore) {
+                send(AnyObjectDirectoryPanel.this, Broadcast.EXACT,
+                        new AjaxWizard.EditItemActionEvent<>(
+                                new AnyWrapper<>(new AnyObjectRestClient().read(model.getObject().getKey())),
+                                target));
+            }
+        }, ActionType.EDIT,
                 String.format("%s,%s", AnyEntitlement.READ.getFor(type), AnyEntitlement.UPDATE.getFor(type))).
                 setRealms(realm, model.getObject().getDynRealms());
 
@@ -134,7 +134,7 @@ public class AnyObjectDirectoryPanel extends AnyDirectoryPanel<AnyObjectTO, AnyO
                 @Override
                 public void onClick(final AjaxRequestTarget target, final AnyObjectTO ignore) {
                     target.add(utilityModal.setContent(new AnyPropagationTasks(
-                        utilityModal, AnyTypeKind.ANY_OBJECT, model.getObject().getKey(), pageRef)));
+                            utilityModal, AnyTypeKind.ANY_OBJECT, model.getObject().getKey(), pageRef)));
 
                     utilityModal.header(new StringResourceModel("any.propagation.tasks", model));
                     utilityModal.show(true);
@@ -148,8 +148,7 @@ public class AnyObjectDirectoryPanel extends AnyDirectoryPanel<AnyObjectTO, AnyO
                 @Override
                 public void onClick(final AjaxRequestTarget target, final AnyObjectTO ignore) {
                     target.add(utilityModal.setContent(
-                        new NotificationTasks(AnyTypeKind.ANY_OBJECT, model.getObject().getKey(),
-                            pageRef)));
+                            new NotificationTasks(AnyTypeKind.ANY_OBJECT, model.getObject().getKey(), pageRef)));
                     utilityModal.header(new StringResourceModel("any.notification.tasks", model));
                     utilityModal.show(true);
                     target.add(utilityModal);
@@ -158,46 +157,46 @@ public class AnyObjectDirectoryPanel extends AnyDirectoryPanel<AnyObjectTO, AnyO
         }
         panel.add(new ActionLink<>() {
 
-                      private static final long serialVersionUID = -2878723352517770644L;
-
-                      @Override
-                      public void onClick(final AjaxRequestTarget target, final AnyObjectTO ignore) {
-                          model.setObject(restClient.read(model.getObject().getKey()));
-                          target.add(altDefaultModal.setContent(new AuditHistoryModal<>(
-                              altDefaultModal,
-                              AuditElements.EventCategoryType.LOGIC,
-                              "AnyObjectLogic",
-                              model.getObject(),
-                              AnyEntitlement.UPDATE.getFor(type),
-                              pageRef) {
-
-                              private static final long serialVersionUID = -7440902560249531201L;
-
-                              @Override
-                              protected void restore(final String json, final AjaxRequestTarget target) {
-                                  AnyObjectTO original = model.getObject();
-                                  try {
-                                      AnyObjectTO updated = MAPPER.readValue(json, AnyObjectTO.class);
-                                      AnyObjectUR updateReq = AnyOperations.diff(updated, original, false);
-                                      ProvisioningResult<AnyObjectTO> result =
-                                          restClient.update(original.getETagValue(), updateReq);
-                                      model.getObject().setLastChangeDate(result.getEntity().getLastChangeDate());
-
-                                      SyncopeConsoleSession.get().success(getString(Constants.OPERATION_SUCCEEDED));
-                                      target.add(container);
-                                  } catch (Exception e) {
-                                      LOG.error("While restoring any object {}", model.getObject().getKey(), e);
-                                      SyncopeConsoleSession.get().onException(e);
-                                  }
-                                  ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
-                              }
-                          }));
-
-                          altDefaultModal.header(new StringResourceModel("auditHistory.title", model));
-
-                          altDefaultModal.show(true);
-                      }
-                  }, ActionType.VIEW_AUDIT_HISTORY,
+            private static final long serialVersionUID = -2878723352517770644L;
+
+            @Override
+            public void onClick(final AjaxRequestTarget target, final AnyObjectTO ignore) {
+                model.setObject(restClient.read(model.getObject().getKey()));
+                target.add(altDefaultModal.setContent(new AuditHistoryModal<>(
+                        altDefaultModal,
+                        AuditElements.EventCategoryType.LOGIC,
+                        "AnyObjectLogic",
+                        model.getObject(),
+                        AnyEntitlement.UPDATE.getFor(type),
+                        pageRef) {
+
+                    private static final long serialVersionUID = -7440902560249531201L;
+
+                    @Override
+                    protected void restore(final String json, final AjaxRequestTarget target) {
+                        AnyObjectTO original = model.getObject();
+                        try {
+                            AnyObjectTO updated = MAPPER.readValue(json, AnyObjectTO.class);
+                            AnyObjectUR updateReq = AnyOperations.diff(updated, original, false);
+                            ProvisioningResult<AnyObjectTO> result =
+                                    restClient.update(original.getETagValue(), updateReq);
+                            model.getObject().setLastChangeDate(result.getEntity().getLastChangeDate());
+
+                            SyncopeConsoleSession.get().success(getString(Constants.OPERATION_SUCCEEDED));
+                            target.add(container);
+                        } catch (Exception e) {
+                            LOG.error("While restoring any object {}", model.getObject().getKey(), e);
+                            SyncopeConsoleSession.get().onException(e);
+                        }
+                        ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
+                    }
+                }));
+
+                altDefaultModal.header(new StringResourceModel("auditHistory.title", model));
+
+                altDefaultModal.show(true);
+            }
+        }, ActionType.VIEW_AUDIT_HISTORY,
                 String.format("%s,%s", AnyEntitlement.READ.getFor(type), IdRepoEntitlement.AUDIT_LIST)).
                 setRealms(realm, model.getObject().getDynRealms());
 
@@ -210,7 +209,7 @@ public class AnyObjectDirectoryPanel extends AnyDirectoryPanel<AnyObjectTO, AnyO
                 final AnyObjectTO clone = SerializationUtils.clone(model.getObject());
                 clone.setKey(null);
                 send(AnyObjectDirectoryPanel.this, Broadcast.EXACT,
-                    new AjaxWizard.NewItemActionEvent<>(new AnyWrapper<>(clone), target));
+                        new AjaxWizard.NewItemActionEvent<>(new AnyWrapper<>(clone), target));
             }
 
             @Override
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/GroupDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/GroupDirectoryPanel.java
index fce6681543..ed62d4d439 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/GroupDirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/GroupDirectoryPanel.java
@@ -195,7 +195,7 @@ public class GroupDirectoryPanel extends AnyDirectoryPanel<GroupTO, GroupRestCli
             @Override
             public void onClick(final AjaxRequestTarget target, final Serializable ignore) {
                 target.add(displayAttributeModal.setContent(new GroupDisplayAttributesModalPanel<>(
-                    displayAttributeModal, page.getPageReference(), pSchemaNames, dSchemaNames)));
+                        displayAttributeModal, page.getPageReference(), pSchemaNames, dSchemaNames)));
                 displayAttributeModal.header(new ResourceModel("any.attr.display"));
                 displayAttributeModal.show(true);
             }
@@ -209,15 +209,15 @@ public class GroupDirectoryPanel extends AnyDirectoryPanel<GroupTO, GroupRestCli
 
         panel.add(new ActionLink<>() {
 
-                      private static final long serialVersionUID = -7978723352517770644L;
+            private static final long serialVersionUID = -7978723352517770644L;
 
-                      @Override
-                      public void onClick(final AjaxRequestTarget target, final GroupTO ignore) {
-                          send(GroupDirectoryPanel.this, Broadcast.EXACT,
-                              new AjaxWizard.EditItemActionEvent<>(new GroupWrapper(
-                                  restClient.read(model.getObject().getKey())), target));
-                      }
-                  }, ActionType.EDIT,
+            @Override
+            public void onClick(final AjaxRequestTarget target, final GroupTO ignore) {
+                send(GroupDirectoryPanel.this, Broadcast.EXACT,
+                        new AjaxWizard.EditItemActionEvent<>(new GroupWrapper(
+                                restClient.read(model.getObject().getKey())), target));
+            }
+        }, ActionType.EDIT,
                 String.format("%s,%s", IdRepoEntitlement.GROUP_READ, IdRepoEntitlement.GROUP_UPDATE)).
                 setRealms(realm, model.getObject().getDynRealms());
 
@@ -228,7 +228,7 @@ public class GroupDirectoryPanel extends AnyDirectoryPanel<GroupTO, GroupRestCli
             @Override
             public void onClick(final AjaxRequestTarget target, final GroupTO ignore) {
                 target.add(typeExtensionsModal.setContent(new TypeExtensionDirectoryPanel(
-                    typeExtensionsModal, model.getObject(), pageRef)));
+                        typeExtensionsModal, model.getObject(), pageRef)));
                 typeExtensionsModal.header(new StringResourceModel("typeExtensions", model));
                 typeExtensionsModal.show(true);
             }
@@ -237,58 +237,58 @@ public class GroupDirectoryPanel extends AnyDirectoryPanel<GroupTO, GroupRestCli
 
         panel.add(new ActionLink<>() {
 
-                      private static final long serialVersionUID = -7978723352517770645L;
+            private static final long serialVersionUID = -7978723352517770645L;
 
-                      @Override
-                      public void onClick(final AjaxRequestTarget target, final GroupTO ignore) {
-                          templates.setTargetObject(model.getObject());
-                          templates.toggle(target, true);
-                      }
+            @Override
+            public void onClick(final AjaxRequestTarget target, final GroupTO ignore) {
+                templates.setTargetObject(model.getObject());
+                templates.toggle(target, true);
+            }
 
-                      @Override
-                      public boolean isIndicatorEnabled() {
-                          return false;
-                      }
-                  }, ActionType.MEMBERS,
+            @Override
+            public boolean isIndicatorEnabled() {
+                return false;
+            }
+        }, ActionType.MEMBERS,
                 String.format("%s,%s", IdRepoEntitlement.GROUP_READ, IdRepoEntitlement.GROUP_UPDATE)).
                 setRealms(realm, model.getObject().getDynRealms());
 
         panel.add(new ActionLink<>() {
 
-                      private static final long serialVersionUID = -7978723352517770644L;
-
-                      @Override
-                      public void onClick(final AjaxRequestTarget target, final GroupTO ignore) {
-                          try {
-                              SyncopeConsoleSession.get().success(getString(Constants.OPERATION_SUCCEEDED));
-                              target.add(container);
-                          } catch (SyncopeClientException e) {
-                              LOG.error("While provisioning members of group {}", model.getObject().getKey(), e);
-                              SyncopeConsoleSession.get().onException(e);
-                          }
-                          ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
-                      }
-                  }, ActionType.PROVISION_MEMBERS,
+            private static final long serialVersionUID = -7978723352517770644L;
+
+            @Override
+            public void onClick(final AjaxRequestTarget target, final GroupTO ignore) {
+                try {
+                    SyncopeConsoleSession.get().success(getString(Constants.OPERATION_SUCCEEDED));
+                    target.add(container);
+                } catch (SyncopeClientException e) {
+                    LOG.error("While provisioning members of group {}", model.getObject().getKey(), e);
+                    SyncopeConsoleSession.get().onException(e);
+                }
+                ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
+            }
+        }, ActionType.PROVISION_MEMBERS,
                 String.format("%s,%s", IdRepoEntitlement.TASK_CREATE, IdRepoEntitlement.TASK_EXECUTE)).
                 setRealm(realm);
 
         panel.add(new ActionLink<>() {
 
-                      private static final long serialVersionUID = -7978723352517770644L;
-
-                      @Override
-                      public void onClick(final AjaxRequestTarget target, final GroupTO ignore) {
-                          try {
-                              GroupRestClient.provisionMembers(model.getObject().getKey(), ProvisionAction.DEPROVISION);
-                              SyncopeConsoleSession.get().success(getString(Constants.OPERATION_SUCCEEDED));
-                              target.add(container);
-                          } catch (SyncopeClientException e) {
-                              LOG.error("While provisioning members of group {}", model.getObject().getKey(), e);
-                              SyncopeConsoleSession.get().onException(e);
-                          }
-                          ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
-                      }
-                  }, ActionType.DEPROVISION_MEMBERS,
+            private static final long serialVersionUID = -7978723352517770644L;
+
+            @Override
+            public void onClick(final AjaxRequestTarget target, final GroupTO ignore) {
+                try {
+                    GroupRestClient.provisionMembers(model.getObject().getKey(), ProvisionAction.DEPROVISION);
+                    SyncopeConsoleSession.get().success(getString(Constants.OPERATION_SUCCEEDED));
+                    target.add(container);
+                } catch (SyncopeClientException e) {
+                    LOG.error("While provisioning members of group {}", model.getObject().getKey(), e);
+                    SyncopeConsoleSession.get().onException(e);
+                }
+                ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
+            }
+        }, ActionType.DEPROVISION_MEMBERS,
                 String.format("%s,%s", IdRepoEntitlement.TASK_CREATE, IdRepoEntitlement.TASK_EXECUTE)).
                 setRealm(realm);
 
@@ -307,7 +307,7 @@ public class GroupDirectoryPanel extends AnyDirectoryPanel<GroupTO, GroupRestCli
             @Override
             public void onClick(final AjaxRequestTarget target, final GroupTO ignore) {
                 target.add(utilityModal.setContent(new AnyPropagationTasks(
-                    utilityModal, AnyTypeKind.GROUP, model.getObject().getKey(), pageRef)));
+                        utilityModal, AnyTypeKind.GROUP, model.getObject().getKey(), pageRef)));
                 utilityModal.header(new StringResourceModel("any.propagation.tasks", model));
                 utilityModal.show(true);
             }
@@ -320,7 +320,7 @@ public class GroupDirectoryPanel extends AnyDirectoryPanel<GroupTO, GroupRestCli
             @Override
             public void onClick(final AjaxRequestTarget target, final GroupTO ignore) {
                 target.add(utilityModal.setContent(
-                    new NotificationTasks(AnyTypeKind.GROUP, model.getObject().getKey(), pageRef)));
+                        new NotificationTasks(AnyTypeKind.GROUP, model.getObject().getKey(), pageRef)));
                 utilityModal.header(new StringResourceModel("any.notification.tasks", model));
                 utilityModal.show(true);
             }
@@ -328,49 +328,49 @@ public class GroupDirectoryPanel extends AnyDirectoryPanel<GroupTO, GroupRestCli
 
         panel.add(new ActionLink<>() {
 
-                  private static final long serialVersionUID = -2878723352517770644L;
-
-                  @Override
-                  public void onClick(final AjaxRequestTarget target, final GroupTO ignore) {
-                      model.setObject(restClient.read(model.getObject().getKey()));
-                      target.add(altDefaultModal.setContent(new AuditHistoryModal<>(
-                          altDefaultModal,
-                          AuditElements.EventCategoryType.LOGIC,
-                          "GroupLogic",
-                          model.getObject(),
-                          IdRepoEntitlement.GROUP_UPDATE,
-                          pageRef) {
-
-                          private static final long serialVersionUID = -5819724478921691835L;
-
-                          @Override
-                          protected void restore(final String json, final AjaxRequestTarget target) {
-                              GroupTO original = model.getObject();
-                              try {
-                                  GroupTO updated = MAPPER.readValue(json, GroupTO.class);
-                                  GroupUR updateReq = AnyOperations.diff(updated, original, false);
-                                  ProvisioningResult<GroupTO> result =
-                                      restClient.update(original.getETagValue(), updateReq);
-                                  model.getObject().setLastChangeDate(result.getEntity().getLastChangeDate());
-
-                                  SyncopeConsoleSession.get().success(getString(Constants.OPERATION_SUCCEEDED));
-                                  target.add(container);
-                              } catch (Exception e) {
-                                  LOG.error("While restoring group {}", model.getObject().getKey(), e);
-                                  SyncopeConsoleSession.get().onException(e);
-                              }
-                              ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
-                          }
-                      }));
-
-                      altDefaultModal.header(new Model<>(
-                          getString("auditHistory.title", new Model<>(new AnyWrapper<>(model.getObject())))));
-
-                      altDefaultModal.show(true);
-                  }
-              }, ActionType.VIEW_AUDIT_HISTORY,
-            String.format("%s,%s", IdRepoEntitlement.GROUP_READ, IdRepoEntitlement.AUDIT_LIST)).
-            setRealms(realm, model.getObject().getDynRealms());
+            private static final long serialVersionUID = -2878723352517770644L;
+
+            @Override
+            public void onClick(final AjaxRequestTarget target, final GroupTO ignore) {
+                model.setObject(restClient.read(model.getObject().getKey()));
+                target.add(altDefaultModal.setContent(new AuditHistoryModal<>(
+                        altDefaultModal,
+                        AuditElements.EventCategoryType.LOGIC,
+                        "GroupLogic",
+                        model.getObject(),
+                        IdRepoEntitlement.GROUP_UPDATE,
+                        pageRef) {
+
+                    private static final long serialVersionUID = -5819724478921691835L;
+
+                    @Override
+                    protected void restore(final String json, final AjaxRequestTarget target) {
+                        GroupTO original = model.getObject();
+                        try {
+                            GroupTO updated = MAPPER.readValue(json, GroupTO.class);
+                            GroupUR updateReq = AnyOperations.diff(updated, original, false);
+                            ProvisioningResult<GroupTO> result =
+                                    restClient.update(original.getETagValue(), updateReq);
+                            model.getObject().setLastChangeDate(result.getEntity().getLastChangeDate());
+
+                            SyncopeConsoleSession.get().success(getString(Constants.OPERATION_SUCCEEDED));
+                            target.add(container);
+                        } catch (Exception e) {
+                            LOG.error("While restoring group {}", model.getObject().getKey(), e);
+                            SyncopeConsoleSession.get().onException(e);
+                        }
+                        ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
+                    }
+                }));
+
+                altDefaultModal.header(new Model<>(
+                        getString("auditHistory.title", new Model<>(new AnyWrapper<>(model.getObject())))));
+
+                altDefaultModal.show(true);
+            }
+        }, ActionType.VIEW_AUDIT_HISTORY,
+                String.format("%s,%s", IdRepoEntitlement.GROUP_READ, IdRepoEntitlement.AUDIT_LIST)).
+                setRealms(realm, model.getObject().getDynRealms());
 
         panel.add(new ActionLink<>() {
 
@@ -381,7 +381,7 @@ public class GroupDirectoryPanel extends AnyDirectoryPanel<GroupTO, GroupRestCli
                 GroupTO clone = SerializationUtils.clone(model.getObject());
                 clone.setKey(null);
                 send(GroupDirectoryPanel.this, Broadcast.EXACT,
-                    new AjaxWizard.NewItemActionEvent<>(new GroupWrapper(clone), target));
+                        new AjaxWizard.NewItemActionEvent<>(new GroupWrapper(clone), target));
             }
 
             @Override
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ListViewPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ListViewPanel.java
index f3aeace74c..029bafbdf6 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ListViewPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ListViewPanel.java
@@ -172,10 +172,10 @@ public abstract class ListViewPanel<T extends Serializable> extends WizardMgtPan
             @Override
             protected void populateItem(final ListItem<T> beanItem) {
                 beanItem.add(new Check<>("check", beanItem.getModel(), checkGroup).setOutputMarkupId(true).
-                    setOutputMarkupPlaceholderTag(true).
-                    setVisible(ListViewPanel.this.check.getObject() == CheckAvailability.AVAILABLE
-                        || ListViewPanel.this.check.getObject() == CheckAvailability.DISABLED).
-                    setEnabled(ListViewPanel.this.check.getObject() == CheckAvailability.AVAILABLE));
+                        setOutputMarkupPlaceholderTag(true).
+                        setVisible(ListViewPanel.this.check.getObject() == CheckAvailability.AVAILABLE
+                                || ListViewPanel.this.check.getObject() == CheckAvailability.DISABLED).
+                        setEnabled(ListViewPanel.this.check.getObject() == CheckAvailability.AVAILABLE));
 
                 final T bean = beanItem.getModelObject();
 
@@ -200,9 +200,9 @@ public abstract class ListViewPanel<T extends Serializable> extends WizardMgtPan
                                 @Override
                                 protected void onEvent(final AjaxRequestTarget target) {
                                     togglePanel.toggleWithContent(
-                                        target,
-                                        actions.cloneWithLabels("actions", new Model<>(bean)),
-                                        bean);
+                                            target,
+                                            actions.cloneWithLabels("actions", new Model<>(bean)),
+                                            bean);
                                 }
                             });
                         }
@@ -224,7 +224,7 @@ public abstract class ListViewPanel<T extends Serializable> extends WizardMgtPan
         checkGroup.add(beans);
     }
 
-    private static ListView<String> header(final List<String> labels) {
+    protected ListView<String> header(final List<String> labels) {
         return new ListView<>("names", labels) {
 
             private static final long serialVersionUID = -9112553137618363167L;
@@ -232,7 +232,7 @@ public abstract class ListViewPanel<T extends Serializable> extends WizardMgtPan
             @Override
             protected void populateItem(final ListItem<String> item) {
                 item.add(new Label(Constants.NAME_FIELD_NAME,
-                    new ResourceModel(item.getModelObject(), item.getModelObject())));
+                        new ResourceModel(item.getModelObject(), item.getModelObject())));
             }
         };
     }
@@ -424,7 +424,7 @@ public abstract class ListViewPanel<T extends Serializable> extends WizardMgtPan
         @Override
         protected WizardMgtPanel<T> newInstance(final String id, final boolean wizardInModal) {
             return new ListViewPanel<>(
-                id, items, reference, includes, actions, check, reuseItem, wizardInModal, captionVisible, model) {
+                    id, items, reference, includes, actions, check, reuseItem, wizardInModal, captionVisible, model) {
 
                 private static final long serialVersionUID = -1715389337530657988L;
 
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/StatusPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/StatusPanel.java
index 641309df1b..18e856f941 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/StatusPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/StatusPanel.java
@@ -54,11 +54,11 @@ public class StatusPanel extends Panel {
 
     private static final long serialVersionUID = -4013796607157549641L;
 
-    private static final Logger LOG = LoggerFactory.getLogger(StatusPanel.class);
+    protected static final Logger LOG = LoggerFactory.getLogger(StatusPanel.class);
 
-    private Map<String, StatusBean> initialStatusBeanMap;
+    protected Map<String, StatusBean> initialStatusBeanMap;
 
-    private ListViewPanel<?> listViewPanel;
+    protected ListViewPanel<?> listViewPanel;
 
     public <T extends AnyTO> StatusPanel(
             final String id,
@@ -82,7 +82,7 @@ public class StatusPanel extends Panel {
         init(any, model, connObjects, pageRef, true);
     }
 
-    private void init(
+    protected void init(
             final AnyTO any,
             final IModel<List<StatusBean>> model,
             final List<Triple<ConnObjectTO, ConnObjectWrapper, String>> connObjects,
@@ -130,7 +130,7 @@ public class StatusPanel extends Panel {
             }
         });
 
-        final MultilevelPanel mlp = new MultilevelPanel("resources");
+        MultilevelPanel mlp = new MultilevelPanel("resources");
         add(mlp);
 
         ListViewPanel.Builder<StatusBean> builder = new ListViewPanel.Builder<>(StatusBean.class, pageRef) {
@@ -159,7 +159,7 @@ public class StatusPanel extends Panel {
             @Override
             protected boolean statusCondition(final StatusBean bean) {
                 Pair<ConnObjectTO, ConnObjectTO> pair =
-                    getConnObjectTOs(bean.getKey(), bean.getResource(), connObjects);
+                        getConnObjectTOs(bean.getKey(), bean.getResource(), connObjects);
                 return pair != null && pair.getRight() != null;
             }
 
@@ -220,9 +220,9 @@ public class StatusPanel extends Panel {
 
         private static final long serialVersionUID = 4303365227411467563L;
 
-        private final StatusBean bean;
+        protected final StatusBean bean;
 
-        private final List<Triple<ConnObjectTO, ConnObjectWrapper, String>> connObjects;
+        protected final List<Triple<ConnObjectTO, ConnObjectWrapper, String>> connObjects;
 
         RemoteAnyPanel(final StatusBean bean, final List<Triple<ConnObjectTO, ConnObjectWrapper, String>> connObjects) {
             this.bean = bean;
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/ResourceCond.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/ResourceCond.java
index ea87bb2a19..849c8ab421 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/ResourceCond.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/ResourceCond.java
@@ -29,25 +29,25 @@ public class ResourceCond extends AbstractSearchCond {
 
     private static final long serialVersionUID = 466054166309460002L;
 
-    private String resourceKey;
+    private String resource;
 
-    public String getResourceKey() {
-        return resourceKey;
+    public String getResource() {
+        return resource;
     }
 
-    public void setResourceKey(final String resourceKey) {
-        this.resourceKey = resourceKey;
+    public void setResource(final String resource) {
+        this.resource = resource;
     }
 
     @Override
     public final boolean isValid() {
-        return resourceKey != null;
+        return resource != null;
     }
 
     @Override
     public int hashCode() {
         return new HashCodeBuilder().
-                append(resourceKey).
+                append(resource).
                 build();
     }
 
@@ -64,14 +64,14 @@ public class ResourceCond extends AbstractSearchCond {
         }
         final ResourceCond other = (ResourceCond) obj;
         return new EqualsBuilder().
-                append(resourceKey, other.resourceKey).
+                append(resource, other.resource).
                 build();
     }
 
     @Override
     public String toString() {
         return new ToStringBuilder(this).
-                append(resourceKey).
+                append(resource).
                 build();
     }
 }
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/SearchCond.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/SearchCond.java
index 8d7730156c..112e56f78c 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/SearchCond.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/SearchCond.java
@@ -81,8 +81,7 @@ public class SearchCond extends AbstractSearchCond {
         if (conditions.size() == 1) {
             return conditions.get(0);
         } else if (conditions.size() > 2) {
-            SearchCond removed = conditions.remove(0);
-            return getAnd(removed, getAnd(conditions));
+            return getAnd(conditions.get(0), getAnd(conditions.subList(1, conditions.size())));
         } else {
             return getAnd(conditions.get(0), conditions.get(1));
         }
@@ -102,8 +101,7 @@ public class SearchCond extends AbstractSearchCond {
         if (conditions.size() == 1) {
             return conditions.get(0);
         } else if (conditions.size() > 2) {
-            SearchCond removed = conditions.remove(0);
-            return getOr(removed, getOr(conditions));
+            return getOr(conditions.get(0), getAnd(conditions.subList(1, conditions.size())));
         } else {
             return getOr(conditions.get(0), conditions.get(1));
         }
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/search/SearchCondVisitor.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/search/SearchCondVisitor.java
index ddd027d027..85ddbc17f3 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/search/SearchCondVisitor.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/search/SearchCondVisitor.java
@@ -160,7 +160,7 @@ public class SearchCondVisitor extends AbstractSearchConditionVisitor<SearchBean
                             
                         case RESOURCES:
                             ResourceCond resourceCond = new ResourceCond();
-                            resourceCond.setResourceKey(value);
+                            resourceCond.setResource(value);
                             leaf = SearchCond.getLeaf(resourceCond);
                             break;
 
diff --git a/core/persistence-api/src/test/java/org/apache/syncope/core/persistence/api/search/SearchCondConverterTest.java b/core/persistence-api/src/test/java/org/apache/syncope/core/persistence/api/search/SearchCondConverterTest.java
index 7bee68e818..5716642339 100644
--- a/core/persistence-api/src/test/java/org/apache/syncope/core/persistence/api/search/SearchCondConverterTest.java
+++ b/core/persistence-api/src/test/java/org/apache/syncope/core/persistence/api/search/SearchCondConverterTest.java
@@ -245,7 +245,7 @@ public class SearchCondConverterTest {
         assertEquals(SpecialAttr.RESOURCES + "==resource-ldap", fiql);
 
         ResourceCond resCond = new ResourceCond();
-        resCond.setResourceKey("resource-ldap");
+        resCond.setResource("resource-ldap");
         SearchCond leaf = SearchCond.getLeaf(resCond);
 
         assertEquals(leaf, SearchCondConverter.convert(VISITOR, fiql));
diff --git a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/dao/PGJPAJSONAnySearchDAO.java b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/dao/PGJPAJSONAnySearchDAO.java
index 24e8f8b6ce..4c73c531a3 100644
--- a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/dao/PGJPAJSONAnySearchDAO.java
+++ b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/dao/PGJPAJSONAnySearchDAO.java
@@ -435,13 +435,13 @@ public class PGJPAJSONAnySearchDAO extends JPAAnySearchDAO {
         query.append("SELECT DISTINCT any_id FROM ").
                 append(svs.resource().name).
                 append(" WHERE resource_id=?").
-                append(setParameter(parameters, cond.getResourceKey()));
+                append(setParameter(parameters, cond.getResource()));
 
         if (svs.anyTypeKind == AnyTypeKind.USER || svs.anyTypeKind == AnyTypeKind.ANY_OBJECT) {
             query.append(" UNION SELECT DISTINCT any_id FROM ").
                     append(svs.groupResource().name).
                     append(" WHERE resource_id=?").
-                    append(setParameter(parameters, cond.getResourceKey()));
+                    append(setParameter(parameters, cond.getResource()));
         }
 
         query.append(')');
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyMatchDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyMatchDAO.java
index a0dc2fa084..8c0cbb207c 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyMatchDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyMatchDAO.java
@@ -279,7 +279,7 @@ public class JPAAnyMatchDAO extends AbstractDAO<Any<?>> implements AnyMatchDAO {
 
     protected boolean matches(final Any<?> any, final ResourceCond cond, final boolean not) {
         boolean found = anyUtilsFactory.getInstance(any).getAllResources(any).stream().
-                anyMatch(resource -> resource.getKey().equals(cond.getResourceKey()));
+                anyMatch(resource -> resource.getKey().equals(cond.getResource()));
         return not ? !found : found;
     }
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnySearchDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnySearchDAO.java
index f7dacda6fd..9475f39935 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnySearchDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnySearchDAO.java
@@ -867,13 +867,13 @@ public class JPAAnySearchDAO extends AbstractAnySearchDAO {
         query.append("SELECT DISTINCT any_id FROM ").
                 append(svs.resource().name).
                 append(" WHERE resource_id=?").
-                append(setParameter(parameters, cond.getResourceKey()));
+                append(setParameter(parameters, cond.getResource()));
 
         if (svs.anyTypeKind == AnyTypeKind.USER || svs.anyTypeKind == AnyTypeKind.ANY_OBJECT) {
             query.append(" UNION SELECT DISTINCT any_id FROM ").
                     append(svs.groupResource().name).
                     append(" WHERE resource_id=?").
-                    append(setParameter(parameters, cond.getResourceKey()));
+                    append(setParameter(parameters, cond.getResource()));
         }
 
         query.append(')');
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/AnyMatchTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/AnyMatchTest.java
index 8c60f6eaea..dcdadf2234 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/AnyMatchTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/AnyMatchTest.java
@@ -63,10 +63,10 @@ public class AnyMatchTest extends AbstractTest {
         assertNotNull(user);
 
         ResourceCond resourceCond = new ResourceCond();
-        resourceCond.setResourceKey("resource-testdb2");
+        resourceCond.setResource("resource-testdb2");
         assertTrue(anyMatcher.matches(user, SearchCond.getLeaf(resourceCond)));
 
-        resourceCond.setResourceKey("ws-target-resource-delete");
+        resourceCond.setResource("ws-target-resource-delete");
         assertFalse(anyMatcher.matches(user, SearchCond.getLeaf(resourceCond)));
     }
 
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/AnySearchTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/AnySearchTest.java
index 926ce35b01..d29d8ed36f 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/AnySearchTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/AnySearchTest.java
@@ -375,10 +375,10 @@ public class AnySearchTest extends AbstractTest {
     @Test
     public void searchByResource() {
         ResourceCond ws2 = new ResourceCond();
-        ws2.setResourceKey("ws-target-resource-2");
+        ws2.setResource("ws-target-resource-2");
 
         ResourceCond ws1 = new ResourceCond();
-        ws1.setResourceKey("ws-target-resource-list-mappings-2");
+        ws1.setResource("ws-target-resource-list-mappings-2");
 
         SearchCond searchCondition = SearchCond.getAnd(SearchCond.getNotLeaf(ws2), SearchCond.getLeaf(ws1));
         assertTrue(searchCondition.isValid());
@@ -712,10 +712,10 @@ public class AnySearchTest extends AbstractTest {
     @Test
     public void issue202() {
         ResourceCond ws2 = new ResourceCond();
-        ws2.setResourceKey("ws-target-resource-2");
+        ws2.setResource("ws-target-resource-2");
 
         ResourceCond ws1 = new ResourceCond();
-        ws1.setResourceKey("ws-target-resource-list-mappings-1");
+        ws1.setResource("ws-target-resource-list-mappings-1");
 
         SearchCond searchCondition =
                 SearchCond.getAnd(SearchCond.getNotLeaf(ws2), SearchCond.getNotLeaf(ws1));
diff --git a/ext/elasticsearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/ElasticsearchAnySearchDAO.java b/ext/elasticsearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/ElasticsearchAnySearchDAO.java
index 7bc554eab0..d203491980 100644
--- a/ext/elasticsearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/ElasticsearchAnySearchDAO.java
+++ b/ext/elasticsearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/ElasticsearchAnySearchDAO.java
@@ -518,7 +518,7 @@ public class ElasticsearchAnySearchDAO extends AbstractAnySearchDAO {
 
     protected Query getQuery(final ResourceCond cond) {
         return new Query.Builder().term(QueryBuilders.term().
-                field("resources").value(FieldValue.of(cond.getResourceKey())).build()).
+                field("resources").value(FieldValue.of(cond.getResource())).build()).
                 build();
     }
 
diff --git a/pom.xml b/pom.xml
index 56b65410d6..632684511f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -430,7 +430,7 @@ under the License.
 
     <slf4j.version>1.7.36</slf4j.version>
 
-    <elasticsearch.version>8.2.2</elasticsearch.version>
+    <elasticsearch.version>8.2.3</elasticsearch.version>
 
     <apacheds.version>2.0.0.AM26</apacheds.version>
     <apachedirapi.version>2.0.0</apachedirapi.version>
diff --git a/wa/starter/src/test/java/org/apache/syncope/wa/starter/pac4j/saml/BaseWASAML2ClientTest.java b/wa/starter/src/test/java/org/apache/syncope/wa/starter/pac4j/saml/BaseWASAML2ClientTest.java
index 55dd52543f..498b30614a 100644
--- a/wa/starter/src/test/java/org/apache/syncope/wa/starter/pac4j/saml/BaseWASAML2ClientTest.java
+++ b/wa/starter/src/test/java/org/apache/syncope/wa/starter/pac4j/saml/BaseWASAML2ClientTest.java
@@ -111,7 +111,7 @@ public abstract class BaseWASAML2ClientTest {
 
     protected static String getKeystoreAsString() throws Exception {
         char[] pwdArray = "password".toCharArray();
-        try ( ByteArrayOutputStream fos = new ByteArrayOutputStream()) {
+        try (ByteArrayOutputStream fos = new ByteArrayOutputStream()) {
             getKeystore().store(fos, pwdArray);
             fos.flush();
             return Base64.getEncoder().encodeToString(fos.toByteArray());