Skip to content

Commit f19ad83

Browse files
committed
[SYNCOPE-1995] Reworking webSocket-based timers for Tasks and Reports
1 parent b2e5d3d commit f19ad83

4 files changed

Lines changed: 42 additions & 40 deletions

File tree

‎client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DirectoryPanel.java‎

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import java.util.Collection;
2424
import java.util.List;
2525
import java.util.Optional;
26+
import java.util.concurrent.TimeUnit;
2627
import java.util.function.BiConsumer;
2728
import org.apache.syncope.client.console.PreferenceManager;
2829
import org.apache.syncope.client.console.commons.DirectoryDataProvider;
@@ -31,6 +32,7 @@
3132
import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
3233
import org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksTogglePanel;
3334
import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
35+
import org.apache.syncope.client.console.wicket.ws.BasePageWebSocketBehavior;
3436
import org.apache.syncope.client.console.wizards.WizardMgtPanel;
3537
import org.apache.syncope.client.ui.commons.Constants;
3638
import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
@@ -48,6 +50,7 @@
4850
import org.apache.wicket.model.IModel;
4951
import org.apache.wicket.model.Model;
5052
import org.apache.wicket.model.PropertyModel;
53+
import org.apache.wicket.protocol.ws.api.WebSocketRequestHandler;
5154
import org.slf4j.Logger;
5255
import org.slf4j.LoggerFactory;
5356
import tools.jackson.databind.json.JsonMapper;
@@ -62,6 +65,23 @@ public abstract class DirectoryPanel<
6265

6366
protected static final JsonMapper MAPPER = new SyncopeJsonMapper();
6467

68+
protected class OnTimerUpdateResultTable extends BasePageWebSocketBehavior.OnTimerChild {
69+
70+
private static final long serialVersionUID = 532119924423529449L;
71+
72+
public OnTimerUpdateResultTable() {
73+
super(10, TimeUnit.SECONDS);
74+
}
75+
76+
@Override
77+
protected void onTimer(final WebSocketRequestHandler handler) {
78+
updateResultTable(false);
79+
if (container.isVisibleInHierarchy()) {
80+
handler.add(container);
81+
}
82+
}
83+
}
84+
6585
protected E restClient;
6686

