[SYNCOPE-156] New notification panel

Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/3c6fe5ee
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/3c6fe5ee
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/3c6fe5ee

Branch: refs/heads/master
Commit: 3c6fe5eefdf1fd4d16cdfbe962fc6e06cdc8a1b4
Parents: 757608a
Author: Marco Di Sabatino Di Diodoro <[email protected]>
Authored: Thu Feb 18 18:50:34 2016 +0100
Committer: Marco Di Sabatino Di Diodoro <[email protected]>
Committed: Thu Feb 18 18:50:34 2016 +0100

----------------------------------------------------------------------
 .../console/SyncopeConsoleApplication.java      | 12 ----
 .../client/console/SyncopeConsoleSession.java   | 12 ++++
 .../commons/NotificationAwareComponent.java     | 26 --------
 .../syncope/client/console/pages/BasePage.java  | 13 +---
 .../console/pages/BulkActionModalPage.java      |  3 +-
 .../pages/DisplayAttributesModalPage.java       |  7 +-
 .../syncope/client/console/pages/Login.java     |  8 +--
 .../console/pages/MustChangePassword.java       | 10 +--
 .../syncope/client/console/pages/Realms.java    |  7 +-
 .../client/console/pages/StatusModal.java       | 26 ++++----
 .../console/panels/AbstractLogsPanel.java       |  8 +--
 .../console/panels/AbstractModalPanel.java      |  5 +-
 .../console/panels/AbstractResourceModal.java   |  3 +-
 .../panels/AbstractSearchResultPanel.java       |  1 -
 .../console/panels/AjaxDataTablePanel.java      |  1 -
 .../panels/AnyObjectSearchResultPanel.java      |  6 +-
 .../console/panels/AnyTypeClassesPanel.java     |  5 +-
 .../client/console/panels/AnyTypesPanel.java    |  5 +-
 .../client/console/panels/ConnectorModal.java   | 11 ++--
 .../console/panels/GroupSearchResultPanel.java  |  4 +-
 .../console/panels/NotificationPanel.java       | 61 +++++++++++------
 .../panels/ParametersCreateWizardPanel.java     |  9 +--
 .../panels/ParametersEditModalPanel.java        |  4 +-
 .../client/console/panels/ParametersPanel.java  |  7 +-
 .../syncope/client/console/panels/Realm.java    | 13 +---
 .../client/console/panels/RealmModalPanel.java  |  4 +-
 .../console/panels/RelationshipTypePanel.java   |  5 +-
 .../client/console/panels/ResourceModal.java    | 10 +--
 .../console/panels/RoleSearchResultPanel.java   |  6 +-
 .../client/console/panels/SchemaTypePanel.java  |  7 +-
 .../panels/SecurityQuestionsModalPanel.java     |  2 +-
 .../console/panels/SecurityQuestionsPanel.java  |  8 +--
 .../console/panels/UserSearchResultPanel.java   |  7 +-
 .../panels/XMLWorkflowEditorModalPanel.java     |  7 +-
 .../tasks/PropagationTaskSearchResultPanel.java | 10 +--
 .../tasks/SchedTaskSearchResultPanel.java       |  6 +-
 .../console/tasks/StartAtTogglePanel.java       |  6 +-
 .../client/console/tasks/TaskExecutions.java    |  5 +-
 .../client/console/topology/Topology.java       | 11 +---
 .../console/topology/TopologyTogglePanel.java   |  6 +-
 .../markup/html/ClearIndicatingAjaxButton.java  | 10 ---
 .../markup/html/bootstrap/dialog/BaseModal.java | 13 +---
 .../markup/html/form/BinaryFieldPanel.java      |  8 +--
 .../markup/html/form/MultiFieldPanel.java       |  2 +-
 .../client/console/wizards/AjaxWizard.java      | 23 +++----
 .../console/wizards/AjaxWizardBuilder.java      |  2 +-
 .../console/wizards/AjaxWizardButton.java       | 69 --------------------
 .../console/wizards/AjaxWizardMgtButtonBar.java |  9 ++-
 .../client/console/wizards/WizardMgtPanel.java  | 13 ++--
 .../META-INF/resources/css/syncopeConsole.css   |  6 ++
 .../syncope/client/console/pages/Login.html     |  3 +-
 .../console/panels/NotificationPanel.html       | 14 ++--
 .../markup/html/bootstrap/dialog/BaseModal.html |  1 -
 .../client/console/wizards/AjaxWizard.html      | 46 +++++++++++++
 .../client/console/panels/CamelRoutesPanel.java |  3 +-
 .../fit/console/AbstractConsoleITCase.java      | 36 ++++++++++
 .../syncope/fit/console/TopologyITCase.java     | 18 ++---
 57 files changed, 293 insertions(+), 350 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/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 ce7b155..f24bdcf 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
@@ -53,8 +53,6 @@ import 
org.apache.wicket.authroles.authentication.AbstractAuthenticatedWebSessio
 import org.apache.wicket.authroles.authentication.AuthenticatedWebApplication;
 import org.apache.wicket.authroles.authentication.AuthenticatedWebSession;
 import 
org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
-import org.apache.wicket.feedback.DefaultCleanupFeedbackMessageFilter;
-import org.apache.wicket.feedback.FeedbackMessage;
 import org.apache.wicket.markup.html.WebPage;
 import org.apache.wicket.protocol.http.WebApplication;
 import org.apache.wicket.request.resource.IResource;
