[SYNCOPE-1043] Console behavior fixed

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

Branch: refs/heads/2_0_X
Commit: 3ce8d1bde31aded225a05153ca793dfb14dae9df
Parents: ffe91ae
Author: Francesco Chicchiriccò <ilgro...@apache.org>
Authored: Fri Mar 10 13:41:13 2017 +0100
Committer: Francesco Chicchiriccò <ilgro...@apache.org>
Committed: Fri Mar 10 13:41:13 2017 +0100

----------------------------------------------------------------------
 .../SyncopeConsoleRequestCycleListener.java     | 50 +++++++++--------
 .../client/console/SyncopeConsoleSession.java   | 50 ++++++++++-------
 .../syncope/client/console/pages/BasePage.java  |  4 +-
 .../syncope/client/console/pages/ErrorPage.java | 42 --------------
 .../syncope/client/console/pages/Login.java     | 13 ++++-
 .../console/pages/MustChangePassword.java       | 11 ++--
 .../syncope/client/console/pages/Realms.java    |  2 +-
 .../panels/AnyTypeClassDetailsPanel.java        | 41 ++++++--------
 .../console/panels/AnyTypeClassesPanel.java     | 17 +++---
 .../client/console/panels/AnyTypesPanel.java    | 17 +++---
 .../console/panels/DashboardOverviewPanel.java  | 13 +++--
 .../panels/ParametersCreateWizardPanel.java     | 17 +++---
 .../console/panels/ParametersDetailsPanel.java  | 13 ++---
 .../panels/ParametersEditModalPanel.java        |  7 ++-
 .../client/console/panels/ParametersPanel.java  | 26 ++++-----
 .../console/panels/RelationshipTypesPanel.java  | 21 ++++---
 .../client/console/panels/SchemaTypePanel.java  | 32 +++++------
 .../panels/SecurityQuestionsModalPanel.java     | 13 +++--
 .../console/panels/SecurityQuestionsPanel.java  | 12 ++--
 .../console/panels/TypesDirectoryPanel.java     |  7 ++-
 .../panels/search/SearchClausePanel.java        |  6 +-
 .../console/rest/AnyTypeClassRestClient.java    | 12 ++++
 .../client/console/rest/AnyTypeRestClient.java  |  4 ++
 .../client/console/rest/ConfRestClient.java     | 55 +++++++++++++++++++
 .../console/rest/ConfigurationRestClient.java   | 55 -------------------
 .../console/rest/NotificationRestClient.java    |  5 ++
 .../rest/RelationshipTypeRestClient.java        | 58 ++++++++++++++++++++
 .../client/console/rest/ReportRestClient.java   |  5 ++
 .../client/console/rest/ResourceRestClient.java |  8 +++
 .../client/console/rest/SchemaRestClient.java   | 13 +++++
 .../client/console/rest/SyncopeRestClient.java  | 37 +++++++++++++
 .../client/console/rest/TaskRestClient.java     |  5 ++
 .../client/console/rest/UserSelfRestClient.java | 31 +++++++++++
 .../client/console/widgets/JobActionPanel.java  | 28 +++++-----
 .../console/wizards/any/Relationships.java      |  7 ++-
 .../resources/ResourceProvisionPanel.java       | 11 ++--
 .../syncope/client/console/pages/ErrorPage.html | 37 -------------
 .../syncope/client/console/pages/Login.html     |  1 +
 .../console/rest/CamelRoutesRestClient.java     | 14 +++--
 .../console/widgets/CamelMetricsWidget.java     |  9 +--
 40 files changed, 464 insertions(+), 345 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/3ce8d1bd/client/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleRequestCycleListener.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleRequestCycleListener.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleRequestCycleListener.java
index ddccf39..d9723a8 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleRequestCycleListener.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleRequestCycleListener.java
@@ -21,14 +21,13 @@ package org.apache.syncope.client.console;
 import java.security.AccessControlException;
 import javax.ws.rs.BadRequestException;
 import javax.xml.ws.WebServiceException;
-import org.apache.syncope.client.console.pages.ErrorPage;
+import org.apache.syncope.client.console.pages.Login;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.wicket.Page;
 import org.apache.wicket.authorization.UnauthorizedInstantiationException;
 import org.apache.wicket.core.request.handler.PageProvider;
 import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
 import org.apache.wicket.markup.html.pages.ExceptionErrorPage;
-import org.apache.wicket.model.StringResourceModel;
 import org.apache.wicket.protocol.http.PageExpiredException;
 import org.apache.wicket.request.IRequestHandler;
 import org.apache.wicket.request.cycle.AbstractRequestCycleListener;
@@ -41,38 +40,45 @@ public class SyncopeConsoleRequestCycleListener extends 
AbstractRequestCycleList
 
     private static final Logger LOG = 
LoggerFactory.getLogger(SyncopeConsoleRequestCycleListener.class);
 
