You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2015/11/19 16:58:46 UTC

[3/3] syncope git commit: Reviewing several client-side builders, adjusting roles

Reviewing several client-side builders, adjusting roles


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

Branch: refs/heads/master
Commit: b738d3e94877528cb74fc1b0b75c4c11e83aa16d
Parents: 6ea34cd
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Thu Nov 19 16:52:42 2015 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Thu Nov 19 16:52:42 2015 +0100

----------------------------------------------------------------------
 .../entitlement/EntitlementResultManager.java   |  1 -
 .../EntitlementSyncopeOperations.java           |  8 +--
 .../cli/commands/role/RoleResultManager.java    |  1 -
 .../commands/role/RoleSyncopeOperations.java    | 12 ++--
 .../schema/SchemaSyncopeOperations.java         | 15 ++--
 .../cli/commands/user/UserResultManager.java    | 12 ++--
 .../commands/user/UserSyncopeOperations.java    | 11 +--
 .../console/rest/AnyObjectRestClient.java       |  6 +-
 .../client/console/rest/GroupRestClient.java    | 11 +--
 .../client/console/rest/SchemaRestClient.java   | 33 ++-------
 .../client/console/rest/TaskRestClient.java     | 10 +--
 .../client/console/rest/UserRestClient.java     | 11 +--
 .../enduser/resources/AbstractBaseResource.java | 14 +---
 .../enduser/resources/SchemaResource.java       | 29 +++-----
 .../resources/SecurityQuestionResource.java     |  3 +-
 .../resources/UserSelfCreateResource.java       |  3 +-
 .../resources/UserSelfUpdateResource.java       |  4 +-
 .../syncope/client/lib/SyncopeClient.java       | 57 +---------------
 .../lib/builders/AbstractQueryBuilder.java      | 57 ----------------
 .../lib/builders/AnyListQueryBuilder.java       | 68 ------------------
 .../client/lib/builders/AnyQueryBuilder.java    | 49 -------------
 .../lib/builders/AnySearchQueryBuilder.java     | 70 -------------------
 .../builders/ConnObjectTOListQueryBuilder.java  | 48 -------------
 .../client/lib/builders/TaskQueryBuilder.java   | 60 ----------------
 .../syncope/common/lib/AnyOperations.java       | 27 ++++----
 .../syncope/common/lib/patch/UserPatch.java     |  4 +-
 .../search/UserFiqlSearchConditionBuilder.java  |  6 +-
 .../syncope/common/lib/search/UserProperty.java |  4 +-
 .../apache/syncope/common/lib/to/RoleTO.java    | 16 +----
 .../apache/syncope/common/lib/to/UserTO.java    |  8 +--
 .../org/apache/syncope/common/lib/JSONTest.java |  4 +-
 .../common/rest/api/beans/AbstractQuery.java    | 36 ++++++++++
 .../common/rest/api/beans/AnyListQuery.java     | 23 +++++++
 .../syncope/common/rest/api/beans/AnyQuery.java | 14 ++++
 .../common/rest/api/beans/AnySearchQuery.java   | 29 ++++++++
 .../rest/api/beans/ConnObjectTOListQuery.java   | 25 +++++++
 .../common/rest/api/beans/SchemaQuery.java      | 72 ++++++++++++++++++++
 .../common/rest/api/beans/TaskQuery.java        | 24 +++++++
 .../common/rest/api/service/RoleService.java    |  4 +-
 .../common/rest/api/service/SchemaService.java  | 12 ++--
 .../syncope/core/logic/AnyTypeClassLogic.java   |  6 +-
 .../apache/syncope/core/logic/AnyTypeLogic.java |  6 +-
 .../apache/syncope/core/logic/DomainLogic.java  |  6 +-
 .../syncope/core/logic/NotificationLogic.java   | 18 ++---
 .../core/logic/RelationshipTypeLogic.java       |  6 +-
 .../apache/syncope/core/logic/RoleLogic.java    | 26 +++----
 .../apache/syncope/core/logic/SchemaLogic.java  | 23 +++++--
 .../core/misc/search/SearchCondVisitor.java     |  2 +-
 .../core/misc/security/AuthDataAccessor.java    | 35 +++++++---
 .../misc/security/SyncopeGrantedAuthority.java  |  4 +-
 .../misc/search/SearchCondConverterTest.java    |  6 +-
 .../core/persistence/api/dao/RoleDAO.java       |  8 +--
 .../core/persistence/api/dao/SchemaDAO.java     |  3 +-
 .../persistence/api/dao/search/RoleCond.java    |  6 +-
 .../core/persistence/api/entity/Role.java       |  6 +-
 .../persistence/jpa/dao/JPAAnySearchDAO.java    | 30 ++++----
 .../persistence/jpa/dao/JPAAnyTypeClassDAO.java |  7 +-
 .../persistence/jpa/dao/JPADerSchemaDAO.java    | 12 ++--
 .../persistence/jpa/dao/JPAPlainSchemaDAO.java  | 12 ++--
 .../core/persistence/jpa/dao/JPARoleDAO.java    | 23 +------
 .../persistence/jpa/dao/JPAVirSchemaDAO.java    | 12 ++--
 .../core/persistence/jpa/entity/JPARole.java    | 22 ++----
 .../persistence/jpa/entity/user/JPAUser.java    |  6 +-
 .../entity/ExternalResourceValidator.java       |  2 +-
 .../jpa/validation/entity/RoleCheck.java        | 41 +++++++++++
 .../jpa/validation/entity/RoleValidator.java    | 40 +++++++++++
 .../resources/META-INF/spring-orm-oracle.xml    |  9 ---
 .../resources/META-INF/spring-orm-sqlserver.xml |  9 ---
 .../src/main/resources/META-INF/spring-orm.xml  |  9 ---
 .../src/main/resources/views.xml                |  4 +-
 .../persistence/jpa/inner/AnySearchTest.java    |  4 +-
 .../core/persistence/jpa/inner/RoleTest.java    | 23 +++----
 .../persistence/jpa/outer/AnySearchTest.java    |  2 +-
 .../core/persistence/jpa/outer/RealmTest.java   |  4 +-
 .../core/persistence/jpa/outer/RoleTest.java    |  4 +-
 .../test/resources/domains/MasterContent.xml    | 56 +++++++--------
 .../java/data/AnyTypeClassDataBinderImpl.java   |  7 +-
 .../java/data/RoleDataBinderImpl.java           | 23 +++----
 .../java/data/UserDataBinderImpl.java           | 14 ++--
 .../core/rest/cxf/service/RoleServiceImpl.java  | 10 +--
 .../rest/cxf/service/SchemaServiceImpl.java     |  5 +-
 .../fit/core/reference/AbstractTaskITCase.java  |  4 +-
 .../fit/core/reference/AnyObjectITCase.java     |  6 +-
 .../core/reference/AuthenticationITCase.java    | 26 +++----
 .../fit/core/reference/DerSchemaITCase.java     |  7 +-
 .../core/reference/ExceptionMapperITCase.java   | 27 ++++----
 .../syncope/fit/core/reference/GroupITCase.java | 10 +--
 .../fit/core/reference/MultitenancyITCase.java  |  7 +-
 .../fit/core/reference/PlainSchemaITCase.java   | 24 ++-----
 .../core/reference/PropagationTaskITCase.java   | 14 ++--
 .../fit/core/reference/PushTaskITCase.java      |  4 +-
 .../fit/core/reference/ResourceITCase.java      |  5 +-
 .../syncope/fit/core/reference/RoleITCase.java  |  6 +-
 .../fit/core/reference/SchedTaskITCase.java     |  4 +-
 .../fit/core/reference/SearchITCase.java        | 37 +++++-----
 .../fit/core/reference/SyncTaskITCase.java      | 21 +++---
 .../syncope/fit/core/reference/UserITCase.java  | 30 ++++----
 .../fit/core/reference/UserWorkflowITCase.java  | 14 ++--
 .../fit/core/reference/VirSchemaITCase.java     | 20 +++++-
 99 files changed, 779 insertions(+), 939 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/b738d3e9/client/cli/src/main/java/org/apache/syncope/client/cli/commands/entitlement/EntitlementResultManager.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/entitlement/EntitlementResultManager.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/entitlement/EntitlementResultManager.java