@@ -192,16 +190,6 @@ public class SyncopeConsoleApplication extends 
AuthenticatedWebApplication {
 
         getRequestCycleListeners().add(new 
SyncopeConsoleRequestCycleListener());
 
-        getApplicationSettings().setFeedbackMessageCleanupFilter(new 
DefaultCleanupFeedbackMessageFilter() {
-
-            private static final long serialVersionUID = 4419535854770831722L;
-
-            @Override
-            public boolean accept(final FeedbackMessage message) {
-                return true;
-            }
-        });
-
         mountPage("/login", getSignInPageClass());
 
         activitiModelerDirectory = 
props.getProperty("activitiModelerDirectory");

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/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 806d115..16e4c26 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
@@ -32,6 +32,8 @@ import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.cxf.jaxrs.client.WebClient;
+import org.apache.syncope.client.console.commons.Constants;
+import org.apache.syncope.client.console.panels.NotificationPanel;
 import org.apache.syncope.client.lib.SyncopeClient;
 import org.apache.syncope.client.lib.SyncopeClientFactoryBean;
 import org.apache.syncope.common.lib.SyncopeConstants;
@@ -78,6 +80,8 @@ public class SyncopeConsoleSession extends 
AuthenticatedWebSession {
 
     private Roles roles;
 
+    private NotificationPanel notificationPanel;
+
     public static SyncopeConsoleSession get() {
         return (SyncopeConsoleSession) Session.get();
     }
@@ -206,4 +210,12 @@ public class SyncopeConsoleSession extends 
AuthenticatedWebSession {
         Locale locale = getLocale() == null ? Locale.ENGLISH : getLocale();
         return DateFormat.getDateTimeInstance(DateFormat.SHORT, 
DateFormat.SHORT, locale);
     }
+
+    public NotificationPanel getNotificationPanel() {
+        if (notificationPanel == null) {
+            notificationPanel = new NotificationPanel(Constants.FEEDBACK);
+            notificationPanel.setOutputMarkupId(true);
+        }
+        return notificationPanel;
+    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/commons/NotificationAwareComponent.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/commons/NotificationAwareComponent.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/commons/NotificationAwareComponent.java
deleted file mode 100644
index 9a7847f..0000000
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/commons/NotificationAwareComponent.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.client.console.commons;
-
-import org.apache.syncope.client.console.panels.NotificationPanel;
-
-public interface NotificationAwareComponent {
-
-    NotificationPanel getNotificationPanel();
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
index 79d6e5a..820fa7f 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
@@ -24,8 +24,6 @@ import 
org.apache.syncope.client.console.BookmarkablePageLinkBuilder;
 import org.apache.syncope.client.console.SyncopeConsoleApplication;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.annotations.ExtPage;
-import org.apache.syncope.client.console.commons.Constants;
-import org.apache.syncope.client.console.commons.NotificationAwareComponent;
 import 
org.apache.syncope.client.console.init.ClassPathScanImplementationLookup;
 import org.apache.syncope.client.console.init.ConsoleInitializer;
 import org.apache.syncope.client.console.panels.NotificationPanel;
@@ -58,7 +56,7 @@ import 
org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class BasePage extends WebPage implements NotificationAwareComponent, 
IAjaxIndicatorAware {
+public class BasePage extends WebPage implements IAjaxIndicatorAware {
 
     private static final long serialVersionUID = 1571997737305598502L;
 
@@ -93,9 +91,7 @@ public class BasePage extends WebPage implements 
NotificationAwareComponent, IAj
         }
         add(body);
 
-        notificationPanel = new NotificationPanel(Constants.FEEDBACK);
-        notificationPanel.setOutputMarkupId(true);
-        body.addOrReplace(notificationPanel);
+        body.addOrReplace(SyncopeConsoleSession.get().getNotificationPanel());
 
         // header, footer
         body.add(new Label("version", 
SyncopeConsoleApplication.get().getVersion()));
@@ -329,11 +325,6 @@ public class BasePage extends WebPage implements 
NotificationAwareComponent, IAj
         response.render(new PriorityHeaderItem(meta));
     }
 
-    @Override
-    public NotificationPanel getNotificationPanel() {
-        return notificationPanel;
-    }
-
     private String getLIContainerId(final String linkId) {
         return linkId + "LI";
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/pages/BulkActionModalPage.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/pages/BulkActionModalPage.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/pages/BulkActionModalPage.java
index a376bf4..d2d22fb 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/pages/BulkActionModalPage.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/pages/BulkActionModalPage.java
@@ -24,6 +24,7 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
+import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.Constants;
 import org.apache.syncope.client.console.panels.AbstractModalPanel;
 import org.apache.syncope.client.console.rest.BaseRestClient;
@@ -139,7 +140,7 @@ public class BulkActionModalPage<T extends Serializable, S> 
extends AbstractModa
                             | IllegalArgumentException | 
InvocationTargetException e) {
                         error(getString(Constants.ERROR)
                                 + ": Operation " + bulkAction.getType() + " 
not supported");
-                        modal.getNotificationPanel().refresh(target);
+                        
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
                     }
 
                 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/pages/DisplayAttributesModalPage.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/pages/DisplayAttributesModalPage.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/pages/DisplayAttributesModalPage.java
index 5ce7bea..47ae42e 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/pages/DisplayAttributesModalPage.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/pages/DisplayAttributesModalPage.java
@@ -23,6 +23,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import org.apache.syncope.client.console.PreferenceManager;
+import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.Constants;
 import org.apache.syncope.client.console.panels.AbstractModalPanel;
 import 
org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
@@ -197,22 +198,18 @@ public abstract class DisplayAttributesModalPage<T 
extends Serializable> extends
                     final Map<String, List<String>> prefs = new HashMap<>();
 
                     prefs.put(getPrefDetailView(), selectedDetails);
-
                     prefs.put(getPrefAttributeView(), selectedPlainSchemas);
-
                     prefs.put(getPrefDerivedAttributeView(), 
selectedDerSchemas);
-
                     prefMan.setList(getRequest(), getResponse(), prefs);
 
                     info(getString(Constants.OPERATION_SUCCEEDED));
-
                     modal.close(target);
                 }
             }
 
             @Override
             protected void onError(final AjaxRequestTarget target, final 
Form<?> form) {
-                modal.getNotificationPanel().refresh(target);
+                
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
             }
         };
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/pages/Login.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/pages/Login.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/pages/Login.java
index 30975b2..dca8e3e 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/pages/Login.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/pages/Login.java
@@ -45,7 +45,7 @@ public class Login extends WebPage {
 
     private static final long serialVersionUID = 5889157642852559004L;
 
-    private final NotificationPanel feedbackPanel;
+    private final NotificationPanel notificationPanel;
 
     private final StatelessForm<Void> form;
 
@@ -61,8 +61,8 @@ public class Login extends WebPage {
         super(parameters);
         setStatelessHint(true);
 
-        feedbackPanel = new NotificationPanel(Constants.FEEDBACK);
-        add(feedbackPanel);
+        notificationPanel = new NotificationPanel(Constants.FEEDBACK);
+        add(notificationPanel);
 
         form = new StatelessForm<>("login");
 
@@ -102,7 +102,7 @@ public class Login extends WebPage {
                     setResponsePage(getApplication().getHomePage());
                 } else {
                     error(getString("login-error"));
-                    feedbackPanel.refresh(target);
+                    notificationPanel.refresh(target);
                 }
                 strategy.remove();
             }

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/pages/MustChangePassword.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/pages/MustChangePassword.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/pages/MustChangePassword.java
index 51a3f6e..f127d92 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/pages/MustChangePassword.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/pages/MustChangePassword.java
@@ -20,7 +20,6 @@ package org.apache.syncope.client.console.pages;
 
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.Constants;
-import org.apache.syncope.client.console.panels.NotificationPanel;
 import org.apache.syncope.client.console.rest.UserSelfRestClient;
 import 
org.apache.syncope.client.console.wicket.markup.html.form.AjaxPasswordFieldPanel;
 import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -44,8 +43,6 @@ public class MustChangePassword extends WebPage {
 
     private final UserSelfRestClient userSelfRestClient = new 
UserSelfRestClient();
 
-    private final NotificationPanel feedbackPanel;
-
     private final StatelessForm<Void> form;
 
     private final TextField<String> usernameField;
@@ -57,9 +54,6 @@ public class MustChangePassword extends WebPage {
     public MustChangePassword(final PageParameters parameters) {
         super(parameters);
 
-        feedbackPanel = new NotificationPanel(Constants.FEEDBACK);
-        add(feedbackPanel);
-
         form = new StatelessForm<>("changePassword");
         form.setOutputMarkupId(true);
 
@@ -100,13 +94,13 @@ public class MustChangePassword extends WebPage {
                     LOG.error("While changing password for {}",
                             
SyncopeConsoleSession.get().getSelfTO().getUsername(), e);
                     error(getString(Constants.ERROR) + ": " + e.getMessage());
-                    feedbackPanel.refresh(target);
+                    
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
                 }
             }
 
             @Override
             protected void onError(final AjaxRequestTarget target, final 
Form<?> form) {
-                feedbackPanel.refresh(target);
+                
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
             }
 
         };

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/pages/Realms.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/pages/Realms.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/pages/Realms.java
index b2837c9..e52af24 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/pages/Realms.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/pages/Realms.java
@@ -18,6 +18,7 @@
  */
 package org.apache.syncope.client.console.pages;
 
+import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.Constants;
 import org.apache.syncope.client.console.panels.Realm;
 import org.apache.syncope.client.console.panels.RealmModalPanel;
@@ -147,13 +148,13 @@ public class Realms extends BasePage {
                     realmRestClient.delete(realmTO.getFullPath());
                     target.add(realmSidebarPanel.reloadRealmTree());
                     
target.add(updateRealmContent(realmSidebarPanel.getCurrentRealm()));
-                    
getSession().info(getString(Constants.OPERATION_SUCCEEDED));
+                    info(getString(Constants.OPERATION_SUCCEEDED));
                 } catch (Exception e) {
                     LOG.error("While deleting realm", e);
                     // Excape line breaks
-                    getSession().error(getString(Constants.ERROR) + ": " + 
e.getMessage().replace("\n", " "));
+                    error(getString(Constants.ERROR) + ": " + 
e.getMessage().replace("\n", " "));
                 }
-                getNotificationPanel().refresh(target);
+                
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
             }
         });
         return content;

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/pages/StatusModal.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/pages/StatusModal.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/pages/StatusModal.java
index 5718dab..d10ced5 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/pages/StatusModal.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/pages/StatusModal.java
@@ -24,6 +24,7 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.Constants;
 import 
org.apache.syncope.client.console.commons.status.AbstractStatusBeanProvider;
 import org.apache.syncope.client.console.commons.status.ConnObjectWrapper;
@@ -275,8 +276,8 @@ public class StatusModal<T extends Serializable> extends 
AbstractStatusModalPage
                     } catch (Exception e) {
                         LOG.error("Error enabling resources", e);
                         error(getString(Constants.ERROR) + ": " + 
e.getMessage());
-                        modal.getNotificationPanel().refresh(target);
                     }
