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 d8213861d0dd6929f9551b848e67eea9a827b571 Author: Francesco Chicchiriccò <[email protected]> AuthorDate: Thu Oct 30 08:35:11 2025 +0100 [SYNCOPE-1925] Review setWindowClosedReloadCallback --- .../authprofiles/AuthProfileDirectoryPanel.java | 5 +- .../clientapps/ClientAppDirectoryPanel.java | 7 +- .../console/panels/AMSessionDirectoryPanel.java | 2 +- .../panels/SAML2IdPEntityDirectoryPanel.java | 6 +- .../console/panels/SRARouteDirectoryPanel.java | 7 +- ...MergeLinkedAccountsReviewPanel_fr_CA.properties | 2 +- .../MergeLinkedAccountsReviewPanel_it.properties | 10 +- .../MergeLinkedAccountsReviewPanel_ja.properties | 2 +- ...MergeLinkedAccountsReviewPanel_pt_BR.properties | 2 +- .../MergeLinkedAccountsReviewPanel_ru.properties | 2 +- .../apache/syncope/client/ui/commons/DateOps.java | 4 +- .../notifications/MailTemplateDirectoryPanel.java | 5 +- .../console/panels/CommandDirectoryPanel.java | 6 +- .../client/console/panels/DirectoryPanel.java | 34 ++++-- .../console/panels/DomainDirectoryPanel.java | 9 +- .../console/panels/DynRealmDirectoryPanel.java | 5 +- .../client/console/panels/GroupDirectoryPanel.java | 6 +- .../panels/ImplementationDirectoryPanel.java | 4 + .../panels/NetworkServiceDirectoryPanel.java | 5 +- .../console/panels/SecurityQuestionsPanel.java | 5 +- .../client/console/panels/UserDirectoryPanel.java | 7 +- .../console/policies/PolicyDirectoryPanel.java | 5 +- .../markup/html/bootstrap/dialog/BaseModal.java | 5 +- .../wicket/markup/html/form/ActionLink.java | 3 - .../markup/html/form/ActionLinksTogglePanel.java | 7 +- .../wicket/markup/html/form/ActionPanel.java | 2 +- .../org/apache/syncope/core/logic/UserLogic.java | 3 +- .../core/persistence/jpa/inner/AnySearchTest.java | 127 ++++++++------------- .../panels/UserRequestFormDirectoryPanel.java | 4 + .../panels/OIDCProvidersDirectoryPanel.java | 2 +- .../console/panels/SAML2IdPsDirectoryPanel.java | 7 +- .../apache/syncope/fit/console/BatchesITCase.java | 46 ++++---- .../syncope/fit/console/LinkedAccountsITCase.java | 33 +++--- .../org/apache/syncope/fit/core/SearchITCase.java | 2 +- 34 files changed, 168 insertions(+), 213 deletions(-) diff --git a/client/am/console/src/main/java/org/apache/syncope/client/console/authprofiles/AuthProfileDirectoryPanel.java b/client/am/console/src/main/java/org/apache/syncope/client/console/authprofiles/AuthProfileDirectoryPanel.java index 0693dd6244..da73e8b002 100644 --- a/client/am/console/src/main/java/org/apache/syncope/client/console/authprofiles/AuthProfileDirectoryPanel.java +++ b/client/am/console/src/main/java/org/apache/syncope/client/console/authprofiles/AuthProfileDirectoryPanel.java @@ -81,10 +81,7 @@ public class AuthProfileDirectoryPanel } }; authProfileModal.size(Modal.Size.Large); - authProfileModal.setWindowClosedCallback(target -> { - updateResultTable(target); - authProfileModal.show(false); - }); + setWindowClosedReloadCallback(authProfileModal, true); addOuterObject(authProfileModal); disableCheckBoxes(); diff --git a/client/am/console/src/main/java/org/apache/syncope/client/console/clientapps/ClientAppDirectoryPanel.java b/client/am/console/src/main/java/org/apache/syncope/client/console/clientapps/ClientAppDirectoryPanel.java index b0364d7b4f..208f4ce2c6 100644 --- a/client/am/console/src/main/java/org/apache/syncope/client/console/clientapps/ClientAppDirectoryPanel.java +++ b/client/am/console/src/main/java/org/apache/syncope/client/console/clientapps/ClientAppDirectoryPanel.java @@ -97,10 +97,7 @@ public abstract class ClientAppDirectoryPanel<T extends ClientAppTO> modal.addSubmitButton(); modal.size(Modal.Size.Large); - modal.setWindowClosedCallback(target -> { - updateResultTable(target); - modal.show(false); - }); + setWindowClosedReloadCallback(modal, true); setFooterVisibility(true); propertiesModal = new BaseModal<>(Constants.OUTER) { @@ -114,7 +111,7 @@ public abstract class ClientAppDirectoryPanel<T extends ClientAppTO> } }; propertiesModal.size(Modal.Size.Large); - propertiesModal.setWindowClosedCallback(target -> propertiesModal.show(false)); + setWindowClosedReloadCallback(propertiesModal); addOuterObject(propertiesModal); disableCheckBoxes(); diff --git a/client/am/console/src/main/java/org/apache/syncope/client/console/panels/AMSessionDirectoryPanel.java b/client/am/console/src/main/java/org/apache/syncope/client/console/panels/AMSessionDirectoryPanel.java index 9db0f0b713..852f53bf9d 100644 --- a/client/am/console/src/main/java/org/apache/syncope/client/console/panels/AMSessionDirectoryPanel.java +++ b/client/am/console/src/main/java/org/apache/syncope/client/console/panels/AMSessionDirectoryPanel.java @@ -92,7 +92,7 @@ public class AMSessionDirectoryPanel } }; viewModal.size(Modal.Size.Extra_large); - viewModal.setWindowClosedCallback(target -> viewModal.show(false)); + setWindowClosedReloadCallback(viewModal); addOuterObject(viewModal); initResultTable(); diff --git a/client/am/console/src/main/java/org/apache/syncope/client/console/panels/SAML2IdPEntityDirectoryPanel.java b/client/am/console/src/main/java/org/apache/syncope/client/console/panels/SAML2IdPEntityDirectoryPanel.java index 2ec1e9ea21..52244a75a2 100644 --- a/client/am/console/src/main/java/org/apache/syncope/client/console/panels/SAML2IdPEntityDirectoryPanel.java +++ b/client/am/console/src/main/java/org/apache/syncope/client/console/panels/SAML2IdPEntityDirectoryPanel.java @@ -70,11 +70,7 @@ public class SAML2IdPEntityDirectoryPanel extends DirectoryPanel< modal.size(Modal.Size.Large); modal.addSubmitButton(); - - modal.setWindowClosedCallback(target -> { - updateResultTable(target); - modal.show(false); - }); + setWindowClosedReloadCallback(modal, true); addNewItemPanelBuilder(new SAML2IdPEntityWizardBuilder(new SAML2IdPEntityTO(), restClient, pageRef), false); diff --git a/client/am/console/src/main/java/org/apache/syncope/client/console/panels/SRARouteDirectoryPanel.java b/client/am/console/src/main/java/org/apache/syncope/client/console/panels/SRARouteDirectoryPanel.java index a116ccf53f..280026d2e8 100644 --- a/client/am/console/src/main/java/org/apache/syncope/client/console/panels/SRARouteDirectoryPanel.java +++ b/client/am/console/src/main/java/org/apache/syncope/client/console/panels/SRARouteDirectoryPanel.java @@ -61,13 +61,10 @@ public class SRARouteDirectoryPanel modal.size(Modal.Size.Large); modal.addSubmitButton(); - - modal.setWindowClosedCallback(target -> { - updateResultTable(target); - modal.show(false); - }); + setWindowClosedReloadCallback(modal, true); addNewItemPanelBuilder(new SRARouteWizardBuilder(new SRARouteTO(), restClient, pageRef), true); + initResultTable(); } diff --git a/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsReviewPanel_fr_CA.properties b/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsReviewPanel_fr_CA.properties index c2d89faeaf..3fd6639997 100644 --- a/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsReviewPanel_fr_CA.properties +++ b/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsReviewPanel_fr_CA.properties @@ -15,7 +15,7 @@ # specific language governing permissions and limitations # under the License. mergeLinkedAccounts.reviewAccounts.title=Preview finalized linked accounts -connObjectKeyValue=Connector +connObjectKeyValue=Connector Key resource=Resource key=Key username=Username diff --git a/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsReviewPanel_it.properties b/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsReviewPanel_it.properties index c2d89faeaf..bd2fcc6be8 100644 --- a/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsReviewPanel_it.properties +++ b/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsReviewPanel_it.properties @@ -14,9 +14,9 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -mergeLinkedAccounts.reviewAccounts.title=Preview finalized linked accounts -connObjectKeyValue=Connector -resource=Resource -key=Key +mergeLinkedAccounts.reviewAccounts.title=Anteprima linked account +connObjectKeyValue=Chiave esterna +resource=Risorsa +key=Chiave interna username=Username -suspended=Suspended +suspended=Sospeso diff --git a/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsReviewPanel_ja.properties b/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsReviewPanel_ja.properties index c2d89faeaf..3fd6639997 100644 --- a/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsReviewPanel_ja.properties +++ b/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsReviewPanel_ja.properties @@ -15,7 +15,7 @@ # specific language governing permissions and limitations # under the License. mergeLinkedAccounts.reviewAccounts.title=Preview finalized linked accounts -connObjectKeyValue=Connector +connObjectKeyValue=Connector Key resource=Resource key=Key username=Username diff --git a/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsReviewPanel_pt_BR.properties b/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsReviewPanel_pt_BR.properties index c2d89faeaf..3fd6639997 100644 --- a/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsReviewPanel_pt_BR.properties +++ b/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsReviewPanel_pt_BR.properties @@ -15,7 +15,7 @@ # specific language governing permissions and limitations # under the License. mergeLinkedAccounts.reviewAccounts.title=Preview finalized linked accounts -connObjectKeyValue=Connector +connObjectKeyValue=Connector Key resource=Resource key=Key username=Username diff --git a/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsReviewPanel_ru.properties b/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsReviewPanel_ru.properties index c2d89faeaf..3fd6639997 100644 --- a/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsReviewPanel_ru.properties +++ b/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsReviewPanel_ru.properties @@ -15,7 +15,7 @@ # specific language governing permissions and limitations # under the License. mergeLinkedAccounts.reviewAccounts.title=Preview finalized linked accounts -connObjectKeyValue=Connector +connObjectKeyValue=Connector Key resource=Resource key=Key username=Username diff --git a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/DateOps.java b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/DateOps.java index 4e0d591cb2..1f23abe89e 100644 --- a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/DateOps.java +++ b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/DateOps.java @@ -47,11 +47,11 @@ public final class DateOps { } public String format(final OffsetDateTime date) { - return Optional.ofNullable(date).map(v -> fdf.format(convert(date))).orElse(StringUtils.EMPTY); + return Optional.ofNullable(date).map(v -> fdf.format(convert(v))).orElse(StringUtils.EMPTY); } public String format(final ZonedDateTime date) { - return Optional.ofNullable(date).map(v -> fdf.format(convert(date))).orElse(StringUtils.EMPTY); + return Optional.ofNullable(date).map(v -> fdf.format(convert(v))).orElse(StringUtils.EMPTY); } public String format(final LocalDateTime date) { diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/notifications/MailTemplateDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/notifications/MailTemplateDirectoryPanel.java index 51d897be10..b6398da899 100644 --- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/notifications/MailTemplateDirectoryPanel.java +++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/notifications/MailTemplateDirectoryPanel.java @@ -73,10 +73,7 @@ public class MailTemplateDirectoryPanel modal.size(Modal.Size.Small); modal.addSubmitButton(); - modal.setWindowClosedCallback(target -> { - updateResultTable(target); - modal.show(false); - }); + setWindowClosedReloadCallback(modal, true); setFooterVisibility(true); addOuterObject(utilityModal); diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/CommandDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/CommandDirectoryPanel.java index db7a127515..190073bc34 100644 --- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/CommandDirectoryPanel.java +++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/CommandDirectoryPanel.java @@ -65,11 +65,7 @@ public class CommandDirectoryPanel disableCheckBoxes(); modal.size(Modal.Size.Large); - - modal.setWindowClosedCallback(target -> { - updateResultTable(target); - modal.show(false); - }); + setWindowClosedReloadCallback(modal, true); addNewItemPanelBuilder(new CommandWizardBuilder(new CommandTO(), restClient, pageRef), false); diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DirectoryPanel.java index f15ba9b909..272209229b 100644 --- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DirectoryPanel.java +++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DirectoryPanel.java @@ -35,7 +35,6 @@ import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel; import org.apache.syncope.client.console.wizards.WizardMgtPanel; import org.apache.syncope.client.ui.commons.Constants; import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior; -import org.apache.syncope.client.ui.commons.panels.WizardModalPanel; import org.apache.syncope.client.ui.commons.rest.RestClient; import org.apache.syncope.common.lib.types.IdRepoEntitlement; import org.apache.wicket.PageReference; @@ -178,16 +177,13 @@ public abstract class DirectoryPanel< rows = PreferenceManager.getPaginatorRows(paginatorRowsKey()); - modal.setWindowClosedCallback(target -> { - if (actionTogglePanel.isVisibleInHierarchy() && modal.getContent() instanceof WizardModalPanel) { - actionTogglePanel.updateHeader(target, WizardModalPanel.class.cast(modal.getContent()).getItem()); - } - modal.show(false); - }); + setWindowClosedReloadCallback(modal); - setWindowClosedReloadCallback(altDefaultModal); altDefaultModal.size(Modal.Size.Default); + setWindowClosedReloadCallback(altDefaultModal); + displayAttributeModal.size(Modal.Size.Default); + displayAttributeModal.addSubmitButton(); displayAttributeModal.setWindowClosedCallback(target -> { EventDataWrapper data = new EventDataWrapper(); data.setTarget(target); @@ -195,11 +191,27 @@ public abstract class DirectoryPanel< send(DirectoryPanel.this, Broadcast.EXACT, data); - displayAttributeModal.size(Modal.Size.Default); modal.show(false); }); - displayAttributeModal.size(Modal.Size.Default); - displayAttributeModal.addSubmitButton(); + } + + @Override + protected void setWindowClosedReloadCallback(final BaseModal<?> baseModal) { + setWindowClosedReloadCallback(baseModal, false); + } + + protected void setWindowClosedReloadCallback(final BaseModal<?> baseModal, final boolean updateResultTable) { + baseModal.setWindowClosedCallback(target -> { + if (actionTogglePanel.isVisibleInHierarchy()) { + actionTogglePanel.toggle(target, false); + } + + if (updateResultTable) { + updateResultTable(target); + } + + baseModal.show(false); + }); } protected abstract DP dataProvider(); diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DomainDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DomainDirectoryPanel.java index b279dd0437..15120eb0c0 100644 --- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DomainDirectoryPanel.java +++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DomainDirectoryPanel.java @@ -65,15 +65,16 @@ public class DomainDirectoryPanel extends DirectoryPanel<Domain, Domain, DomainP modal.size(Modal.Size.Large); modal.setWindowClosedCallback(target -> { + if (actionTogglePanel.isVisibleInHierarchy()) { + actionTogglePanel.toggle(target, false); + } + updateResultTable(target); modal.show(false); }); addOuterObject(utilityModal); - utilityModal.setWindowClosedCallback(target -> { - updateResultTable(target); - modal.show(false); - }); + setWindowClosedReloadCallback(utilityModal, true); utilityModal.size(Modal.Size.Small); utilityModal.addSubmitButton(); diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DynRealmDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DynRealmDirectoryPanel.java index d720bc331c..3968b02bf0 100644 --- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DynRealmDirectoryPanel.java +++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DynRealmDirectoryPanel.java @@ -65,10 +65,7 @@ public class DynRealmDirectoryPanel extends modal.size(Modal.Size.Large); modal.addSubmitButton(); - modal.setWindowClosedCallback(target -> { - updateResultTable(target); - modal.show(false); - }); + setWindowClosedReloadCallback(modal, true); setFooterVisibility(true); AjaxLink<Void> newDynRealmlLink = new AjaxLink<>("add") { 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 0b2265492b..a275d4d0eb 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 @@ -111,12 +111,12 @@ public class GroupDirectoryPanel extends AnyDirectoryPanel<GroupTO, GroupRestCli super(id, builder, wizardInModal); typeExtensionsModal.size(Modal.Size.Large); - addOuterObject(typeExtensionsModal); - setWindowClosedReloadCallback(typeExtensionsModal); typeExtensionsModal.addSubmitButton(); + setWindowClosedReloadCallback(typeExtensionsModal); + addOuterObject(typeExtensionsModal); - addOuterObject(membersModal); membersModal.size(Modal.Size.Large); + addOuterObject(membersModal); membersTogglePanel = new MembersTogglePanel(page.getPageReference()) { diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ImplementationDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ImplementationDirectoryPanel.java index e73ae45928..7fac40727c 100644 --- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ImplementationDirectoryPanel.java +++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ImplementationDirectoryPanel.java @@ -74,6 +74,10 @@ public class ImplementationDirectoryPanel extends DirectoryPanel< modal.size(Modal.Size.Large); modal.addSubmitButton(); modal.setWindowClosedCallback(target -> { + if (actionTogglePanel.isVisibleInHierarchy()) { + actionTogglePanel.toggle(target, false); + } + implementation.setEngine(null); updateResultTable(target); modal.show(false); diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/NetworkServiceDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/NetworkServiceDirectoryPanel.java index e16594d352..2e2051bb89 100644 --- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/NetworkServiceDirectoryPanel.java +++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/NetworkServiceDirectoryPanel.java @@ -68,10 +68,7 @@ public class NetworkServiceDirectoryPanel extends DirectoryPanel< modal.size(Modal.Size.Large); modal.addSubmitButton(); - modal.setWindowClosedCallback(target -> { - updateResultTable(target); - modal.show(false); - }); + setWindowClosedReloadCallback(modal, true); setFooterVisibility(true); initResultTable(); diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.java index 3dc5e210bc..94c7aeba8f 100644 --- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.java +++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.java @@ -72,10 +72,7 @@ public class SecurityQuestionsPanel extends DirectoryPanel< modal.addSubmitButton(); modal.size(Modal.Size.Large); - modal.setWindowClosedCallback(target -> { - modal.show(false); - target.add(container); - }); + setWindowClosedReloadCallback(modal, true); setFooterVisibility(true); this.addNewItemPanelBuilder( diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/UserDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/UserDirectoryPanel.java index 25fdfc1303..6393f31fcf 100644 --- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/UserDirectoryPanel.java +++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/UserDirectoryPanel.java @@ -74,10 +74,7 @@ public class UserDirectoryPanel extends AnyDirectoryPanel<UserTO, UserRestClient protected UserDirectoryPanel(final String id, final Builder builder, final boolean wizardInModal) { super(id, builder, wizardInModal); - altDefaultModal.setWindowClosedCallback(target -> { - updateResultTable(target); - modal.show(false); - }); + setWindowClosedReloadCallback(altDefaultModal, true); } @Override @@ -224,7 +221,7 @@ public class UserDirectoryPanel extends AnyDirectoryPanel<UserTO, UserRestClient SyncopeWebApplication.get().getAnyDirectoryPanelAdditionalActionLinksProvider().get( model, realm, - altDefaultModal, + modal, getString("any.edit", new Model<>(new UserWrapper(model.getObject()))), this, pageRef).forEach(panel::add); diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/policies/PolicyDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/policies/PolicyDirectoryPanel.java index de735ee05c..133bbb5f5f 100644 --- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/policies/PolicyDirectoryPanel.java +++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/policies/PolicyDirectoryPanel.java @@ -110,10 +110,7 @@ public abstract class PolicyDirectoryPanel<T extends PolicyTO> modal.addSubmitButton(); modal.size(Modal.Size.Large); - modal.setWindowClosedCallback(target -> { - updateResultTable(target); - modal.show(false); - }); + setWindowClosedReloadCallback(modal, true); setFooterVisibility(true); disableCheckBoxes(); diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/bootstrap/dialog/BaseModal.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/bootstrap/dialog/BaseModal.java index 09f871ec36..268e9343cd 100644 --- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/bootstrap/dialog/BaseModal.java +++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/bootstrap/dialog/BaseModal.java @@ -24,6 +24,7 @@ import de.agilecoders.wicket.extensions.markup.html.bootstrap.behavior.Draggable import java.io.Serializable; import java.util.ArrayList; import java.util.List; +import java.util.Optional; import org.apache.syncope.client.console.panels.AbstractModalPanel; import org.apache.syncope.client.console.wicket.ajax.form.IndicatorModalCloseBehavior; import org.apache.syncope.client.console.wicket.markup.html.bootstrap.buttons.DefaultModalCloseButton; @@ -184,9 +185,7 @@ public class BaseModal<T extends Serializable> extends Modal<T> { @Override protected void onClose(final IPartialPageRequestHandler target) { - if (windowClosedCallback != null) { - windowClosedCallback.onClose((AjaxRequestTarget) target); - } + Optional.ofNullable(windowClosedCallback).ifPresent(callback -> callback.onClose((AjaxRequestTarget) target)); } public AjaxSubmitLink addSubmitButton() { diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLink.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLink.java index 44d65ab309..c9c7676b4b 100644 --- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLink.java +++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLink.java @@ -128,9 +128,6 @@ public abstract class ActionLink<T extends Serializable> implements Serializable public abstract void onClick(AjaxRequestTarget target, T modelObject); - public void postClick() { - } - public boolean feedbackPanelAutomaticReload() { return reloadFeedbackPanel; } diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksTogglePanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksTogglePanel.java index 2935f55f5a..815009c7e1 100644 --- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksTogglePanel.java +++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksTogglePanel.java @@ -33,6 +33,7 @@ import org.apache.syncope.client.ui.commons.status.StatusBean; import org.apache.syncope.client.ui.commons.wizards.any.EntityWrapper; import org.apache.syncope.client.ui.commons.wizards.any.UserWrapper; import org.apache.syncope.common.keymaster.client.api.model.Domain; +import org.apache.syncope.common.keymaster.client.api.model.NetworkService; import org.apache.syncope.common.lib.Attr; import org.apache.syncope.common.lib.command.CommandTO; import org.apache.syncope.common.lib.policy.PolicyTO; @@ -71,7 +72,7 @@ public class ActionLinksTogglePanel<T extends Serializable> extends TogglePanel< container.add(getEmptyFragment()); } - public void updateHeader(final AjaxRequestTarget target, final Serializable modelObject) { + protected void updateHeader(final AjaxRequestTarget target, final Serializable modelObject) { final String header; if (modelObject instanceof UserTO) { header = ((UserTO) modelObject).getUsername(); @@ -112,6 +113,8 @@ public class ActionLinksTogglePanel<T extends Serializable> extends TogglePanel< header = ((Domain) modelObject).getKey(); } else if (modelObject instanceof CommandTO) { header = ((CommandTO) modelObject).getKey(); + } else if (modelObject instanceof NetworkService) { + header = ((NetworkService) modelObject).getAddress(); } else if (modelObject instanceof NamedEntityTO) { header = ((NamedEntityTO) modelObject).getName(); } else if (modelObject instanceof EntityTO) { @@ -133,7 +136,7 @@ public class ActionLinksTogglePanel<T extends Serializable> extends TogglePanel< updateHeader(target, modelObject); - modal.setWindowClosedCallback(t -> modal.show(false)); + setWindowClosedReloadCallback(modal); Fragment frag = new Fragment("actions", "actionsFragment", this); frag.setOutputMarkupId(true); diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel.java index 20bd29068a..4b2a83afe7 100644 --- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel.java +++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel.java @@ -169,7 +169,7 @@ public final class ActionPanel<T extends Serializable> extends Panel { Optional.ofNullable(action.getIcon()).ifPresent(i -> actionIcon.add(new AttributeModifier("class", i))); - this.disableIndicator = !action.hasIndicator(); + disableIndicator = !action.hasIndicator(); // --------------------------- } diff --git a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java index c53128011b..93667dfb95 100644 --- a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java +++ b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java @@ -584,8 +584,7 @@ public class UserLogic extends AbstractAnyLogic<UserTO, UserCR, UserUR> { build(); if (changepwd) { - req.setPassword(new PasswordPatch.Builder(). - value(password).onSyncope(false).resources(resources).build()); + req.setPassword(new PasswordPatch.Builder().value(password).onSyncope(false).resources(resources).build()); } return update(req, nullPriorityAsync); 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 6bbe1d6720..41a6365e6a 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 @@ -59,7 +59,7 @@ import org.apache.syncope.core.persistence.api.dao.search.ResourceCond; import org.apache.syncope.core.persistence.api.dao.search.RoleCond; import org.apache.syncope.core.persistence.api.dao.search.SearchCond; import org.apache.syncope.core.persistence.api.entity.AnyType; -import org.apache.syncope.core.persistence.api.entity.EntityFactory; +import org.apache.syncope.core.persistence.api.entity.AnyUtils; import org.apache.syncope.core.persistence.api.entity.PlainSchema; import org.apache.syncope.core.persistence.api.entity.anyobject.AMembership; import org.apache.syncope.core.persistence.api.entity.anyobject.AnyObject; @@ -105,12 +105,9 @@ public class AnySearchTest extends AbstractTest { @Autowired private RoleDAO roleDAO; - + @Autowired private PlainSchemaDAO plainSchemaDAO; - - @Autowired - private EntityFactory entityFactory; @Autowired private PlainAttrValidationManager validator; @@ -989,58 +986,48 @@ public class AnySearchTest extends AbstractTest { } @Test - public void issueSYNCOPE1906() { - User bellini = userDAO.findByUsername("bellini"); - assertNotNull(bellini); - + void issueSYNCOPE1906() { PlainSchema ctypeSchema = plainSchemaDAO.find("ctype"); - assertNotNull(ctypeSchema); - - userDAO.save(addPlainAttr(bellini, ctypeSchema, "aa1")); - User puccini = userDAO.findByUsername("puccini"); - assertNotNull(bellini); + AnyUtils anyUtils = anyUtilsFactory.getInstance(AnyTypeKind.USER); - userDAO.save(addPlainAttr(puccini, ctypeSchema, "aa2")); + anyUtils.addAttr(validator, userDAO.findKey("bellini"), ctypeSchema, "aa1"); + assertEquals("aa1", userDAO.findByUsername("bellini"). + getPlainAttr("ctype").orElseThrow().getValues().get(0).getValueAsString()); - User verdi = userDAO.findByUsername("verdi"); - assertNotNull(verdi); + anyUtils.addAttr(validator, userDAO.findKey("puccini"), ctypeSchema, "aa2"); + assertEquals("aa2", userDAO.findByUsername("puccini"). + getPlainAttr("ctype").orElseThrow().getValues().get(0).getValueAsString()); - userDAO.save(addPlainAttr(verdi, ctypeSchema, "aa3")); + anyUtils.addAttr(validator, userDAO.findKey("verdi"), ctypeSchema, "aa3"); + assertEquals("aa3", userDAO.findByUsername("verdi"). + getPlainAttr("ctype").orElseThrow().getValues().get(0).getValueAsString()); - User vivaldi = userDAO.findByUsername("vivaldi"); - assertNotNull(vivaldi); - - userDAO.save(addPlainAttr(vivaldi, ctypeSchema, "aa4")); - - User rossini = userDAO.findByUsername("rossini"); - assertNotNull(rossini); + anyUtils.removeAttr(userDAO.findKey("vivaldi"), ctypeSchema); + anyUtils.addAttr(validator, userDAO.findKey("vivaldi"), ctypeSchema, "aa4"); + assertEquals("aa4", userDAO.findByUsername("vivaldi"). + getPlainAttr("ctype").orElseThrow().getValues().get(0).getValueAsString()); - userDAO.save(addPlainAttr(rossini, ctypeSchema, "aa5")); + anyUtils.removeAttr(userDAO.findKey("rossini"), ctypeSchema); + anyUtils.addAttr(validator, userDAO.findKey("rossini"), ctypeSchema, "aa5"); + assertEquals("aa5", userDAO.findByUsername("rossini"). + getPlainAttr("ctype").orElseThrow().getValues().get(0).getValueAsString()); entityManager().flush(); + AnyCond keyCond = new AnyCond(AttrCond.Type.ISNOTNULL); + keyCond.setSchema("key"); + OrderByClause orderByCtype = new OrderByClause(); orderByCtype.setField("ctype"); orderByCtype.setDirection(OrderByClause.Direction.DESC); - OrderByClause orderByFirstname = new OrderByClause(); - orderByFirstname.setField("username"); - orderByFirstname.setDirection(OrderByClause.Direction.DESC); - - AnyCond idCond = new AnyCond(AttrCond.Type.ISNOTNULL); - idCond.setSchema("id"); - - List<User> users = - searchDAO.search(SearchCond.getLeaf(idCond), List.of(orderByCtype, orderByFirstname), AnyTypeKind.USER); - - assertEquals("bellini", users.get(4).getUsername()); - assertEquals("puccini", users.get(3).getUsername()); - assertEquals("verdi", users.get(2).getUsername()); - assertEquals("vivaldi", users.get(1).getUsername()); - assertEquals("rossini", users.get(0).getUsername()); + List<User> users = searchDAO.search( + SearchCond.getLeaf(keyCond), List.of(orderByCtype), AnyTypeKind.USER); + assertEquals( + List.of("rossini", "vivaldi", "verdi", "puccini", "bellini"), + users.stream().map(User::getUsername).collect(Collectors.toList())); - // order by ctype even not searching by it AttrCond surnameCond = new AttrCond(AttrCond.Type.ILIKE); surnameCond.setSchema("surname"); surnameCond.setExpression("%ini"); @@ -1048,10 +1035,10 @@ public class AnySearchTest extends AbstractTest { AttrCond coolCond = new AttrCond(AttrCond.Type.ISNULL); coolCond.setSchema("cool"); - users = searchDAO.search(SearchCond.getAnd(SearchCond.getLeaf(surnameCond), SearchCond.getLeaf(coolCond)), + // order by ctype even not searching by it + users = searchDAO.search( + SearchCond.getAnd(SearchCond.getLeaf(surnameCond), SearchCond.getLeaf(coolCond)), List.of(orderByCtype), AnyTypeKind.USER); - - assertFalse(users.isEmpty()); assertEquals(2, users.size()); // order by unique attribute @@ -1059,45 +1046,29 @@ public class AnySearchTest extends AbstractTest { orderByFullname.setField("fullname"); orderByFullname.setDirection(OrderByClause.Direction.DESC); - users = searchDAO.search(SearchCond.getLeaf(idCond), List.of(orderByFullname), AnyTypeKind.USER); - - assertEquals("vivaldi", users.get(4).getUsername()); - assertEquals("puccini", users.get(3).getUsername()); - assertEquals("rossini", users.get(2).getUsername()); - assertEquals("verdi", users.get(1).getUsername()); - assertEquals("bellini", users.get(0).getUsername()); + users = searchDAO.search( + SearchCond.getLeaf(keyCond), List.of(orderByFullname), AnyTypeKind.USER); + assertEquals( + List.of("bellini", "verdi", "rossini", "puccini", "vivaldi"), + users.stream().map(User::getUsername).collect(Collectors.toList())); } @Test - public void issueSYNCOPE1922() { - User bellini = userDAO.findByUsername("bellini"); - assertNotNull(bellini); - - PlainSchema obscureSchema = plainSchemaDAO.find("obscure"); - assertNotNull(obscureSchema); - - userDAO.save(addPlainAttr(bellini, obscureSchema, "myobscurevalue")); + void issueSYNCOPE1922() { + anyUtilsFactory.getInstance(AnyTypeKind.USER).addAttr( + validator, + userDAO.findKey("bellini"), + plainSchemaDAO.find("obscure"), + "myobscurevalue"); entityManager().flush(); - AttrCond obscureCond = new AttrCond(AttrCond.Type.EQ); - obscureCond.setSchema("obscure"); - obscureCond.setExpression("myobscurevalue"); - - assertThrows(IllegalArgumentException.class, - () -> searchDAO.search(SearchCond.getLeaf(obscureCond), AnyTypeKind.USER)); - } + AttrCond cond = new AttrCond(AttrCond.Type.EQ); + cond.setSchema("obscure"); + cond.setExpression("myobscurevalue"); - private User addPlainAttr(final User user, final PlainSchema plainSchema, final String value) { - user.getPlainAttr(plainSchema.getKey()) - .ifPresentOrElse(ctype -> ctype.getValues().get(0).setStringValue(value), () -> { - UPlainAttr attr = entityFactory.newEntity(UPlainAttr.class); - attr.setOwner(user); - attr.setSchema(plainSchema); - attr.add(validator, value, anyUtilsFactory.getInstance(AnyTypeKind.USER)); - - user.add(attr); - }); - return user; + assertThrows( + IllegalArgumentException.class, + () -> searchDAO.search(SearchCond.getLeaf(cond), AnyTypeKind.USER)); } } diff --git a/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/UserRequestFormDirectoryPanel.java b/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/UserRequestFormDirectoryPanel.java index ff5264f24d..1bcc71b226 100644 --- a/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/UserRequestFormDirectoryPanel.java +++ b/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/UserRequestFormDirectoryPanel.java @@ -113,6 +113,10 @@ public class UserRequestFormDirectoryPanel ((UserRequestFormsWidget) widget).refreshLatestAlerts(target); } + if (actionTogglePanel.isVisibleInHierarchy()) { + actionTogglePanel.toggle(target, false); + } + manageFormModal.show(false); }); diff --git a/ext/oidcc4ui/client-console/src/main/java/org/apache/syncope/client/console/panels/OIDCProvidersDirectoryPanel.java b/ext/oidcc4ui/client-console/src/main/java/org/apache/syncope/client/console/panels/OIDCProvidersDirectoryPanel.java index 8961e524b6..63594c21b7 100644 --- a/ext/oidcc4ui/client-console/src/main/java/org/apache/syncope/client/console/panels/OIDCProvidersDirectoryPanel.java +++ b/ext/oidcc4ui/client-console/src/main/java/org/apache/syncope/client/console/panels/OIDCProvidersDirectoryPanel.java @@ -117,7 +117,7 @@ public class OIDCProvidersDirectoryPanel extends DirectoryPanel< setFooterVisible(false); } }; - templateModal.setWindowClosedCallback(target -> templateModal.show(false)); + setWindowClosedReloadCallback(templateModal); templateModal.size(Modal.Size.Large); addOuterObject(templateModal); diff --git a/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel.java b/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel.java index 3705c9cb9a..b9210a3217 100644 --- a/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel.java +++ b/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel.java @@ -107,10 +107,7 @@ public class SAML2IdPsDirectoryPanel extends DirectoryPanel< modal.addSubmitButton(); modal.size(Modal.Size.Large); - modal.setWindowClosedCallback(target -> { - updateResultTable(target); - modal.show(false); - }); + setWindowClosedReloadCallback(modal, true); addOuterObject(metadataModal); setWindowClosedReloadCallback(metadataModal); @@ -126,7 +123,7 @@ public class SAML2IdPsDirectoryPanel extends DirectoryPanel< setFooterVisible(false); } }; - templateModal.setWindowClosedCallback(target -> templateModal.show(false)); + setWindowClosedReloadCallback(templateModal); templateModal.size(Modal.Size.Large); addOuterObject(templateModal); diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/BatchesITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/BatchesITCase.java index 05d5f43420..20ac76a4b6 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/BatchesITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/BatchesITCase.java @@ -83,31 +83,31 @@ public class BatchesITCase extends AbstractConsoleITCase { + ":outer:container:content:togglePanelContainer:container:actions:actions:actionRepeater:4:" + "action:action"); - TESTER.assertComponent(TAB_PANEL + "outerObjectsRepeater:2:outer:form:content:status:" + TESTER.assertComponent(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:status:" + "firstLevelContainer:first:container:content:searchContainer:resultTable:tablePanel:groupForm:" + "checkgroup:dataTable", WebMarkupContainer.class); component = findComponentByProp("resource", - TAB_PANEL + "outerObjectsRepeater:2:outer:form:content:status:" + TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:status:" + "firstLevelContainer:first:container:content:searchContainer:resultTable:tablePanel:groupForm:" + "checkgroup:dataTable", "resource-csv"); assertNotNull(component); FormTester formTester = TESTER.newFormTester( - TAB_PANEL + "outerObjectsRepeater:2:outer:form:content:status:firstLevelContainer:" + TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:status:firstLevelContainer:" + "first:container:content:searchContainer:resultTable:tablePanel:groupForm"); assertNotNull(formTester); formTester.select("checkgroup", 0); - TESTER.executeAjaxEvent(TAB_PANEL + "outerObjectsRepeater:2:outer:form:content:status:" + TESTER.executeAjaxEvent(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:status:" + "firstLevelContainer:first:container:content:searchContainer:resultTable:tablePanel:batchLink", Constants.ON_CLICK); - TESTER.assertComponent(TAB_PANEL + "outerObjectsRepeater:2:outer:form:content:status:" + TESTER.assertComponent(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:status:" + "secondLevelContainer:second:container", WebMarkupContainer.class); - assertNotNull(findComponentByProp("resource", TAB_PANEL + "outerObjectsRepeater:2:outer:" + assertNotNull(findComponentByProp("resource", TAB_PANEL + "outerObjectsRepeater:0:outer:" + "form:content:status:secondLevelContainer:second:container", "resource-csv")); } @@ -137,12 +137,12 @@ public class BatchesITCase extends AbstractConsoleITCase { + ":outer:container:content:togglePanelContainer:container:actions:actions:actionRepeater:3:" + "action:action"); - TESTER.assertComponent(TAB_PANEL + "outerObjectsRepeater:2:outer:form:content:status:" + TESTER.assertComponent(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:status:" + "firstLevelContainer:first:container:content:searchContainer:resultTable:tablePanel:groupForm:" + "checkgroup:dataTable", WebMarkupContainer.class); component = findComponentByProp("resource", - TAB_PANEL + "outerObjectsRepeater:2:outer:form:content:status:firstLevelContainer:first:container:" + TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:status:firstLevelContainer:first:container:" + "content:searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", resource); component = TESTER.getComponentFromLastRenderedPage(component.getPageRelativePath() @@ -151,37 +151,37 @@ public class BatchesITCase extends AbstractConsoleITCase { assertEquals(resource, StatusBean.class.cast(component.getDefaultModelObject()).getResource()); FormTester formTester = TESTER.newFormTester( - TAB_PANEL + "outerObjectsRepeater:2:outer:form:content:status:firstLevelContainer:" + TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:status:firstLevelContainer:" + "first:container:content:searchContainer:resultTable:tablePanel:groupForm"); assertNotNull(formTester); formTester.select("checkgroup", index); - TESTER.executeAjaxEvent(TAB_PANEL + "outerObjectsRepeater:2:outer:form:content:status:" + TESTER.executeAjaxEvent(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:status:" + "firstLevelContainer:first:container:content:searchContainer:resultTable:tablePanel:batchLink", Constants.ON_CLICK); - TESTER.assertComponent(TAB_PANEL + "outerObjectsRepeater:2:outer:form:content:status:" + TESTER.assertComponent(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:status:" + "secondLevelContainer:second:container", WebMarkupContainer.class); // suspend link TESTER.executeAjaxEvent(TAB_PANEL - + "outerObjectsRepeater:2:outer:form:content:status:secondLevelContainer:" + + "outerObjectsRepeater:0:outer:form:content:status:secondLevelContainer:" + "second:container:actions:actionRepeater:0:action:action", Constants.ON_CLICK); assertSuccessMessage(); TESTER.cleanupFeedbackMessages(); - TESTER.assertLabel(TAB_PANEL + "outerObjectsRepeater:2:outer:form:content:status:" + TESTER.assertLabel(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:status:" + "secondLevelContainer:second:container:selectedObjects:body:rows:1:cells:4:cell", "SUCCESS"); TESTER.executeAjaxEvent(TAB_PANEL - + "outerObjectsRepeater:2:outer:form:content:status:secondLevelContainer:back", + + "outerObjectsRepeater:0:outer:form:content:status:secondLevelContainer:back", Constants.ON_CLICK); component = findComponentByProp("resource", - TAB_PANEL + "outerObjectsRepeater:2:outer:form:content:status:firstLevelContainer:first:container:" + TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:status:firstLevelContainer:first:container:" + "content:searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", resource); component = TESTER.getComponentFromLastRenderedPage(component.getPageRelativePath() @@ -204,42 +204,42 @@ public class BatchesITCase extends AbstractConsoleITCase { + ":outer:container:content:togglePanelContainer:container:actions:actions:actionRepeater:3:" + "action:action"); - TESTER.assertComponent(TAB_PANEL + "outerObjectsRepeater:2:outer:form:content:status:" + TESTER.assertComponent(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:status:" + "firstLevelContainer:first:container:content:searchContainer:resultTable:tablePanel:groupForm:" + "checkgroup:dataTable", WebMarkupContainer.class); formTester = TESTER.newFormTester( - TAB_PANEL + "outerObjectsRepeater:2:outer:form:content:status:firstLevelContainer:" + TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:status:firstLevelContainer:" + "first:container:content:searchContainer:resultTable:tablePanel:groupForm"); assertNotNull(formTester); formTester.select("checkgroup", index); - TESTER.executeAjaxEvent(TAB_PANEL + "outerObjectsRepeater:2:outer:form:content:status:" + TESTER.executeAjaxEvent(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:status:" + "firstLevelContainer:first:container:content:searchContainer:resultTable:tablePanel:batchLink", Constants.ON_CLICK); - TESTER.assertComponent(TAB_PANEL + "outerObjectsRepeater:2:outer:form:content:status:" + TESTER.assertComponent(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:status:" + "secondLevelContainer:second:container", WebMarkupContainer.class); // suspend link TESTER.executeAjaxEvent(TAB_PANEL - + "outerObjectsRepeater:2:outer:form:content:status:secondLevelContainer:" + + "outerObjectsRepeater:0:outer:form:content:status:secondLevelContainer:" + "second:container:actions:actionRepeater:1:action:action", Constants.ON_CLICK); assertSuccessMessage(); TESTER.cleanupFeedbackMessages(); - TESTER.assertLabel(TAB_PANEL + "outerObjectsRepeater:2:outer:form:content:status:" + TESTER.assertLabel(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:status:" + "secondLevelContainer:second:container:selectedObjects:body:rows:1:cells:4:cell", "SUCCESS"); TESTER.executeAjaxEvent(TAB_PANEL - + "outerObjectsRepeater:2:outer:form:content:status:secondLevelContainer:back", + + "outerObjectsRepeater:0:outer:form:content:status:secondLevelContainer:back", Constants.ON_CLICK); component = findComponentByProp("resource", - TAB_PANEL + "outerObjectsRepeater:2:outer:form:content:status:firstLevelContainer:first:container:" + TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:status:firstLevelContainer:first:container:" + "content:searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", resource); component = TESTER.getComponentFromLastRenderedPage(component.getPageRelativePath() diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/LinkedAccountsITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/LinkedAccountsITCase.java index 74bcaaa44b..1bce33f970 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/LinkedAccountsITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/LinkedAccountsITCase.java @@ -124,12 +124,14 @@ public class LinkedAccountsITCase extends AbstractConsoleITCase { TESTER.clickLink(TAB_PANEL + "outerObjectsRepeater:1:outer:container:content:togglePanelContainer:container:" + "actions:actions:actionRepeater:6:action:action"); // Search for user - TESTER.executeAjaxEvent(USER_SEARCH_FORM + "content:panelPlus:add", Constants.ON_CLICK); - FormTester formTester = TESTER.newFormTester(USER_SEARCH_FORM); + TESTER.executeAjaxEvent(USER_SEARCH_FORM.replace(":2:", ":0:") + "content:panelPlus:add", Constants.ON_CLICK); + FormTester formTester = TESTER.newFormTester(USER_SEARCH_FORM.replace(":2:", ":0:")); - DropDownChoice<?> type = (DropDownChoice<?>) TESTER.getComponentFromLastRenderedPage(USER_SEARCH_FORM + DropDownChoice<?> type = (DropDownChoice<?>) TESTER.getComponentFromLastRenderedPage( + USER_SEARCH_FORM.replace(":2:", ":0:") + "content:view:0:panel:container:type:dropDownChoiceField"); - TESTER.executeAjaxEvent(USER_SEARCH_FORM + "content:view:0:panel:container:type:dropDownChoiceField", + TESTER.executeAjaxEvent(USER_SEARCH_FORM.replace(":2:", ":0:") + + "content:view:0:panel:container:type:dropDownChoiceField", Constants.ON_CHANGE); type.setModelValue(new String[] { "ATTRIBUTE" }); type.setDefaultModelObject(SearchClause.Type.ATTRIBUTE); @@ -149,32 +151,33 @@ public class LinkedAccountsITCase extends AbstractConsoleITCase { TESTER.assertNoErrorMessage(); // Locate result in data table - Component comp = findComponentByProp("username", TAB_PANEL + SEARCH_PANEL + RESULT_DATA_TABLE, USER. - getUsername()); + Component comp = findComponentByProp("username", TAB_PANEL + SEARCH_PANEL.replace(":2:", ":0:") + + RESULT_DATA_TABLE, USER.getUsername()); TESTER.executeAjaxEvent(comp.getPageRelativePath(), Constants.ON_CLICK); // Select user - TESTER.clickLink(TAB_PANEL + SEARCH_PANEL + SELECT_USER_ACTION); + TESTER.clickLink(TAB_PANEL + SEARCH_PANEL.replace(":2:", ":0:") + SELECT_USER_ACTION); // move onto the next panel - TESTER.getComponentFromLastRenderedPage(TAB_PANEL + FORM + "view").setEnabled(false); - formTester = TESTER.newFormTester(TAB_PANEL + FORM); + TESTER.getComponentFromLastRenderedPage(TAB_PANEL + FORM.replace(":2:", ":0:") + "view").setEnabled(false); + formTester = TESTER.newFormTester(TAB_PANEL + FORM.replace(":2:", ":0:")); formTester.submit("buttons:next"); // Select a resource - comp = findComponentByProp("key", TAB_PANEL + FORM + RESOURCES_DATA_TABLE + "body:rows", "resource-ldap"); + comp = findComponentByProp("key", TAB_PANEL + FORM.replace(":2:", ":0:") + RESOURCES_DATA_TABLE + "body:rows", + "resource-ldap"); assertNotNull(comp); TESTER.executeAjaxEvent(comp.getPageRelativePath(), Constants.ON_CLICK); - TESTER.clickLink(TAB_PANEL + FORM + SELECT_RESOURCE_ACTION); + TESTER.clickLink(TAB_PANEL + FORM.replace(":2:", ":0:") + SELECT_RESOURCE_ACTION); // move onto the next panel - TESTER.getComponentFromLastRenderedPage(TAB_PANEL + FORM + "view").setEnabled(false); - formTester = TESTER.newFormTester(TAB_PANEL + FORM); + TESTER.getComponentFromLastRenderedPage(TAB_PANEL + FORM.replace(":2:", ":0:") + "view").setEnabled(false); + formTester = TESTER.newFormTester(TAB_PANEL + FORM.replace(":2:", ":0:")); formTester.submit("buttons:next"); // Finish merge - TESTER.getComponentFromLastRenderedPage(TAB_PANEL + FORM + "view").setEnabled(false); - formTester = TESTER.newFormTester(TAB_PANEL + FORM); + TESTER.getComponentFromLastRenderedPage(TAB_PANEL + FORM.replace(":2:", ":0:") + "view").setEnabled(false); + formTester = TESTER.newFormTester(TAB_PANEL + FORM.replace(":2:", ":0:")); formTester.submit("buttons:finish"); UserService userService = SyncopeConsoleSession.get().getService(UserService.class); diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SearchITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SearchITCase.java index fc1c7faed4..a74d6058fd 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SearchITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SearchITCase.java @@ -1144,7 +1144,7 @@ public class SearchITCase extends AbstractITCase { } @Test - public void issueSYNCOPE1922() { + void issueSYNCOPE1922() { // 1. set encrypted value updateUser(new UserUR.Builder(USER_SERVICE.read("bellini").getKey()).plainAttr( attrAddReplacePatch("obscure", "myobscurevalue")).build());