+    private boolean instanceOf(final Exception e, final Class<? extends 
Exception> clazz) {
+        return clazz.isAssignableFrom(e.getClass())
+                || (e.getCause() != null && 
clazz.isAssignableFrom(e.getCause().getClass()))
+                || (e.getCause() != null && e.getCause().getCause() != null
+                && clazz.isAssignableFrom(e.getCause().getCause().getClass()));
+    }
+
     @Override
     public IRequestHandler onException(final RequestCycle cycle, final 
Exception e) {
         LOG.error("Exception found", e);
 
         PageParameters errorParameters = new PageParameters();
-        errorParameters.add("errorTitle", new 
StringResourceModel("alert").getString());
-
-        final Page errorPage;
-        if (e instanceof UnauthorizedInstantiationException) {
-            errorParameters.add("errorMessage",
-                    new 
StringResourceModel("unauthorizedInstantiationException").getString());
-
-            errorPage = new ErrorPage(errorParameters);
-        } else if (e.getCause() instanceof AccessControlException) {
-            errorParameters.add("errorMessage", new 
StringResourceModel("accessControlException").getString());
 
-            errorPage = new ErrorPage(errorParameters);
-        } else if (e instanceof PageExpiredException || 
!(SyncopeConsoleSession.get()).isSignedIn()) {
-            errorParameters.add("errorMessage", new 
StringResourceModel("pageExpiredException").getString());
+        Page errorPage;
+        if (instanceOf(e, UnauthorizedInstantiationException.class)) {
+            errorParameters.add("errorMessage", 
"unauthorizedInstantiationException");
+            errorPage = new Login(errorParameters);
+        } else if (instanceOf(e, AccessControlException.class)) {
+            errorParameters.add("errorMessage", "accessControlException");
+            errorPage = new Login(errorParameters);
+        } else if (instanceOf(e, PageExpiredException.class) || 
!SyncopeConsoleSession.get().isSignedIn()) {
+            errorParameters.add("errorMessage", "pageExpiredException");
+            errorPage = new Login(errorParameters);
+        } else if (instanceOf(e, BadRequestException.class)
+                || instanceOf(e, WebServiceException.class)
+                || instanceOf(e, SyncopeClientException.class)) {
 
-            errorPage = new ErrorPage(errorParameters);
-        } else if (e.getCause() instanceof BadRequestException || e.getCause() 
instanceof WebServiceException
-                || e.getCause() instanceof SyncopeClientException) {
-
-            errorParameters.add("errorMessage", new 
StringResourceModel("restClientException").getString());
-
-            errorPage = new ErrorPage(errorParameters);
+            errorParameters.add("errorMessage", "restClientException");
+            errorPage = new Login(errorParameters);
         } else {
             // redirect to default Wicket error page
             errorPage = new ExceptionErrorPage(e, null);
         }
 
+        if (errorPage instanceof Login) {
+            SyncopeConsoleSession.get().cleanup();
+            SyncopeConsoleSession.get().invalidateNow();
+        }
+
         return new RenderPageRequestHandler(new PageProvider(errorPage));
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/3ce8d1bd/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 10cc9b9..4aae7e5 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
@@ -117,24 +117,6 @@ public class SyncopeConsoleSession extends 
AuthenticatedWebSession {
         executorService.execute(command);
     }
 
-    @Override
-    public void invalidate() {
-        if (getJWT() != null) {
-            client.logout();
-        }
-        executorService.shutdown();
-        super.invalidate();
-    }
-
-    @Override
-    public void invalidateNow() {
-        if (getJWT() != null) {
-            client.logout();
-        }
-        executorService.shutdownNow();
-        super.invalidateNow();
-    }
-
     public PlatformInfo getPlatformInfo() {
         return platformInfo;
     }
@@ -156,7 +138,7 @@ public class SyncopeConsoleSession extends 
AuthenticatedWebSession {
     }
 
     public String getJWT() {
-        return client.getJWT();
+        return client == null ? null : client.getJWT();
     }
 
     @Override
@@ -179,6 +161,36 @@ public class SyncopeConsoleSession extends 
AuthenticatedWebSession {
         return authenticated;
     }
 
+    public void cleanup() {
+        client = null;
+        auth = null;
+        selfTO = null;
+    }
+
+    @Override
+    public void invalidate() {
+        if (getJWT() != null) {
+            if (client != null) {
+                client.logout();
+            }
+            cleanup();
+        }
+        executorService.shutdown();
+        super.invalidate();
+    }
+
+    @Override
+    public void invalidateNow() {
+        if (getJWT() != null) {
+            if (client != null) {
+                client.logout();
+            }
+            cleanup();
+        }
+        executorService.shutdownNow();
+        super.invalidateNow();
+    }
+
     public UserTO getSelfTO() {
         return selfTO;
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/3ce8d1bd/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 7241f61..0eaa5fc 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
@@ -29,7 +29,7 @@ import 
org.apache.syncope.client.console.commons.HttpResourceStream;
 import 
org.apache.syncope.client.console.init.ClassPathScanImplementationLookup;
 import org.apache.syncope.client.console.init.ConsoleInitializer;
 import org.apache.syncope.client.console.panels.NotificationPanel;
-import org.apache.syncope.client.console.rest.ConfigurationRestClient;
+import org.apache.syncope.client.console.rest.ConfRestClient;
 import org.apache.syncope.client.console.topology.Topology;
 import org.apache.syncope.client.console.wicket.markup.head.MetaHeaderItem;
 import 
org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
@@ -115,7 +115,7 @@ public class BasePage extends WebPage implements 
IAjaxIndicatorAware {
             @Override
             public void onClick() {
                 try {
-                    HttpResourceStream stream = new HttpResourceStream(new 
ConfigurationRestClient().dbExport());
+                    HttpResourceStream stream = new HttpResourceStream(new 
ConfRestClient().dbExport());
 
                     ResourceStreamRequestHandler rsrh = new 
ResourceStreamRequestHandler(stream);
                     rsrh.setFileName(stream.getFilename() == null

http://git-wip-us.apache.org/repos/asf/syncope/blob/3ce8d1bd/client/console/src/main/java/org/apache/syncope/client/console/pages/ErrorPage.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/pages/ErrorPage.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/pages/ErrorPage.java
deleted file mode 100644
index 80163af..0000000
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/pages/ErrorPage.java
+++ /dev/null
@@ -1,42 +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.pages;
-
-import org.apache.wicket.Page;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.link.BookmarkablePageLink;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.request.mapper.parameter.PageParameters;
-
-/**
- * Error WebPage.
- */
-public class ErrorPage extends BasePage {
-
-    private static final long serialVersionUID = -390761262038796657L;
-
-    public ErrorPage(final PageParameters parameters) {
-        super(parameters);
-
-        body.add(new Label("errorTitle", new 
Model<>(parameters.get("errorTitle").toString())));
-        body.add(new Label("errorMessage", new 
Model<>(parameters.get("errorMessage").toString())));
-
-        body.add(new BookmarkablePageLink<Page>("home", 
getApplication().getHomePage()));
-    }
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/3ce8d1bd/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 9767258..8f24e05 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
@@ -31,6 +31,7 @@ import org.apache.wicket.ajax.markup.html.form.AjaxButton;
 import org.apache.wicket.authentication.IAuthenticationStrategy;
 import org.apache.wicket.authroles.authentication.AuthenticatedWebSession;
 import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.form.ChoiceRenderer;
 import org.apache.wicket.markup.html.form.DropDownChoice;
 import org.apache.wicket.markup.html.form.Form;
@@ -39,6 +40,7 @@ import org.apache.wicket.markup.html.form.StatelessForm;
 import org.apache.wicket.markup.html.form.TextField;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
+import org.apache.wicket.model.StringResourceModel;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 
 public class Login extends WebPage {
@@ -64,6 +66,15 @@ public class Login extends WebPage {
         notificationPanel = new NotificationPanel(Constants.FEEDBACK);
         add(notificationPanel);
 
+        Label exceptionMessage = new Label("exceptionMessage");
+        exceptionMessage.setOutputMarkupPlaceholderTag(true);
+        exceptionMessage.setVisible(false);
+        if (!parameters.get("errorMessage").isNull()) {
+            exceptionMessage.setVisible(true);
+            exceptionMessage.setDefaultModel(new 
StringResourceModel(parameters.get("errorMessage").toString()));
+        }
+        add(exceptionMessage);
+
         form = new StatelessForm<>("login");
 
         usernameField = new TextField<>("username", new Model<String>());
@@ -101,7 +112,7 @@ public class Login extends WebPage {
                     continueToOriginalDestination();
                     setResponsePage(getApplication().getHomePage());
                 } else {
-                   SyncopeConsoleSession.get().error(getString("login-error"));
+                    
SyncopeConsoleSession.get().error(getString("login-error"));
                     notificationPanel.refresh(target);
                 }
                 strategy.remove();

http://git-wip-us.apache.org/repos/asf/syncope/blob/3ce8d1bd/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 19e0110..b8d2dd1 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
@@ -22,8 +22,8 @@ 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.panels.NotificationPanel;
+import org.apache.syncope.client.console.rest.UserSelfRestClient;
 import 
org.apache.syncope.client.console.wicket.markup.html.form.AjaxPasswordFieldPanel;
-import org.apache.syncope.common.rest.api.service.UserSelfService;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.form.AjaxButton;
 import org.apache.wicket.markup.html.WebPage;
@@ -51,6 +51,8 @@ public class MustChangePassword extends WebPage {
 
     private final AjaxPasswordFieldPanel confirmPasswordField;
 
+    private final UserSelfRestClient restClient = new UserSelfRestClient();
+
     public MustChangePassword(final PageParameters parameters) {
         super(parameters);
 
@@ -88,8 +90,7 @@ public class MustChangePassword extends WebPage {
             @Override
             protected void onSubmit(final AjaxRequestTarget target, final 
Form<?> form) {
                 try {
-                    
SyncopeConsoleSession.get().getService(UserSelfService.class).
-                            changePassword(passwordField.getModelObject());
+                    restClient.changePassword(passwordField.getModelObject());
 
                     SyncopeConsoleSession.get().invalidate();
 
@@ -97,8 +98,8 @@ public class MustChangePassword extends WebPage {
                 } catch (Exception e) {
                     LOG.error("While changing password for {}",
                             
SyncopeConsoleSession.get().getSelfTO().getUsername(), e);
-                    
SyncopeConsoleSession.get().error(StringUtils.isBlank(e.getMessage()) ? 
e.getClass().getName() : e.
-                            getMessage());
+                    
SyncopeConsoleSession.get().error(StringUtils.isBlank(e.getMessage())
+                            ? e.getClass().getName() : e.getMessage());
                     notificationPanel.refresh(target);
                 }
             }

http://git-wip-us.apache.org/repos/asf/syncope/blob/3ce8d1bd/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 7106ac8..d9558a8 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
@@ -154,7 +154,7 @@ public class Realms extends BasePage {
             WizardModalPanel<?> modalPanel = newItemEvent.getModalPanel();
 
             if (event.getPayload() instanceof AjaxWizard.NewItemActionEvent && 
modalPanel != null) {
-                final IModel<Serializable> model = new 
CompoundPropertyModel<>(modalPanel.getItem());
+                final IModel<Serializable> model = new 
CompoundPropertyModel<Serializable>(modalPanel.getItem());
                 templateModal.setFormModel(model);
                 templateModal.header(newItemEvent.getResourceModel());
                 
newItemEvent.getTarget().add(templateModal.setContent(modalPanel));

http://git-wip-us.apache.org/repos/asf/syncope/blob/3ce8d1bd/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassDetailsPanel.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassDetailsPanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassDetailsPanel.java
index 95cacd9..7d0867a 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassDetailsPanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassDetailsPanel.java
@@ -23,14 +23,13 @@ import java.util.Arrays;
 import java.util.List;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.collections4.Transformer;
-import org.apache.syncope.client.console.SyncopeConsoleSession;
+import org.apache.syncope.client.console.rest.AnyTypeClassRestClient;
+import org.apache.syncope.client.console.rest.ConfRestClient;
 import org.apache.syncope.client.console.rest.SchemaRestClient;
 import 
org.apache.syncope.client.console.wicket.markup.html.form.AjaxPalettePanel;
 import 
org.apache.syncope.client.console.wicket.markup.html.form.AjaxTextFieldPanel;
 import org.apache.syncope.common.lib.to.AnyTypeClassTO;
 import org.apache.syncope.common.lib.to.AttrTO;
-import org.apache.syncope.common.rest.api.service.AnyTypeClassService;
-import org.apache.syncope.common.rest.api.service.ConfigurationService;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.panel.Panel;
@@ -77,38 +76,32 @@ public class AnyTypeClassDetailsPanel extends Panel {
         container.setOutputMarkupId(true);
         antTypeClassForm.add(container);
 
-        final AjaxPalettePanel<String> plainSchema =
-                new AjaxPalettePanel.Builder<String>()
-                .setAllowOrder(true)
-                .setAllowMoveAll(true)
-                .build("plainSchemas",
+        AjaxPalettePanel<String> plainSchema = new 
AjaxPalettePanel.Builder<String>().
+                setAllowOrder(true).
+                setAllowMoveAll(true).
+                build("plainSchemas",
                         new PropertyModel<List<String>>(this.anyTypeClassTO, 
"plainSchemas"),
                         new ListModel<>(availablePlainSchemas));
-
         plainSchema.hideLabel();
         plainSchema.setOutputMarkupId(true);
         container.add(plainSchema);
 
-        final AjaxPalettePanel<String> derSchema =
-                new AjaxPalettePanel.Builder<String>()
-                .setAllowOrder(true)
-                .setAllowMoveAll(true)
-                .build("derSchemas",
+        AjaxPalettePanel<String> derSchema = new 
AjaxPalettePanel.Builder<String>().
+                setAllowOrder(true).
+                setAllowMoveAll(true).
+                build("derSchemas",
                         new PropertyModel<List<String>>(this.anyTypeClassTO, 
"derSchemas"),
                         new ListModel<>(availableDerSchemas));
         derSchema.hideLabel();
-
         derSchema.setOutputMarkupId(true);
         container.add(derSchema);
 
-        final AjaxPalettePanel<String> virSchema =
-                new AjaxPalettePanel.Builder<String>()
-                .setAllowOrder(true)
-                .setAllowMoveAll(true)
-                .build("virSchemas",
+        AjaxPalettePanel<String> virSchema = new 
AjaxPalettePanel.Builder<String>().
+                setAllowOrder(true).
+                setAllowMoveAll(true).
+                build("virSchemas",
                         new PropertyModel<List<String>>(this.anyTypeClassTO, 
"virSchemas"),
                         new ListModel<>(availableVirSchemas));
-
         virSchema.hideLabel();
         virSchema.setOutputMarkupId(true);
         container.add(virSchema);
@@ -117,9 +110,7 @@ public class AnyTypeClassDetailsPanel extends Panel {
     private void buildAvailableSchemas(final String key) {
 
         List<String> configurationSchemas = new ArrayList<>();
-        CollectionUtils.collect(SyncopeConsoleSession.get().
-                getService(ConfigurationService.class).list(),
-                new Transformer<AttrTO, String>() {
+        CollectionUtils.collect(new ConfRestClient().list(), new 
Transformer<AttrTO, String>() {
 
             @Override
             public String transform(final AttrTO attrTO) {
@@ -127,7 +118,7 @@ public class AnyTypeClassDetailsPanel extends Panel {
             }
         }, configurationSchemas);
 
-        for (AnyTypeClassTO item : 
SyncopeConsoleSession.get().getService(AnyTypeClassService.class).list()) {
+        for (AnyTypeClassTO item : new AnyTypeClassRestClient().list()) {
             if (key == null || !item.getKey().equals(key)) {
                 availablePlainSchemas.removeAll(item.getPlainSchemas());
                 availableDerSchemas.removeAll(item.getDerSchemas());

http://git-wip-us.apache.org/repos/asf/syncope/blob/3ce8d1bd/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 c63deaa..09edf19 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,6 +32,7 @@ import org.apache.syncope.client.console.commons.Constants;
 import org.apache.syncope.client.console.commons.DirectoryDataProvider;
 import 
org.apache.syncope.client.console.commons.SortableDataProviderComparator;
 import org.apache.syncope.client.console.pages.BasePage;
+import org.apache.syncope.client.console.rest.AnyTypeClassRestClient;
 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.BooleanPropertyColumn;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
@@ -40,7 +41,6 @@ import 
org.apache.syncope.client.console.wizards.AbstractModalPanelBuilder;
 import org.apache.syncope.client.console.wizards.AjaxWizard;
 import org.apache.syncope.common.lib.to.AnyTypeClassTO;
 import org.apache.syncope.common.lib.types.StandardEntitlement;
-import org.apache.syncope.common.rest.api.service.AnyTypeClassService;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import 
org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
@@ -52,12 +52,14 @@ import org.apache.wicket.model.CompoundPropertyModel;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.ResourceModel;
 
-public class AnyTypeClassesPanel extends TypesDirectoryPanel<AnyTypeClassTO, 
AnyTypeClassesPanel.AnyTypeClassProvider> {
+public class AnyTypeClassesPanel extends TypesDirectoryPanel<
+        AnyTypeClassTO, AnyTypeClassesPanel.AnyTypeClassProvider, 
AnyTypeClassRestClient> {
 
     private static final long serialVersionUID = -2356760296223908382L;
 
     public AnyTypeClassesPanel(final String id, final PageReference pageRef) {
         super(id, pageRef);
+        this.restClient = new AnyTypeClassRestClient();
         disableCheckBoxes();
 
         this.addNewItemPanelBuilder(new 
AbstractModalPanelBuilder<AnyTypeClassTO>(new AnyTypeClassTO(), pageRef) {
@@ -76,9 +78,9 @@ public class AnyTypeClassesPanel extends 
TypesDirectoryPanel<AnyTypeClassTO, Any
                     public void onSubmit(final AjaxRequestTarget target, final 
Form<?> form) {
                         try {
                             if (getOriginalItem() == null || 
StringUtils.isBlank(getOriginalItem().getKey())) {
-                                
SyncopeConsoleSession.get().getService(AnyTypeClassService.class).create(modelObject);
+                                restClient.create(modelObject);
                             } else {
-                                
SyncopeConsoleSession.get().getService(AnyTypeClassService.class).update(modelObject);
+                                restClient.update(modelObject);
                             }
                             
SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED));
                             AnyTypeClassesPanel.this.updateResultTable(target);
@@ -177,8 +179,7 @@ public class AnyTypeClassesPanel extends 
TypesDirectoryPanel<AnyTypeClassTO, Any
                             @Override
                             public void onClick(final AjaxRequestTarget 
target, final AnyTypeClassTO ignore) {
                                 try {
-                                    SyncopeConsoleSession.get().
-                                            
getService(AnyTypeClassService.class).delete(model.getObject().getKey());
+                                    
restClient.delete(model.getObject().getKey());
                                     
SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED));
                                     target.add(container);
                                 } catch (Exception e) {
@@ -228,14 +229,14 @@ public class AnyTypeClassesPanel extends 
TypesDirectoryPanel<AnyTypeClassTO, Any
 
         @Override
         public Iterator<AnyTypeClassTO> iterator(final long first, final long 
count) {
-            final List<AnyTypeClassTO> list = 
SyncopeConsoleSession.get().getService(AnyTypeClassService.class).list();
+            final List<AnyTypeClassTO> list = restClient.list();
             Collections.sort(list, comparator);
             return list.subList((int) first, (int) first + (int) 
count).iterator();
         }
 
         @Override
         public long size() {
-            return 
SyncopeConsoleSession.get().getService(AnyTypeClassService.class).list().size();
+            return restClient.list().size();
         }
 
         @Override

http://git-wip-us.apache.org/repos/asf/syncope/blob/3ce8d1bd/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 fa7ecdd..b354055 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
@@ -42,7 +42,6 @@ import 
org.apache.syncope.client.console.wizards.AbstractModalPanelBuilder;
 import org.apache.syncope.client.console.wizards.AjaxWizard;
 import org.apache.syncope.common.lib.to.AnyTypeTO;
 import org.apache.syncope.common.lib.types.StandardEntitlement;
-import org.apache.syncope.common.rest.api.service.AnyTypeService;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import 
org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
@@ -54,14 +53,13 @@ import org.apache.wicket.model.CompoundPropertyModel;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.ResourceModel;
 
-public class AnyTypesPanel extends TypesDirectoryPanel<AnyTypeTO, 
AnyTypeProvider> {
+public class AnyTypesPanel extends TypesDirectoryPanel<AnyTypeTO, 
AnyTypeProvider, AnyTypeRestClient> {
 
     private static final long serialVersionUID = 3905038169553185171L;
 
-    private final AnyTypeRestClient anyTypeRestClient = new 
AnyTypeRestClient();
-
     public AnyTypesPanel(final String id, final PageReference pageRef) {
         super(id, pageRef);
+        this.restClient = new AnyTypeRestClient();
         disableCheckBoxes();
 
         this.addNewItemPanelBuilder(new 
AbstractModalPanelBuilder<AnyTypeTO>(new AnyTypeTO(), pageRef) {
@@ -79,10 +77,10 @@ public class AnyTypesPanel extends 
TypesDirectoryPanel<AnyTypeTO, AnyTypeProvide
                     public void onSubmit(final AjaxRequestTarget target, final 
Form<?> form) {
                         try {
                             if (getOriginalItem() == null || 
StringUtils.isBlank(getOriginalItem().getKey())) {
-                                anyTypeRestClient.create(modelObject);
+                                restClient.create(modelObject);
                                 SyncopeConsoleSession.get().refreshAuth();
                             } else {
-                                anyTypeRestClient.update(modelObject);
+                                restClient.update(modelObject);
                             }
                             
SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED));
                             AnyTypesPanel.this.updateResultTable(target);
@@ -180,8 +178,7 @@ public class AnyTypesPanel extends 
TypesDirectoryPanel<AnyTypeTO, AnyTypeProvide
                             @Override
                             public void onClick(final AjaxRequestTarget 
target, final AnyTypeTO ignore) {
                                 try {
-                                    SyncopeConsoleSession.get().
-                                            
getService(AnyTypeService.class).delete(model.getObject().getKey());
+                                    
restClient.delete(model.getObject().getKey());
                                     SyncopeConsoleSession.get().refreshAuth();
 
                                     
SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED));
@@ -233,14 +230,14 @@ public class AnyTypesPanel extends 
TypesDirectoryPanel<AnyTypeTO, AnyTypeProvide
 
         @Override
         public Iterator<AnyTypeTO> iterator(final long first, final long 
count) {
-            final List<AnyTypeTO> list = anyTypeRestClient.list();
+            final List<AnyTypeTO> list = restClient.list();
             Collections.sort(list, comparator);
             return list.subList((int) first, (int) first + (int) 
count).iterator();
         }
 
         @Override
         public long size() {
-            return anyTypeRestClient.list().size();
+            return restClient.list().size();
         }
 
         @Override

http://git-wip-us.apache.org/repos/asf/syncope/blob/3ce8d1bd/client/console/src/main/java/org/apache/syncope/client/console/panels/DashboardOverviewPanel.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/DashboardOverviewPanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/DashboardOverviewPanel.java
index 98508ef..db017d8 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/DashboardOverviewPanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/DashboardOverviewPanel.java
@@ -19,7 +19,7 @@
 package org.apache.syncope.client.console.panels;
 
 import org.apache.commons.lang3.tuple.Triple;
-import org.apache.syncope.client.console.SyncopeConsoleSession;
+import org.apache.syncope.client.console.rest.SyncopeRestClient;
 import 
org.apache.syncope.client.console.wicket.ajax.IndicatorAjaxTimerBehavior;
 import org.apache.syncope.client.console.widgets.AnyByRealmWidget;
 import org.apache.syncope.client.console.widgets.CompletenessWidget;
@@ -27,7 +27,6 @@ import org.apache.syncope.client.console.widgets.LoadWidget;
 import org.apache.syncope.client.console.widgets.NumberWidget;
 import org.apache.syncope.client.console.widgets.UsersByStatusWidget;
 import org.apache.syncope.common.lib.info.NumbersInfo;
-import org.apache.syncope.common.rest.api.service.SyncopeService;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.panel.Panel;
@@ -53,10 +52,12 @@ public class DashboardOverviewPanel extends Panel {
 
     private final LoadWidget load;
 
+    private final SyncopeRestClient restClient = new SyncopeRestClient();
+
     public DashboardOverviewPanel(final String id) {
         super(id);
 
-        NumbersInfo numbers = 
SyncopeConsoleSession.get().getService(SyncopeService.class).numbers();
+        NumbersInfo numbers = restClient.numbers();
 
         WebMarkupContainer container = new WebMarkupContainer("container");
         container.setOutputMarkupId(true);
@@ -95,7 +96,7 @@ public class DashboardOverviewPanel extends Panel {
                 numbers.getAny2ByRealm());
         container.add(anyByRealm);
 
-        load = new LoadWidget("load", 
SyncopeConsoleSession.get().getService(SyncopeService.class).system());
+        load = new LoadWidget("load", restClient.system());
         container.add(load);
 
         container.add(new IndicatorAjaxTimerBehavior(Duration.seconds(60)) {
@@ -104,7 +105,7 @@ public class DashboardOverviewPanel extends Panel {
 
             @Override
             protected void onTimer(final AjaxRequestTarget target) {
-                NumbersInfo numbers = 
SyncopeConsoleSession.get().getService(SyncopeService.class).numbers();
+                NumbersInfo numbers = restClient.numbers();
 
                 if (totalUsers.refresh(numbers.getTotalUsers())) {
                     target.add(totalUsers);
@@ -141,7 +142,7 @@ public class DashboardOverviewPanel extends Panel {
                     target.add(anyByRealm);
                 }
 
-                
load.refresh(SyncopeConsoleSession.get().getService(SyncopeService.class).system());
+                load.refresh(restClient.system());
                 target.add(load);
             }
         });

http://git-wip-us.apache.org/repos/asf/syncope/blob/3ce8d1bd/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 b3a2c93..39ad8ae 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
@@ -19,13 +19,12 @@
 package org.apache.syncope.client.console.panels;
 
 import java.io.Serializable;
-import org.apache.syncope.client.console.SyncopeConsoleSession;
+import org.apache.syncope.client.console.rest.ConfRestClient;
+import org.apache.syncope.client.console.rest.SchemaRestClient;
 import org.apache.syncope.client.console.wizards.AjaxWizardBuilder;
 import org.apache.syncope.common.lib.to.AttrTO;
 import org.apache.syncope.common.lib.to.PlainSchemaTO;
 import org.apache.syncope.common.lib.types.SchemaType;
-import org.apache.syncope.common.rest.api.service.ConfigurationService;
-import org.apache.syncope.common.rest.api.service.SchemaService;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.extensions.wizard.WizardModel;
 
@@ -33,6 +32,10 @@ public class ParametersCreateWizardPanel extends 
AjaxWizardBuilder<ParametersCre
 
     private static final long serialVersionUID = -2868592590785581481L;
 
+    private final ConfRestClient confRestClient = new ConfRestClient();
+
+    private final SchemaRestClient schemaRestClient = new SchemaRestClient();
+
     public ParametersCreateWizardPanel(final ParametersForm defaultItem, final 
PageReference pageRef) {
         super(defaultItem, pageRef);
 
@@ -55,14 +58,12 @@ public class ParametersCreateWizardPanel extends 
AjaxWizardBuilder<ParametersCre
         final PlainSchemaTO plainSchemaTO = modelObject.getPlainSchemaTO();
         plainSchemaTO.setKey(modelObject.getAttrTO().getSchema());
 
-        SyncopeConsoleSession.get().getService(SchemaService.class).
-                create(SchemaType.PLAIN, plainSchemaTO);
+        schemaRestClient.create(SchemaType.PLAIN, plainSchemaTO);
         try {
-            
SyncopeConsoleSession.get().getService(ConfigurationService.class).set(modelObject.getAttrTO());
+            confRestClient.set(modelObject.getAttrTO());
         } catch (Exception e) {
             LOG.error("While setting {}, removing {}", 
modelObject.getAttrTO(), plainSchemaTO, e);
-            SyncopeConsoleSession.get().getService(SchemaService.class).
-                    delete(SchemaType.PLAIN, plainSchemaTO.getKey());
+            schemaRestClient.deletePlainSchema(plainSchemaTO.getKey());
 
             throw e;
         }

http://git-wip-us.apache.org/repos/asf/syncope/blob/3ce8d1bd/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersDetailsPanel.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersDetailsPanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersDetailsPanel.java
index 60747e9..0affc22 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersDetailsPanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersDetailsPanel.java
@@ -21,8 +21,8 @@ package org.apache.syncope.client.console.panels;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
-import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.SchemaUtils;
+import org.apache.syncope.client.console.rest.SchemaRestClient;
 import 
org.apache.syncope.client.console.wicket.markup.html.form.AjaxDropDownChoicePanel;
 import 
org.apache.syncope.client.console.wicket.markup.html.form.AjaxSpinnerFieldPanel;
 import 
org.apache.syncope.client.console.wicket.markup.html.form.AjaxTextFieldPanel;
@@ -34,7 +34,6 @@ import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.to.AttrTO;
 import org.apache.syncope.common.lib.to.PlainSchemaTO;
 import org.apache.syncope.common.lib.types.SchemaType;
-import org.apache.syncope.common.rest.api.service.SchemaService;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.IChoiceRenderer;
@@ -48,6 +47,8 @@ public class ParametersDetailsPanel extends Panel {
 
     private static final long serialVersionUID = 7708288006191496557L;
 
+    private final SchemaRestClient schemaRestClient = new SchemaRestClient();
+
     public ParametersDetailsPanel(final String id, final AttrTO attrTO) {
         super(id);
 
@@ -73,11 +74,9 @@ public class ParametersDetailsPanel extends Panel {
 
     @SuppressWarnings({ "rawtypes", "unchecked" })
     private Panel getFieldPanel(final String id, final AttrTO attrTO) {
-
         final String valueHeaderName = getString("values");
 
-        final PlainSchemaTO schemaTO = 
SyncopeConsoleSession.get().getService(SchemaService.class).
-                read(SchemaType.PLAIN, attrTO.getSchema());
+        final PlainSchemaTO schemaTO = schemaRestClient.read(SchemaType.PLAIN, 
attrTO.getSchema());
 
         final FieldPanel panel;
         switch (schemaTO.getType()) {
@@ -93,7 +92,7 @@ public class ParametersDetailsPanel extends Panel {
                 }
                 break;
             case Boolean:
-                panel = new AjaxDropDownChoicePanel<>(id, valueHeaderName, new 
Model<String>(), false);
+                panel = new AjaxDropDownChoicePanel<>(id, valueHeaderName, new 
Model<>(), false);
                 ((AjaxDropDownChoicePanel<String>) 
panel).setChoices(Arrays.asList("true", "false"));
 
                 if (!attrTO.getValues().isEmpty()) {
@@ -121,7 +120,7 @@ public class ParametersDetailsPanel extends Panel {
                 ((AjaxDropDownChoicePanel<String>) panel).setNullValid(false);
                 break;
             case Enum:
-                panel = new AjaxDropDownChoicePanel<>(id, valueHeaderName, new 
Model<String>(), false);
+                panel = new AjaxDropDownChoicePanel<>(id, valueHeaderName, new 
Model<>(), false);
                 ((AjaxDropDownChoicePanel<String>) 
panel).setChoices(SchemaUtils.getEnumeratedValues(schemaTO));
 
                 if (!attrTO.getValues().isEmpty()) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/3ce8d1bd/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 a791229..85a04b4 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
@@ -22,9 +22,9 @@ 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.pages.BasePage;
+import org.apache.syncope.client.console.rest.ConfRestClient;
 import 
org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
 import org.apache.syncope.common.lib.to.AttrTO;
-import org.apache.syncope.common.rest.api.service.ConfigurationService;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.markup.html.form.Form;
@@ -37,10 +37,13 @@ public class ParametersEditModalPanel extends 
AbstractModalPanel<AttrTO> {
 
     private final BaseModal<AttrTO> parametersModal;
 
+    private final ConfRestClient confRestClient = new ConfRestClient();
+
     public ParametersEditModalPanel(
             final BaseModal<AttrTO> modal,
             final AttrTO attrTO,
             final PageReference pageRef) {
+
         super(modal, pageRef);
         this.attrTO = attrTO;
         this.parametersModal = modal;
@@ -55,7 +58,7 @@ public class ParametersEditModalPanel extends 
AbstractModalPanel<AttrTO> {
     @Override
     public void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
         try {
-            
SyncopeConsoleSession.get().getService(ConfigurationService.class).set(attrTO);
+            confRestClient.set(attrTO);
             parametersModal.close(target);
             
SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED));
         } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/3ce8d1bd/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 29de93c..edfa732 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
@@ -31,7 +31,8 @@ import 
org.apache.syncope.client.console.commons.DirectoryDataProvider;
 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.rest.ConfRestClient;
+import org.apache.syncope.client.console.rest.SchemaRestClient;
 import 
org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.ActionColumn;
 import 
org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
@@ -40,10 +41,7 @@ import 
org.apache.syncope.client.console.wizards.AbstractModalPanelBuilder;
 import org.apache.syncope.client.console.wizards.AjaxWizard;
 import org.apache.syncope.client.console.wizards.WizardMgtPanel;
 import org.apache.syncope.common.lib.to.AttrTO;
-import org.apache.syncope.common.lib.types.SchemaType;
 import org.apache.syncope.common.lib.types.StandardEntitlement;
-import org.apache.syncope.common.rest.api.service.ConfigurationService;
-import org.apache.syncope.common.rest.api.service.SchemaService;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import 
org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
@@ -56,11 +54,12 @@ import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.model.StringResourceModel;
 
-public class ParametersPanel extends DirectoryPanel<
-        AttrTO, AttrTO, ParametersProvider, BaseRestClient> {
+public class ParametersPanel extends DirectoryPanel<AttrTO, AttrTO, 
ParametersProvider, ConfRestClient> {
 
     private static final long serialVersionUID = 2765863608539154422L;
 
+    private final SchemaRestClient schemaRestClient = new SchemaRestClient();
+
     private final BaseModal<AttrTO> modalDetails = new 
BaseModal<AttrTO>("modalDetails") {
 
         private static final long serialVersionUID = 389935548143327858L;
@@ -73,7 +72,7 @@ public class ParametersPanel extends DirectoryPanel<
     };
 
     public ParametersPanel(final String id, final PageReference pageRef) {
-        super(id, new Builder<AttrTO, AttrTO, BaseRestClient>(null, pageRef) {
+        super(id, new Builder<AttrTO, AttrTO, ConfRestClient>(new 
ConfRestClient(), pageRef) {
 
             private static final long serialVersionUID = 8769126634538601689L;
 
@@ -111,8 +110,7 @@ public class ParametersPanel extends DirectoryPanel<
         MetaDataRoleAuthorizationStrategy.authorize(addAjaxLink, RENDER, 
StandardEntitlement.CONFIGURATION_SET);
     }
 
-    public ParametersPanel(
-            final String id, final Builder<AttrTO, AttrTO, BaseRestClient> 
builder) {
+    public ParametersPanel(final String id, final Builder<AttrTO, AttrTO, 
ConfRestClient> builder) {
         super(id, builder);
     }
 
@@ -166,10 +164,8 @@ public class ParametersPanel extends DirectoryPanel<
                             @Override
                             public void onClick(final AjaxRequestTarget 
target, final AttrTO ignore) {
                                 try {
-                                    
SyncopeConsoleSession.get().getService(ConfigurationService.class).
-                                            
delete(model.getObject().getSchema());
-                                    
SyncopeConsoleSession.get().getService(SchemaService.class).
-                                            delete(SchemaType.PLAIN, 
model.getObject().getSchema());
+                                    
restClient.delete(model.getObject().getSchema());
+                                    
schemaRestClient.deletePlainSchema(model.getObject().getSchema());
                                     
SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED));
                                     target.add(container);
                                 } catch (Exception e) {
@@ -220,14 +216,14 @@ public class ParametersPanel extends DirectoryPanel<
 
         @Override
         public Iterator<AttrTO> iterator(final long first, final long count) {
-            final List<AttrTO> list = 
SyncopeConsoleSession.get().getService(ConfigurationService.class).list();
+            final List<AttrTO> list = restClient.list();
             Collections.sort(list, comparator);
             return list.subList((int) first, (int) first + (int) 
count).iterator();
         }
 
         @Override
         public long size() {
-            return 
SyncopeConsoleSession.get().getService(ConfigurationService.class).list().size();
+            return restClient.list().size();
         }
 
         @Override

http://git-wip-us.apache.org/repos/asf/syncope/blob/3ce8d1bd/client/console/src/main/java/org/apache/syncope/client/console/panels/RelationshipTypesPanel.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/RelationshipTypesPanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/RelationshipTypesPanel.java
index a4f3085..7b5976b 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/RelationshipTypesPanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/RelationshipTypesPanel.java
@@ -33,6 +33,7 @@ import 
org.apache.syncope.client.console.commons.DirectoryDataProvider;
 import 
org.apache.syncope.client.console.commons.SortableDataProviderComparator;
 import org.apache.syncope.client.console.pages.BasePage;
 import 
org.apache.syncope.client.console.panels.RelationshipTypesPanel.RelationshipTypeProvider;
+import org.apache.syncope.client.console.rest.RelationshipTypeRestClient;
 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.BooleanPropertyColumn;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
@@ -41,7 +42,6 @@ import 
org.apache.syncope.client.console.wizards.AbstractModalPanelBuilder;
 import org.apache.syncope.client.console.wizards.AjaxWizard;
 import org.apache.syncope.common.lib.to.RelationshipTypeTO;
 import org.apache.syncope.common.lib.types.StandardEntitlement;
-import org.apache.syncope.common.rest.api.service.RelationshipTypeService;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import 
org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
@@ -53,12 +53,14 @@ import org.apache.wicket.model.CompoundPropertyModel;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.ResourceModel;
 
-public class RelationshipTypesPanel extends 
TypesDirectoryPanel<RelationshipTypeTO, RelationshipTypeProvider> {
+public class RelationshipTypesPanel extends TypesDirectoryPanel<
+        RelationshipTypeTO, RelationshipTypeProvider, 
RelationshipTypeRestClient> {
 
     private static final long serialVersionUID = -3731778000138547357L;
 
     public RelationshipTypesPanel(final String id, final PageReference 
pageRef) {
         super(id, pageRef);
+        this.restClient = new RelationshipTypeRestClient();
         disableCheckBoxes();
 
         this.addNewItemPanelBuilder(
@@ -69,6 +71,7 @@ public class RelationshipTypesPanel extends 
TypesDirectoryPanel<RelationshipType
             @Override
             public WizardModalPanel<RelationshipTypeTO> build(
                     final String id, final int index, final AjaxWizard.Mode 
mode) {
+
                 final RelationshipTypeTO modelObject = newModelObject();
                 return new RelationshipTypeModalPanel(modal, modelObject, 
pageRef) {
 
@@ -78,11 +81,9 @@ public class RelationshipTypesPanel extends 
TypesDirectoryPanel<RelationshipType
                     public void onSubmit(final AjaxRequestTarget target, final 
Form<?> form) {
                         try {
                             if (getOriginalItem() == null || 
StringUtils.isBlank(getOriginalItem().getKey())) {
-                                SyncopeConsoleSession.get().
-                                        
getService(RelationshipTypeService.class).create(modelObject);
+                                restClient.create(modelObject);
                             } else {
-                                SyncopeConsoleSession.get().
-                                        
getService(RelationshipTypeService.class).update(modelObject);
+                                restClient.update(modelObject);
                             }
                             
SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED));
                             
RelationshipTypesPanel.this.updateResultTable(target);
@@ -181,8 +182,7 @@ public class RelationshipTypesPanel extends 
TypesDirectoryPanel<RelationshipType
                             @Override
                             public void onClick(final AjaxRequestTarget 
target, final RelationshipTypeTO ignore) {
                                 try {
-                                    SyncopeConsoleSession.get().getService(
-                                            
RelationshipTypeService.class).delete(model.getObject().getKey());
+                                    
restClient.delete(model.getObject().getKey());
                                     
SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED));
                                     target.add(container);
                                 } catch (Exception e) {
@@ -232,15 +232,14 @@ public class RelationshipTypesPanel extends 
TypesDirectoryPanel<RelationshipType
 
         @Override
         public Iterator<RelationshipTypeTO> iterator(final long first, final 
long count) {
-            final List<RelationshipTypeTO> list = 
SyncopeConsoleSession.get().getService(RelationshipTypeService.class).
-                    list();
+            final List<RelationshipTypeTO> list = restClient.list();
             Collections.sort(list, comparator);
             return list.subList((int) first, (int) first + (int) 
count).iterator();
         }
 
         @Override
         public long size() {
-            return 
SyncopeConsoleSession.get().getService(RelationshipTypeService.class).list().size();
+            return restClient.list().size();
         }
 
         @Override

http://git-wip-us.apache.org/repos/asf/syncope/blob/3ce8d1bd/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 6f3f7dd..70ed5d6 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
@@ -36,6 +36,7 @@ import 
org.apache.syncope.client.console.commons.DirectoryDataProvider;
 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.ConfRestClient;
 import org.apache.syncope.client.console.rest.SchemaRestClient;
 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.BooleanPropertyColumn;
@@ -47,8 +48,6 @@ import org.apache.syncope.common.lib.to.AbstractSchemaTO;
 import org.apache.syncope.common.lib.to.AttrTO;
 import org.apache.syncope.common.lib.types.SchemaType;
 import org.apache.syncope.common.lib.types.StandardEntitlement;
-import org.apache.syncope.common.rest.api.service.ConfigurationService;
-import org.apache.syncope.common.rest.api.service.SchemaService;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import 
org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
@@ -62,7 +61,7 @@ import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.ResourceModel;
 import org.springframework.util.ReflectionUtils;
 
-public class SchemaTypePanel extends TypesDirectoryPanel<AbstractSchemaTO, 
SchemaProvider> {
+public class SchemaTypePanel extends TypesDirectoryPanel<AbstractSchemaTO, 
SchemaProvider, SchemaRestClient> {
 
     private static final long serialVersionUID = 3905038169553185171L;
 
@@ -80,12 +79,11 @@ public class SchemaTypePanel extends 
TypesDirectoryPanel<AbstractSchemaTO, Schem
         }
     };
 
-    private final SchemaRestClient schemaRestClient = new SchemaRestClient();
-
     private final SchemaType schemaType;
 
     public SchemaTypePanel(final String id, final SchemaType schemaType, final 
PageReference pageRef) {
         super(id, pageRef);
+        this.restClient = new SchemaRestClient();
         disableCheckBoxes();
 
         this.schemaType = schemaType;
@@ -109,11 +107,9 @@ public class SchemaTypePanel extends 
TypesDirectoryPanel<AbstractSchemaTO, Schem
                         public void onSubmit(final AjaxRequestTarget target, 
final Form<?> form) {
                             try {
                                 if (getOriginalItem() == null || 
StringUtils.isBlank(getOriginalItem().getKey())) {
-                                    SyncopeConsoleSession.get().getService(
-                                            
SchemaService.class).create(schemaType, modelObject);
+                                    restClient.create(schemaType, modelObject);
                                 } else {
-                                    SyncopeConsoleSession.get().getService(
-                                            
SchemaService.class).update(schemaType, modelObject);
+                                    restClient.update(schemaType, modelObject);
                                 }
 
                                 SchemaTypePanel.this.updateResultTable(target);
@@ -212,15 +208,15 @@ public class SchemaTypePanel extends 
TypesDirectoryPanel<AbstractSchemaTO, Schem
                                 try {
                                     switch (schemaType) {
                                         case DERIVED:
-                                            
schemaRestClient.deleteDerSchema(model.getObject().getKey());
+                                            
restClient.deleteDerSchema(model.getObject().getKey());
                                             break;
 
                                         case VIRTUAL:
-                                            
schemaRestClient.deleteVirSchema(model.getObject().getKey());
+                                            
restClient.deleteVirSchema(model.getObject().getKey());
                                             break;
 
                                         default:
-                                            
schemaRestClient.deletePlainSchema(model.getObject().getKey());
+                                            
restClient.deletePlainSchema(model.getObject().getKey());
                                             break;
                                     }
 
@@ -268,6 +264,8 @@ public class SchemaTypePanel extends 
TypesDirectoryPanel<AbstractSchemaTO, Schem
 
         private final SchemaType schemaType;
 
+        private final ConfRestClient confRestClient = new ConfRestClient();
+
         private SchemaProvider(final int paginatorRows, final SchemaType 
schemaType) {
             super(paginatorRows);
 
@@ -278,15 +276,13 @@ public class SchemaTypePanel extends 
TypesDirectoryPanel<AbstractSchemaTO, Schem
 
         @Override
         public Iterator<AbstractSchemaTO> iterator(final long first, final 
long count) {
-            final List<AbstractSchemaTO> list = 
schemaRestClient.getSchemas(this.schemaType);
+            final List<AbstractSchemaTO> list = 
restClient.getSchemas(this.schemaType);
             Collections.sort(list, comparator);
 
             if (SchemaType.PLAIN == this.schemaType) {
                 final List<String> configurations = new ArrayList<>();
 
-                CollectionUtils.collect(
-                        
SyncopeConsoleSession.get().getService(ConfigurationService.class).list(),
-                        new Transformer<AttrTO, String>() {
+                CollectionUtils.collect(confRestClient.list(), new 
Transformer<AttrTO, String>() {
 
                     @Override
                     public String transform(final AttrTO attrTO) {
@@ -308,9 +304,9 @@ public class SchemaTypePanel extends 
TypesDirectoryPanel<AbstractSchemaTO, Schem
 
         @Override
         public long size() {
-            int size = schemaRestClient.getSchemas(this.schemaType).size();
+            int size = restClient.getSchemas(this.schemaType).size();
             return SchemaType.PLAIN == this.schemaType
-                    ? size - 
SyncopeConsoleSession.get().getService(ConfigurationService.class).list().size()
+                    ? size - confRestClient.list().size()
                     : size;
         }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/3ce8d1bd/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 6fc7abc..a639035 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
@@ -22,9 +22,9 @@ 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.pages.BasePage;
+import org.apache.syncope.client.console.rest.SecurityQuestionRestClient;
 import 
org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
 import org.apache.syncope.common.lib.to.SecurityQuestionTO;
-import org.apache.syncope.common.rest.api.service.SecurityQuestionService;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.markup.html.form.Form;
@@ -35,10 +35,13 @@ public class SecurityQuestionsModalPanel extends 
AbstractModalPanel<SecurityQues
 
     private final SecurityQuestionTO securityQuestionTO;
 
+    private final SecurityQuestionRestClient restClient = new 
SecurityQuestionRestClient();
+
     public SecurityQuestionsModalPanel(
             final BaseModal<SecurityQuestionTO> modal,
             final SecurityQuestionTO securityQuestionTO,
             final PageReference pageRef) {
+
         super(modal, pageRef);
         this.securityQuestionTO = securityQuestionTO;
         add(new SecurityQuestionDetailsPanel("securityQuestionDetailsPanel", 
getItem()));
@@ -53,17 +56,17 @@ public class SecurityQuestionsModalPanel extends 
AbstractModalPanel<SecurityQues
     public void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
         try {
             if (securityQuestionTO.getKey() == null) {
-                
SyncopeConsoleSession.get().getService(SecurityQuestionService.class).create(securityQuestionTO);
+                restClient.create(securityQuestionTO);
             } else {
-                
SyncopeConsoleSession.get().getService(SecurityQuestionService.class).update(securityQuestionTO);
+                restClient.update(securityQuestionTO);
             }
 
             
SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED));
             modal.close(target);
         } catch (Exception e) {
             LOG.error("While creating or updating {}", securityQuestionTO, e);
-            
SyncopeConsoleSession.get().error(StringUtils.isBlank(e.getMessage()) ? 
e.getClass().getName() : e.
-                    getMessage());
+            
SyncopeConsoleSession.get().error(StringUtils.isBlank(e.getMessage())
+                    ? e.getClass().getName() : e.getMessage());
         }
         ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/3ce8d1bd/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 d4c9af7..312c409 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
@@ -41,7 +41,6 @@ import org.apache.syncope.client.console.wizards.AjaxWizard;
 import org.apache.syncope.client.console.wizards.WizardMgtPanel;
 import org.apache.syncope.common.lib.to.SecurityQuestionTO;
 import org.apache.syncope.common.lib.types.StandardEntitlement;
-import org.apache.syncope.common.rest.api.service.SecurityQuestionService;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import 
org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
@@ -60,7 +59,8 @@ public class SecurityQuestionsPanel extends DirectoryPanel<
     private static final long serialVersionUID = 3323019773236588850L;
 
     public SecurityQuestionsPanel(final String id, final PageReference 
pageRef) {
-        super(id, new Builder<SecurityQuestionTO, SecurityQuestionTO, 
SecurityQuestionRestClient>(null, pageRef) {
+        super(id, new Builder<SecurityQuestionTO, SecurityQuestionTO, 
SecurityQuestionRestClient>(
+                new SecurityQuestionRestClient(), pageRef) {
 
             private static final long serialVersionUID = 8769126634538601689L;
 
@@ -160,8 +160,7 @@ public class SecurityQuestionsPanel extends DirectoryPanel<
                             @Override
                             public void onClick(final AjaxRequestTarget 
target, final SecurityQuestionTO ignore) {
                                 try {
-                                    SyncopeConsoleSession.get().getService(
-                                            
SecurityQuestionService.class).delete(model.getObject().getKey());
+                                    
restClient.delete(model.getObject().getKey());
                                     
SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED));
                                     target.add(container);
                                 } catch (Exception e) {
@@ -211,15 +210,14 @@ public class SecurityQuestionsPanel extends 
DirectoryPanel<
 
         @Override
         public Iterator<SecurityQuestionTO> iterator(final long first, final 
long count) {
-            final List<SecurityQuestionTO> list = 
SyncopeConsoleSession.get().getService(SecurityQuestionService.class).
-                    list();
+            final List<SecurityQuestionTO> list = restClient.list();
             Collections.sort(list, comparator);
             return list.subList((int) first, (int) first + (int) 
count).iterator();
         }
 
         @Override
         public long size() {
-            return 
SyncopeConsoleSession.get().getService(SecurityQuestionService.class).list().size();
+            return restClient.list().size();
         }
 
         @Override

http://git-wip-us.apache.org/repos/asf/syncope/blob/3ce8d1bd/client/console/src/main/java/org/apache/syncope/client/console/panels/TypesDirectoryPanel.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/TypesDirectoryPanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/TypesDirectoryPanel.java
index 4e1d53a..119af0a 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/TypesDirectoryPanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/TypesDirectoryPanel.java
@@ -20,12 +20,13 @@ package org.apache.syncope.client.console.panels;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
 import org.apache.syncope.client.console.commons.DirectoryDataProvider;
-import org.apache.syncope.client.console.rest.BaseRestClient;
+import org.apache.syncope.client.console.rest.RestClient;
 import org.apache.syncope.common.lib.AbstractBaseBean;
 import org.apache.wicket.PageReference;
 
-public abstract class TypesDirectoryPanel<T extends AbstractBaseBean, DP 
extends DirectoryDataProvider<T>>
-        extends DirectoryPanel<T, T, DP, BaseRestClient> {
+public abstract class TypesDirectoryPanel<
+        T extends AbstractBaseBean, DP extends DirectoryDataProvider<T>, E 
extends RestClient>
+        extends DirectoryPanel<T, T, DP, E> {
 
     private static final long serialVersionUID = 7890071604330629259L;
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/3ce8d1bd/client/console/src/main/java/org/apache/syncope/client/console/panels/search/SearchClausePanel.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/search/SearchClausePanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/search/SearchClausePanel.java
index b94a284..47567b2 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/search/SearchClausePanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/search/SearchClausePanel.java
@@ -30,18 +30,17 @@ import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.collections4.Transformer;
 import org.apache.commons.collections4.functors.StringValueTransformer;
 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.panels.search.SearchClause.Comparator;
 import org.apache.syncope.client.console.panels.search.SearchClause.Operator;
 import org.apache.syncope.client.console.panels.search.SearchClause.Type;
+import org.apache.syncope.client.console.rest.RelationshipTypeRestClient;
 import 
org.apache.syncope.client.console.wicket.ajax.form.IndicatorAjaxEventBehavior;
 import 
org.apache.syncope.client.console.wicket.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
 import 
org.apache.syncope.client.console.wicket.markup.html.form.AjaxDropDownChoicePanel;
 import 
org.apache.syncope.client.console.wicket.markup.html.form.AjaxTextFieldPanel;
 import org.apache.syncope.client.console.wicket.markup.html.form.FieldPanel;
 import org.apache.syncope.common.lib.to.RelationshipTypeTO;
-import org.apache.syncope.common.rest.api.service.RelationshipTypeService;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.Component;
 import org.apache.wicket.MarkupContainer;
@@ -219,8 +218,7 @@ public class SearchClausePanel extends 
FieldPanel<SearchClause> {
 
                     case RELATIONSHIP:
                         final List<String> relations = CollectionUtils.collect(
-                                
SyncopeConsoleSession.get().getService(RelationshipTypeService.class).list(),
-                                new Transformer<RelationshipTypeTO, String>() {
+                                new RelationshipTypeRestClient().list(), new 
Transformer<RelationshipTypeTO, String>() {
 
                             @Override
                             public String transform(final RelationshipTypeTO 
input) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/3ce8d1bd/client/console/src/main/java/org/apache/syncope/client/console/rest/AnyTypeClassRestClient.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/rest/AnyTypeClassRestClient.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/rest/AnyTypeClassRestClient.java
index 26b8601..1fe66ca 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/rest/AnyTypeClassRestClient.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/rest/AnyTypeClassRestClient.java
@@ -30,6 +30,18 @@ public class AnyTypeClassRestClient extends BaseRestClient {
 
     private static final long serialVersionUID = -2211371717449597247L;
 
+    public void create(final AnyTypeClassTO anyTypeClass) {
+        getService(AnyTypeClassService.class).create(anyTypeClass);
+    }
+
+    public void update(final AnyTypeClassTO anyTypeClass) {
+        getService(AnyTypeClassService.class).update(anyTypeClass);
+    }
+
+    public void delete(final String key) {
+        getService(AnyTypeClassService.class).delete(key);
+    }
+
     public AnyTypeClassTO read(final String key) {
         return getService(AnyTypeClassService.class).read(key);
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/3ce8d1bd/client/console/src/main/java/org/apache/syncope/client/console/rest/AnyTypeRestClient.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/rest/AnyTypeRestClient.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/rest/AnyTypeRestClient.java
index 80b6104..39db455 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/rest/AnyTypeRestClient.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/rest/AnyTypeRestClient.java
@@ -61,4 +61,8 @@ public class AnyTypeRestClient extends BaseRestClient {
     public void update(final AnyTypeTO anyTypeTO) {
         getService(AnyTypeService.class).update(anyTypeTO);
     }
+
+    public void delete(final String key) {
+        getService(AnyTypeService.class).delete(key);
+    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/3ce8d1bd/client/console/src/main/java/org/apache/syncope/client/console/rest/ConfRestClient.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/rest/ConfRestClient.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/rest/ConfRestClient.java
new file mode 100644
index 0000000..5992380
--- /dev/null
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/rest/ConfRestClient.java
@@ -0,0 +1,55 @@
+/*
+ * 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.rest;
+
+import java.util.List;
+import javax.ws.rs.core.Response;
+import org.apache.syncope.common.lib.SyncopeClientException;
+import org.apache.syncope.common.lib.to.AttrTO;
+import org.apache.syncope.common.rest.api.service.ConfigurationService;
+
+public class ConfRestClient extends BaseRestClient {
+
+    private static final long serialVersionUID = 7692363064029538722L;
+
+    public List<AttrTO> list() {
+        return getService(ConfigurationService.class).list();
+    }
+
+    public AttrTO get(final String key) {
+        try {
+            return getService(ConfigurationService.class).get(key);
+        } catch (SyncopeClientException e) {
+            LOG.error("While reading a configuration schema", e);
+        }
+        return null;
+    }
+
+    public void set(final AttrTO attrTO) {
+        getService(ConfigurationService.class).set(attrTO);
+    }
+
+    public void delete(final String key) {
+        getService(ConfigurationService.class).delete(key);
+    }
+
+    public Response dbExport() {
+        return getService(ConfigurationService.class).export();
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/3ce8d1bd/client/console/src/main/java/org/apache/syncope/client/console/rest/ConfigurationRestClient.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/rest/ConfigurationRestClient.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/rest/ConfigurationRestClient.java
deleted file mode 100644
index d07827c..0000000
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/rest/ConfigurationRestClient.java
+++ /dev/null
@@ -1,55 +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.rest;
-
-import java.util.List;
-import javax.ws.rs.core.Response;
-import org.apache.syncope.common.lib.SyncopeClientException;
-import org.apache.syncope.common.lib.to.AttrTO;
-import org.apache.syncope.common.rest.api.service.ConfigurationService;
-
-public class ConfigurationRestClient extends BaseRestClient {
-
-    private static final long serialVersionUID = 7692363064029538722L;
-
-    public List<AttrTO> list() {
-        return getService(ConfigurationService.class).list();
-    }
-
-    public AttrTO get(final String key) {
-        try {
-            return getService(ConfigurationService.class).get(key);
-        } catch (SyncopeClientException e) {
-            LOG.error("While reading a configuration schema", e);
-        }
-        return null;
-    }
-
-    public void set(final AttrTO attrTO) {
-        getService(ConfigurationService.class).set(attrTO);
-    }
-
-    public void delete(final String key) {
-        getService(ConfigurationService.class).delete(key);
-    }
-
-    public Response dbExport() {
-        return getService(ConfigurationService.class).export();
-    }
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/3ce8d1bd/client/console/src/main/java/org/apache/syncope/client/console/rest/NotificationRestClient.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/rest/NotificationRestClient.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/rest/NotificationRestClient.java
index dfb8495..fd99f32 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/rest/NotificationRestClient.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/rest/NotificationRestClient.java
@@ -26,6 +26,7 @@ import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.to.JobTO;
 import org.apache.syncope.common.lib.to.MailTemplateTO;
 import org.apache.syncope.common.lib.to.NotificationTO;
+import org.apache.syncope.common.lib.types.JobAction;
 import org.apache.syncope.common.lib.types.MailTemplateFormat;
 import org.apache.syncope.common.rest.api.service.MailTemplateService;
 import org.apache.syncope.common.rest.api.service.NotificationService;
@@ -43,6 +44,10 @@ public class NotificationRestClient extends BaseRestClient
         return getService(NotificationService.class).getJob();
     }
 
+    public void actionJob(final JobAction jobAction) {
+        getService(NotificationService.class).actionJob(jobAction);
+    }
+
     public NotificationTO read(final String key) {
         return getService(NotificationService.class).read(key);
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/3ce8d1bd/client/console/src/main/java/org/apache/syncope/client/console/rest/RelationshipTypeRestClient.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/rest/RelationshipTypeRestClient.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/rest/RelationshipTypeRestClient.java
new file mode 100644
index 0000000..f79d04d
--- /dev/null
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/rest/RelationshipTypeRestClient.java
@@ -0,0 +1,58 @@
+/*
+ * 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.rest;
+
+import java.util.Collections;
+import java.util.List;
+import org.apache.syncope.common.lib.SyncopeClientException;
+import org.apache.syncope.common.lib.to.RelationshipTypeTO;
+import org.apache.syncope.common.rest.api.service.RelationshipTypeService;
+
+public class RelationshipTypeRestClient extends BaseRestClient {
+
+    private static final long serialVersionUID = -5400007385180229980L;
+
+    public void create(final RelationshipTypeTO relationshipType) {
+        getService(RelationshipTypeService.class).create(relationshipType);
+    }
+
+    public void update(final RelationshipTypeTO relationshipType) {
+        getService(RelationshipTypeService.class).update(relationshipType);
+    }
+
+    public void delete(final String key) {
+        getService(RelationshipTypeService.class).delete(key);
+    }
+
+    public RelationshipTypeTO read(final String key) {
+        return getService(RelationshipTypeService.class).read(key);
+    }
+
+    public List<RelationshipTypeTO> list() {
+        List<RelationshipTypeTO> types = Collections.emptyList();
+
+        try {
+            types = getService(RelationshipTypeService.class).list();
+        } catch (SyncopeClientException e) {
+            LOG.error("While reading all any type classes", e);
+        }
+
+        return types;
+    }
+}

Reply via email to