+                    
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
                 }
             }, ActionLink.ActionType.REACTIVATE, pageId);
 
@@ -297,8 +298,8 @@ public class StatusModal<T extends Serializable> extends 
AbstractStatusModalPage
                     } catch (Exception e) {
                         LOG.error("Error disabling resources", e);
                         error(getString(Constants.ERROR) + ": " + 
e.getMessage());
-                        modal.getNotificationPanel().refresh(target);
                     }
+                    
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
                 }
             }, ActionLink.ActionType.SUSPEND, pageId);
         } else {
@@ -326,8 +327,8 @@ public class StatusModal<T extends Serializable> extends 
AbstractStatusModalPage
                     } catch (Exception e) {
                         LOG.error("Error unlinking resources", e);
                         error(getString(Constants.ERROR) + ": " + 
e.getMessage());
-                        modal.getNotificationPanel().refresh(target);
                     }
+                    
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
                 }
             }, ActionLink.ActionType.UNLINK, pageId);
 
@@ -355,7 +356,7 @@ public class StatusModal<T extends Serializable> extends 
AbstractStatusModalPage
                     } catch (Exception e) {
                         LOG.error("Error linking resources", e);
                         error(getString(Constants.ERROR) + ": " + 
e.getMessage());
-                        modal.getNotificationPanel().refresh(target);
+                        
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
                     }
                 }
             }, ActionLink.ActionType.LINK, pageId);
@@ -385,8 +386,9 @@ public class StatusModal<T extends Serializable> extends 
AbstractStatusModalPage
                     } catch (Exception e) {
                         LOG.error("Error de-provisioning user", e);
                         error(getString(Constants.ERROR) + ": " + 
e.getMessage());
-                        modal.getNotificationPanel().refresh(target);
+                        
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
                     }
+
                 }
             }, ActionLink.ActionType.DEPROVISION, pageId);
 
@@ -412,7 +414,7 @@ public class StatusModal<T extends Serializable> extends 
AbstractStatusModalPage
                         } catch (Exception e) {
                             LOG.error("Error provisioning user", e);
                             error(getString(Constants.ERROR) + ": " + 
e.getMessage());
-                            modal.getNotificationPanel().refresh(target);
+                            
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
                         }
                     }
                 }
@@ -443,7 +445,7 @@ public class StatusModal<T extends Serializable> extends 
AbstractStatusModalPage
                     } catch (Exception e) {
                         LOG.error("Error unassigning resources", e);
                         error(getString(Constants.ERROR) + ": " + 
e.getMessage());
-                        modal.getNotificationPanel().refresh(target);
+                        
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
                     }
                 }
             }, ActionLink.ActionType.UNASSIGN, pageId);
@@ -469,7 +471,7 @@ public class StatusModal<T extends Serializable> extends 
AbstractStatusModalPage
                         } catch (Exception e) {
                             LOG.error("Error assigning resources", e);
                             error(getString(Constants.ERROR) + ": " + 
e.getMessage());
-                            modal.getNotificationPanel().refresh(target);
+                            
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
                         }
                     }
                 }
@@ -547,8 +549,8 @@ public class StatusModal<T extends Serializable> extends 
AbstractStatusModalPage
             final ResourceAssociationAction type,
             final Collection<StatusBean> selection) {
 
-        final IndicatingAjaxButton goon
-                = new IndicatingAjaxButton("continue", new 
ResourceModel("continue", "Continue")) {
+        final IndicatingAjaxButton goon =
+                new IndicatingAjaxButton("continue", new 
ResourceModel("continue", "Continue")) {
 
             private static final long serialVersionUID = -2341391430136818027L;
 
@@ -586,13 +588,13 @@ public class StatusModal<T extends Serializable> extends 
AbstractStatusModalPage
                     if (bulkActionResult != null) {
                         loadBulkActionResultPage(target, selection, 
bulkActionResult);
                     } else {
-                        modal.getNotificationPanel().refresh(target);
+                        
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
                         modal.close(target);
                     }
                 } catch (Exception e) {
                     LOG.error("Error provisioning resources", e);
                     error(getString(Constants.ERROR) + ": " + e.getMessage());
-                    modal.getNotificationPanel().refresh(target);
+                    
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
                 }
             }
         };

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractLogsPanel.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractLogsPanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractLogsPanel.java
index 720ba44..60f6f2a 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractLogsPanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractLogsPanel.java
@@ -20,8 +20,8 @@ package org.apache.syncope.client.console.panels;
 
 import java.util.Arrays;
 import java.util.List;
+import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.Constants;
-import org.apache.syncope.client.console.pages.BasePage;
 import 
org.apache.syncope.client.console.wicket.markup.html.form.AjaxDropDownChoicePanel;
 import org.apache.syncope.common.lib.AbstractBaseBean;
 import org.apache.syncope.common.lib.SyncopeClientException;
