This is an automated email from the ASF dual-hosted git repository. ilgrosso pushed a commit to branch 4_1_X in repository https://gitbox.apache.org/repos/asf/syncope.git
commit 5d60a27dcd3db368e4aad1504a9e6db3c481cbcf Author: Francesco Chicchiriccò <[email protected]> AuthorDate: Wed Sep 16 11:03:36 2026 +0200 [SYNCOPE-1995] Reworking webSocket-based timers for Tasks and Reports --- .../client/console/panels/DirectoryPanel.java | 20 ++++++++++++ .../client/console/panels/UserDirectoryPanel.java | 36 ++++++++++++---------- .../console/reports/ReportDirectoryPanel.java | 13 +------- .../console/tasks/SchedTaskDirectoryPanel.java | 13 +------- 4 files changed, 42 insertions(+), 40 deletions(-) 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 ad1158cb8b..227f117fa9 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 @@ -24,6 +24,7 @@ import java.io.Serializable; import java.util.Collection; import java.util.List; import java.util.Optional; +import java.util.concurrent.TimeUnit; import java.util.function.BiConsumer; import org.apache.syncope.client.console.PreferenceManager; import org.apache.syncope.client.console.commons.DirectoryDataProvider; @@ -32,6 +33,7 @@ import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.Bas import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink; import org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksTogglePanel; import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel; +import org.apache.syncope.client.console.wicket.ws.BasePageWebSocketBehavior; 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; @@ -48,6 +50,7 @@ import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; import org.apache.wicket.model.PropertyModel; +import org.apache.wicket.protocol.ws.api.WebSocketRequestHandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -61,6 +64,23 @@ public abstract class DirectoryPanel< protected static final JsonMapper MAPPER = JsonMapper.builder().findAndAddModules().build(); + protected class OnTimerUpdateResultTable extends BasePageWebSocketBehavior.OnTimerChild { + + private static final long serialVersionUID = 532119924423529449L; + + public OnTimerUpdateResultTable() { + super(10, TimeUnit.SECONDS); + } + + @Override + protected void onTimer(final WebSocketRequestHandler handler) { + updateResultTable(false); + if (container.isVisibleInHierarchy()) { + handler.add(container); + } + } + } + protected E restClient; /** 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 774f4e5324..1c444027b6 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 @@ -229,25 +229,29 @@ public class UserDirectoryPanel extends AnyDirectoryPanel<UserTO, UserRestClient setRealm(realm); } - panel.add(new ActionLink<>() { + if (confParamOps.get(SyncopeConsoleSession.get().getDomain(), + StandardConfParams.MFA_ENABLED, false, boolean.class)) { - private static final long serialVersionUID = -7978723352517770644L; + panel.add(new ActionLink<>() { - @Override - public void onClick(final AjaxRequestTarget target, final UserTO ignore) { - try { - mfaRestClient.dismiss(model.getObject().getUsername()); - - SyncopeConsoleSession.get().success(getString(Constants.OPERATION_SUCCEEDED)); - target.add(container); - } catch (Exception e) { - LOG.error("While dismissing MFA for {}", model.getObject().getuManager(), e); - SyncopeConsoleSession.get().onException(e); + private static final long serialVersionUID = -7978723352517770644L; + + @Override + public void onClick(final AjaxRequestTarget target, final UserTO ignore) { + try { + mfaRestClient.dismiss(model.getObject().getUsername()); + + SyncopeConsoleSession.get().success(getString(Constants.OPERATION_SUCCEEDED)); + target.add(container); + } catch (Exception e) { + LOG.error("While dismissing MFA for {}", model.getObject().getuManager(), e); + SyncopeConsoleSession.get().onException(e); + } + ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target); } - ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target); - } - }, ActionType.DISMISS_MFA, IdRepoEntitlement.USER_UPDATE, true). - setRealm(realm); + }, ActionType.DISMISS_MFA, IdRepoEntitlement.USER_UPDATE, true). + setRealm(realm); + } SyncopeWebApplication.get().getAnyDirectoryPanelAdditionalActionLinksProvider().get( model, diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/reports/ReportDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/reports/ReportDirectoryPanel.java index 4392e4ae4e..12dedca431 100644 --- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/reports/ReportDirectoryPanel.java +++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/reports/ReportDirectoryPanel.java @@ -23,7 +23,6 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; -import java.util.concurrent.TimeUnit; import org.apache.commons.lang3.SerializationUtils; import org.apache.syncope.client.console.SyncopeConsoleSession; import org.apache.syncope.client.console.commons.DirectoryDataProvider; @@ -67,7 +66,6 @@ import org.apache.wicket.model.CompoundPropertyModel; import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; import org.apache.wicket.model.StringResourceModel; -import org.apache.wicket.protocol.ws.api.WebSocketRequestHandler; import org.apache.wicket.spring.injection.annot.SpringBean; /** @@ -101,16 +99,7 @@ public abstract class ReportDirectoryPanel pageRef.getPage().getBehaviors().stream(). filter(BasePageWebSocketBehavior.class::isInstance).map(BasePageWebSocketBehavior.class::cast). - findFirst().ifPresent(wsb -> wsb.add(new BasePageWebSocketBehavior.OnTimerChild(10, TimeUnit.SECONDS) { - - private static final long serialVersionUID = -4661303265651934868L; - - @Override - protected void onTimer(final WebSocketRequestHandler handler) { - container.modelChanged(); - handler.add(container); - } - })); + findFirst().ifPresent(wsb -> wsb.add(new OnTimerUpdateResultTable())); startAt = new ReportStartAtTogglePanel(container, pageRef); addInnerObject(startAt); diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java index 94a6dda78e..175d360e70 100644 --- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java +++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java @@ -24,7 +24,6 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; -import java.util.concurrent.TimeUnit; import org.apache.commons.lang3.SerializationUtils; import org.apache.commons.lang3.tuple.Pair; import org.apache.syncope.client.console.SyncopeConsoleSession; @@ -69,7 +68,6 @@ import org.apache.wicket.markup.repeater.Item; import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; import org.apache.wicket.model.StringResourceModel; -import org.apache.wicket.protocol.ws.api.WebSocketRequestHandler; import org.apache.wicket.spring.injection.annot.SpringBean; /** @@ -123,16 +121,7 @@ public abstract class SchedTaskDirectoryPanel<T extends SchedTaskTO> pageRef.getPage().getBehaviors().stream(). filter(BasePageWebSocketBehavior.class::isInstance).map(BasePageWebSocketBehavior.class::cast). - findFirst().ifPresent(wsb -> wsb.add(new BasePageWebSocketBehavior.OnTimerChild(10, TimeUnit.SECONDS) { - - private static final long serialVersionUID = 532119924423529449L; - - @Override - protected void onTimer(final WebSocketRequestHandler handler) { - container.modelChanged(); - handler.add(container); - } - })); + findFirst().ifPresent(wsb -> wsb.add(new OnTimerUpdateResultTable())); startAt = new TaskStartAtTogglePanel(container, pageRef); addInnerObject(startAt);
