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
The following commit(s) were added to refs/heads/master by this push:
new f19ad836a2 [SYNCOPE-1995] Reworking webSocket-based timers for Tasks
and Reports
f19ad836a2 is described below
commit f19ad836a22dc014dd6730341515c8eca6f1232c
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 aac79c6e4d..d243ce6893 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
@@ -23,6 +23,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;
@@ -31,6 +32,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;
import tools.jackson.databind.json.JsonMapper;
@@ -62,6 +65,23 @@ public abstract class DirectoryPanel<
protected static final JsonMapper MAPPER = new SyncopeJsonMapper();
+ 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);