@@ -75,13 +75,13 @@ public abstract class AbstractLogsPanel<T extends 
AbstractBaseBean> extends Pane
                             try {
                                 loggerTO.setLevel(loggerTOs.getModelObject());
                                 update(loggerTO);
-                                target.add(loggerTOs);
                                 info(getString(Constants.OPERATION_SUCCEEDED));
+                                target.add(loggerTOs);
                             } catch (SyncopeClientException e) {
                                 LOG.error("Error updating the logger level", 
e);
-                                error(getString(Constants.OPERATION_ERROR + 
e.getMessage()));
+                                error(getString(Constants.ERROR) + ": " + 
e.getMessage());
                             }
-                            ((BasePage) 
getPage()).getNotificationPanel().refresh(target);
+                            
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
                         }
                     });
                     return loggerTOs;

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractModalPanel.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractModalPanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractModalPanel.java
index cc39886..c69f2b1 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractModalPanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractModalPanel.java
@@ -19,6 +19,7 @@
 package org.apache.syncope.client.console.panels;
 
 import java.io.Serializable;
+import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.wicket.markup.head.MetaHeaderItem;
 import 
org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
 import org.apache.wicket.PageReference;
@@ -65,12 +66,12 @@ public class AbstractModalPanel<T extends Serializable> 
extends Panel implements
 
     @Override
     public void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
-        modal.getNotificationPanel().refresh(target);
+        SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
     }
 
     @Override
     public void onError(final AjaxRequestTarget target, final Form<?> form) {
-        modal.getNotificationPanel().refresh(target);
+        SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractResourceModal.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractResourceModal.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractResourceModal.java
index 2ecb7de..875f090 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractResourceModal.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractResourceModal.java
@@ -21,6 +21,7 @@ package org.apache.syncope.client.console.panels;
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
+import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.topology.TopologyNode;
 import 
org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
 import 
org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal.ModalEvent;
@@ -75,7 +76,7 @@ public abstract class AbstractResourceModal<T extends 
Serializable> extends Abst
 
                 @Override
                 protected void onError(final AjaxRequestTarget target, final 
Form<?> form) {
-                    modal.getNotificationPanel().refresh(target);
+                    
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
                 }
             };
         }

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractSearchResultPanel.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractSearchResultPanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractSearchResultPanel.java
index 0ca0241..d21271e 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractSearchResultPanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractSearchResultPanel.java
@@ -249,7 +249,6 @@ public abstract class AbstractSearchResultPanel<
                 data.setRows(rows);
 
                 send(getParent(), Broadcast.BREADTH, data);
-                page.getNotificationPanel().refresh(target);
             }
         });
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/panels/AjaxDataTablePanel.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/AjaxDataTablePanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/AjaxDataTablePanel.java
index c6e8fb0..da6181b 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/AjaxDataTablePanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/AjaxDataTablePanel.java
@@ -159,7 +159,6 @@ public final class AjaxDataTablePanel<T extends 
Serializable, S> extends DataTab
                 send(builder.pageRef.getPage(), Broadcast.BREADTH, data);
 
                 final BasePage page = (BasePage) builder.pageRef.getPage();
-                ((BasePage) getPage()).getNotificationPanel().refresh(target);
             }
         });
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyObjectSearchResultPanel.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyObjectSearchResultPanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyObjectSearchResultPanel.java
index 375675b..321dcfc 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyObjectSearchResultPanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyObjectSearchResultPanel.java
@@ -24,9 +24,9 @@ import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import org.apache.commons.lang3.SerializationUtils;
+import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.Constants;
 import 
org.apache.syncope.client.console.pages.AnyObjectDisplayAttributesModalPage;
-import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.rest.AnyObjectRestClient;
 import 
org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.ActionColumn;
 import 
org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.AttrColumn;
@@ -147,10 +147,10 @@ public class AnyObjectSearchResultPanel extends 
AnySearchResultPanel<AnyObjectTO
                                     
info(getString(Constants.OPERATION_SUCCEEDED));
                                     target.add(container);
                                 } catch (SyncopeClientException e) {
-                                    error(getString(Constants.ERROR) + ": " + 
e.getMessage());
                                     LOG.error("While deleting object {}", 
model.getObject().getKey(), e);
+                                    error(getString(Constants.ERROR) + ": " + 
e.getMessage());
                                 }
-                                ((BasePage) 
getPage()).getNotificationPanel().refresh(target);
+                                
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
                             }
                         }, ActionLink.ActionType.DELETE, 
String.format("%s_%s", type, AnyEntitlement.DELETE));
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassesPanel.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassesPanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassesPanel.java
index dc95deb..c9c0e56 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassesPanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassesPanel.java
@@ -32,7 +32,6 @@ import 
org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.Constants;
 import org.apache.syncope.client.console.commons.SearchableDataProvider;
 import 
org.apache.syncope.client.console.commons.SortableDataProviderComparator;
-import org.apache.syncope.client.console.pages.BasePage;
 import 
org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import 
org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksPanel;
@@ -89,7 +88,7 @@ public class AnyTypeClassesPanel extends 
AbstractTypesPanel<AnyTypeClassTO, AnyT
                             LOG.error("While creating or updating 
AnyTypeClassTO", e);
                             error(getString(Constants.ERROR) + ": " + 
e.getMessage());
                         }
-                        modal.getNotificationPanel().refresh(target);
+                        
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
                     }
                 };
             }
@@ -189,7 +188,7 @@ public class AnyTypeClassesPanel extends 
AbstractTypesPanel<AnyTypeClassTO, AnyT
                             LOG.error("While deleting AnyTypeClassTO", e);
                             error(getString(Constants.ERROR) + ": " + 
e.getMessage());
                         }
-                        ((BasePage) 
getPage()).getNotificationPanel().refresh(target);
+                        
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
                     }
                 }, ActionLink.ActionType.DELETE, 
StandardEntitlement.ANYTYPECLASS_DELETE);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypesPanel.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypesPanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypesPanel.java
index bf0345e..a2b97ff 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypesPanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypesPanel.java
@@ -32,7 +32,6 @@ import 
org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.Constants;
 import org.apache.syncope.client.console.commons.SearchableDataProvider;
 import 
org.apache.syncope.client.console.commons.SortableDataProviderComparator;
-import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.panels.AnyTypesPanel.AnyTypeProvider;
 import 
org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
@@ -90,7 +89,7 @@ public class AnyTypesPanel extends 
AbstractTypesPanel<AnyTypeTO, AnyTypeProvider
                             LOG.error("While creating or updating AnyTypeTO", 
e);
                             error(getString(Constants.ERROR) + ": " + 
e.getMessage());
                         }
-                        modal.getNotificationPanel().refresh(target);
+                        
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
                     }
                 };
             }
@@ -190,7 +189,7 @@ public class AnyTypesPanel extends 
AbstractTypesPanel<AnyTypeTO, AnyTypeProvider
                             LOG.error("While deleting AnyTypeTO", e);
                             error(getString(Constants.ERROR) + ": " + 
e.getMessage());
                         }
-                        ((BasePage) 
getPage()).getNotificationPanel().refresh(target);
+                        
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
                     }
                 }, ActionLink.ActionType.DELETE, 
