Repository: syncope
Updated Branches:
  refs/heads/master 0b90a205b -> ca056b819


REST API (and console REST client) small cleanup


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

Branch: refs/heads/master
Commit: ca056b8196f02cec23bfb9907a340dbbf95d8583
Parents: 0b90a20
Author: Francesco Chicchiriccò <ilgro...@apache.org>
Authored: Mon May 9 09:26:43 2016 +0200
Committer: Francesco Chicchiriccò <ilgro...@apache.org>
Committed: Mon May 9 09:26:43 2016 +0200

----------------------------------------------------------------------
 .../commands/user/UserSyncopeOperations.java    |  2 +-
 .../client/console/bulk/BulkContent.java        |  2 +-
 .../client/console/commons/AnyDataProvider.java | 18 +++----
 .../console/panels/AnyDirectoryPanel.java       | 10 ++--
 .../search/AnySelectionDirectoryPanel.java      |  4 +-
 .../console/rest/AbstractAnyRestClient.java     | 52 ++++++++++++++------
 .../console/rest/AnyObjectRestClient.java       | 41 +--------------
 .../client/console/rest/GroupRestClient.java    | 40 +--------------
 .../client/console/rest/UserRestClient.java     | 44 +++--------------
 .../console/status/StatusDirectoryPanel.java    |  2 +-
 .../common/rest/api/service/AnyService.java     |  5 +-
 .../rest/cxf/service/AbstractAnyService.java    |  4 +-
 .../org/apache/syncope/fit/core/UserITCase.java |  6 +--
 13 files changed, 75 insertions(+), 155 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/ca056b81/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 04bed36..f54540c 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