6787
/**

‎client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/UserDirectoryPanel.java‎

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -229,25 +229,29 @@ public void onClick(final AjaxRequestTarget target, final UserTO ignore) {
229229
setRealm(realm);
230230
}
231231

232-
panel.add(new ActionLink<>() {
232+
if (confParamOps.get(SyncopeConsoleSession.get().getDomain(),
233+
StandardConfParams.MFA_ENABLED, false, boolean.class)) {
233234

234-
private static final long serialVersionUID = -7978723352517770644L;
235+
panel.add(new ActionLink<>() {
235236

236-
@Override
237-
public void onClick(final AjaxRequestTarget target, final UserTO ignore) {
238-
try {
239-
mfaRestClient.dismiss(model.getObject().getUsername());
240-
241-
SyncopeConsoleSession.get().success(getString(Constants.OPERATION_SUCCEEDED));
242-
target.add(container);
243-
} catch (Exception e) {
244-
LOG.error("While dismissing MFA for {}", model.getObject().getuManager(), e);
245-
SyncopeConsoleSession.get().onException(e);
237+
private static final long serialVersionUID = -7978723352517770644L;
238+
239+
@Override
240+
public void onClick(final AjaxRequestTarget target, final UserTO ignore) {
241+
try {
242+
mfaRestClient.dismiss(model.getObject().getUsername());
243+
244+
SyncopeConsoleSession.get().success(getString(Constants.OPERATION_SUCCEEDED));
245+
target.add(container);
246+
} catch (Exception e) {
247+
LOG.error("While dismissing MFA for {}", model.getObject().getuManager(), e);
248+
SyncopeConsoleSession.get().onException(e);
249+
}
250+
((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
246251
}
247-
((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
248-
}
249-
}, ActionType.DISMISS_MFA, IdRepoEntitlement.USER_UPDATE, true).
250-
setRealm(realm);
252+
}, ActionType.DISMISS_MFA, IdRepoEntitlement.USER_UPDATE, true).
253+
setRealm(realm);
254+
}
251255

252256
SyncopeWebApplication.get().getAnyDirectoryPanelAdditionalActionLinksProvider().get(
253257
model,

‎client/idrepo/console/src/main/java/org/apache/syncope/client/console/reports/ReportDirectoryPanel.java‎

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import java.util.Collection;
2424
import java.util.Iterator;
2525
import java.util.List;
26-
import java.util.concurrent.TimeUnit;
2726
import org.apache.commons.lang3.SerializationUtils;
2827
import org.apache.syncope.client.console.SyncopeConsoleSession;
2928
import org.apache.syncope.client.console.commons.DirectoryDataProvider;
@@ -67,7 +66,6 @@
6766
import org.apache.wicket.model.IModel;
6867
import org.apache.wicket.model.Model;
6968
import org.apache.wicket.model.StringResourceModel;
70-
import org.apache.wicket.protocol.ws.api.WebSocketRequestHandler;
7169
import org.apache.wicket.spring.injection.annot.SpringBean;
7270

7371
/**
@@ -101,16 +99,7 @@ protected ReportDirectoryPanel(final ReportRestClient restClient, final PageRefe
10199

102100
pageRef.getPage().getBehaviors().stream().
103101
filter(BasePageWebSocketBehavior.class::isInstance).map(BasePageWebSocketBehavior.class::cast).
104-
findFirst().ifPresent(wsb -> wsb.add(new BasePageWebSocketBehavior.OnTimerChild(10, TimeUnit.SECONDS) {
105-
106-
private static final long serialVersionUID = -4661303265651934868L;
107-
108-
@Override
109-
protected void onTimer(final WebSocketRequestHandler handler) {
110-
container.modelChanged();
111-
handler.add(container);
112-
}
113-
}));
102+
findFirst().ifPresent(wsb -> wsb.add(new OnTimerUpdateResultTable()));
114103

115104
startAt = new ReportStartAtTogglePanel(container, pageRef);
116105
addInnerObject(startAt);

‎client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java‎

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import java.util.Collection;
2525
import java.util.Iterator;
2626
import java.util.List;
27-
import java.util.concurrent.TimeUnit;
2827
import org.apache.commons.lang3.SerializationUtils;
2928
import org.apache.commons.lang3.tuple.Pair;
3029
import org.apache.syncope.client.console.SyncopeConsoleSession;
@@ -69,7 +68,6 @@
6968
import org.apache.wicket.model.IModel;
7069
import org.apache.wicket.model.Model;
7170
import org.apache.wicket.model.StringResourceModel;
72-
import org.apache.wicket.protocol.ws.api.WebSocketRequestHandler;
7371
import org.apache.wicket.spring.injection.annot.SpringBean;
7472

7573
/**
@@ -123,16 +121,7 @@ protected SchedTaskDirectoryPanel(
123121

124122
pageRef.getPage().getBehaviors().stream().
125123
filter(BasePageWebSocketBehavior.class::isInstance).map(BasePageWebSocketBehavior.class::cast).
126-
findFirst().ifPresent(wsb -> wsb.add(new BasePageWebSocketBehavior.OnTimerChild(10, TimeUnit.SECONDS) {
127-
128-
private static final long serialVersionUID = 532119924423529449L;
129-
130-
@Override
131-
protected void onTimer(final WebSocketRequestHandler handler) {
132-
container.modelChanged();
133-
handler.add(container);
134-
}
135-
}));
124+
findFirst().ifPresent(wsb -> wsb.add(new OnTimerUpdateResultTable()));
136125

137126
startAt = new TaskStartAtTogglePanel(container, pageRef);
138127
addInnerObject(startAt);

0 commit comments

Comments
 (0)