StandardEntitlement.ANYTYPE_DELETE);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnectorModal.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnectorModal.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnectorModal.java
index 751bc24..bbb645e 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnectorModal.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnectorModal.java
@@ -25,6 +25,7 @@ import java.util.List;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.collections4.IterableUtils;
 import org.apache.commons.collections4.Predicate;
+import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.Constants;
 import org.apache.syncope.client.console.rest.ConnectorRestClient;
 import org.apache.syncope.client.console.topology.TopologyNode;
@@ -97,11 +98,11 @@ public class ConnectorModal extends 
AbstractResourceModal<Serializable> {
                     @Override
                     protected void check(final AjaxRequestTarget target) {
                         if (connectorRestClient.check(model.getObject())) {
-                            info(getString("success_connection"));
+                            info(getString(Constants.OPERATION_SUCCEEDED));
                         } else {
                             error(getString("error_connection"));
                         }
-                        modal.getNotificationPanel().refresh(target);
+                        
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
                     }
 
                 };
@@ -126,7 +127,7 @@ public class ConnectorModal extends 
AbstractResourceModal<Serializable> {
 
     @Override
     public void onError(final AjaxRequestTarget target, final Form<?> form) {
-        modal.getNotificationPanel().refresh(target);
+        SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
     }
 
     @Override
@@ -162,13 +163,13 @@ public class ConnectorModal extends 
AbstractResourceModal<Serializable> {
             } else {
                 connectorRestClient.update(connInstanceTO);
             }
-            info(getString(Constants.OPERATION_SUCCEEDED));
             modal.close(target);
+            info(getString(Constants.OPERATION_SUCCEEDED));
         } catch (Exception e) {
             LOG.error("Failure managing resource {}", connInstanceTO, e);
             error(getString(Constants.ERROR) + ": " + e.getMessage());
-            modal.getNotificationPanel().refresh(target);
         }
+        SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
     }
 
     protected static ConnBundleTO getBundle(final ConnInstanceTO 
connInstanceTO, final List<ConnBundleTO> bundles) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupSearchResultPanel.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupSearchResultPanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupSearchResultPanel.java
index 53a69b3..b2babde 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupSearchResultPanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupSearchResultPanel.java
@@ -25,8 +25,8 @@ import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 import org.apache.commons.lang3.SerializationUtils;
+import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.Constants;
-import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.pages.GroupDisplayAttributesModalPage;
 import org.apache.syncope.client.console.rest.GroupRestClient;
 import 
org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.ActionColumn;
@@ -146,7 +146,7 @@ public class GroupSearchResultPanel extends 
AnySearchResultPanel<GroupTO> {
                             error(getString(Constants.ERROR) + ": " + 
e.getMessage());
                             LOG.error("While deleting object {}", 
model.getObject().getKey(), e);
                         }
-                        ((BasePage) 
getPage()).getNotificationPanel().refresh(target);
+                        
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
                     }
                 }, ActionLink.ActionType.DELETE, 
StandardEntitlement.GROUP_DELETE);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/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 02b8718..b8b6aee 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
@@ -20,24 +20,26 @@ package org.apache.syncope.client.console.panels;
 
 import com.googlecode.wicket.jquery.core.Options;
 import com.googlecode.wicket.kendo.ui.widget.notification.Notification;
+import java.util.List;
 import org.apache.syncope.client.console.commons.Constants;
 import org.apache.syncope.client.console.commons.StyledNotificationBehavior;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.markup.html.panel.FeedbackPanel;
+import org.apache.wicket.IGenericComponent;
+import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import org.apache.wicket.feedback.FeedbackMessage;
+import org.apache.wicket.feedback.FeedbackMessagesModel;
+import org.apache.wicket.feedback.IFeedback;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.IModel;
 