index 6f023c4..02d3e67 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/entitlement/EntitlementResultManager.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/entitlement/EntitlementResultManager.java
@@ -41,7 +41,6 @@ public class EntitlementResultManager extends CommonsResultManager {
 
     private void printRole(final RoleTO roleTO) {
         System.out.println(" > ROLE ID: " + roleTO.getKey());
-        System.out.println("    name: " + roleTO.getName());
         System.out.println("    REALMS: ");
         printRealms(roleTO.getRealms());
         System.out.println("");

http://git-wip-us.apache.org/repos/asf/syncope/blob/b738d3e9/client/cli/src/main/java/org/apache/syncope/client/cli/commands/entitlement/EntitlementSyncopeOperations.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/entitlement/EntitlementSyncopeOperations.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/entitlement/EntitlementSyncopeOperations.java
index 797678f..8ee92f0 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/entitlement/EntitlementSyncopeOperations.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/entitlement/EntitlementSyncopeOperations.java
@@ -48,8 +48,8 @@ public class EntitlementSyncopeOperations {
     public Set<String> usernameEntitlements(final String username) {
         final Set<String> entitlements = new TreeSet<>();
         final UserTO userTO = userSyncopeOperations.read(userSyncopeOperations.getIdFromUsername(username));
-        for (final Long role : userTO.getRoles()) {
-            entitlements.addAll(roleSyncopeOperations.read(String.valueOf(role)).getEntitlements());
+        for (final String role : userTO.getRoles()) {
+            entitlements.addAll(roleSyncopeOperations.read(role).getEntitlements());
         }
         return entitlements;
     }
@@ -57,8 +57,8 @@ public class EntitlementSyncopeOperations {
     public Set<String> userIdEntitlements(final String userId) {
         final Set<String> entitlements = new TreeSet<>();
         final UserTO userTO = userSyncopeOperations.read(userId);
-        for (final Long role : userTO.getRoles()) {
-            entitlements.addAll(roleSyncopeOperations.read(String.valueOf(role)).getEntitlements());
+        for (final String role : userTO.getRoles()) {
+            entitlements.addAll(roleSyncopeOperations.read(role).getEntitlements());
         }
         return entitlements;
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/b738d3e9/client/cli/src/main/java/org/apache/syncope/client/cli/commands/role/RoleResultManager.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/role/RoleResultManager.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/role/RoleResultManager.java
index d8d8861..4ca13da 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/role/RoleResultManager.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/role/RoleResultManager.java
@@ -35,7 +35,6 @@ public class RoleResultManager extends CommonsResultManager {
 
     private void printRole(final RoleTO roleTO) {
         System.out.println(" > ROLE ID: " + roleTO.getKey());
-        System.out.println("    name: " + roleTO.getName());
         System.out.println("    REALMS: ");
         printRealms(roleTO.getRealms());
         System.out.println("    ENTITLEMENTS:");

http://git-wip-us.apache.org/repos/asf/syncope/blob/b738d3e9/client/cli/src/main/java/org/apache/syncope/client/cli/commands/role/RoleSyncopeOperations.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/role/RoleSyncopeOperations.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/role/RoleSyncopeOperations.java
index 11c207d..6bffb17 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/role/RoleSyncopeOperations.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/role/RoleSyncopeOperations.java
@@ -30,12 +30,12 @@ public class RoleSyncopeOperations {
     public List<RoleTO> list() {
         return roleService.list();
     }
-    
-    public RoleTO read(final String roleId) {
-        return roleService.read(Long.valueOf(roleId));
+
+    public RoleTO read(final String role) {
+        return roleService.read(role);
     }
-    
-    public void delete(final String roleId) {
-        roleService.delete(Long.valueOf(roleId));
+
+    public void delete(final String role) {
+        roleService.delete(role);
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/b738d3e9/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaSyncopeOperations.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaSyncopeOperations.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaSyncopeOperations.java
index 757e2d6..73c483d 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaSyncopeOperations.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaSyncopeOperations.java
@@ -22,6 +22,7 @@ import java.util.List;
 import org.apache.syncope.client.cli.SyncopeServices;
 import org.apache.syncope.common.lib.to.AbstractSchemaTO;
 import org.apache.syncope.common.lib.types.SchemaType;
+import org.apache.syncope.common.rest.api.beans.SchemaQuery;
 import org.apache.syncope.common.rest.api.service.SchemaService;
 
 public class SchemaSyncopeOperations {
@@ -33,19 +34,19 @@ public class SchemaSyncopeOperations {
     }
 
     public <T extends AbstractSchemaTO> List<T> list(final String schemaTypeString) {
-        return schemaService.list(SchemaType.valueOf(schemaTypeString), null);
-    }
-
-    public <T extends AbstractSchemaTO> List<T> listVirtual() {
-        return schemaService.list(SchemaType.VIRTUAL, null);
+        return schemaService.list(SchemaType.valueOf(schemaTypeString), new SchemaQuery.Builder().build());
     }
 
     public <T extends AbstractSchemaTO> List<T> listPlain() {
-        return schemaService.list(SchemaType.PLAIN, null);
+        return schemaService.list(SchemaType.PLAIN, new SchemaQuery.Builder().build());
     }
 
     public <T extends AbstractSchemaTO> List<T> listDerived() {
-        return schemaService.list(SchemaType.DERIVED, null);
+        return schemaService.list(SchemaType.DERIVED, new SchemaQuery.Builder().build());
+    }
+
+    public <T extends AbstractSchemaTO> List<T> listVirtual() {
+        return schemaService.list(SchemaType.VIRTUAL, new SchemaQuery.Builder().build());
     }
 
     public void delete(final String schemaTypeString, final String schemaName) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/b738d3e9/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserResultManager.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserResultManager.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserResultManager.java
index e7002d9..8e3dae2 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserResultManager.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserResultManager.java
@@ -75,8 +75,8 @@ public class UserResultManager extends CommonsResultManager {
         }
     }
 
-    private void printRole(final List<Long> roles) {
-        for (final Long role : roles) {
+    private void printRole(final List<String> roles) {
+        for (final String role : roles) {
             System.out.println("       - " + role);
         }
     }
@@ -94,16 +94,16 @@ public class UserResultManager extends CommonsResultManager {
             System.out.println(attributeSentence);
         }
     }
-    
+
     private void printRelationships(final List<RelationshipTO> relationshipTOs) {
         for (final RelationshipTO relationshipTO : relationshipTOs) {
             System.out.println("       type: " + relationshipTO.getType());
         }
     }
-    
+
     public void printUndeletedUsers(final Map<String, String> users) {
-        final Table.TableBuilder tableBuilder
-                = new Table.TableBuilder("Users not deleted").header("user id").header("cause");
+        final Table.TableBuilder tableBuilder =
+                new Table.TableBuilder("Users not deleted").header("user id").header("cause");
         for (final Map.Entry<String, String> entrySet : users.entrySet()) {
             tableBuilder.rowValues(new LinkedList<>(Arrays.asList(entrySet.getKey(), entrySet.getValue())));
         }

http://git-wip-us.apache.org/repos/asf/syncope/blob/b738d3e9/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserSyncopeOperations.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserSyncopeOperations.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserSyncopeOperations.java
index aec9271..9cdabd7 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserSyncopeOperations.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserSyncopeOperations.java
@@ -29,6 +29,7 @@ import org.apache.syncope.common.lib.to.PagedResult;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.rest.api.RESTHeaders;
 import org.apache.syncope.common.rest.api.beans.AnyListQuery;
+import org.apache.syncope.common.rest.api.beans.AnySearchQuery;
 import org.apache.syncope.common.rest.api.service.UserService;
 
 public class UserSyncopeOperations {
@@ -46,21 +47,21 @@ public class UserSyncopeOperations {
 
     public List<UserTO> searchByRole(final String realm, final String role) {
         return userService.search(
-                SyncopeClient.getAnySearchQueryBuilder().realm(realm).
-                fiql(SyncopeClient.getUserSearchConditionBuilder().inRoles(Long.valueOf(role))
+                new AnySearchQuery.Builder().realm(realm).
+                fiql(SyncopeClient.getUserSearchConditionBuilder().inRoles(role)
                         .query()).build()).getResult();
     }
 
     public List<UserTO> searchByResource(final String realm, final String resource) {
         return userService.search(
-                SyncopeClient.getAnySearchQueryBuilder().realm(realm).
+                new AnySearchQuery.Builder().realm(realm).
                 fiql(SyncopeClient.getUserSearchConditionBuilder().hasResources(resource)
                         .query()).build()).getResult();
     }
 
     public List<UserTO> searchByAttribute(final String realm, final String attributeName, final String attributeValue) {
         return userService.search(
-                SyncopeClient.getAnySearchQueryBuilder().realm(realm).
+                new AnySearchQuery.Builder().realm(realm).
                 fiql(SyncopeClient.getUserSearchConditionBuilder().is(attributeName).equalTo(attributeValue)
                         .query()).build()).getResult();
     }
@@ -88,7 +89,7 @@ public class UserSyncopeOperations {
     public Map<String, BulkActionResult.Status> deleteByAttribute(
             final String realm, final String attributeName, final String attributeValue) {
         final List<UserTO> users = userService.search(
-                SyncopeClient.getAnySearchQueryBuilder().realm(realm).
+                new AnySearchQuery.Builder().realm(realm).
                 fiql(SyncopeClient.getUserSearchConditionBuilder().is(attributeName).equalTo(attributeValue)
                         .query()).build()).getResult();
         return deleteBulk(users);

http://git-wip-us.apache.org/repos/asf/syncope/blob/b738d3e9/client/console/src/main/java/org/apache/syncope/client/console/rest/AnyObjectRestClient.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/AnyObjectRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/AnyObjectRestClient.java
index b5d0fcc..b845eb7 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/rest/AnyObjectRestClient.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/AnyObjectRestClient.java
@@ -20,7 +20,6 @@ package org.apache.syncope.client.console.rest;
 
 import java.util.List;
 import javax.ws.rs.core.Response;
-import org.apache.syncope.client.lib.SyncopeClient;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.to.AnyObjectTO;
 import org.apache.syncope.common.lib.to.AnyTO;
@@ -29,6 +28,7 @@ import org.apache.syncope.common.lib.to.BulkActionResult;
 import org.apache.syncope.common.lib.to.ConnObjectTO;
 import org.apache.syncope.common.lib.to.PagedResult;
 import org.apache.syncope.common.lib.to.ProvisioningResult;
+import org.apache.syncope.common.rest.api.beans.AnyListQuery;
 import org.apache.syncope.common.rest.api.service.AnyObjectService;
 import org.apache.syncope.common.rest.api.service.AnyService;
 import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
@@ -50,7 +50,7 @@ public class AnyObjectRestClient extends AbstractAnyRestClient<AnyObjectTO> {
     @Override
     public int count(final String type, final String realm) {
         return getService(AnyObjectService.class).list(
-                type, SyncopeClient.getAnyListQueryBuilder().realm(realm).page(1).size(1).build()).getTotalCount();
+                type, new AnyListQuery.Builder().realm(realm).page(1).size(1).build()).getTotalCount();
     }
 
     @Override
@@ -62,7 +62,7 @@ public class AnyObjectRestClient extends AbstractAnyRestClient<AnyObjectTO> {
 
     public PagedResult<AnyObjectTO> list(final String type, final String realm) {
         return getService(AnyObjectService.class).
-                list(type, SyncopeClient.getAnyListQueryBuilder().realm(realm).build());
+                list(type, new AnyListQuery.Builder().realm(realm).build());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/syncope/blob/b738d3e9/client/console/src/main/java/org/apache/syncope/client/console/rest/GroupRestClient.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/GroupRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/GroupRestClient.java
index fc060e4..72f80f5 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/rest/GroupRestClient.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/GroupRestClient.java
@@ -22,7 +22,6 @@ import java.util.List;
 import javax.ws.rs.core.GenericType;
 
 import javax.ws.rs.core.Response;
-import org.apache.syncope.client.lib.SyncopeClient;
 import org.apache.syncope.common.lib.patch.GroupPatch;
 import org.apache.syncope.common.lib.to.BulkAction;
 import org.apache.syncope.common.lib.to.BulkActionResult;
@@ -30,6 +29,8 @@ import org.apache.syncope.common.lib.to.ConnObjectTO;
 import org.apache.syncope.common.lib.to.GroupTO;
 import org.apache.syncope.common.lib.to.ProvisioningResult;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
+import org.apache.syncope.common.rest.api.beans.AnyListQuery;
+import org.apache.syncope.common.rest.api.beans.AnySearchQuery;
 import org.apache.syncope.common.rest.api.service.AnyService;
 import org.apache.syncope.common.rest.api.service.ResourceService;
 import org.apache.syncope.common.rest.api.service.GroupService;
@@ -52,7 +53,7 @@ public class GroupRestClient extends AbstractAnyRestClient<GroupTO> {
     @Override
     public int count(final String realm, final String type) {
         return getService(GroupService.class).
-                list(SyncopeClient.getAnyListQueryBuilder().realm(realm).page(1).size(1).build()).
+                list(new AnyListQuery.Builder().realm(realm).page(1).size(1).build()).
                 getTotalCount();
     }
 
@@ -60,7 +61,7 @@ public class GroupRestClient extends AbstractAnyRestClient<GroupTO> {
     public List<GroupTO> list(final String realm, final int page, final int size, final SortParam<String> sort,
             final String type) {
         return getService(GroupService.class).
-                list(SyncopeClient.getAnyListQueryBuilder().realm(realm).page(page).size(size).
+                list(new AnyListQuery.Builder().realm(realm).page(page).size(size).
                         orderBy(toOrderBy(sort)).details(false).build()).
                 getResult();
     }
@@ -68,7 +69,7 @@ public class GroupRestClient extends AbstractAnyRestClient<GroupTO> {
     @Override
     public int searchCount(final String realm, final String fiql, final String type) {
         return getService(GroupService.class).
-                search(SyncopeClient.getAnySearchQueryBuilder().realm(realm).fiql(fiql).page(1).size(1).build()).
+                search(new AnySearchQuery.Builder().realm(realm).fiql(fiql).page(1).size(1).build()).
                 getTotalCount();
     }
 
@@ -78,7 +79,7 @@ public class GroupRestClient extends AbstractAnyRestClient<GroupTO> {
             final String type) {
 
         return getService(GroupService.class).
-                search(SyncopeClient.getAnySearchQueryBuilder().realm(realm).fiql(fiql).page(page).size(size).
+                search(new AnySearchQuery.Builder().realm(realm).fiql(fiql).page(page).size(size).
                         orderBy(toOrderBy(sort)).details(false).build()).
                 getResult();
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/b738d3e9/client/console/src/main/java/org/apache/syncope/client/console/rest/SchemaRestClient.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/SchemaRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/SchemaRestClient.java
index 4d5f9fb..517aaa4 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/rest/SchemaRestClient.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/SchemaRestClient.java
@@ -31,6 +31,7 @@ import org.apache.syncope.common.lib.to.DerSchemaTO;
 import org.apache.syncope.common.lib.to.PlainSchemaTO;
 import org.apache.syncope.common.lib.to.VirSchemaTO;
 import org.apache.syncope.common.lib.types.SchemaType;
+import org.apache.syncope.common.rest.api.beans.SchemaQuery;
 import org.apache.syncope.common.rest.api.service.SchemaService;
 import org.springframework.stereotype.Component;
 
@@ -62,11 +63,11 @@ public class SchemaRestClient extends BaseRestClient {
 
         try {
             if (kind == null || kind.length == 0) {
-                schemas.addAll(getService(SchemaService.class).<T>list(schemaType, null));
+                schemas.addAll(getService(SchemaService.class).
+                        <T>list(schemaType, new SchemaQuery.Builder().build()));
             } else {
-                for (String clazz : kind) {
-                    schemas.addAll(getService(SchemaService.class).<T>list(schemaType, clazz));
-                }
+                schemas.addAll(getService(SchemaService.class).
+                        <T>list(schemaType, new SchemaQuery.Builder().anyTypeClasses(kind).build()));
             }
         } catch (SyncopeClientException e) {
             LOG.error("While getting all {} schemas for {}", schemaType, kind, e);
@@ -96,34 +97,10 @@ public class SchemaRestClient extends BaseRestClient {
         return getSchemaNames(SchemaType.PLAIN);
     }
 
-    public List<DerSchemaTO> getDerSchemas() {
-        List<DerSchemaTO> userDerSchemas = null;
-
-        try {
-            userDerSchemas = getService(SchemaService.class).list(SchemaType.DERIVED, null);
-        } catch (SyncopeClientException e) {
-            LOG.error("While getting all user derived schemas", e);
-        }
-
-        return userDerSchemas;
-    }
-
     public List<String> getDerSchemaNames() {
         return getSchemaNames(SchemaType.DERIVED);
     }
 
-    public List<VirSchemaTO> getVirSchemas() {
-        List<VirSchemaTO> userVirSchemas = null;
-
-        try {
-            userVirSchemas = getService(SchemaService.class).list(SchemaType.VIRTUAL, null);
-        } catch (SyncopeClientException e) {
-            LOG.error("While getting all virtual schemas", e);
-        }
-
-        return userVirSchemas;
-    }
-
     public List<String> getVirSchemaNames() {
         return getSchemaNames(SchemaType.VIRTUAL);
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/b738d3e9/client/console/src/main/java/org/apache/syncope/client/console/rest/TaskRestClient.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/TaskRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/TaskRestClient.java
index 30087ce..175633f 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/rest/TaskRestClient.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/TaskRestClient.java
@@ -21,7 +21,6 @@ package org.apache.syncope.client.console.rest;
 import java.util.List;
 import java.util.Set;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.lib.SyncopeClient;
 import org.apache.syncope.common.lib.to.AbstractTaskTO;
 import org.apache.syncope.common.lib.to.BulkAction;
 import org.apache.syncope.common.lib.to.BulkActionResult;
@@ -31,6 +30,7 @@ import org.apache.syncope.common.lib.to.PushTaskTO;
 import org.apache.syncope.common.lib.to.SchedTaskTO;
 import org.apache.syncope.common.lib.to.SyncTaskTO;
 import org.apache.syncope.common.lib.types.TaskType;
+import org.apache.syncope.common.rest.api.beans.TaskQuery;
 import org.apache.syncope.common.rest.api.service.TaskService;
 import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
 import org.springframework.stereotype.Component;
@@ -63,16 +63,16 @@ public class TaskRestClient extends BaseRestClient implements ExecutionRestClien
      */
     public int count(final String kind) {
         return getService(TaskService.class).
-                list(TaskType.fromString(kind), SyncopeClient.getTaskQueryBuilder().page(1).size(1).build()).
+                list(TaskType.fromString(kind), new TaskQuery.Builder().page(1).size(1).build()).
                 getTotalCount();
     }
 
     @SuppressWarnings("unchecked")
-    public <T extends AbstractTaskTO> List<T> list(final Class<T> reference,
-            final int page, final int size, final SortParam<String> sort) {
+    public <T extends AbstractTaskTO> List<T> list(
+            final Class<T> reference, final int page, final int size, final SortParam<String> sort) {
 
         return (List<T>) getService(TaskService.class).
-                list(getTaskType(reference), SyncopeClient.getTaskQueryBuilder().page(page).size(size).
+                list(getTaskType(reference), new TaskQuery.Builder().page(page).size(size).
                         orderBy(toOrderBy(sort)).build()).
                 getResult();
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/b738d3e9/client/console/src/main/java/org/apache/syncope/client/console/rest/UserRestClient.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/UserRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/UserRestClient.java
index dd79b3a..9b8f697 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/rest/UserRestClient.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/UserRestClient.java
@@ -23,7 +23,6 @@ import javax.ws.rs.core.GenericType;
 import javax.ws.rs.core.Response;
 import org.apache.syncope.client.console.commons.status.StatusBean;
 import org.apache.syncope.client.console.commons.status.StatusUtils;
-import org.apache.syncope.client.lib.SyncopeClient;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.patch.StatusPatch;
 import org.apache.syncope.common.lib.patch.UserPatch;
@@ -34,6 +33,8 @@ import org.apache.syncope.common.lib.to.ProvisioningResult;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.StatusPatchType;
+import org.apache.syncope.common.rest.api.beans.AnyListQuery;
+import org.apache.syncope.common.rest.api.beans.AnySearchQuery;
 import org.apache.syncope.common.rest.api.service.AnyService;
 import org.apache.syncope.common.rest.api.service.ResourceService;
 import org.apache.syncope.common.rest.api.service.UserService;
@@ -56,7 +57,7 @@ public class UserRestClient extends AbstractAnyRestClient<UserTO> {
     @Override
     public int count(final String realm, final String type) {
         return getService(UserService.class).
-                list(SyncopeClient.getAnyListQueryBuilder().realm(realm).page(1).size(1).build()).
+                list(new AnyListQuery.Builder().realm(realm).page(1).size(1).build()).
                 getTotalCount();
     }
 
@@ -64,7 +65,7 @@ public class UserRestClient extends AbstractAnyRestClient<UserTO> {
     public List<UserTO> list(final String realm, final int page, final int size, final SortParam<String> sort,
             final String type) {
         return getService(UserService.class).
-                list(SyncopeClient.getAnyListQueryBuilder().realm(realm).page(page).size(size).
+                list(new AnyListQuery.Builder().realm(realm).page(page).size(size).
                         orderBy(toOrderBy(sort)).details(false).build()).getResult();
     }
 
@@ -103,7 +104,7 @@ public class UserRestClient extends AbstractAnyRestClient<UserTO> {
     @Override
     public int searchCount(final String realm, final String fiql, final String type) {
         return getService(UserService.class).
-                search(SyncopeClient.getAnySearchQueryBuilder().realm(realm).fiql(fiql).page(1).size(1).build()).
+                search(new AnySearchQuery.Builder().realm(realm).fiql(fiql).page(1).size(1).build()).
                 getTotalCount();
     }
 
@@ -113,7 +114,7 @@ public class UserRestClient extends AbstractAnyRestClient<UserTO> {
             final String type) {
 
         return getService(UserService.class).
-                search(SyncopeClient.getAnySearchQueryBuilder().realm(realm).fiql(fiql).page(page).size(size).
+                search(new AnySearchQuery.Builder().realm(realm).fiql(fiql).page(page).size(size).
                         orderBy(toOrderBy(sort)).details(false).build()).getResult();
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/b738d3e9/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/AbstractBaseResource.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/AbstractBaseResource.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/AbstractBaseResource.java
index a3aedfc..69fe72f 100644
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/AbstractBaseResource.java
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/AbstractBaseResource.java
@@ -30,19 +30,7 @@ public abstract class AbstractBaseResource extends AbstractResource {
 
     private static final Logger LOG = LoggerFactory.getLogger(AbstractBaseResource.class);
 
-    protected <T> T getService(final Class<T> serviceClass) {
-        return SyncopeEnduserSession.get().getService(serviceClass);
-    }
-
-    protected <T> T getService(final String etag, final Class<T> serviceClass) {
-        return SyncopeEnduserSession.get().getService(etag, serviceClass);
-    }
-
-    protected <T> void resetClient(final Class<T> serviceClass) {
-        SyncopeEnduserSession.get().resetClient(serviceClass);
-    }
-
-    protected boolean isSelfRegistrationAllowed() {
+    protected final boolean isSelfRegistrationAllowed() {
         Boolean result = null;
         try {
             result = SyncopeEnduserSession.get().getSyncopeTO().isSelfRegAllowed();

http://git-wip-us.apache.org/repos/asf/syncope/blob/b738d3e9/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SchemaResource.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SchemaResource.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SchemaResource.java
index 501a32f..3cf3fc0 100644
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SchemaResource.java
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SchemaResource.java
@@ -21,6 +21,7 @@ package org.apache.syncope.client.enduser.resources;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
+import org.apache.syncope.client.enduser.SyncopeEnduserSession;
 import org.apache.syncope.client.enduser.model.SchemaResponse;
 import org.apache.syncope.common.lib.to.AbstractSchemaTO;
 import org.apache.syncope.common.lib.to.AnyTypeTO;
@@ -29,6 +30,7 @@ import org.apache.syncope.common.lib.to.PlainSchemaTO;
 import org.apache.syncope.common.lib.to.VirSchemaTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.SchemaType;
+import org.apache.syncope.common.rest.api.beans.SchemaQuery;
 import org.apache.syncope.common.rest.api.service.AnyTypeClassService;
 import org.apache.syncope.common.rest.api.service.AnyTypeService;
 import org.apache.syncope.common.rest.api.service.SchemaService;
@@ -51,9 +53,9 @@ public class SchemaResource extends AbstractBaseResource {
     private final SchemaService schemaService;
 
     public SchemaResource() {
-        anyTypeService = getService(AnyTypeService.class);
-        anyTypeClassService = getService(AnyTypeClassService.class);
-        schemaService = getService(SchemaService.class);
+        anyTypeService = SyncopeEnduserSession.get().getService(AnyTypeService.class);
+        anyTypeClassService = SyncopeEnduserSession.get().getService(AnyTypeClassService.class);
+        schemaService = SyncopeEnduserSession.get().getService(SchemaService.class);
     }
 
     @Override
@@ -66,22 +68,14 @@ public class SchemaResource extends AbstractBaseResource {
         int responseStatus = 200;
 
         try {
-
             final AnyTypeTO anyTypeUserTO = anyTypeService.read(AnyTypeKind.USER.name());
 
-            final List<PlainSchemaTO> plainSchemas = new ArrayList<>();
-            final List<DerSchemaTO> derSchemas = new ArrayList<>();
-            final List<VirSchemaTO> virSchemas = new ArrayList<>();
-
-            // read all USER type schemas
-            for (String clazz : anyTypeUserTO.getClasses()) {
-                plainSchemas.addAll(getSchemaTOs(anyTypeClassService.read(clazz).getPlainSchemas(), SchemaType.PLAIN,
-                        PlainSchemaTO.class));
-                derSchemas.addAll(getSchemaTOs(anyTypeClassService.read(clazz).getDerSchemas(), SchemaType.DERIVED,
-                        DerSchemaTO.class));
-                virSchemas.addAll(getSchemaTOs(anyTypeClassService.read(clazz).getVirSchemas(), SchemaType.VIRTUAL,
-                        VirSchemaTO.class));
-            }
+            final List<PlainSchemaTO> plainSchemas = schemaService.list(
+                    SchemaType.PLAIN, new SchemaQuery.Builder().anyTypeClasses(anyTypeUserTO.getClasses()).build());
+            final List<DerSchemaTO> derSchemas = schemaService.list(
+                    SchemaType.DERIVED, new SchemaQuery.Builder().anyTypeClasses(anyTypeUserTO.getClasses()).build());
+            final List<VirSchemaTO> virSchemas = schemaService.list(
+                    SchemaType.VIRTUAL, new SchemaQuery.Builder().anyTypeClasses(anyTypeUserTO.getClasses()).build());
 
             response.setWriteCallback(new AbstractResource.WriteCallback() {
 
@@ -93,7 +87,6 @@ public class SchemaResource extends AbstractBaseResource {
                             virSchemas(virSchemas)));
                 }
             });
-
         } catch (Exception e) {
             LOG.error("Error retrieving {} any type kind related schemas", AnyTypeKind.USER.name(), e);
             responseStatus = 400;

http://git-wip-us.apache.org/repos/asf/syncope/blob/b738d3e9/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SecurityQuestionResource.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SecurityQuestionResource.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SecurityQuestionResource.java
index f31cba5..60ab318 100644
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SecurityQuestionResource.java
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SecurityQuestionResource.java
@@ -20,6 +20,7 @@ package org.apache.syncope.client.enduser.resources;
 
 import java.io.IOException;
 import java.util.List;
+import org.apache.syncope.client.enduser.SyncopeEnduserSession;
 import org.apache.syncope.common.lib.to.SecurityQuestionTO;
 import org.apache.syncope.common.rest.api.service.SecurityQuestionService;
 import org.apache.syncope.core.misc.serialization.POJOHelper;
@@ -37,7 +38,7 @@ public class SecurityQuestionResource extends AbstractBaseResource {
     private final SecurityQuestionService securityQuestionService;
 
     public SecurityQuestionResource() {
-        securityQuestionService = getService(SecurityQuestionService.class);
+        securityQuestionService = SyncopeEnduserSession.get().getService(SecurityQuestionService.class);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/syncope/blob/b738d3e9/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfCreateResource.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfCreateResource.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfCreateResource.java
index 7e9341b..02297fb 100644
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfCreateResource.java
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfCreateResource.java
@@ -20,6 +20,7 @@ package org.apache.syncope.client.enduser.resources;
 
 import java.io.IOException;
 import javax.servlet.http.HttpServletRequest;
+import org.apache.syncope.client.enduser.SyncopeEnduserSession;
 import org.apache.syncope.client.enduser.adapters.UserTOAdapter;
 import org.apache.syncope.client.enduser.model.UserTORequest;
 import org.apache.syncope.common.rest.api.service.UserSelfService;
@@ -40,7 +41,7 @@ public class UserSelfCreateResource extends AbstractBaseResource {
 
     public UserSelfCreateResource() {
         userTOAdapter = new UserTOAdapter();
-        userSelfService = getService(UserSelfService.class);
+        userSelfService = SyncopeEnduserSession.get().getService(UserSelfService.class);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/syncope/blob/b738d3e9/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfUpdateResource.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfUpdateResource.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfUpdateResource.java
index 2d72d69..4e2d90a 100644
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfUpdateResource.java
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfUpdateResource.java
@@ -43,7 +43,7 @@ public class UserSelfUpdateResource extends AbstractBaseResource {
 
     public UserSelfUpdateResource() {
         userTOAdapter = new UserTOAdapter();
-        userSelfService = getService(UserSelfService.class);
+        userSelfService = SyncopeEnduserSession.get().getService(UserSelfService.class);
     }
 
     @Override
@@ -69,7 +69,7 @@ public class UserSelfUpdateResource extends AbstractBaseResource {
             // update user
             Response res = userSelfService.update(userTO);
             responseStatus = res.getStatus();
-            
+
             responseMessage = "User updated successfully";
 
             response.setWriteCallback(new WriteCallback() {

http://git-wip-us.apache.org/repos/asf/syncope/blob/b738d3e9/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClient.java
----------------------------------------------------------------------
diff --git a/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClient.java b/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClient.java
index 905fb4c..198b585 100644
--- a/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClient.java
+++ b/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClient.java
@@ -30,11 +30,6 @@ import javax.ws.rs.core.Response;
 import org.apache.commons.lang3.tuple.ImmutablePair;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.cxf.jaxrs.client.WebClient;
-import org.apache.syncope.client.lib.builders.AnyQueryBuilder;
-import org.apache.syncope.client.lib.builders.AnyListQueryBuilder;
-import org.apache.syncope.client.lib.builders.AnySearchQueryBuilder;
-import org.apache.syncope.client.lib.builders.ConnObjectTOListQueryBuilder;
-import org.apache.syncope.client.lib.builders.TaskQueryBuilder;
 import org.apache.syncope.common.lib.search.AnyObjectFiqlSearchConditionBuilder;
 import org.apache.syncope.common.lib.search.OrderByClauseBuilder;
 import org.apache.syncope.common.lib.search.GroupFiqlSearchConditionBuilder;
@@ -114,56 +109,6 @@ public class SyncopeClient {
     }
 
     /**
-     * Returns a new instance of {@link TaskQueryBuilder}, for assisted building of some service's {@code list()}
-     * arguments.
-     *
-     * @return default instance of {@link AnyQueryBuilder}
-     */
-    public static TaskQueryBuilder getTaskQueryBuilder() {
-        return new TaskQueryBuilder();
-    }
-
-    /**
-     * Returns a new instance of {@link AnyQueryBuilder}, for assisted building of some service's {@code list()}
-     * arguments.
-     *
-     * @return default instance of {@link AnyQueryBuilder}
-     */
-    public static AnyQueryBuilder getAnyQueryBuilder() {
-        return new AnyQueryBuilder();
-    }
-
-    /**
-     * Returns a new instance of {@link AnyListQueryBuilder}, for assisted building of some service's {@code list()}
-     * arguments.
-     *
-     * @return default instance of {@link AnyListQueryBuilder}
-     */
-    public static AnyListQueryBuilder getAnyListQueryBuilder() {
-        return new AnyListQueryBuilder();
-    }
-
-    /**
-     * Returns a new instance of {@link AnySearchQueryBuilder}, for assisted building of some service's
-     * {@code search()} arguments.
-     *
-     * @return default instance of {@link AnySearchQueryBuilder}
-     */
-    public static AnySearchQueryBuilder getAnySearchQueryBuilder() {
-        return new AnySearchQueryBuilder();
-    }
-
-    /**
-     * Returns a new instance of {@link ConnObjectTOListQueryBuilder}, for assisted building of some service's
-     * {@code list()} arguments.
-     *
-     * @return default instance of {@link ConnObjectTOListQueryBuilder}
-     */
-    public static ConnObjectTOListQueryBuilder getConnObjectTOListQueryBuilder() {
-        return new ConnObjectTOListQueryBuilder();
-    }
-
-    /**
      * Creates an instance of the given service class, with configured content type and authentication.
      *
      * @param <T> any service class
@@ -196,7 +141,7 @@ public class SyncopeClient {
                     (Map<String, Set<String>>) new ObjectMapper().readValue(
                             response.getHeaderString(RESTHeaders.OWNED_ENTITLEMENTS),
                             new TypeReference<HashMap<String, Set<String>>>() {
-                            }),
+                    }),
                     response.readEntity(UserTO.class));
         } catch (IOException e) {
             throw new IllegalStateException(e);

http://git-wip-us.apache.org/repos/asf/syncope/blob/b738d3e9/client/lib/src/main/java/org/apache/syncope/client/lib/builders/AbstractQueryBuilder.java
----------------------------------------------------------------------
diff --git a/client/lib/src/main/java/org/apache/syncope/client/lib/builders/AbstractQueryBuilder.java b/client/lib/src/main/java/org/apache/syncope/client/lib/builders/AbstractQueryBuilder.java
deleted file mode 100644
index 4c61554..0000000
--- a/client/lib/src/main/java/org/apache/syncope/client/lib/builders/AbstractQueryBuilder.java
+++ /dev/null
@@ -1,57 +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.lib.builders;
-
-import org.apache.syncope.common.rest.api.beans.AbstractQuery;
-
-public abstract class AbstractQueryBuilder<Q extends AbstractQuery, B extends AbstractQueryBuilder<Q, B>> {
-
-    private Q instance;
-
-    protected abstract Q newInstance();
-
-    protected Q getInstance() {
-        if (instance == null) {
-            instance = newInstance();
-        }
-        return instance;
-    }
-
-    @SuppressWarnings("unchecked")
-    public B page(final Integer page) {
-        getInstance().setPage(page);
-        return (B) this;
-    }
-
-    @SuppressWarnings("unchecked")
-    public B size(final Integer size) {
-        getInstance().setSize(size);
-        return (B) this;
-    }
-
-    @SuppressWarnings("unchecked")
-    public B orderBy(final String orderBy) {
-        getInstance().setOrderBy(orderBy);
-        return (B) this;
-    }
-
-    public Q build() {
-        return getInstance();
-    }
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/b738d3e9/client/lib/src/main/java/org/apache/syncope/client/lib/builders/AnyListQueryBuilder.java
----------------------------------------------------------------------
diff --git a/client/lib/src/main/java/org/apache/syncope/client/lib/builders/AnyListQueryBuilder.java b/client/lib/src/main/java/org/apache/syncope/client/lib/builders/AnyListQueryBuilder.java
deleted file mode 100644
index da069cc..0000000
--- a/client/lib/src/main/java/org/apache/syncope/client/lib/builders/AnyListQueryBuilder.java
+++ /dev/null
@@ -1,68 +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.lib.builders;
-
-import java.util.ArrayList;
-import org.apache.syncope.common.rest.api.beans.AnyQuery;
-import org.apache.syncope.common.rest.api.beans.AnyListQuery;
-
-public class AnyListQueryBuilder extends AnyQueryBuilder {
-
-    private final AnyListQuery instance = new AnyListQuery();
-
-    @Override
-    public AnyListQueryBuilder page(final Integer page) {
-        return AnyListQueryBuilder.class.cast(super.page(page));
-    }
-
-    @Override
-    public AnyListQueryBuilder size(final Integer size) {
-        return AnyListQueryBuilder.class.cast(super.size(size));
-    }
-
-    @Override
-    public AnyListQueryBuilder orderBy(final String orderBy) {
-        return AnyListQueryBuilder.class.cast(super.orderBy(orderBy));
-    }
-
-    @Override
-    public AnyListQueryBuilder details(final boolean details) {
-        return AnyListQueryBuilder.class.cast(super.details(details));
-    }
-
-    public AnyListQueryBuilder realm(final String realm) {
-        if (instance.getRealms() == null) {
-            instance.setRealms(new ArrayList<String>());
-        }
-        instance.getRealms().add(realm);
-
-        return this;
-    }
-
-    @Override
-    public AnyListQuery build() {
-        AnyQuery lq = super.build();
-        instance.setPage(lq.getPage());
-        instance.setSize(lq.getSize());
-        instance.setOrderBy(lq.getOrderBy());
-        instance.setDetails(lq.isDetails());
-
-        return instance;
-    }
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/b738d3e9/client/lib/src/main/java/org/apache/syncope/client/lib/builders/AnyQueryBuilder.java
----------------------------------------------------------------------
diff --git a/client/lib/src/main/java/org/apache/syncope/client/lib/builders/AnyQueryBuilder.java b/client/lib/src/main/java/org/apache/syncope/client/lib/builders/AnyQueryBuilder.java
deleted file mode 100644
index ad5457e..0000000
--- a/client/lib/src/main/java/org/apache/syncope/client/lib/builders/AnyQueryBuilder.java
+++ /dev/null
@@ -1,49 +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.lib.builders;
-
-import org.apache.syncope.common.rest.api.beans.AnyQuery;
-
-public class AnyQueryBuilder extends AbstractQueryBuilder<AnyQuery, AnyQueryBuilder> {
-
-    @Override
-    protected AnyQuery newInstance() {
-        return new AnyQuery();
-    }
-
-    @Override
-    public AnyQueryBuilder page(final Integer page) {
-        return AnyQueryBuilder.class.cast(super.page(page));
-    }
-
-    @Override
-    public AnyQueryBuilder size(final Integer size) {
-        return AnyQueryBuilder.class.cast(super.size(size));
-    }
-
-    @Override
-    public AnyQueryBuilder orderBy(final String orderBy) {
-        return AnyQueryBuilder.class.cast(super.orderBy(orderBy));
-    }
-
-    public AnyQueryBuilder details(final boolean details) {
-        getInstance().setDetails(details);
-        return this;
-    }
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/b738d3e9/client/lib/src/main/java/org/apache/syncope/client/lib/builders/AnySearchQueryBuilder.java
----------------------------------------------------------------------
diff --git a/client/lib/src/main/java/org/apache/syncope/client/lib/builders/AnySearchQueryBuilder.java b/client/lib/src/main/java/org/apache/syncope/client/lib/builders/AnySearchQueryBuilder.java
deleted file mode 100644
index 5bffdcc..0000000
--- a/client/lib/src/main/java/org/apache/syncope/client/lib/builders/AnySearchQueryBuilder.java
+++ /dev/null
@@ -1,70 +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.lib.builders;
-
-import org.apache.syncope.common.rest.api.beans.AnyListQuery;
-import org.apache.syncope.common.rest.api.beans.AnySearchQuery;
-
-public class AnySearchQueryBuilder extends AnyListQueryBuilder {
-
-    private final AnySearchQuery instance = new AnySearchQuery();
-
-    @Override
-    public AnySearchQueryBuilder realm(final String realm) {
-        return AnySearchQueryBuilder.class.cast(super.realm(realm));
-    }
-
-    @Override
-    public AnySearchQueryBuilder page(final Integer page) {
-        return AnySearchQueryBuilder.class.cast(super.page(page));
-    }
-
-    @Override
-    public AnySearchQueryBuilder size(final Integer size) {
-        return AnySearchQueryBuilder.class.cast(super.size(size));
-    }
-
-    @Override
-    public AnySearchQueryBuilder orderBy(final String orderBy) {
-        return AnySearchQueryBuilder.class.cast(super.orderBy(orderBy));
-    }
-
-    @Override
-    public AnySearchQueryBuilder details(final boolean details) {
-        return AnySearchQueryBuilder.class.cast(super.details(details));
-    }
-
-    public AnySearchQueryBuilder fiql(final String fiql) {
-        instance.setFiql(fiql);
-
-        return this;
-    }
-
-    @Override
-    public AnySearchQuery build() {
-        AnyListQuery slq = super.build();
-        instance.setRealms(slq.getRealms());
-        instance.setPage(slq.getPage());
-        instance.setSize(slq.getSize());
-        instance.setOrderBy(slq.getOrderBy());
-        instance.setDetails(slq.isDetails());
-
-        return instance;
-    }
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/b738d3e9/client/lib/src/main/java/org/apache/syncope/client/lib/builders/ConnObjectTOListQueryBuilder.java
----------------------------------------------------------------------
diff --git a/client/lib/src/main/java/org/apache/syncope/client/lib/builders/ConnObjectTOListQueryBuilder.java b/client/lib/src/main/java/org/apache/syncope/client/lib/builders/ConnObjectTOListQueryBuilder.java
deleted file mode 100644
index 619f391..0000000
--- a/client/lib/src/main/java/org/apache/syncope/client/lib/builders/ConnObjectTOListQueryBuilder.java
+++ /dev/null
@@ -1,48 +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.lib.builders;
-
-import org.apache.syncope.common.rest.api.beans.ConnObjectTOListQuery;
-
-public class ConnObjectTOListQueryBuilder {
-
-    private final ConnObjectTOListQuery instance = new ConnObjectTOListQuery();
-
-    public ConnObjectTOListQueryBuilder size(final Integer size) {
-        instance.setSize(size);
-
-        return this;
-    }
-
-    public ConnObjectTOListQueryBuilder pagedResultsCookie(final String pagedResultsCookie) {
-        instance.setPagedResultsCookie(pagedResultsCookie);
-
-        return this;
-    }
-
-    public ConnObjectTOListQueryBuilder orderBy(final String orderBy) {
-        instance.setOrderBy(orderBy);
-
-        return this;
-    }
-
-    public ConnObjectTOListQuery build() {
-        return instance;
-    }
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/b738d3e9/client/lib/src/main/java/org/apache/syncope/client/lib/builders/TaskQueryBuilder.java
----------------------------------------------------------------------
diff --git a/client/lib/src/main/java/org/apache/syncope/client/lib/builders/TaskQueryBuilder.java b/client/lib/src/main/java/org/apache/syncope/client/lib/builders/TaskQueryBuilder.java
deleted file mode 100644
index c87b68c..0000000
--- a/client/lib/src/main/java/org/apache/syncope/client/lib/builders/TaskQueryBuilder.java
+++ /dev/null
@@ -1,60 +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.lib.builders;
-
-import org.apache.syncope.common.lib.types.AnyTypeKind;
-import org.apache.syncope.common.rest.api.beans.TaskQuery;
-
-public class TaskQueryBuilder extends AbstractQueryBuilder<TaskQuery, TaskQueryBuilder> {
-
-    @Override
-    protected TaskQuery newInstance() {
-        return new TaskQuery();
-    }
-
-    @Override
-    public TaskQueryBuilder page(final Integer page) {
-        return TaskQueryBuilder.class.cast(super.page(page));
-    }
-
-    @Override
-    public TaskQueryBuilder size(final Integer size) {
-        return TaskQueryBuilder.class.cast(super.size(size));
-    }
-
-    @Override
-    public TaskQueryBuilder orderBy(final String orderBy) {
-        return TaskQueryBuilder.class.cast(super.orderBy(orderBy));
-    }
-
-    public TaskQueryBuilder resource(final String resource) {
-        getInstance().setResource(resource);
-        return this;
-    }
-
-    public TaskQueryBuilder anyTypeKind(final AnyTypeKind anyTypeKind) {
-        getInstance().setAnyTypeKind(anyTypeKind);
-        return this;
-    }
-
-    public TaskQueryBuilder anyTypeKey(final Long anyTypeKey) {
-        getInstance().setAnyTypeKey(anyTypeKey);
-        return this;
-    }
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/b738d3e9/common/lib/src/main/java/org/apache/syncope/common/lib/AnyOperations.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/AnyOperations.java b/common/lib/src/main/java/org/apache/syncope/common/lib/AnyOperations.java
index f7cd2e8..1a36c4f 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/AnyOperations.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/AnyOperations.java
@@ -35,7 +35,6 @@ import org.apache.syncope.common.lib.patch.PasswordPatch;
 import org.apache.syncope.common.lib.patch.RelationshipPatch;
 import org.apache.syncope.common.lib.patch.AbstractReplacePatchItem;
 import org.apache.syncope.common.lib.patch.BooleanReplacePatchItem;
-import org.apache.syncope.common.lib.patch.LongPatchItem;
 import org.apache.syncope.common.lib.patch.LongReplacePatchItem;
 import org.apache.syncope.common.lib.patch.StringPatchItem;
 import org.apache.syncope.common.lib.patch.StringReplacePatchItem;
@@ -110,14 +109,14 @@ public final class AnyOperations {
             CollectionUtils.forAllDo(CollectionUtils.subtract(originalAttrs.keySet(), updatedAttrs.keySet()),
                     new Closure<String>() {
 
-                        @Override
-                        public void execute(final String schema) {
-                            result.getPlainAttrs().add(new AttrPatch.Builder().
-                                    operation(PatchOperation.DELETE).
-                                    attrTO(new AttrTO.Builder().schema(schema).build()).
-                                    build());
-                        }
-                    });
+                @Override
+                public void execute(final String schema) {
+                    result.getPlainAttrs().add(new AttrPatch.Builder().
+                            operation(PatchOperation.DELETE).
+                            attrTO(new AttrTO.Builder().schema(schema).build()).
+                            build());
+                }
+            });
         }
 
         for (AttrTO attrTO : updatedAttrs.values()) {
@@ -254,15 +253,15 @@ public final class AnyOperations {
 
         // 4. roles
         if (!incremental) {
-            for (Long toRemove : CollectionUtils.subtract(original.getRoles(), updated.getRoles())) {
+            for (String toRemove : CollectionUtils.subtract(original.getRoles(), updated.getRoles())) {
                 result.getRoles().add(
-                        new LongPatchItem.Builder().operation(PatchOperation.DELETE).value(toRemove).build());
+                        new StringPatchItem.Builder().operation(PatchOperation.DELETE).value(toRemove).build());
             }
         }
 
-        for (Long toAdd : CollectionUtils.subtract(updated.getRoles(), original.getRoles())) {
+        for (String toAdd : CollectionUtils.subtract(updated.getRoles(), original.getRoles())) {
             result.getRoles().add(
-                    new LongPatchItem.Builder().operation(PatchOperation.ADD_REPLACE).value(toAdd).build());
+                    new StringPatchItem.Builder().operation(PatchOperation.ADD_REPLACE).value(toAdd).build());
         }
 
         // 5. relationships
@@ -522,7 +521,7 @@ public final class AnyOperations {
         }
 
         // 5. roles
-        for (LongPatchItem rolePatch : userPatch.getRoles()) {
+        for (StringPatchItem rolePatch : userPatch.getRoles()) {
             switch (rolePatch.getOperation()) {
                 case ADD_REPLACE:
                     result.getRoles().add(rolePatch.getValue());

http://git-wip-us.apache.org/repos/asf/syncope/blob/b738d3e9/common/lib/src/main/java/org/apache/syncope/common/lib/patch/UserPatch.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/patch/UserPatch.java b/common/lib/src/main/java/org/apache/syncope/common/lib/patch/UserPatch.java
index 9131abd..3f4e9eb 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/patch/UserPatch.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/patch/UserPatch.java
@@ -46,7 +46,7 @@ public class UserPatch extends AnyPatch {
 
     private final Set<MembershipPatch> memberships = new HashSet<>();
 
-    private final Set<LongPatchItem> roles = new HashSet<>();
+    private final Set<StringPatchItem> roles = new HashSet<>();
 
     public StringReplacePatchItem getUsername() {
         return username;
@@ -105,7 +105,7 @@ public class UserPatch extends AnyPatch {
     @XmlElementWrapper(name = "roles")
     @XmlElement(name = "role")
     @JsonProperty("roles")
-    public Set<LongPatchItem> getRoles() {
+    public Set<StringPatchItem> getRoles() {
         return roles;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/b738d3e9/common/lib/src/main/java/org/apache/syncope/common/lib/search/UserFiqlSearchConditionBuilder.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/search/UserFiqlSearchConditionBuilder.java b/common/lib/src/main/java/org/apache/syncope/common/lib/search/UserFiqlSearchConditionBuilder.java
index 802694e..323e38b 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/search/UserFiqlSearchConditionBuilder.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/search/UserFiqlSearchConditionBuilder.java
@@ -50,7 +50,7 @@ public class UserFiqlSearchConditionBuilder extends AbstractFiqlSearchConditionB
         return newBuilderInstance().is(SpecialAttr.GROUPS.toString()).inGroups(group, moreGroups);
     }
 
-    public CompleteCondition inRoles(final Long role, final Long... moreRoles) {
+    public CompleteCondition inRoles(final String role, final String... moreRoles) {
         return newBuilderInstance().is(SpecialAttr.ROLES.toString()).inRoles(role, moreRoles);
     }
 
@@ -99,13 +99,13 @@ public class UserFiqlSearchConditionBuilder extends AbstractFiqlSearchConditionB
         }
 
         @Override
-        public CompleteCondition inRoles(final Long role, final Long... moreRoles) {
+        public CompleteCondition inRoles(final String role, final String... moreRoles) {
             this.result = SpecialAttr.ROLES.toString();
             return condition(FiqlParser.EQ, role, (Object[]) moreRoles);
         }
 
         @Override
-        public CompleteCondition notInRoles(final Long role, final Long... moreRoles) {
+        public CompleteCondition notInRoles(final String role, final String... moreRoles) {
             this.result = SpecialAttr.ROLES.toString();
             return condition(FiqlParser.NEQ, role, (Object[]) moreRoles);
         }

http://git-wip-us.apache.org/repos/asf/syncope/blob/b738d3e9/common/lib/src/main/java/org/apache/syncope/common/lib/search/UserProperty.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/search/UserProperty.java b/common/lib/src/main/java/org/apache/syncope/common/lib/search/UserProperty.java
index 5a659b7..210274c 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/search/UserProperty.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/search/UserProperty.java
@@ -26,8 +26,8 @@ public interface UserProperty extends SyncopeProperty {
 
     CompleteCondition notInGroups(Long group, Long... moreGroups);
 
-    CompleteCondition inRoles(Long role, Long... moreRoles);
+    CompleteCondition inRoles(String role, String... moreRoles);
 
-    CompleteCondition notInRoles(Long role, Long... moreRoles);
+    CompleteCondition notInRoles(String role, String... moreRoles);
 
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/b738d3e9/common/lib/src/main/java/org/apache/syncope/common/lib/to/RoleTO.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/RoleTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/RoleTO.java
index fab8a06..7160fdc 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/RoleTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/RoleTO.java
@@ -36,9 +36,7 @@ public class RoleTO extends AbstractBaseBean {
 
     private static final long serialVersionUID = 4560822655754800031L;
 
-    private long key;
-
-    private String name;
+    private String key;
 
     private final Set<String> entitlements = new HashSet<>();
 
@@ -46,23 +44,15 @@ public class RoleTO extends AbstractBaseBean {
 
     private String dynMembershipCond;
 
-    public long getKey() {
+    public String getKey() {
         return key;
     }
 
     @PathParam("key")
-    public void setKey(final long key) {
+    public void setKey(final String key) {
         this.key = key;
     }
 
-    public String getName() {
-        return name;
-    }
-
-    public void setName(final String name) {
-        this.name = name;
-    }
-
     @XmlElementWrapper(name = "entitlements")
     @XmlElement(name = "entitlement")
     @JsonProperty("entitlements")

http://git-wip-us.apache.org/repos/asf/syncope/blob/b738d3e9/common/lib/src/main/java/org/apache/syncope/common/lib/to/UserTO.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/UserTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/UserTO.java
index 7018cd5..e18d8bc 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/UserTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/UserTO.java
@@ -43,9 +43,9 @@ public class UserTO extends AnyTO {
 
     private String password;
 
-    private final List<Long> roles = new ArrayList<>();
+    private final List<String> roles = new ArrayList<>();
 
-    private final List<Long> dynRoles = new ArrayList<>();
+    private final List<String> dynRoles = new ArrayList<>();
 
     private String token;
 
@@ -92,14 +92,14 @@ public class UserTO extends AnyTO {
     @XmlElementWrapper(name = "roles")
     @XmlElement(name = "role")
     @JsonProperty("roles")
-    public List<Long> getRoles() {
+    public List<String> getRoles() {
         return roles;
     }
 
     @XmlElementWrapper(name = "dynRoles")
     @XmlElement(name = "role")
     @JsonProperty("dynRoles")
-    public List<Long> getDynRoles() {
+    public List<String> getDynRoles() {
         return dynRoles;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/b738d3e9/common/lib/src/test/java/org/apache/syncope/common/lib/JSONTest.java
----------------------------------------------------------------------
diff --git a/common/lib/src/test/java/org/apache/syncope/common/lib/JSONTest.java b/common/lib/src/test/java/org/apache/syncope/common/lib/JSONTest.java
index e0f8093..4eeaf8f 100644
--- a/common/lib/src/test/java/org/apache/syncope/common/lib/JSONTest.java
+++ b/common/lib/src/test/java/org/apache/syncope/common/lib/JSONTest.java
@@ -25,7 +25,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 import java.io.IOException;
 import java.io.StringWriter;
 import org.apache.syncope.common.lib.patch.PasswordPatch;
-import org.apache.syncope.common.lib.patch.LongPatchItem;
+import org.apache.syncope.common.lib.patch.StringPatchItem;
 import org.apache.syncope.common.lib.patch.StringReplacePatchItem;
 import org.apache.syncope.common.lib.patch.UserPatch;
 import org.apache.syncope.common.lib.report.UserReportletConf;
@@ -79,7 +79,7 @@ public class JSONTest {
                 value("newpassword").
                 build());
         assertNotNull(patch.getPassword().getValue());
-        patch.getRoles().add(new LongPatchItem.Builder().operation(PatchOperation.DELETE).value(7L).build());
+        patch.getRoles().add(new StringPatchItem.Builder().operation(PatchOperation.DELETE).value("role").build());
 
         ObjectMapper mapper = new ObjectMapper();
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/b738d3e9/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/AbstractQuery.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/AbstractQuery.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/AbstractQuery.java
index a8c6bb8..eb37f52 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/AbstractQuery.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/AbstractQuery.java
@@ -28,6 +28,42 @@ public abstract class AbstractQuery extends AbstractBaseBean {
 
     private static final long serialVersionUID = -371488230250055359L;
 
+    protected abstract static class Builder<Q extends AbstractQuery, B extends Builder<Q, B>> {
+
+        private Q instance;
+
+        protected abstract Q newInstance();
+
+        protected Q getInstance() {
+            if (instance == null) {
+                instance = newInstance();
+            }
+            return instance;
+        }
+
+        @SuppressWarnings("unchecked")
+        public B page(final Integer page) {
+            getInstance().setPage(page);
+            return (B) this;
+        }
+
+        @SuppressWarnings("unchecked")
+        public B size(final Integer size) {
+            getInstance().setSize(size);
+            return (B) this;
+        }
+
+        @SuppressWarnings("unchecked")
+        public B orderBy(final String orderBy) {
+            getInstance().setOrderBy(orderBy);
+            return (B) this;
+        }
+
+        public Q build() {
+            return getInstance();
+        }
+    }
+
     private Integer page;
 
     private Integer size;

http://git-wip-us.apache.org/repos/asf/syncope/blob/b738d3e9/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/AnyListQuery.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/AnyListQuery.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/AnyListQuery.java
index ef9b93d..a763c21 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/AnyListQuery.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/AnyListQuery.java
@@ -18,6 +18,7 @@
  */
 package org.apache.syncope.common.rest.api.beans;
 
+import java.util.ArrayList;
 import java.util.List;
 import javax.ws.rs.DefaultValue;
 import javax.ws.rs.MatrixParam;
@@ -27,6 +28,28 @@ public class AnyListQuery extends AnyQuery {
 
     private static final long serialVersionUID = -5197167078435619636L;
 
+    public static class Builder extends AbstractQuery.Builder<AnyListQuery, Builder> {
+
+        @Override
+        protected AnyListQuery newInstance() {
+            return new AnyListQuery();
+        }
+
+        public Builder details(final boolean details) {
+            getInstance().setDetails(details);
+            return this;
+        }
+
+        public Builder realm(final String realm) {
+            if (getInstance().getRealms() == null) {
+                getInstance().setRealms(new ArrayList<String>());
+            }
+            getInstance().getRealms().add(realm);
+
+            return this;
+        }
+    }
+
     private List<String> realms;
 
     public List<String> getRealms() {

http://git-wip-us.apache.org/repos/asf/syncope/blob/b738d3e9/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/AnyQuery.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/AnyQuery.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/AnyQuery.java
index bcf10ce..d369ee2 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/AnyQuery.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/AnyQuery.java
@@ -26,6 +26,20 @@ public class AnyQuery extends AbstractQuery {
 
     private static final long serialVersionUID = -371488230250055359L;
 
+    public static class Builder extends AbstractQuery.Builder<AnyQuery, Builder> {
+
+        @Override
+        protected AnyQuery newInstance() {
+            return new AnyQuery();
+        }
+
+        public Builder details(final boolean details) {
+            getInstance().setDetails(details);
+            return this;
+        }
+
+    }
+
     private Boolean details;
 
     public boolean isDetails() {

http://git-wip-us.apache.org/repos/asf/syncope/blob/b738d3e9/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/AnySearchQuery.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/AnySearchQuery.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/AnySearchQuery.java
index 3e0a516..dca93cf 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/AnySearchQuery.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/AnySearchQuery.java
@@ -18,6 +18,7 @@
  */
 package org.apache.syncope.common.rest.api.beans;
 
+import java.util.ArrayList;
 import javax.ws.rs.QueryParam;
 import org.apache.syncope.common.rest.api.service.JAXRSService;
 
@@ -25,6 +26,34 @@ public class AnySearchQuery extends AnyListQuery {
 
     private static final long serialVersionUID = -6736562952418964707L;
 
+    public static class Builder extends AbstractQuery.Builder<AnySearchQuery, Builder> {
+
+        @Override
+        protected AnySearchQuery newInstance() {
+            return new AnySearchQuery();
+        }
+
+        public Builder details(final boolean details) {
+            getInstance().setDetails(details);
+            return this;
+        }
+
+        public Builder realm(final String realm) {
+            if (getInstance().getRealms() == null) {
+                getInstance().setRealms(new ArrayList<String>());
+            }
+            getInstance().getRealms().add(realm);
+
+            return this;
+        }
+
+        public Builder fiql(final String fiql) {
+            getInstance().setFiql(fiql);
+
+            return this;
+        }
+    }
+
     private String fiql;
 
     public String getFiql() {

http://git-wip-us.apache.org/repos/asf/syncope/blob/b738d3e9/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/ConnObjectTOListQuery.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/ConnObjectTOListQuery.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/ConnObjectTOListQuery.java
index 32a7359..53df9fb 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/ConnObjectTOListQuery.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/ConnObjectTOListQuery.java
@@ -32,6 +32,31 @@ public class ConnObjectTOListQuery implements Serializable {
 
     private static final long serialVersionUID = -371488230250055359L;
 
+    public static class Builder {
+
+        private final ConnObjectTOListQuery instance = new ConnObjectTOListQuery();
+
+        public Builder size(final Integer size) {
+            instance.setSize(size);
+            return this;
+        }
+
+        public Builder pagedResultsCookie(final String pagedResultsCookie) {
+            instance.setPagedResultsCookie(pagedResultsCookie);
+            return this;
+        }
+
+        public Builder orderBy(final String orderBy) {
+            instance.setOrderBy(orderBy);
+            return this;
+        }
+
+        public ConnObjectTOListQuery build() {
+            return instance;
+        }
+
+    }
+
     private Integer size;
 
     private String pagedResultsCookie;

http://git-wip-us.apache.org/repos/asf/syncope/blob/b738d3e9/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/SchemaQuery.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/SchemaQuery.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/SchemaQuery.java
new file mode 100644
index 0000000..a96b09f
--- /dev/null
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/SchemaQuery.java
@@ -0,0 +1,72 @@
+/*
+ * 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.common.rest.api.beans;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import javax.ws.rs.QueryParam;
+import org.apache.syncope.common.lib.AbstractBaseBean;
+
+public class SchemaQuery extends AbstractBaseBean {
+
+    private static final long serialVersionUID = -1863334226169614417L;
+
+    public static class Builder {
+
+        private final SchemaQuery instance = new SchemaQuery();
+
+        public Builder anyTypeClass(final String anyTypeClass) {
+            if (instance.getAnyTypeClasses() == null) {
+                instance.setAnyTypeClasses(new ArrayList<String>());
+            }
+            instance.getAnyTypeClasses().add(anyTypeClass);
+
+            return this;
+        }
+
+        public Builder anyTypeClasses(final Collection<String> anyTypeClasses) {
+            for (String anyTypeClass : anyTypeClasses) {
+                anyTypeClass(anyTypeClass);
+            }
+            return this;
+        }
+
+        public Builder anyTypeClasses(final String... anyTypeClasses) {
+            return anyTypeClasses(Arrays.asList(anyTypeClasses));
+        }
+
+        public SchemaQuery build() {
+            return instance;
+        }
+    }
+
+    private List<String> anyTypeClasses;
+
+    public List<String> getAnyTypeClasses() {
+        return anyTypeClasses;
+    }
+
+    @QueryParam("anyTypeClass")
+    public void setAnyTypeClasses(final List<String> anyTypeClasses) {
+        this.anyTypeClasses = anyTypeClasses;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/b738d3e9/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/TaskQuery.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/TaskQuery.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/TaskQuery.java
index 7f59abf..8fe942f 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/TaskQuery.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/TaskQuery.java
@@ -27,6 +27,30 @@ public class TaskQuery extends AbstractQuery {
 
     private static final long serialVersionUID = -8792519310029596796L;
 
+    public static class Builder extends AbstractQuery.Builder<TaskQuery, Builder> {
+
+        @Override
+        protected TaskQuery newInstance() {
+            return new TaskQuery();
+        }
+
+        public Builder resource(final String resource) {
+            getInstance().setResource(resource);
+            return this;
+        }
+
+        public Builder anyTypeKind(final AnyTypeKind anyTypeKind) {
+            getInstance().setAnyTypeKind(anyTypeKind);
+            return this;
+        }
+
+        public Builder anyTypeKey(final Long anyTypeKey) {
+            getInstance().setAnyTypeKey(anyTypeKey);
+            return this;
+        }
+
+    }
+
     private String resource;
 
     private AnyTypeKind anyTypeKind;