@@ -95,7 +95,7 @@ public class UserSyncopeOperations {
         for (UserTO user : users) {
             bulkAction.getTargets().add(String.valueOf(user.getKey()));
         }
-        final BulkActionResult bulkResult = userService.bulk(bulkAction);
+        final BulkActionResult bulkResult = 
userService.bulk(bulkAction).readEntity(BulkActionResult.class);
         return bulkResult.getResults();
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/ca056b81/client/console/src/main/java/org/apache/syncope/client/console/bulk/BulkContent.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/bulk/BulkContent.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/bulk/BulkContent.java
index 8bbd088..c96e4df 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/bulk/BulkContent.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/bulk/BulkContent.java
@@ -143,7 +143,7 @@ public class BulkContent<T extends Serializable, S> extends 
MultilevelPanel.Seco
                                 throw new IllegalArgumentException("Invalid 
bulk action executor");
                             }
 
-                            final AbstractAnyRestClient<?> anyRestClient = 
AbstractAnyRestClient.class.cast(
+                            final AbstractAnyRestClient<?, ?> anyRestClient = 
AbstractAnyRestClient.class.cast(
                                     bulkActionExecutor);
 
                             if (items.isEmpty() || !(items.iterator().next() 
instanceof StatusBean)) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/ca056b81/client/console/src/main/java/org/apache/syncope/client/console/commons/AnyDataProvider.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/commons/AnyDataProvider.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/commons/AnyDataProvider.java
index 65298b2..bee3237 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/commons/AnyDataProvider.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/commons/AnyDataProvider.java
@@ -27,13 +27,13 @@ import 
org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
 import org.apache.wicket.model.CompoundPropertyModel;
 import org.apache.wicket.model.IModel;
 
-public class AnyDataProvider<T extends AnyTO> extends DirectoryDataProvider<T> 
{
+public class AnyDataProvider<A extends AnyTO> extends DirectoryDataProvider<A> 
{
 
     private static final long serialVersionUID = 6267494272884913376L;
 
-    private final SortableAnyProviderComparator<T> comparator;
+    private final SortableAnyProviderComparator<A> comparator;
 
-    private final AbstractAnyRestClient<T> restClient;
+    private final AbstractAnyRestClient<A, ?> restClient;
 
     protected String fiql;
 
@@ -44,7 +44,7 @@ public class AnyDataProvider<T extends AnyTO> extends 
DirectoryDataProvider<T> {
     private final String type;
 
     public AnyDataProvider(
-            final AbstractAnyRestClient<T> restClient,
+            final AbstractAnyRestClient<A, ?> restClient,
             final int paginatorRows,
             final boolean filtered,
             final String realm,
@@ -66,14 +66,14 @@ public class AnyDataProvider<T extends AnyTO> extends 
DirectoryDataProvider<T> {
     }
 
     @Override
-    public Iterator<T> iterator(final long first, final long count) {
-        List<T> result;
+    public Iterator<A> iterator(final long first, final long count) {
+        List<A> result;
 
         final int page = ((int) first / paginatorRows);
 
         if (filtered) {
             result = fiql == null
-                    ? Collections.<T>emptyList()
+                    ? Collections.<A>emptyList()
                     : restClient.search(realm, fiql, (page < 0 ? 0 : page) + 
1, paginatorRows, getSort(), type);
         } else {
             result = restClient.list(realm, (page < 0 ? 0 : page) + 1, 
paginatorRows, getSort(), type);
@@ -96,13 +96,13 @@ public class AnyDataProvider<T extends AnyTO> extends 
DirectoryDataProvider<T> {
         return result;
     }
 
-    public AnyDataProvider<T> setFIQL(final String fiql) {
+    public AnyDataProvider<A> setFIQL(final String fiql) {
         this.fiql = fiql;
         return this;
     }
 
     @Override
-    public IModel<T> model(final T object) {
+    public IModel<A> model(final A object) {
         return new CompoundPropertyModel<>(object);
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/ca056b81/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyDirectoryPanel.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyDirectoryPanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyDirectoryPanel.java
index 6bae69d..0a873ec 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyDirectoryPanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyDirectoryPanel.java
@@ -55,7 +55,7 @@ import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.model.util.ListModel;
 
 public abstract class AnyDirectoryPanel<A extends AnyTO>
-        extends DirectoryPanel<A, AnyWrapper<A>, AnyDataProvider<A>, 
AbstractAnyRestClient<A>> {
+        extends DirectoryPanel<A, AnyWrapper<A>, AnyDataProvider<A>, 
AbstractAnyRestClient<A, ?>> {
 
     private static final long serialVersionUID = -1100228004207271270L;
 
@@ -153,8 +153,8 @@ public abstract class AnyDirectoryPanel<A extends AnyTO>
         List<AnyTypeClassTO> getAnyTypeClassTOs();
     }
 
-    public abstract static class Builder<T extends AnyTO>
-            extends DirectoryPanel.Builder<T, AnyWrapper<T>, 
AbstractAnyRestClient<T>>
+    public abstract static class Builder<A extends AnyTO>
+            extends DirectoryPanel.Builder<A, AnyWrapper<A>, 
AbstractAnyRestClient<A, ?>>
             implements AnyDirectoryPanelBuilder {
 
         private static final long serialVersionUID = -6828423611982275640L;
@@ -173,7 +173,7 @@ public abstract class AnyDirectoryPanel<A extends AnyTO>
 
         public Builder(
                 final List<AnyTypeClassTO> anyTypeClassTOs,
-                final AbstractAnyRestClient<T> restClient,
+                final AbstractAnyRestClient<A, ?> restClient,
                 final String type,
                 final PageReference pageRef) {
 
@@ -182,7 +182,7 @@ public abstract class AnyDirectoryPanel<A extends AnyTO>
             this.type = type;
         }
 
-        public Builder<T> setRealm(final String realm) {
+        public Builder<A> setRealm(final String realm) {
             this.realm = realm;
             return this;
         }

http://git-wip-us.apache.org/repos/asf/syncope/blob/ca056b81/client/console/src/main/java/org/apache/syncope/client/console/panels/search/AnySelectionDirectoryPanel.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/search/AnySelectionDirectoryPanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/search/AnySelectionDirectoryPanel.java
index c77598d..cb9de6d 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/search/AnySelectionDirectoryPanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/search/AnySelectionDirectoryPanel.java
@@ -180,13 +180,13 @@ public abstract class AnySelectionDirectoryPanel<T 
extends AnyTO> extends AnyDir
 
     protected abstract String getPrefDerivedAttributesView();
 
-    public abstract static class Builder<T extends AnyTO> extends 
AnyDirectoryPanel.Builder<T> {
+    public abstract static class Builder<A extends AnyTO> extends 
AnyDirectoryPanel.Builder<A> {
 
         private static final long serialVersionUID = 5460024856989891156L;
 
         public Builder(
                 final List<AnyTypeClassTO> anyTypeClassTOs,
-                final AbstractAnyRestClient<T> restClient,
+                final AbstractAnyRestClient<A, ?> restClient,
                 final String type,
                 final PageReference pageRef) {
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/ca056b81/client/console/src/main/java/org/apache/syncope/client/console/rest/AbstractAnyRestClient.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/rest/AbstractAnyRestClient.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/rest/AbstractAnyRestClient.java
index 2eaad2f..5759af5 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/rest/AbstractAnyRestClient.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/rest/AbstractAnyRestClient.java
@@ -18,10 +18,14 @@
  */
 package org.apache.syncope.client.console.rest;
 
+import static org.apache.syncope.client.console.rest.BaseRestClient.getService;
+
 import java.util.List;
 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.common.lib.patch.AnyPatch;
 import org.apache.syncope.common.lib.patch.AssociationPatch;
 import org.apache.syncope.common.lib.patch.DeassociationPatch;
 import org.apache.syncope.common.lib.patch.StatusPatch;
@@ -32,40 +36,55 @@ import org.apache.syncope.common.lib.to.ProvisioningResult;
 import org.apache.syncope.common.lib.types.ResourceAssociationAction;
 import org.apache.syncope.common.lib.types.ResourceDeassociationAction;
 import org.apache.syncope.common.rest.api.service.AnyService;
+import org.apache.syncope.common.rest.api.service.UserService;
 import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
 
-public abstract class AbstractAnyRestClient<T extends AnyTO> extends 
BaseRestClient {
+public abstract class AbstractAnyRestClient<TO extends AnyTO, P extends 
AnyPatch> extends BaseRestClient {
 
     private static final long serialVersionUID = 1962529678091410544L;
 
+    protected abstract Class<? extends AnyService<TO, P>> getAnyServiceClass();
+
     public abstract int count(String realm, String type);
 
-    public abstract List<T> list(String realm, int page, int size, final 
SortParam<String> sort, final String type);
+    public abstract List<TO> list(String realm, int page, int size, final 
SortParam<String> sort, final String type);
 
     public abstract int searchCount(String realm, String fiql, final String 
type);
 
-    public abstract List<T> search(
+    public abstract List<TO> search(
             String realm, String fiql, int page, int size, final 
SortParam<String> sort, final String type);
 
-    public abstract T read(final String key);
+    public TO read(final String key) {
+        return getService(getAnyServiceClass()).read(key);
+    }
 
-    public abstract ProvisioningResult<T> delete(String etag, String key);
+    public ProvisioningResult<TO> create(final TO to) {
+        Response response = getService(getAnyServiceClass()).create(to);
+        return response.readEntity(new GenericType<ProvisioningResult<TO>>() {
+        });
+    }
 
-    protected <E extends AnyService<T, ?>> ProvisioningResult<T> delete(
-            final Class<E> serviceClass, final Class<T> objectType, final 
String etag, final String key) {
-        ProvisioningResult<T> result;
+    public ProvisioningResult<TO> update(final String etag, final P patch) {
+        ProvisioningResult<TO> result;
         synchronized (this) {
-            final E service = getService(etag, serviceClass);
-            result = service.delete(key).readEntity(new 
GenericType<ProvisioningResult<T>>() {
-            });
-            resetClient(serviceClass);
+            result = getService(etag, getAnyServiceClass()).update(patch).
+                    readEntity(new GenericType<ProvisioningResult<TO>>() {
+                    });
+            resetClient(UserService.class);
         }
         return result;
     }
 
-    public abstract BulkActionResult bulkAction(BulkAction action);
-
-    protected abstract Class<? extends AnyService<?, ?>> getAnyServiceClass();
+    public ProvisioningResult<TO> delete(final String etag, final String key) {
+        ProvisioningResult<TO> result;
+        synchronized (this) {
+            result = getService(etag, getAnyServiceClass()).delete(key).
+                    readEntity(new GenericType<ProvisioningResult<TO>>() {
+                    });
+            resetClient(getAnyServiceClass());
+        }
+        return result;
+    }
 
     public BulkActionResult unlink(final String etag, final String key, final 
List<StatusBean> statuses) {
         BulkActionResult result;
@@ -178,4 +197,7 @@ public abstract class AbstractAnyRestClient<T extends 
AnyTO> extends BaseRestCli
         return result;
     }
 
+    public BulkActionResult bulkAction(final BulkAction action) {
+        return 
getService(getAnyServiceClass()).bulk(action).readEntity(BulkActionResult.class);
+    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/ca056b81/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 1160fe7..2b91a8d 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
@@ -19,14 +19,9 @@
 package org.apache.syncope.client.console.rest;
 
 import java.util.List;
-import javax.ws.rs.core.GenericType;
-import javax.ws.rs.core.Response;
 import org.apache.syncope.common.lib.patch.AnyObjectPatch;
 import org.apache.syncope.common.lib.to.AnyObjectTO;
-import org.apache.syncope.common.lib.to.BulkAction;
-import org.apache.syncope.common.lib.to.BulkActionResult;
 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.beans.AnySearchQuery;
 import org.apache.syncope.common.rest.api.service.AnyObjectService;
@@ -36,12 +31,12 @@ import 
org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
 /**
  * Console client for invoking Rest any type class services.
  */
-public class AnyObjectRestClient extends AbstractAnyRestClient<AnyObjectTO> {
+public class AnyObjectRestClient extends AbstractAnyRestClient<AnyObjectTO, 
AnyObjectPatch> {
 
     private static final long serialVersionUID = -8874495991295283249L;
 
     @Override
-    protected Class<? extends AnyService<?, ?>> getAnyServiceClass() {
+    protected Class<? extends AnyService<AnyObjectTO, AnyObjectPatch>> 
getAnyServiceClass() {
         return AnyObjectService.class;
     }
 
@@ -79,36 +74,4 @@ public class AnyObjectRestClient extends 
AbstractAnyRestClient<AnyObjectTO> {
                 new 
AnySearchQuery.Builder().realm(realm).fiql(fiql).page(page).size(size).
                 orderBy(toOrderBy(sort)).details(false).build()).getResult();
     }
-
-    @Override
-    public AnyObjectTO read(final String key) {
-        return getService(AnyObjectService.class).read(key);
-    }
-
-    public ProvisioningResult<AnyObjectTO> create(final AnyObjectTO 
anyObjectTO) {
-        Response response = 
getService(AnyObjectService.class).create(anyObjectTO);
-        return response.readEntity(new 
GenericType<ProvisioningResult<AnyObjectTO>>() {
-        });
-    }
-
-    public ProvisioningResult<AnyObjectTO> update(final String etag, final 
AnyObjectPatch anyObjectPatch) {
-        ProvisioningResult<AnyObjectTO> result;
-        synchronized (this) {
-            AnyObjectService service = getService(etag, 
AnyObjectService.class);
-            result = service.update(anyObjectPatch).readEntity(new 
GenericType<ProvisioningResult<AnyObjectTO>>() {
-            });
-            resetClient(AnyObjectService.class);
-        }
-        return result;
-    }
-
-    @Override
-    public ProvisioningResult<AnyObjectTO> delete(final String etag, final 
String key) {
-        return delete(AnyObjectService.class, AnyObjectTO.class, etag, key);
-    }
-
-    @Override
-    public BulkActionResult bulkAction(final BulkAction action) {
-        return getService(AnyObjectService.class).bulk(action);
-    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/ca056b81/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 ff5e08e..0fddcb2 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
@@ -19,13 +19,8 @@
 package org.apache.syncope.client.console.rest;
 
 import java.util.List;
-import javax.ws.rs.core.GenericType;
-import javax.ws.rs.core.Response;
 import org.apache.syncope.common.lib.patch.GroupPatch;
-import org.apache.syncope.common.lib.to.BulkAction;
-import org.apache.syncope.common.lib.to.BulkActionResult;
 import org.apache.syncope.common.lib.to.GroupTO;
-import org.apache.syncope.common.lib.to.ProvisioningResult;
 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;
@@ -35,12 +30,12 @@ import 
org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
 /**
  * Console client for invoking Rest Group's services.
  */
-public class GroupRestClient extends AbstractAnyRestClient<GroupTO> {
+public class GroupRestClient extends AbstractAnyRestClient<GroupTO, 
GroupPatch> {
 
     private static final long serialVersionUID = -8549081557283519638L;
 
     @Override
-    protected Class<? extends AnyService<?, ?>> getAnyServiceClass() {
+    protected Class<? extends AnyService<GroupTO, GroupPatch>> 
getAnyServiceClass() {
         return GroupService.class;
     }
 
@@ -79,35 +74,4 @@ public class GroupRestClient extends 
AbstractAnyRestClient<GroupTO> {
                 getResult();
     }
 
-    public ProvisioningResult<GroupTO> create(final GroupTO groupTO) {
-        Response response = getService(GroupService.class).create(groupTO);
-        return response.readEntity(new 
GenericType<ProvisioningResult<GroupTO>>() {
-        });
-    }
-
-    @Override
-    public GroupTO read(final String key) {
-        return getService(GroupService.class).read(key);
-    }
-
-    public ProvisioningResult<GroupTO> update(final String etag, final 
GroupPatch patch) {
-        ProvisioningResult<GroupTO> result;
-        synchronized (this) {
-            GroupService service = getService(etag, GroupService.class);
-            result = service.update(patch).readEntity(new 
GenericType<ProvisioningResult<GroupTO>>() {
-            });
-            resetClient(GroupService.class);
-        }
-        return result;
-    }
-
-    @Override
-    public ProvisioningResult<GroupTO> delete(final String etag, final String 
key) {
-        return delete(GroupService.class, GroupTO.class, etag, key);
-    }
-
-    @Override
-    public BulkActionResult bulkAction(final BulkAction action) {
-        return getService(GroupService.class).bulk(action);
-    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/ca056b81/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 dce489c..7ea8d68 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
@@ -26,8 +26,6 @@ import 
org.apache.syncope.client.console.commons.status.StatusUtils;
 import org.apache.syncope.common.lib.patch.BooleanReplacePatchItem;
 import org.apache.syncope.common.lib.patch.StatusPatch;
 import org.apache.syncope.common.lib.patch.UserPatch;
-import org.apache.syncope.common.lib.to.BulkAction;
-import org.apache.syncope.common.lib.to.BulkActionResult;
 import org.apache.syncope.common.lib.to.ProvisioningResult;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.StatusPatchType;
@@ -40,15 +38,21 @@ import 
org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
 /**
  * Console client for invoking rest users services.
  */
-public class UserRestClient extends AbstractAnyRestClient<UserTO> {
+public class UserRestClient extends AbstractAnyRestClient<UserTO, UserPatch> {
 
     private static final long serialVersionUID = -1575748964398293968L;
 
     @Override
-    protected Class<? extends AnyService<?, ?>> getAnyServiceClass() {
+    protected Class<? extends AnyService<UserTO, UserPatch>> 
getAnyServiceClass() {
         return UserService.class;
     }
 
+    public ProvisioningResult<UserTO> create(final UserTO userTO, final 
boolean storePassword) {
+        Response response = getService(UserService.class).create(userTO, 
storePassword);
+        return response.readEntity(new 
GenericType<ProvisioningResult<UserTO>>() {
+        });
+    }
+
     @Override
     public int count(final String realm, final String type) {
         return getService(UserService.class).
@@ -65,33 +69,6 @@ public class UserRestClient extends 
AbstractAnyRestClient<UserTO> {
                         
orderBy(toOrderBy(sort)).details(false).build()).getResult();
     }
 
-    public ProvisioningResult<UserTO> create(final UserTO userTO, final 
boolean storePassword) {
-        Response response = getService(UserService.class).create(userTO, 
storePassword);
-        return response.readEntity(new 
GenericType<ProvisioningResult<UserTO>>() {
-        });
-    }
-
-    public ProvisioningResult<UserTO> update(final String etag, final 
UserPatch userPatch) {
-        ProvisioningResult<UserTO> result;
-        synchronized (this) {
-            UserService service = getService(etag, UserService.class);
-            result = service.update(userPatch).readEntity(new 
GenericType<ProvisioningResult<UserTO>>() {
-            });
-            resetClient(UserService.class);
-        }
-        return result;
-    }
-
-    @Override
-    public ProvisioningResult<UserTO> delete(final String etag, final String 
key) {
-        return delete(UserService.class, UserTO.class, etag, key);
-    }
-
-    @Override
-    public UserTO read(final String key) {
-        return getService(UserService.class).read(key);
-    }
-
     @Override
     public int searchCount(final String realm, final String fiql, final String 
type) {
         return getService(UserService.class).
@@ -137,9 +114,4 @@ public class UserRestClient extends 
AbstractAnyRestClient<UserTO> {
             resetClient(UserService.class);
         }
     }
-
-    @Override
-    public BulkActionResult bulkAction(final BulkAction action) {
-        return getService(UserService.class).bulk(action);
-    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/ca056b81/client/console/src/main/java/org/apache/syncope/client/console/status/StatusDirectoryPanel.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/status/StatusDirectoryPanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/status/StatusDirectoryPanel.java
index 835e478..5cd2180 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/status/StatusDirectoryPanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/status/StatusDirectoryPanel.java
@@ -55,7 +55,7 @@ import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.StringResourceModel;
 
 public class StatusDirectoryPanel
-        extends DirectoryPanel<StatusBean, StatusBean, 
AttributableStatusProvider, AbstractAnyRestClient<?>>
+        extends DirectoryPanel<StatusBean, StatusBean, 
AttributableStatusProvider, AbstractAnyRestClient<?, ?>>
         implements ModalPanel {
 
     private static final long serialVersionUID = -9148734710505211261L;

http://git-wip-us.apache.org/repos/asf/syncope/blob/ca056b81/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AnyService.java
----------------------------------------------------------------------
diff --git 
a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AnyService.java
 
b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AnyService.java
index 56d3bfd..16542f3 100644
--- 
a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AnyService.java
+++ 
b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AnyService.java
@@ -38,7 +38,6 @@ import org.apache.syncope.common.lib.patch.DeassociationPatch;
 import org.apache.syncope.common.lib.to.AnyTO;
 import org.apache.syncope.common.lib.to.AttrTO;
 import org.apache.syncope.common.lib.to.BulkAction;
-import org.apache.syncope.common.lib.to.BulkActionResult;
 import org.apache.syncope.common.lib.to.PagedResult;
 import org.apache.syncope.common.lib.types.SchemaType;
 import org.apache.syncope.common.rest.api.beans.AnySearchQuery;
@@ -207,11 +206,11 @@ public interface AnyService<TO extends AnyTO, P extends 
AnyPatch> extends JAXRSS
      * Executes the provided bulk action.
      *
      * @param bulkAction list of any object ids against which the bulk action 
will be performed.
-     * @return Bulk action result
+     * @return Response object featuring BulkActionResult as Entity
      */
     @POST
     @Path("bulk")
     @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
     @Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
-    BulkActionResult bulk(@NotNull BulkAction bulkAction);
+    Response bulk(@NotNull BulkAction bulkAction);
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/ca056b81/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractAnyService.java
----------------------------------------------------------------------
diff --git 
a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractAnyService.java
 
b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractAnyService.java
index f58e7a0..3e42a3c 100644
--- 
a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractAnyService.java
+++ 
b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractAnyService.java
@@ -325,7 +325,7 @@ public abstract class AbstractAnyService<TO extends AnyTO, 
P extends AnyPatch>
     }
 
     @Override
-    public BulkActionResult bulk(final BulkAction bulkAction) {
+    public Response bulk(final BulkAction bulkAction) {
         AbstractAnyLogic<TO, P> logic = getAnyLogic();
 
         BulkActionResult result = new BulkActionResult();
@@ -410,7 +410,7 @@ public abstract class AbstractAnyService<TO extends AnyTO, 
P extends AnyPatch>
             default:
         }
 
-        return result;
+        return modificationResponse(result);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/ca056b81/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserITCase.java
----------------------------------------------------------------------
diff --git 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserITCase.java 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserITCase.java
index 3e7c6db..5a76218 100644
--- 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserITCase.java
+++ 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserITCase.java
@@ -1579,19 +1579,19 @@ public class UserITCase extends AbstractITCase {
         assertEquals(11, bulkAction.getTargets().size());
 
         bulkAction.setType(BulkAction.Type.SUSPEND);
-        BulkActionResult res = userService.bulk(bulkAction);
+        BulkActionResult res = 
userService.bulk(bulkAction).readEntity(BulkActionResult.class);
         assertEquals(10, res.getResultByStatus(Status.SUCCESS).size());
         assertEquals(1, res.getResultByStatus(Status.FAILURE).size());
         assertEquals("suspended", 
userService.read(res.getResultByStatus(Status.SUCCESS).get(3)).getStatus());
 
         bulkAction.setType(BulkAction.Type.REACTIVATE);
-        res = userService.bulk(bulkAction);
+        res = userService.bulk(bulkAction).readEntity(BulkActionResult.class);
         assertEquals(10, res.getResultByStatus(Status.SUCCESS).size());
         assertEquals(1, res.getResultByStatus(Status.FAILURE).size());
         assertEquals("active", 
userService.read(res.getResultByStatus(Status.SUCCESS).get(3)).getStatus());
 
         bulkAction.setType(BulkAction.Type.DELETE);
-        res = userService.bulk(bulkAction);
+        res = userService.bulk(bulkAction).readEntity(BulkActionResult.class);
         assertEquals(10, res.getResultByStatus(Status.SUCCESS).size());
         assertEquals(1, res.getResultByStatus(Status.FAILURE).size());
     }

Reply via email to