-public class NotificationPanel extends FeedbackPanel {
+public class NotificationPanel extends Panel implements IFeedback, 
IGenericComponent<List<FeedbackMessage>> {
 
     private static final long serialVersionUID = 5895940553202128621L;
 
     private final Notification notification;
 
-    private StyledNotificationBehavior behavior;
-
     public NotificationPanel(final String id) {
         super(id);
 
-        //element.kendoNotification.widget.fn.options.autoHideAfter
         final Options options = new Options();
         options.set("position", "{ pinned: true }");
         options.set("templates",
@@ -52,31 +54,48 @@ public class NotificationPanel extends FeedbackPanel {
 
             @Override
             public StyledNotificationBehavior newWidgetBehavior(final String 
selector) {
-                behavior = new StyledNotificationBehavior(selector, options);
-                return behavior;
+                return new StyledNotificationBehavior(selector, options);
             }
         };
 
         add(notification);
     }
 
-    public void refresh(final AjaxRequestTarget target) {
-        if (anyMessage()) {
-            for (FeedbackMessage message : getCurrentMessages()) {
-                if (message.isError()) {
-                    notification.error(target, message.getMessage());
-                } else if (message.isSuccess() || message.isInfo()) {
-                    notification.success(target, message.getMessage());
-                } else {
-                    notification.warn(target, message.getMessage());
-                }
+    public final void refresh(final IPartialPageRequestHandler handler) {
+        for (FeedbackMessage message : this.getModelObject()) {
+            if (message.isError()) {
+                this.notification.error(handler, message.getMessage());
+            } else if (message.isSuccess() || message.isInfo()) {
+                this.notification.success(handler, message.getMessage());
+            } else {
+                this.notification.warn(handler, message.getMessage());
             }
+            message.markRendered();
         }
     }
 
     @Override
-    protected void onInitialize() {
-        this.remove("feedbackul");
-        super.onInitialize();
+    protected IModel<?> initModel() {
+        return new FeedbackMessagesModel(this);
+    }
+
+    @Override
+    public IModel<List<FeedbackMessage>> getModel() {
+        return (IModel<List<FeedbackMessage>>) this.getDefaultModel();
+    }
+
+    @Override
+    public void setModel(final IModel<List<FeedbackMessage>> model) {
+        this.setDefaultModel(model);
+    }
+
+    @Override
+    public void setModelObject(final List<FeedbackMessage> object) {
+        this.setDefaultModelObject(object);
+    }
+
+    @Override
+    public List<FeedbackMessage> getModelObject() {
+        return (List<FeedbackMessage>) this.getDefaultModelObject();
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersCreateWizardPanel.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersCreateWizardPanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersCreateWizardPanel.java
index 8db78d0..73d917a 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersCreateWizardPanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersCreateWizardPanel.java
@@ -36,7 +36,7 @@ public class ParametersCreateWizardPanel extends 
AjaxWizardBuilder<ParametersCre
     private static final long serialVersionUID = -2868592590785581481L;
 
     private static final Logger LOG = 
LoggerFactory.getLogger(ParametersCreateWizardPanel.class);
-
+    
     public ParametersCreateWizardPanel(final String id, final ParametersForm 
defaultItem, final PageReference pageRef) {
         super(id, defaultItem, pageRef);
 
@@ -56,10 +56,11 @@ public class ParametersCreateWizardPanel extends 
AjaxWizardBuilder<ParametersCre
 
     @Override
     protected Serializable onApplyInternal(final ParametersForm modelObject) {
-        final PlainSchemaTO finalpPlainSchemaTO = 
modelObject.getPlainSchemaTO();
-        finalpPlainSchemaTO.setKey(modelObject.getAttrTO().getSchema());
+        final PlainSchemaTO plainSchemaTO = modelObject.getPlainSchemaTO();
+        plainSchemaTO.setKey(modelObject.getAttrTO().getSchema());
+        
         SyncopeConsoleSession.get().getService(SchemaService.class).create(
-                SchemaType.PLAIN, finalpPlainSchemaTO);
+                SchemaType.PLAIN, plainSchemaTO);
         
SyncopeConsoleSession.get().getService(ConfigurationService.class).set(modelObject.getAttrTO());
         return modelObject.getAttrTO();
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersEditModalPanel.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersEditModalPanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersEditModalPanel.java
index 6f0ec76..2074889 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersEditModalPanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersEditModalPanel.java
@@ -54,12 +54,12 @@ public class ParametersEditModalPanel extends 
AbstractModalPanel<AttrTO> {
     public void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
         try {
             
SyncopeConsoleSession.get().getService(ConfigurationService.class).set(attrTO);
-            info(getString(Constants.OPERATION_SUCCEEDED));
             parametersModal.close(target);
+            info(getString(Constants.OPERATION_SUCCEEDED));
         } catch (Exception e) {
             LOG.error("While creating or updating AttrTO", e);
             error(getString(Constants.ERROR) + ": " + e.getMessage());
         }
-        parametersModal.getNotificationPanel().refresh(target);
+        SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersPanel.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersPanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersPanel.java
index b2f28bb..f9834f3 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersPanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersPanel.java
@@ -33,7 +33,6 @@ import 
org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.Constants;
 import org.apache.syncope.client.console.commons.SearchableDataProvider;
 import 
org.apache.syncope.client.console.commons.SortableDataProviderComparator;
-import org.apache.syncope.client.console.pages.BasePage;
 import 
org.apache.syncope.client.console.panels.ParametersPanel.ParametersProvider;
 import org.apache.syncope.client.console.rest.BaseRestClient;
 import 
org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
@@ -92,7 +91,7 @@ public class ParametersPanel extends 
AbstractSearchResultPanel<
 
             @Override
             public void onClose(final AjaxRequestTarget target) {
-                modal.show(false);
+                modalDetails.show(false);
                 target.add(container);
             }
         });
@@ -119,7 +118,6 @@ public class ParametersPanel extends 
AbstractSearchResultPanel<
             }
 
         }, true);
-        
addNotificationPanel((BasePage.class.cast(pageRef.getPage()).getNotificationPanel()));
         modal.size(Modal.Size.Medium);
         initResultTable();
 
@@ -230,8 +228,7 @@ public class ParametersPanel extends 
AbstractSearchResultPanel<
                                     LOG.error("While deleting AttrTO", e);
                                     error(getString(Constants.ERROR) + ": " + 
e.getMessage());
                                 }
-                                ((BasePage) 
getPage()).getNotificationPanel().refresh(target);
-
+                                
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
                             }
                         }, ActionLink.ActionType.DELETE, 
StandardEntitlement.CONFIGURATION_DELETE);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/panels/Realm.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/Realm.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/Realm.java
index 12c6118..c4309d2 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/Realm.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/Realm.java
@@ -22,7 +22,6 @@ import com.googlecode.wicket.jquery.core.panel.LabelPanel;
 import 
de.agilecoders.wicket.core.markup.html.bootstrap.tabs.AjaxBootstrapTabbedPanel;
 import java.util.ArrayList;
 import java.util.List;
-import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.rest.AnyTypeClassRestClient;
 import org.apache.syncope.client.console.rest.AnyTypeRestClient;
 import 
org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
@@ -153,9 +152,7 @@ public abstract class Realm extends Panel {
                         anyTypeTO.getKey(),
                         pageReference).setRealm(realmTO.getFullPath()).
                         addNewItemPanelBuilder(new UserWizardBuilder(
-                                BaseModal.CONTENT_ID, userTO, 
anyTypeTO.getClasses(), pageRef)).
-                        
addNotificationPanel(BasePage.class.cast(this.pageRef.getPage()).getNotificationPanel()).
-                        build(id);
+                                BaseModal.CONTENT_ID, userTO, 
anyTypeTO.getClasses(), pageRef)).build(id);
                 MetaDataRoleAuthorizationStrategy.authorize(panel, 
WebPage.RENDER, StandardEntitlement.USER_LIST);
                 break;
             case GROUP:
@@ -166,9 +163,7 @@ public abstract class Realm extends Panel {
                         anyTypeTO.getKey(),
                         pageReference).setRealm(realmTO.getFullPath()).
                         addNewItemPanelBuilder(new GroupWizardBuilder(
-                                BaseModal.CONTENT_ID, groupTO, 
anyTypeTO.getClasses(), pageRef)).
-                        
addNotificationPanel(BasePage.class.cast(this.pageRef.getPage()).getNotificationPanel()).
-                        build(id);
+                                BaseModal.CONTENT_ID, groupTO, 
anyTypeTO.getClasses(), pageRef)).build(id);
                 // list of group is available to all authenticated users
                 break;
             case ANY_OBJECT:
@@ -180,9 +175,7 @@ public abstract class Realm extends Panel {
                         anyTypeTO.getKey(),
                         pageReference).setRealm(realmTO.getFullPath()).
                         addNewItemPanelBuilder(new AnyObjectWizardBuilder(
-                                BaseModal.CONTENT_ID, anyObjectTO, 
anyTypeTO.getClasses(), pageRef)).
-                        
addNotificationPanel(BasePage.class.cast(this.pageRef.getPage()).getNotificationPanel()).
-                        build(id);
+                                BaseModal.CONTENT_ID, anyObjectTO, 
anyTypeTO.getClasses(), pageRef)).build(id);
                 MetaDataRoleAuthorizationStrategy.authorize(panel, 
WebPage.RENDER,
                         String.format("%s_%s", anyObjectTO.getType(), 
AnyEntitlement.LIST));
                 break;

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/panels/RealmModalPanel.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/RealmModalPanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/RealmModalPanel.java
index ed6bf82..fdb6f70 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/RealmModalPanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/RealmModalPanel.java
@@ -20,7 +20,6 @@ package org.apache.syncope.client.console.panels;
 
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.Constants;
-import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.rest.RealmRestClient;
 import 
org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
 import org.apache.syncope.common.lib.to.RealmTO;
@@ -79,13 +78,12 @@ public class RealmModalPanel extends 
AbstractModalPanel<RealmTO> {
             } else {
                 realmRestClient.update(updatedRealmTO);
             }
-
             info(getString(Constants.OPERATION_SUCCEEDED));
             modal.close(target);
         } catch (Exception e) {
             LOG.error("While creating or updating realm", e);
             error(getString(Constants.ERROR) + ": " + e.getMessage());
         }
-        
BasePage.class.cast(pageRef.getPage()).getNotificationPanel().refresh(target);
+        SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/panels/RelationshipTypePanel.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/RelationshipTypePanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/RelationshipTypePanel.java
index e90b0cc..d00dd7b 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/RelationshipTypePanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/RelationshipTypePanel.java
@@ -84,14 +84,13 @@ public class RelationshipTypePanel extends 
AbstractTypesPanel<RelationshipTypeTO
                                 SyncopeConsoleSession.get().
                                         
