Repository: syncope Updated Branches: refs/heads/2_0_X 199b66432 -> 92646028f
[SYNCOPE-1255] provides max execution time for all operations executed through submittable modals Project: http://git-wip-us.apache.org/repos/asf/syncope/repo Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/92646028 Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/92646028 Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/92646028 Branch: refs/heads/2_0_X Commit: 92646028fce5f47913f78debebbe75da2c9dd2b4 Parents: 199b664 Author: fmartelli <[email protected]> Authored: Thu Dec 21 19:58:46 2017 +0100 Committer: fmartelli <[email protected]> Committed: Thu Dec 21 19:58:46 2017 +0100 ---------------------------------------------------------------------- .../console/SyncopeConsoleApplication.java | 8 ++ .../client/console/SyncopeConsoleSession.java | 6 ++ .../console/panels/NotificationPanel.java | 6 +- .../client/console/wizards/AjaxWizard.java | 88 +++++++++++++++++++- .../console/wizards/AjaxWizardBuilder.java | 12 +-- .../resources/ResourceWizardBuilder.java | 6 +- .../src/main/resources/console.properties | 3 + .../SyncopeConsoleApplication.properties | 2 + .../SyncopeConsoleApplication_it.properties | 2 + .../SyncopeConsoleApplication_pt_BR.properties | 2 + .../SyncopeConsoleApplication_ru.properties | 4 +- .../console/panels/NotificationPanel.html | 8 ++ .../src/main/resources/console.properties | 3 + .../src/test/resources/console.properties | 3 + 14 files changed, 137 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/syncope/blob/92646028/client/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleApplication.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleApplication.java b/client/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleApplication.java index cfcdfbf..eb43a2e 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleApplication.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleApplication.java @@ -109,6 +109,8 @@ public class SyncopeConsoleApplication extends AuthenticatedWebApplication { private Integer maxUploadFileSizeMB; + private Integer maxWaitTime; + private List<String> domains; private Map<String, Class<? extends BasePage>> pageClasses; @@ -162,6 +164,8 @@ public class SyncopeConsoleApplication extends AuthenticatedWebApplication { ? null : Integer.valueOf(props.getProperty("maxUploadFileSizeMB")); + maxWaitTime = Integer.valueOf(props.getProperty("maxWaitTimeOnApplyChanges", "30")); + String csrf = props.getProperty("csrf"); // process page properties @@ -314,6 +318,10 @@ public class SyncopeConsoleApplication extends AuthenticatedWebApplication { return maxUploadFileSizeMB; } + public Integer getMaxWaitTimeInSeconds() { + return maxWaitTime; + } + public SyncopeClientFactoryBean newClientFactory() { return new SyncopeClientFactoryBean(). setAddress(scheme + "://" + host + ":" + port + "/" + rootPath). http://git-wip-us.apache.org/repos/asf/syncope/blob/92646028/client/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleSession.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleSession.java b/client/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleSession.java index ab84d10..747e141 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleSession.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleSession.java @@ -26,7 +26,9 @@ import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Set; +import java.util.concurrent.Callable; import java.util.concurrent.Executors; +import java.util.concurrent.Future; import java.util.concurrent.ScheduledExecutorService; import javax.ws.rs.core.EntityTag; import javax.ws.rs.core.MediaType; @@ -122,6 +124,10 @@ public class SyncopeConsoleSession extends AuthenticatedWebSession { executorService.execute(command); } + public <T> Future<T> execute(final Callable<T> command) { + return executorService.submit(command); + } + public PlatformInfo getPlatformInfo() { return platformInfo; } http://git-wip-us.apache.org/repos/asf/syncope/blob/92646028/client/console/src/main/java/org/apache/syncope/client/console/panels/NotificationPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/NotificationPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/NotificationPanel.java index b113195..221ae41 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/panels/NotificationPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/NotificationPanel.java @@ -47,7 +47,7 @@ public class NotificationPanel extends Panel implements IFeedback, IGenericCompo "[ { type: 'success', template: $('#successTemplate').html() }," + " { type: 'info', template: $('#successTemplate').html() }," + " { type: 'error', template: $('#errorTemplate').html() }," - + " { type: 'warning', template: $('#errorTemplate').html() } ] "); + + " { type: 'warning', template: $('#warningTemplate').html() } ] "); notification = new Notification(Constants.FEEDBACK, options) { @@ -66,6 +66,10 @@ public class NotificationPanel extends Panel implements IFeedback, IGenericCompo for (FeedbackMessage message : this.getModelObject()) { if (message.isError()) { this.notification.error(handler, message.getMessage()); + } else if (message.isWarning()) { + // this is necessary before check for success and info in order to show warnings: isSuccess and isInfo + // return true also in case of warnings ... + this.notification.warn(handler, message.getMessage()); } else if (message.isSuccess() || message.isInfo()) { this.notification.success(handler, message.getMessage()); } else { http://git-wip-us.apache.org/repos/asf/syncope/blob/92646028/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizard.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizard.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizard.java index 04449e2..a26f6b7 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizard.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizard.java @@ -22,7 +22,14 @@ import java.io.Serializable; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.tuple.Pair; +import org.apache.syncope.client.console.SyncopeConsoleApplication; import org.apache.syncope.client.console.SyncopeConsoleSession; import org.apache.syncope.client.console.pages.BasePage; import org.apache.wicket.Component; @@ -41,7 +48,10 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.apache.syncope.client.console.panels.SubmitableModalPanel; import org.apache.syncope.client.console.panels.WizardModalPanel; +import org.apache.wicket.Application; import org.apache.wicket.PageReference; +import org.apache.wicket.Session; +import org.apache.wicket.ThreadContext; import org.apache.wicket.markup.html.list.ListItem; import org.apache.wicket.markup.html.list.ListView; import org.apache.wicket.model.IModel; @@ -149,7 +159,13 @@ public abstract class AjaxWizard<T extends Serializable> extends Wizard protected abstract void onCancelInternal(); - protected abstract Serializable onApplyInternal(final AjaxRequestTarget target); + /** + * Apply operation + * + * @param target request target + * @return a pair of payload (maybe null) and resulting object. + */ + protected abstract Pair<Serializable, Serializable> onApplyInternal(final AjaxRequestTarget target); /** * @see org.apache.wicket.extensions.wizard.Wizard#onCancel() @@ -179,12 +195,21 @@ public abstract class AjaxWizard<T extends Serializable> extends Wizard public final void onFinish() { final AjaxRequestTarget target = RequestCycle.get().find(AjaxRequestTarget.class); try { - final Serializable res = onApplyInternal(target); + final Serializable res = onApply(target); if (eventSink == null) { send(AjaxWizard.this, Broadcast.BUBBLE, new NewItemFinishEvent<>(item, target).setResult(res)); } else { send(eventSink, Broadcast.EXACT, new NewItemFinishEvent<>(item, target).setResult(res)); } + } catch (TimeoutException te) { + LOG.warn("Operation applying took to long", te); + if (eventSink == null) { + send(AjaxWizard.this, Broadcast.BUBBLE, new NewItemCancelEvent<>(item, target)); + } else { + send(eventSink, Broadcast.EXACT, new NewItemCancelEvent<>(item, target)); + } + SyncopeConsoleSession.get().warn(getString("timeout")); + ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target); } catch (Exception e) { LOG.error("Wizard error on finish", e); SyncopeConsoleSession.get().error(StringUtils.isBlank(e.getMessage()) @@ -337,11 +362,68 @@ public abstract class AjaxWizard<T extends Serializable> extends Wizard @Override public void onSubmit(final AjaxRequestTarget target, final Form<?> form) { - onApplyInternal(target); + try { + onApply(target); + } catch (TimeoutException te) { + LOG.warn("Operation applying took to long", te); + send(eventSink, Broadcast.EXACT, new NewItemCancelEvent<>(item, target)); + SyncopeConsoleSession.get().warn(getString("timeout")); + ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target); + } } @Override public void onError(final AjaxRequestTarget target, final Form<?> form) { ((BasePage) getPage()).getNotificationPanel().refresh(target); } + + private Serializable onApply(final AjaxRequestTarget target) throws TimeoutException { + try { + final Future<Pair<Serializable, Serializable>> executor + = SyncopeConsoleSession.get().execute(new ApplyFuture(target)); + + final Pair<Serializable, Serializable> res + = executor.get(SyncopeConsoleApplication.get().getMaxWaitTimeInSeconds(), TimeUnit.SECONDS); + + if (res.getLeft() != null) { + send(pageRef.getPage(), Broadcast.BUBBLE, res.getLeft()); + } + + return res.getRight(); + } catch (InterruptedException | ExecutionException e) { + throw new RuntimeException(e); + } + } + + private class ApplyFuture implements Callable<Pair<Serializable, Serializable>>, Serializable { + + private static final long serialVersionUID = -4657123322652656848L; + + private final AjaxRequestTarget target; + + private final Application application; + + private final RequestCycle requestCycle; + + private final Session session; + + ApplyFuture(final AjaxRequestTarget target) { + this.target = target; + this.application = Application.get(); + this.requestCycle = RequestCycle.get(); + this.session = Session.exists() ? Session.get() : null; + } + + @Override + public Pair<Serializable, Serializable> call() throws Exception { + try { + ThreadContext.setApplication(this.application); + ThreadContext.setRequestCycle(this.requestCycle); + ThreadContext.setSession(this.session); + return AjaxWizard.this.onApplyInternal(this.target); + } finally { + ThreadContext.detach(); + } + } + } } http://git-wip-us.apache.org/repos/asf/syncope/blob/92646028/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizardBuilder.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizardBuilder.java index 32514ad..f43b57b 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizardBuilder.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizardBuilder.java @@ -22,10 +22,10 @@ import java.io.Serializable; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import org.apache.commons.lang3.tuple.Pair; import org.apache.wicket.Component; import org.apache.wicket.PageReference; import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.event.Broadcast; import org.apache.wicket.extensions.wizard.WizardModel; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -100,8 +100,8 @@ public abstract class AjaxWizardBuilder<T extends Serializable> extends Abstract } @Override - protected Serializable onApplyInternal(final AjaxRequestTarget target) { - final Serializable res = AjaxWizardBuilder.this.onApplyInternal(modelObject); + protected Pair<Serializable, Serializable> onApplyInternal(final AjaxRequestTarget target) { + Serializable res = AjaxWizardBuilder.this.onApplyInternal(modelObject); Serializable payload; switch (mode) { @@ -116,11 +116,7 @@ public abstract class AjaxWizardBuilder<T extends Serializable> extends Abstract payload = null; } - if (payload != null) { - send(pageRef.getPage(), Broadcast.BUBBLE, payload); - } - - return res; + return Pair.of(payload, res); } }.setEventSink(eventSink).addOuterObject(outerObjects); } http://git-wip-us.apache.org/repos/asf/syncope/blob/92646028/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceWizardBuilder.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceWizardBuilder.java index 14187b0..b08e29b 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceWizardBuilder.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceWizardBuilder.java @@ -81,13 +81,13 @@ public class ResourceWizardBuilder extends AbstractResourceWizardBuilder<Resourc @Override protected ResourceTO onApplyInternal(final Serializable modelObject) { - final ResourceTO resourceTO = ResourceTO.class.cast(modelObject); + ResourceTO resourceTO = ResourceTO.class.cast(modelObject); if (createFlag) { - return resourceRestClient.create(resourceTO); + resourceTO = resourceRestClient.create(resourceTO); } else { resourceRestClient.update(resourceTO); - return resourceTO; } + return resourceTO; } @Override http://git-wip-us.apache.org/repos/asf/syncope/blob/92646028/client/console/src/main/resources/console.properties ---------------------------------------------------------------------- diff --git a/client/console/src/main/resources/console.properties b/client/console/src/main/resources/console.properties index abe33c1..0bb8171 100644 --- a/client/console/src/main/resources/console.properties +++ b/client/console/src/main/resources/console.properties @@ -28,6 +28,9 @@ rootPath=/syncope/rest/ useGZIPCompression=true maxUploadFileSizeMB=5 +# Max wait time on apply changes from modals/wizards (given in seconds) +maxWaitTimeOnApplyChanges=30 + csrf=true activitiModelerDirectory=${activiti-modeler.directory} http://git-wip-us.apache.org/repos/asf/syncope/blob/92646028/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication.properties ---------------------------------------------------------------------- diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication.properties b/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication.properties index 59143bf..76fe2d0 100644 --- a/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication.properties +++ b/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication.properties @@ -71,3 +71,5 @@ connectors.confirm.reload=This request is potentially dangerous for running oper intAttrNameInfo.help=Besides auto-completed attributes, you can also refer to groups, any objects or memberships (if applicable); for example: confirmGlobalLogout=Do you really want to perform global logout? administration=Administration + +timeout=Operation is taking to long: it will be executed in background. Please check later for the result (errors won't be triggered). http://git-wip-us.apache.org/repos/asf/syncope/blob/92646028/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_it.properties ---------------------------------------------------------------------- diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_it.properties index 1f13919..c8b1529 100644 --- a/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_it.properties +++ b/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_it.properties @@ -71,3 +71,5 @@ connectors.confirm.reload=Questa richiesta \u00e8 potenzialmente dannosa per le intAttrNameInfo.help=Oltre agli attributi auto-completati, \u00e8 possibile fare riferimento anche a gruppi, any object e membership (se applicabile); ad esempio: confirmGlobalLogout=Vuoi davvero procedere al logout globale? administration=Amministrazione + +timeout=L'operazione sta durando troppo: sar\u00e0 eseguita in background. Verifica il risultato pi\u00f9 tardi (gli errori non saranno notificati). http://git-wip-us.apache.org/repos/asf/syncope/blob/92646028/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_pt_BR.properties ---------------------------------------------------------------------- diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_pt_BR.properties index b292d50..492c0c4 100644 --- a/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_pt_BR.properties +++ b/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_pt_BR.properties @@ -71,3 +71,5 @@ connectors.confirm.reload=Esta requis\u00e7\u00e3o \u00e9 potencialmente perigos intAttrNameInfo.help=Besides auto-completed attributes, you can also refer to groups, any objects or memberships (if applicable); for example: confirmGlobalLogout=Do you really want to perform global logout? administration=Administra\u00e7\u00e3o + +timeout=Operation is taking to long: it will be executed in background. Please check later for the result (errors won't be triggered). http://git-wip-us.apache.org/repos/asf/syncope/blob/92646028/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_ru.properties ---------------------------------------------------------------------- diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_ru.properties index 62183d7..b39225d 100644 --- a/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_ru.properties +++ b/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_ru.properties @@ -31,7 +31,7 @@ confirmUnlink=\u0412\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u043 confirmUnassign=\u0412\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u0430 \u0434\u043b\u044f \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432? confirmDeprovision=\u0412\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0442\u043e\u0437\u0432\u0430\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b? confirmProvision=\u0412\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b? -confirmClone=\u0412\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b\u003f +confirmClone=\u0412\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b? dropDownChoiceField.nullValid=\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 DateTimeField$HoursValidator=\u0427\u0430\u0441\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 (1, 12) error=\u041e\u0448\u0438\u0431\u043a\u0430 @@ -70,3 +70,5 @@ connectors.confirm.reload=\u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438 intAttrNameInfo.help=\u041f\u043e\u043c\u0438\u043c\u043e \u0430\u0432\u0442\u043e\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432, \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0433\u0440\u0443\u043f\u043f\u044b, \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0438 \u0447\u043b\u0435\u043d\u0441\u0442\u0432\u043e (\u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438), \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: confirmGlobalLogout=Do you really want to perform global logout? administration=Administration + +timeout=Operation is taking to long: it will be executed in background. Please check later for the result (errors won't be triggered). http://git-wip-us.apache.org/repos/asf/syncope/blob/92646028/client/console/src/main/resources/org/apache/syncope/client/console/panels/NotificationPanel.html ---------------------------------------------------------------------- diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/NotificationPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/NotificationPanel.html index 2870588..1d5a8a2 100644 --- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/NotificationPanel.html +++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/NotificationPanel.html @@ -40,6 +40,14 @@ under the License. #= message # </div> </script> + + <script id="warningTemplate" type="text/x-kendo-template"> + <div class="alert alert-warning alert-dismissible" style="margin-bottom: 0px; min-width: 370px"> + <button aria-hidden="true" data-dismiss="alert" class="close" type="button">Ã</button> + <h4><i class="icon fa fa-ban"></i> Warning!</h4> + #= message # + </div> + </script> <script id="successTemplate" type="text/x-kendo-template"> <div class="alert alert-success alert-dismissible" style="margin-bottom: 0px; min-width: 370px"> http://git-wip-us.apache.org/repos/asf/syncope/blob/92646028/fit/console-reference/src/main/resources/console.properties ---------------------------------------------------------------------- diff --git a/fit/console-reference/src/main/resources/console.properties b/fit/console-reference/src/main/resources/console.properties index ba3bd82..6bd549c 100644 --- a/fit/console-reference/src/main/resources/console.properties +++ b/fit/console-reference/src/main/resources/console.properties @@ -28,6 +28,9 @@ rootPath=/syncope/rest/ useGZIPCompression=true maxUploadFileSizeMB=5 +# Max wait time on apply changes from modals/wizards (given in seconds) +maxWaitTimeOnApplyChanges=30 + csrf=true activitiModelerDirectory=${activiti-modeler.directory} http://git-wip-us.apache.org/repos/asf/syncope/blob/92646028/fit/core-reference/src/test/resources/console.properties ---------------------------------------------------------------------- diff --git a/fit/core-reference/src/test/resources/console.properties b/fit/core-reference/src/test/resources/console.properties index 158fa0e..fa46422 100644 --- a/fit/core-reference/src/test/resources/console.properties +++ b/fit/core-reference/src/test/resources/console.properties @@ -28,6 +28,9 @@ rootPath=/syncope/rest/ useGZIPCompression=true maxUploadFileSizeMB=5 +# Max wait time on apply changes from modals/wizards (given in seconds) +maxWaitTimeOnApplyChanges=30 + csrf=false activitiModelerDirectory=${activiti-modeler.directory}