getService(RelationshipTypeService.class).update(modelObject);
                             }
-
                             info(getString(Constants.OPERATION_SUCCEEDED));
                             modal.close(target);
                         } catch (Exception e) {
                             LOG.error("While creating or updating 
RelationshipTypeTO", e);
                             error(getString(Constants.ERROR) + ": " + 
e.getMessage());
-                            modal.getNotificationPanel().refresh(target);
                         }
+                        
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
                     }
                 };
             }
@@ -189,7 +188,7 @@ public class RelationshipTypePanel extends 
AbstractTypesPanel<RelationshipTypeTO
                             LOG.error("While deleting RelationshipType", e);
                             error(getString(Constants.ERROR) + ": " + 
e.getMessage());
                         }
-                        modal.getNotificationPanel().refresh(target);
+                        
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
                     }
                 }, ActionLink.ActionType.DELETE, 
StandardEntitlement.RELATIONSHIPTYPE_DELETE);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceModal.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceModal.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceModal.java
index ceaa322..8006430 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceModal.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceModal.java
@@ -24,6 +24,7 @@ import java.util.Collection;
 import org.apache.commons.collections4.IterableUtils;
 import org.apache.commons.collections4.Predicate;
 import org.apache.commons.lang3.SerializationUtils;
+import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.Constants;
 import org.apache.syncope.client.console.rest.ConnectorRestClient;
 import org.apache.syncope.client.console.rest.ResourceRestClient;
@@ -147,7 +148,6 @@ public class ResourceModal<T extends Serializable> extends 
AbstractResourceModal
                 }, ActionLink.ActionType.DELETE, 
StandardEntitlement.RESOURCE_DELETE);
 
         builder.addNewItemPanelBuilder(new ProvisionWizardBuilder("wizard", 
model.getObject(), pageRef));
-        builder.addNotificationPanel(modal.getNotificationPanel());
 
         tabs.add(new AbstractTab(new ResourceModel("provisions", 
"provisions")) {
 
@@ -176,11 +176,11 @@ public class ResourceModal<T extends Serializable> 
extends AbstractResourceModal
                     @Override
                     protected void check(final AjaxRequestTarget target) {
                         if (connectorRestClient.check(model.getObject())) {
-                            info(getString("success_connection"));
+                            info(getString(Constants.OPERATION_SUCCEEDED));
                         } else {
                             error(getString("error_connection"));
                         }
-                        modal.getNotificationPanel().refresh(target);
+                        
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
                     }
                 };
                 MetaDataRoleAuthorizationStrategy.authorize(panel, ENABLE, 
StandardEntitlement.CONNECTOR_READ);
@@ -206,7 +206,7 @@ public class ResourceModal<T extends Serializable> extends 
AbstractResourceModal
 
     @Override
     public void onError(final AjaxRequestTarget target, final Form<?> form) {
-        modal.getNotificationPanel().refresh(target);
+        SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
     }
 
     @Override
@@ -259,6 +259,6 @@ public class ResourceModal<T extends Serializable> extends 
AbstractResourceModal
                 error(getString(Constants.ERROR) + ": " + e.getMessage());
             }
         }
-        modal.getNotificationPanel().refresh(target);
+        SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/panels/RoleSearchResultPanel.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/RoleSearchResultPanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/RoleSearchResultPanel.java
index 7cb295b..f789ec5 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/RoleSearchResultPanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/RoleSearchResultPanel.java
@@ -23,9 +23,9 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 import org.apache.commons.lang3.SerializationUtils;
+import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.Constants;
 import org.apache.syncope.client.console.commons.RoleDataProvider;
-import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.rest.RoleRestClient;
 import 
org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.ActionColumn;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
@@ -122,10 +122,10 @@ public class RoleSearchResultPanel
                             info(getString(Constants.OPERATION_SUCCEEDED));
                             target.add(container);
                         } catch (SyncopeClientException e) {
-                            error(getString(Constants.ERROR) + ": " + 
e.getMessage());
                             LOG.error("While deleting object {}", 
model.getObject().getKey(), e);
+                            error(getString(Constants.ERROR) + ": " + 
e.getMessage());
                         }
-                        ((BasePage) 
getPage()).getNotificationPanel().refresh(target);
+                        
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
                     }
                 }, ActionLink.ActionType.DELETE, 
StandardEntitlement.ROLE_DELETE);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java
index 4254a4c..718896b 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java
@@ -33,7 +33,6 @@ import 
org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.Constants;
 import org.apache.syncope.client.console.commons.SearchableDataProvider;
 import 
org.apache.syncope.client.console.commons.SortableDataProviderComparator;
-import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.panels.SchemaTypePanel.SchemaProvider;
 import org.apache.syncope.client.console.rest.SchemaRestClient;
 import 
org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
@@ -114,13 +113,14 @@ public class SchemaTypePanel extends 
AbstractTypesPanel<AbstractSchemaTO, Schema
                                     SyncopeConsoleSession.get().getService(
                                             
SchemaService.class).update(schemaType, modelObject);
                                 }
+                                
                                 info(getString(Constants.OPERATION_SUCCEEDED));
                                 modal.close(target);
                             } catch (Exception e) {
                                 LOG.error("While creating or updating schema", 
e);
                                 error(getString(Constants.ERROR) + ": " + 
e.getMessage());
                             }
-                            modal.getNotificationPanel().refresh(target);
+                            
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
                         }
                     };
                 }
@@ -256,9 +256,10 @@ public class SchemaTypePanel extends 
AbstractTypesPanel<AbstractSchemaTO, Schema
                             info(getString(Constants.OPERATION_SUCCEEDED));
                             target.add(container);
                         } catch (Exception e) {
+                            LOG.error(getString(Constants.ERROR) + ": " + 
e.getMessage());
                             error(getString(Constants.ERROR) + ": " + 
e.getMessage());
                         }
-                        
BasePage.class.cast(page).getNotificationPanel().refresh(target);
+                        
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
                     }
                 }, ActionLink.ActionType.DELETE, 
StandardEntitlement.SCHEMA_DELETE);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsModalPanel.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsModalPanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsModalPanel.java
index 4b18b96..01cd411 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsModalPanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsModalPanel.java
@@ -62,6 +62,6 @@ public class SecurityQuestionsModalPanel extends 
AbstractModalPanel<SecurityQues
             LOG.error("While creating or updating SecutiryQuestionTO", e);
             error(getString(Constants.ERROR) + ": " + e.getMessage());
         }
-        modal.getNotificationPanel().refresh(target);
+        SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.java
index 35656e5..65d2b5c 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.java
@@ -33,7 +33,6 @@ import 
org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.Constants;
 import org.apache.syncope.client.console.commons.SearchableDataProvider;
 import 
org.apache.syncope.client.console.commons.SortableDataProviderComparator;
-import org.apache.syncope.client.console.pages.BasePage;
 import 
org.apache.syncope.client.console.panels.SecurityQuestionsPanel.SecurityQuestionsProvider;
 import org.apache.syncope.client.console.rest.SecurityQuestionRestClient;
 import 
org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
@@ -184,16 +183,15 @@ public class SecurityQuestionsPanel extends 
AbstractSearchResultPanel<
                             @Override
                             public void onClick(final AjaxRequestTarget 
target, final Serializable ignore) {
                                 try {
-                                    
SyncopeConsoleSession.get().getService(SecurityQuestionService.class
-                                    ).delete(model.getObject().getKey());
+                                    SyncopeConsoleSession.get().getService(
+                                            
SecurityQuestionService.class).delete(model.getObject().getKey());
                                     
info(getString(Constants.OPERATION_SUCCEEDED));
                                     target.add(container);
                                 } catch (Exception e) {
                                     LOG.error("While deleting 
SecutiryQuestionTO", e);
                                     error(getString(Constants.ERROR) + ": " + 
e.getMessage());
                                 }
-                                ((BasePage) 
getPage()).getNotificationPanel().refresh(target);
-
+                                
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
                             }
                         }, ActionLink.ActionType.DELETE, 
StandardEntitlement.SECURITY_QUESTION_DELETE);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/panels/UserSearchResultPanel.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/UserSearchResultPanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/UserSearchResultPanel.java
index 1b41bda..57da0ef 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/UserSearchResultPanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/UserSearchResultPanel.java
@@ -25,8 +25,8 @@ import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 import org.apache.commons.lang3.SerializationUtils;
+import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.Constants;
-import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.pages.StatusModal;
 import org.apache.syncope.client.console.pages.UserDisplayAttributesModalPage;
 import org.apache.syncope.client.console.rest.UserRestClient;
@@ -183,11 +183,10 @@ public class UserSearchResultPanel extends 
AnySearchResultPanel<UserTO> {
                             info(getString(Constants.OPERATION_SUCCEEDED));
                             target.add(container);
                         } catch (SyncopeClientException e) {
-                            error(getString(Constants.ERROR) + ": " + 
e.getMessage());
                             LOG.error("While deleting object {}", 
model.getObject().getKey(), e);
+                            error(getString(Constants.ERROR) + ": " + 
e.getMessage());
                         }
-                        ((BasePage) 
getPage()).getNotificationPanel().refresh(target);
-
+                        
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
                     }
                 }, ActionLink.ActionType.DELETE, 
StandardEntitlement.USER_DELETE);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/panels/XMLWorkflowEditorModalPanel.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/XMLWorkflowEditorModalPanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/XMLWorkflowEditorModalPanel.java
index 8fdf2ae..f10b05d 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/XMLWorkflowEditorModalPanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/XMLWorkflowEditorModalPanel.java
@@ -21,6 +21,7 @@ package org.apache.syncope.client.console.panels;
 import java.io.IOException;
 import javax.ws.rs.core.MediaType;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.Constants;
 import org.apache.syncope.client.console.rest.WorkflowRestClient;
 import 
org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
@@ -76,10 +77,10 @@ public class XMLWorkflowEditorModalPanel extends 
AbstractModalPanel<String> {
 
             modal.show(false);
             modal.close(target);
-        } catch (SyncopeClientException scee) {
-            error(getString(Constants.ERROR) + ": " + scee.getMessage());
+        } catch (SyncopeClientException e) {
+            error(getString(Constants.ERROR) + ": " + e.getMessage());
         }
-        modal.getNotificationPanel().refresh(target);
+        SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/tasks/PropagationTaskSearchResultPanel.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/tasks/PropagationTaskSearchResultPanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/tasks/PropagationTaskSearchResultPanel.java
index a884f70..9ee469d 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/tasks/PropagationTaskSearchResultPanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/tasks/PropagationTaskSearchResultPanel.java
@@ -24,9 +24,9 @@ import java.util.Collections;
 import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
+import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.Constants;
 import org.apache.syncope.client.console.commons.TaskDataProvider;
-import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.panels.ModalPanel;
 import 
org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.ActionColumn;
 import 
org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.DatePropertyColumn;
@@ -128,7 +128,7 @@ public abstract class PropagationTaskSearchResultPanel 
extends TaskSearchResultP
                                     error(getString(Constants.ERROR) + ": " + 
e.getMessage());
                                     LOG.error("While running propagation task 
{}", taskTO.getKey(), e);
                                 }
-                                ((BasePage) 
getPage()).getNotificationPanel().refresh(target);
+                                
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
                             }
                         }, ActionLink.ActionType.EXECUTE, 
StandardEntitlement.TASK_EXECUTE).
                         add(new ActionLink<PropagationTaskTO>() {
@@ -145,7 +145,7 @@ public abstract class PropagationTaskSearchResultPanel 
extends TaskSearchResultP
                                     error(getString(Constants.ERROR) + ": " + 
e.getMessage());
                                     LOG.error("While deleting propagation task 
{}", taskTO.getKey(), e);
                                 }
-                                ((BasePage) 
getPage()).getNotificationPanel().refresh(target);
+                                
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
                             }
                         }, ActionLink.ActionType.DELETE, 
StandardEntitlement.TASK_DELETE).build(componentId);
 
@@ -154,8 +154,8 @@ public abstract class PropagationTaskSearchResultPanel 
extends TaskSearchResultP
 
             @Override
             public ActionLinksPanel<PropagationTaskTO> getHeader(final String 
componentId) {
-                final ActionLinksPanel.Builder<PropagationTaskTO> panel
-                        = ActionLinksPanel.builder(page.getPageReference());
+                final ActionLinksPanel.Builder<PropagationTaskTO> panel =
+                        ActionLinksPanel.builder(page.getPageReference());
 
                 return panel.add(new ActionLink<PropagationTaskTO>() {
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskSearchResultPanel.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskSearchResultPanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskSearchResultPanel.java
index 9661b17..0c16470 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskSearchResultPanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskSearchResultPanel.java
@@ -24,9 +24,9 @@ import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 import org.apache.commons.lang3.SerializationUtils;
+import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.Constants;
 import org.apache.syncope.client.console.commons.TaskDataProvider;
-import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.panels.ModalPanel;
 import 
org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.ActionColumn;
 import 
org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.DatePropertyColumn;
@@ -217,7 +217,7 @@ public abstract class SchedTaskSearchResultPanel<T extends 
SchedTaskTO> extends
                                     error(getString(Constants.ERROR) + ": " + 
e.getMessage());
                                     LOG.error("While running propagation task 
{}", taskTO.getKey(), e);
                                 }
-                                ((BasePage) 
getPage()).getNotificationPanel().refresh(target);
+                                
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
                             }
                         }, ActionLink.ActionType.DRYRUN, 
StandardEntitlement.TASK_EXECUTE).
                         add(new ActionLink<T>() {
@@ -234,7 +234,7 @@ public abstract class SchedTaskSearchResultPanel<T extends 
SchedTaskTO> extends
                                     error(getString(Constants.ERROR) + ": " + 
e.getMessage());
                                     LOG.error("While deleting propagation task 
{}", taskTO.getKey(), e);
                                 }
-                                ((BasePage) 
getPage()).getNotificationPanel().refresh(target);
+                                
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
                             }
                         }, ActionLink.ActionType.DELETE, 
StandardEntitlement.TASK_DELETE).build(componentId);
 

Reply via email to