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 2013/10/30 12:26:22 UTC

svn commit: r1537047 [3/5] - in /syncope/trunk: client/src/main/java/org/apache/syncope/client/rest/ common/src/main/java/org/apache/syncope/common/ common/src/main/java/org/apache/syncope/common/mod/ common/src/main/java/org/apache/syncope/common/serv...

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/StatusModalPage.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/StatusModalPage.java?rev=1537047&r1=1537046&r2=1537047&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/StatusModalPage.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/StatusModalPage.java Wed Oct 30 11:26:19 2013
@@ -20,17 +20,16 @@ package org.apache.syncope.console.pages
 
 import static org.apache.syncope.console.pages.AbstractBasePage.LOG;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 import org.apache.syncope.common.to.AbstractAttributableTO;
 import org.apache.syncope.common.to.RoleTO;
 import org.apache.syncope.common.to.UserTO;
 import org.apache.syncope.console.commons.Constants;
-import org.apache.syncope.console.commons.StatusBean;
-import org.apache.syncope.console.commons.StatusUtils;
-import org.apache.syncope.console.commons.StatusUtils.ConnObjectWrapper;
-import org.apache.syncope.console.commons.StatusUtils.Status;
-import org.apache.syncope.console.commons.StatusUtils.StatusBeanProvider;
+import org.apache.syncope.console.commons.status.StatusBean;
+import org.apache.syncope.console.commons.status.StatusUtils;
+import org.apache.syncope.console.commons.status.ConnObjectWrapper;
+import org.apache.syncope.console.commons.status.Status;
+import org.apache.syncope.console.commons.status.AbstractStatusBeanProvider;
 import org.apache.syncope.console.pages.panels.ActionDataTablePanel;
 import org.apache.syncope.console.wicket.markup.html.form.ActionLink;
 import org.apache.wicket.PageReference;
@@ -45,7 +44,7 @@ import org.apache.wicket.markup.repeater
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.StringResourceModel;
 
-public class StatusModalPage<T extends AbstractAttributableTO> extends AbstractStatusModlaPage {
+public class StatusModalPage<T extends AbstractAttributableTO> extends AbstractStatusModalPage {
 
     private static final long serialVersionUID = 4114026480146090961L;
 
@@ -85,22 +84,23 @@ public class StatusModalPage<T extends A
         columns.add(new AbstractColumn<StatusBean, String>(
                 new StringResourceModel("status", this, null, "")) {
 
-            private static final long serialVersionUID = -3503023501954863131L;
+                    private static final long serialVersionUID = -3503023501954863131L;
 
-            @Override
-            public String getCssClass() {
-                return "action";
-            }
-
-            @Override
-            public void populateItem(
-                    final Item<ICellPopulator<StatusBean>> cellItem,
-                    final String componentId,
-                    final IModel<StatusBean> model) {
+                    @Override
+                    public String getCssClass() {
+                        return "action";
+                    }
 
-                cellItem.add(statusUtils.getStatusImagePanel(componentId, model.getObject().getStatus()));
-            }
-        });
+                    @Override
+                    public void populateItem(
+                            final Item<ICellPopulator<StatusBean>> cellItem,
+                            final String componentId,
+                            final IModel<StatusBean> model) {
+
+                                cellItem.
+                                add(statusUtils.getStatusImagePanel(componentId, model.getObject().getStatus()));
+                            }
+                });
 
         final ActionDataTablePanel<StatusBean, String> table = new ActionDataTablePanel<StatusBean, String>(
                 "resourceDatatable",
@@ -109,13 +109,13 @@ public class StatusModalPage<T extends A
                 rowsPerPage,
                 pageRef) {
 
-            private static final long serialVersionUID = 6510391461033818316L;
+                    private static final long serialVersionUID = 6510391461033818316L;
 
-            @Override
-            public boolean isElementEnabled(final StatusBean element) {
-                return !statusOnly || element.getStatus() != Status.OBJECT_NOT_FOUND;
-            }
-        };
+                    @Override
+                    public boolean isElementEnabled(final StatusBean element) {
+                        return !statusOnly || element.getStatus() != Status.OBJECT_NOT_FOUND;
+                    }
+                };
 
         final String pageId = attributableTO instanceof RoleTO ? "Roles" : "Users";
 
@@ -248,7 +248,7 @@ public class StatusModalPage<T extends A
         add(table);
     }
 
-    class AttributableStatusProvider extends StatusBeanProvider {
+    private class AttributableStatusProvider extends AbstractStatusBeanProvider {
 
         private static final long serialVersionUID = 4586969457669796621L;
 
@@ -259,9 +259,7 @@ public class StatusModalPage<T extends A
         @SuppressWarnings("unchecked")
         @Override
         public List<StatusBean> getStatusBeans() {
-
-            final List<ConnObjectWrapper> connObjects =
-                    statusUtils.getConnectorObjects(Collections.<AbstractAttributableTO>singleton(attributableTO));
+            final List<ConnObjectWrapper> connObjects = statusUtils.getConnectorObjects(attributableTO);
 
             final List<StatusBean> statusBeans = new ArrayList<StatusBean>(connObjects.size() + 1);
 

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/MembershipsPanel.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/MembershipsPanel.java?rev=1537047&r1=1537046&r2=1537047&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/MembershipsPanel.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/MembershipsPanel.java Wed Oct 30 11:26:19 2013
@@ -28,7 +28,7 @@ import org.apache.syncope.common.to.Role
 import org.apache.syncope.common.to.UserTO;
 import org.apache.syncope.console.commons.RoleTreeBuilder;
 import org.apache.syncope.console.commons.RoleUtils;
-import org.apache.syncope.console.commons.StatusUtils;
+import org.apache.syncope.console.commons.status.StatusUtils;
 import org.apache.syncope.console.pages.MembershipModalPage;
 import org.apache.syncope.console.pages.UserModalPage;
 import org.apache.syncope.console.wicket.ajax.markup.html.ClearIndicatingAjaxLink;

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/ResourcesPanel.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/ResourcesPanel.java?rev=1537047&r1=1537046&r2=1537047&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/ResourcesPanel.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/ResourcesPanel.java Wed Oct 30 11:26:19 2013
@@ -33,7 +33,7 @@ import org.apache.syncope.console.common
 import org.apache.syncope.console.commons.RoleTreeBuilder;
 import org.apache.syncope.console.commons.RoleUtils;
 import org.apache.syncope.console.commons.SelectChoiceRenderer;
-import org.apache.syncope.console.commons.StatusUtils;
+import org.apache.syncope.console.commons.status.StatusUtils;
 import org.apache.syncope.console.rest.ResourceRestClient;
 import org.apache.syncope.console.wicket.markup.html.form.AjaxPalettePanel;
 import org.apache.syncope.console.wicket.markup.html.form.NonI18nPalette;

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/RolePanel.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/RolePanel.java?rev=1537047&r1=1537046&r2=1537047&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/RolePanel.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/RolePanel.java Wed Oct 30 11:26:19 2013
@@ -27,12 +27,10 @@ import java.util.Collections;
 import java.util.List;
 
 import org.apache.syncope.common.to.RoleTO;
-import org.apache.syncope.console.commons.StatusBean;
+import org.apache.syncope.console.commons.status.StatusBean;
 import org.apache.syncope.console.commons.XMLRolesReader;
 import org.apache.syncope.console.pages.RoleModalPage;
 import org.apache.syncope.console.rest.AuthRestClient;
-import org.apache.syncope.console.rest.RoleRestClient;
-import org.apache.syncope.console.rest.SchemaRestClient;
 import org.apache.syncope.console.wicket.markup.html.form.AjaxCheckBoxPanel;
 import org.apache.syncope.console.wicket.markup.html.form.AjaxPalettePanel;
 import org.apache.wicket.PageReference;
@@ -52,9 +50,6 @@ public class RolePanel extends Panel {
     private AuthRestClient authRestClient;
 
     @SpringBean
-    private SchemaRestClient schemaRestClient;
-
-    @SpringBean
     private XMLRolesReader xmlRolesReader;
 
     private final AjaxPalettePanel<String> entitlements;
@@ -77,22 +72,22 @@ public class RolePanel extends Panel {
             this.id = id;
         }
 
-        public RolePanel.Builder form(final Form form) {
+        public Builder form(final Form form) {
             this.form = form;
             return this;
         }
 
-        public RolePanel.Builder roleTO(final RoleTO roleTO) {
+        public Builder roleTO(final RoleTO roleTO) {
             this.roleTO = roleTO;
             return this;
         }
 
-        public RolePanel.Builder roleModalPageMode(final RoleModalPage.Mode mode) {
+        public Builder roleModalPageMode(final RoleModalPage.Mode mode) {
             this.mode = mode;
             return this;
         }
 
-        public RolePanel.Builder pageRef(final PageReference pageReference) {
+        public Builder pageRef(final PageReference pageReference) {
             this.pageReference = pageReference;
             return this;
         }

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/StatusPanel.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/StatusPanel.java?rev=1537047&r1=1537046&r2=1537047&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/StatusPanel.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/StatusPanel.java Wed Oct 30 11:26:19 2013
@@ -20,20 +20,19 @@ package org.apache.syncope.console.pages
 
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.common.mod.StatusMod;
 import org.apache.syncope.common.to.AbstractAttributableTO;
 import org.apache.syncope.common.to.ConnObjectTO;
-import org.apache.syncope.common.to.PropagationRequestTO;
 import org.apache.syncope.common.to.RoleTO;
 import org.apache.syncope.common.to.UserTO;
-import org.apache.syncope.console.commons.StatusBean;
-import org.apache.syncope.console.commons.StatusUtils;
-import org.apache.syncope.console.commons.StatusUtils.ConnObjectWrapper;
-import org.apache.syncope.console.commons.StatusUtils.Status;
+import org.apache.syncope.console.commons.status.StatusBean;
+import org.apache.syncope.console.commons.status.StatusUtils;
+import org.apache.syncope.console.commons.status.ConnObjectWrapper;
+import org.apache.syncope.console.commons.status.Status;
 import org.apache.syncope.console.markup.html.list.AltListView;
 import org.apache.syncope.console.pages.ConnObjectModalPage;
 import org.apache.syncope.console.rest.RoleRestClient;
@@ -109,7 +108,7 @@ public class StatusPanel extends Panel i
 
         statusUtils = new StatusUtils(attributable instanceof RoleTO ? roleRestClient : userRestClient);
 
-        connObjects = statusUtils.getConnectorObjects(Collections.<AbstractAttributableTO>singleton(attributable));
+        connObjects = statusUtils.getConnectorObjects(attributable);
 
         final List<StatusBean> statusBeans = new ArrayList<StatusBean>(connObjects.size() + 1);
         initialStatusBeanMap = new LinkedHashMap<String, StatusBean>(connObjects.size() + 1);
@@ -154,13 +153,17 @@ public class StatusPanel extends Panel i
             private static final long serialVersionUID = -151291731388673682L;
 
             @Override
-            protected void onUpdate(AjaxRequestTarget target) {
+            protected void onUpdate(final AjaxRequestTarget target) {
                 // ignore
             }
         });
         add(checkGroup);
 
-        add(new CheckGroupSelector("groupselector", checkGroup));
+        CheckGroupSelector groupSelector = new CheckGroupSelector("groupselector", checkGroup);
+        if (attributable instanceof RoleTO) {
+            groupSelector.setVisible(false);
+        }
+        add(groupSelector);
 
         statusBeansListView = new AltListView<StatusBean>("resources", statusBeans) {
 
@@ -171,6 +174,9 @@ public class StatusPanel extends Panel i
                 item.add(statusUtils.getStatusImage("icon", item.getModelObject().getStatus()));
 
                 final Check<StatusBean> check = new Check<StatusBean>("check", item.getModel(), checkGroup);
+                if (attributable instanceof RoleTO) {
+                    check.setVisible(false);
+                }
                 item.add(check);
 
                 item.add(new Label("resource", new ResourceModel(item.getModelObject().getResourceName(), item
@@ -188,8 +194,9 @@ public class StatusPanel extends Panel i
                         item.getModelObject().getResourceName(),
                         connObjects);
 
-                if (pageref != null && connObjectTO != null) {
-
+                if (pageref == null || connObjectTO == null) {
+                    item.add(new Label("connObject", new Model<String>()));
+                } else {
                     final ActionLinksPanel connObject = new ActionLinksPanel("connObject", new Model(), pageref);
 
                     connObject.add(new ActionLink() {
@@ -213,8 +220,6 @@ public class StatusPanel extends Panel i
                     }, ActionLink.ActionType.SEARCH, "Resources", "getConnectorObject");
 
                     item.add(connObject);
-                } else {
-                    item.add(new Label("connObject", new Model<String>()));
                 }
             }
         };
@@ -222,12 +227,12 @@ public class StatusPanel extends Panel i
         checkGroup.add(statusBeansListView);
     }
 
-    public PropagationRequestTO getPropagationRequestTO() {
-        PropagationRequestTO result = null;
+    public StatusMod getStatusMod() {
+        StatusMod result = null;
 
         Collection<StatusBean> statusBeans = checkGroup.getModel().getObject();
         if (statusBeans != null && !statusBeans.isEmpty()) {
-            result = StatusUtils.buildPropagationRequestTO(statusBeans);
+            result = StatusUtils.buildStatusMod(statusBeans);
 
         }
 
@@ -249,7 +254,7 @@ public class StatusPanel extends Panel i
 
         for (StatusBean statusBean : statusBeans) {
             if (!checkGroup.getModelObject().contains(statusBean)
-                    && statusBean.getStatus() == StatusUtils.Status.NOT_YET_SUBMITTED) {
+                    && statusBean.getStatus() == Status.NOT_YET_SUBMITTED) {
 
                 checkGroup.getModelObject().add(statusBean);
             }

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/UserSearchResultPanel.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/UserSearchResultPanel.java?rev=1537047&r1=1537046&r2=1537047&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/UserSearchResultPanel.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/UserSearchResultPanel.java Wed Oct 30 11:26:19 2013
@@ -88,7 +88,7 @@ public class UserSearchResultPanel exten
     @Override
     protected List<IColumn<AbstractAttributableTO, String>> getColumns() {
         final List<IColumn<AbstractAttributableTO, String>> columns =
-                new ArrayList<IColumn<AbstractAttributableTO, String>>();
+                 new ArrayList<IColumn<AbstractAttributableTO, String>>();
 
         for (String name : prefMan.getList(getRequest(), Constants.PREF_USERS_DETAILS_VIEW)) {
             final Field field = ReflectionUtils.findField(UserTO.class, name);

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/AuthRestClient.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/AuthRestClient.java?rev=1537047&r1=1537046&r2=1537047&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/AuthRestClient.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/AuthRestClient.java Wed Oct 30 11:26:19 2013
@@ -50,6 +50,6 @@ public class AuthRestClient extends Base
      */
     public List<String> getOwnedEntitlements() {
         return new ArrayList<String>(
-                CollectionWrapper.unwrap(getService(EntitlementService.class).getMyEntitlements()));
+                CollectionWrapper.unwrap(getService(EntitlementService.class).getOwnEntitlements()));
     }
 }

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/ConnectorRestClient.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/ConnectorRestClient.java?rev=1537047&r1=1537046&r2=1537047&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/ConnectorRestClient.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/ConnectorRestClient.java Wed Oct 30 11:26:19 2013
@@ -210,6 +210,6 @@ public class ConnectorRestClient extends
     }
 
     public BulkActionRes bulkAction(final BulkAction action) {
-        return getService(ConnectorService.class).bulkAction(action);
+        return getService(ConnectorService.class).bulk(action);
     }
 }

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/NotificationRestClient.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/NotificationRestClient.java?rev=1537047&r1=1537046&r2=1537047&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/NotificationRestClient.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/NotificationRestClient.java Wed Oct 30 11:26:19 2013
@@ -56,8 +56,8 @@ public class NotificationRestClient exte
     }
 
     public List<String> getMailTemplates() {
-        return CollectionWrapper.unwrapMailTemplates(new ArrayList<MailTemplateTO>(getService(
-                ConfigurationService.class).getMailTemplates()));
+        return CollectionWrapper.unwrap(
+                new ArrayList<MailTemplateTO>(getService(ConfigurationService.class).getMailTemplates()));
     }
 
     public List<String> getEvents() {

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/PolicyRestClient.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/PolicyRestClient.java?rev=1537047&r1=1537046&r2=1537047&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/PolicyRestClient.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/PolicyRestClient.java Wed Oct 30 11:26:19 2013
@@ -84,8 +84,7 @@ public class PolicyRestClient extends Ba
         List<String> rules = null;
 
         try {
-            rules = CollectionWrapper.unwrapSyncCorrelationRuleClasses(
-                    getService(PolicyService.class).getSyncCorrelationRuleClasses());
+            rules = CollectionWrapper.unwrap(getService(PolicyService.class).getSyncCorrelationRuleClasses());
         } catch (Exception e) {
             LOG.error("While getting all correlation rule classes", e);
         }

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/ResourceRestClient.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/ResourceRestClient.java?rev=1537047&r1=1537046&r2=1537047&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/ResourceRestClient.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/ResourceRestClient.java Wed Oct 30 11:26:19 2013
@@ -19,15 +19,14 @@
 package org.apache.syncope.console.rest;
 
 import java.util.List;
-import java.util.Set;
 import org.apache.syncope.common.services.ResourceService;
 import org.apache.syncope.common.to.AbstractAttributableTO;
 import org.apache.syncope.common.to.BulkAction;
 import org.apache.syncope.common.to.BulkActionRes;
 import org.apache.syncope.common.to.BulkAssociationAction;
-import org.apache.syncope.common.to.PropagationActionClassTO;
 import org.apache.syncope.common.to.ResourceTO;
 import org.apache.syncope.common.to.UserTO;
+import org.apache.syncope.common.types.AttributableType;
 import org.apache.syncope.common.util.CollectionWrapper;
 import org.apache.syncope.common.validation.SyncopeClientException;
 import org.springframework.stereotype.Component;
@@ -44,8 +43,7 @@ public class ResourceRestClient extends 
         List<String> actions = null;
 
         try {
-            Set<PropagationActionClassTO> response = getService(ResourceService.class).getPropagationActionsClasses();
-            actions = CollectionWrapper.unwrapPropagationActionClasses(response);
+            actions = CollectionWrapper.unwrap(getService(ResourceService.class).getPropagationActionsClasses());
         } catch (SyncopeClientException e) {
             LOG.error("While getting all propagation actions classes", e);
         }
@@ -88,15 +86,14 @@ public class ResourceRestClient extends 
     }
 
     public BulkActionRes bulkAction(final BulkAction action) {
-        return getService(ResourceService.class).bulkAction(action);
+        return getService(ResourceService.class).bulk(action);
     }
 
     public BulkActionRes bulkAssociationAction(
-            String resourceName, BulkAssociationAction bulkAction, Class<? extends AbstractAttributableTO> typeRef) {
-        if (UserTO.class.isAssignableFrom(typeRef)) {
-            return getService(ResourceService.class).usersBulkAssociationAction(resourceName, bulkAction);
-        } else {
-            return getService(ResourceService.class).rolesBulkAssociationAction(resourceName, bulkAction);
-        }
+            final String resourceName, final BulkAssociationAction bulkAssociationAction,
+            final Class<? extends AbstractAttributableTO> typeRef) {
+
+        return getService(ResourceService.class).bulkAssociation(resourceName, bulkAssociationAction,
+                UserTO.class.isAssignableFrom(typeRef) ? AttributableType.USER : AttributableType.ROLE);
     }
 }

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/RoleRestClient.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/RoleRestClient.java?rev=1537047&r1=1537046&r2=1537047&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/RoleRestClient.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/RoleRestClient.java Wed Oct 30 11:26:19 2013
@@ -30,10 +30,13 @@ import org.apache.syncope.common.service
 import org.apache.syncope.common.to.BulkAction;
 import org.apache.syncope.common.to.BulkActionRes;
 import org.apache.syncope.common.to.ConnObjectTO;
+import org.apache.syncope.common.to.ResourceNameTO;
 import org.apache.syncope.common.to.RoleTO;
 import org.apache.syncope.common.types.AttributableType;
-import org.apache.syncope.console.commons.StatusBean;
-import org.apache.syncope.console.commons.StatusUtils;
+import org.apache.syncope.common.types.ResourceAssociationActionType;
+import org.apache.syncope.common.util.CollectionWrapper;
+import org.apache.syncope.console.commons.status.StatusBean;
+import org.apache.syncope.console.commons.status.StatusUtils;
 import org.springframework.stereotype.Component;
 
 /**
@@ -85,12 +88,12 @@ public class RoleRestClient extends Abst
     }
 
     public RoleTO update(final RoleMod roleMod) {
-        return getService(RoleService.class).update(roleMod.getId(), roleMod);
+        return getService(RoleService.class).update(roleMod.getId(), roleMod).readEntity(RoleTO.class);
     }
 
     @Override
     public RoleTO delete(final Long id) {
-        return getService(RoleService.class).delete(id);
+        return getService(RoleService.class).delete(id).readEntity(RoleTO.class);
     }
 
     @Override
@@ -99,14 +102,21 @@ public class RoleRestClient extends Abst
     }
 
     public RoleTO unlink(final long roleId, final List<StatusBean> statuses) {
-        return getService(RoleService.class).unlink(roleId, StatusUtils.buildPropagationTargetsTO(statuses));
+        return getService(RoleService.class).associate(roleId, ResourceAssociationActionType.UNLINK,
+                CollectionWrapper.wrap(StatusUtils.buildStatusMod(statuses).getResourceNames(), ResourceNameTO.class)).
+                readEntity(RoleTO.class);
     }
 
-    public RoleTO unassign(final long roleId, final List<StatusBean> statuses) {
-        return getService(RoleService.class).unassign(roleId, StatusUtils.buildPropagationTargetsTO(statuses));
+    public RoleTO deprovision(final long roleId, final List<StatusBean> statuses) {
+        return getService(RoleService.class).associate(roleId, ResourceAssociationActionType.DEPROVISION,
+                CollectionWrapper.wrap(StatusUtils.buildStatusMod(statuses).getResourceNames(), ResourceNameTO.class)).
+                readEntity(RoleTO.class);
     }
 
-    public RoleTO deprovision(final long roleId, final List<StatusBean> statuses) {
-        return getService(RoleService.class).deprovision(roleId, StatusUtils.buildPropagationTargetsTO(statuses));
+    public RoleTO unassign(final long roleId, final List<StatusBean> statuses) {
+        return getService(RoleService.class).associate(roleId, ResourceAssociationActionType.UNASSIGN,
+                CollectionWrapper.wrap(StatusUtils.buildStatusMod(statuses).getResourceNames(), ResourceNameTO.class)).
+                readEntity(RoleTO.class);
     }
+
 }

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/SchemaRestClient.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/SchemaRestClient.java?rev=1537047&r1=1537046&r2=1537047&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/SchemaRestClient.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/SchemaRestClient.java Wed Oct 30 11:26:19 2013
@@ -313,9 +313,8 @@ public class SchemaRestClient extends Ba
         List<String> response = null;
 
         try {
-            List<ValidatorTO> validators = new ArrayList<ValidatorTO>(getService(ConfigurationService.class)
-                    .getValidators());
-            response = CollectionWrapper.unwrapValidator(validators);
+            response = CollectionWrapper.unwrap(
+                    new ArrayList<ValidatorTO>(getService(ConfigurationService.class).getValidators()));
         } catch (SyncopeClientException e) {
             LOG.error("While getting all validators", e);
         }

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/TaskRestClient.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/TaskRestClient.java?rev=1537047&r1=1537046&r2=1537047&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/TaskRestClient.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/TaskRestClient.java Wed Oct 30 11:26:19 2013
@@ -56,7 +56,7 @@ public class TaskRestClient extends Base
         } catch (SyncopeClientException e) {
             LOG.error("While getting all job classes", e);
         }
-        return CollectionWrapper.unwrapJobClasses(jobClasses);
+        return CollectionWrapper.unwrap(jobClasses);
     }
 
     public List<String> getSyncActionsClasses() {
@@ -67,7 +67,7 @@ public class TaskRestClient extends Base
         } catch (SyncopeClientException e) {
             LOG.error("While getting all sync actions classes", e);
         }
-        return CollectionWrapper.unwrapSyncActionClasses(actions);
+        return CollectionWrapper.unwrap(actions);
     }
 
     /**
@@ -167,6 +167,6 @@ public class TaskRestClient extends Base
     }
 
     public BulkActionRes bulkAction(final BulkAction action) {
-        return getService(TaskService.class).bulkAction(action);
+        return getService(TaskService.class).bulk(action);
     }
 }

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/UserRequestRestClient.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/UserRequestRestClient.java?rev=1537047&r1=1537046&r2=1537047&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/UserRequestRestClient.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/UserRequestRestClient.java Wed Oct 30 11:26:19 2013
@@ -24,7 +24,9 @@ import org.apache.syncope.common.mod.Use
 import org.apache.syncope.common.services.UserRequestService;
 import org.apache.syncope.common.to.UserRequestTO;
 import org.apache.syncope.common.to.UserTO;
+import org.apache.syncope.common.types.RESTHeaders;
 import org.apache.syncope.common.types.UserRequestType;
+import org.apache.syncope.common.validation.SyncopeClientException;
 import org.springframework.stereotype.Component;
 
 @Component
@@ -32,6 +34,20 @@ public class UserRequestRestClient exten
 
     private static final long serialVersionUID = 171408947099311191L;
 
+    public boolean isSelfRegistrationAllowed() {
+        Boolean result = null;
+        try {
+            result = Boolean.valueOf(getService(UserRequestService.class).getOptions().
+                    getHeaderString(RESTHeaders.USERREQUEST_CREATE_ALLOWED.toString()));
+        } catch (SyncopeClientException e) {
+            LOG.error("While seeking if self registration is allowed", e);
+        }
+
+        return result == null
+                ? false
+                : result.booleanValue();
+    }
+
     public List<UserRequestTO> list() {
         return getService(UserRequestService.class).list();
     }

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/UserRestClient.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/UserRestClient.java?rev=1537047&r1=1537046&r2=1537047&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/UserRestClient.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/UserRestClient.java Wed Oct 30 11:26:19 2013
@@ -20,6 +20,7 @@ package org.apache.syncope.console.rest;
 
 import java.util.List;
 import javax.ws.rs.core.Response;
+import org.apache.syncope.common.mod.StatusMod;
 import org.apache.syncope.common.mod.UserMod;
 import org.apache.syncope.common.search.NodeCond;
 import org.apache.syncope.common.services.InvalidSearchConditionException;
@@ -28,11 +29,14 @@ import org.apache.syncope.common.service
 import org.apache.syncope.common.to.BulkAction;
 import org.apache.syncope.common.to.BulkActionRes;
 import org.apache.syncope.common.to.ConnObjectTO;
+import org.apache.syncope.common.to.ResourceNameTO;
 import org.apache.syncope.common.to.UserTO;
 import org.apache.syncope.common.types.AttributableType;
+import org.apache.syncope.common.types.ResourceAssociationActionType;
+import org.apache.syncope.common.util.CollectionWrapper;
 import org.apache.syncope.common.validation.SyncopeClientException;
-import org.apache.syncope.console.commons.StatusBean;
-import org.apache.syncope.console.commons.StatusUtils;
+import org.apache.syncope.console.commons.status.StatusBean;
+import org.apache.syncope.console.commons.status.StatusUtils;
 import org.springframework.stereotype.Component;
 
 /**
@@ -66,12 +70,12 @@ public class UserRestClient extends Abst
     }
 
     public UserTO update(final UserMod userModTO) {
-        return getService(UserService.class).update(userModTO.getId(), userModTO);
+        return getService(UserService.class).update(userModTO.getId(), userModTO).readEntity(UserTO.class);
     }
 
     @Override
     public UserTO delete(final Long id) {
-        return getService(UserService.class).delete(id);
+        return getService(UserService.class).delete(id).readEntity(UserTO.class);
     }
 
     public UserTO read(final Long id) {
@@ -84,16 +88,6 @@ public class UserRestClient extends Abst
         return userTO;
     }
 
-    public UserTO read(final String username) {
-        UserTO userTO = null;
-        try {
-            userTO = getService(UserService.class).read(username);
-        } catch (SyncopeClientException e) {
-            LOG.error("While reading a user", e);
-        }
-        return userTO;
-    }
-
     public UserTO readSelf() {
         return getService(UserService.class).readSelf();
     }
@@ -115,28 +109,36 @@ public class UserRestClient extends Abst
         return getService(ResourceService.class).getConnectorObject(resourceName, AttributableType.USER, id);
     }
 
-    public UserTO suspend(final long userId, final List<StatusBean> statuses) {
-        return getService(UserService.class).suspend(userId, StatusUtils.buildPropagationRequestTO(statuses, false));
+    public void suspend(final long userId, final List<StatusBean> statuses) {
+        StatusMod statusMod = StatusUtils.buildStatusMod(statuses, false);
+        statusMod.setType(StatusMod.ModType.SUSPEND);
+        getService(UserService.class).status(userId, statusMod);
     }
 
-    public UserTO reactivate(final long userId, final List<StatusBean> statuses) {
-        return getService(UserService.class).reactivate(userId, StatusUtils.buildPropagationRequestTO(statuses, true));
+    public void reactivate(final long userId, final List<StatusBean> statuses) {
+        StatusMod statusMod = StatusUtils.buildStatusMod(statuses, true);
+        statusMod.setType(StatusMod.ModType.REACTIVATE);
+        getService(UserService.class).status(userId, statusMod);
     }
 
     @Override
     public BulkActionRes bulkAction(final BulkAction action) {
-        return getService(UserService.class).bulkAction(action);
+        return getService(UserService.class).bulk(action);
     }
 
-    public UserTO unlink(final long userId, final List<StatusBean> statuses) {
-        return getService(UserService.class).unlink(userId, StatusUtils.buildPropagationTargetsTO(statuses));
+    public void unlink(final long userId, final List<StatusBean> statuses) {
+        getService(UserService.class).associate(userId, ResourceAssociationActionType.UNLINK,
+                CollectionWrapper.wrap(StatusUtils.buildStatusMod(statuses).getResourceNames(), ResourceNameTO.class));
     }
 
-    public UserTO unassign(final long userId, final List<StatusBean> statuses) {
-        return getService(UserService.class).unassign(userId, StatusUtils.buildPropagationTargetsTO(statuses));
+    public void deprovision(final long userId, final List<StatusBean> statuses) {
+        getService(UserService.class).associate(userId, ResourceAssociationActionType.DEPROVISION,
+                CollectionWrapper.wrap(StatusUtils.buildStatusMod(statuses).getResourceNames(), ResourceNameTO.class));
     }
 
-    public UserTO deprovision(final long userId, final List<StatusBean> statuses) {
-        return getService(UserService.class).deprovision(userId, StatusUtils.buildPropagationTargetsTO(statuses));
+    public void unassign(final long userId, final List<StatusBean> statuses) {
+        getService(UserService.class).associate(userId, ResourceAssociationActionType.UNASSIGN,
+                CollectionWrapper.wrap(StatusUtils.buildStatusMod(statuses).getResourceNames(), ResourceNameTO.class));
     }
+
 }

Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/SyncopeApplication.properties
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/SyncopeApplication.properties?rev=1537047&r1=1537046&r2=1537047&view=diff
==============================================================================
--- syncope/trunk/console/src/main/resources/org/apache/syncope/console/SyncopeApplication.properties (original)
+++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/SyncopeApplication.properties Wed Oct 30 11:26:19 2013
@@ -27,9 +27,9 @@ operation_succeeded=Operation executed s
 operation_error=Error occurred during the requested operation
 alert=Alert:
 confirmDelete=Do you really want to delete the selected item?
-confirmUnlink=Do you really want to remove the link between user(s) and resource?
-confirmUnassign=Do you really want to remove the assignment between user(s) and resource?
-confirmDeprovision=Do you really want to de-provision user(s)?
+confirmUnlink=Do you really want to remove the link between the selected item(s) and the resource?
+confirmUnassign=Do you really want to remove the assignment between the selected item(s) and the resource?
+confirmDeprovision=Do you really want to de-provision the selected item(s)?
 
 
 unauthorizedInstantiationException=Missing authorization.

Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/SyncopeApplication_it.properties
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/SyncopeApplication_it.properties?rev=1537047&r1=1537046&r2=1537047&view=diff
==============================================================================
--- syncope/trunk/console/src/main/resources/org/apache/syncope/console/SyncopeApplication_it.properties (original)
+++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/SyncopeApplication_it.properties Wed Oct 30 11:26:19 2013
@@ -27,9 +27,9 @@ operation_succeeded=Operazione eseguita 
 operation_error=Attenzione si \u00e8 verificato un errore durante l'esecuzione dell'operazione richiesta
 alert=Attenzione:
 confirmDelete=Vuoi davvero procedere con la cancellazione?
-confirmUnlink=Vuoi davvero procedere rimuovendo il link tra utente/i e risorsa?
-confirmUnassign=Vuoi davvero procedere rimuovendo l'assegnamento tra utente/i e risorsa?
-confirmDeprovision=Vuoi davvero procedere con il de-provisioning dell'utente?
+confirmUnlink=Vuoi davvero procedere rimuovendo il link con la risorsa?
+confirmUnassign=Vuoi davvero procedere rimuovendo l'assegnamento sulla risorsa?
+confirmDeprovision=Vuoi davvero procedere con il de-provisioning?
 
 unauthorizedInstantiationException=Autorizzazione mancante.
 accessControlException=Autorizzazione mancante durante la comunicazione con Syncope core.

Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/SyncopeApplication_pt_BR.properties
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/SyncopeApplication_pt_BR.properties?rev=1537047&r1=1537046&r2=1537047&view=diff
==============================================================================
--- syncope/trunk/console/src/main/resources/org/apache/syncope/console/SyncopeApplication_pt_BR.properties (original)
+++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/SyncopeApplication_pt_BR.properties Wed Oct 30 11:26:19 2013
@@ -27,9 +27,9 @@ operation_succeeded=Opera\u00e7\u00e3o e
 operation_error=Um erro ocorreu ao executar esta opera\u00e7\u00e3o
 alert=Alerta:
 confirmDelete=Voc\u00ea realmente deseja apagar este item selecionado?
-confirmUnlink=Voc\u00ea realmente deseja apagar o v\u00ednculo entre o usu\u00e1rio e de recursos?
-confirmUnassign=Voc\u00ea realmente deseja apagar a atribui\u00e7\u00e3o entre o usu\u00e1rio e de recursos?
-confirmDeprovision=Voc\u00ea realmente de-provision usu\u00e1rio?
+confirmUnlink=Voc\u00ea realmente deseja apagar o v\u00ednculo entre o item e de recursos?
+confirmUnassign=Voc\u00ea realmente deseja apagar a atribui\u00e7\u00e3o entre o item e de recursos?
+confirmDeprovision=Voc\u00ea realmente de-provision item?
 
 unauthorizedInstantiationException=Falta de autoriza\u00e7\u00e3o para concluir.
 accessControlException=Falta de autoriza\u00e7\u00e3o ao comunicar-se com o Syncope core.

Copied: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/AbstractStatusModalPage.html (from r1536599, syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/AbstractStatusModlaPage.html)
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/AbstractStatusModalPage.html?p2=syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/AbstractStatusModalPage.html&p1=syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/AbstractStatusModlaPage.html&r1=1536599&r2=1537047&rev=1537047&view=diff
==============================================================================
--- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/AbstractStatusModlaPage.html (original)
+++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/AbstractStatusModalPage.html Wed Oct 30 11:26:19 2013
@@ -16,24 +16,26 @@ KIND, either express or implied.  See th
 specific language governing permissions and limitations
 under the License.
 -->
-<wicket:head>
-  <link rel="stylesheet" type="text/css" href="css/bulk.css" media="all"/>
-  <style>
-    #dataTableSpan{
-      display:  block;
-      clear:  both;
-      float: none;
-      margin: 10px;
-      padding-top: 10px;
-    }
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
+  <wicket:head>
+    <link rel="stylesheet" type="text/css" href="css/bulk.css" media="all"/>
+    <style>
+      #dataTableSpan{
+        display:  block;
+        clear:  both;
+        float: none;
+        margin: 10px;
+        padding-top: 10px;
+      }
 
-    #dataTableSpan table{
-      width: 100%;
-    }
-  </style>
-</wicket:head>
-<wicket:extend>
-  <p class="ui-widget ui-corner-all ui-widget-header"><wicket:message key="title"/></p>
-  <span wicket:id="resourceDatatable" id="dataTableSpan">[resources]</span>
-  <wicket:child />
-</wicket:extend>
+      #dataTableSpan table{
+        width: 100%;
+      }
+    </style>
+  </wicket:head>
+  <wicket:extend>
+    <p class="ui-widget ui-corner-all ui-widget-header"><wicket:message key="title"/></p>
+    <span wicket:id="resourceDatatable" id="dataTableSpan">[resources]</span>
+    <wicket:child />
+  </wicket:extend>
+</html>

Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/ApprovalModalPage.html
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/ApprovalModalPage.html?rev=1537047&r1=1537046&r2=1537047&view=diff
==============================================================================
--- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/ApprovalModalPage.html (original)
+++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/ApprovalModalPage.html Wed Oct 30 11:26:19 2013
@@ -16,35 +16,37 @@ KIND, either express or implied.  See th
 specific language governing permissions and limitations
 under the License.
 -->
-<wicket:extend>
-  <p class="ui-widget ui-corner-all ui-widget-header"><wicket:message key="title"/></p>
-<div style="margin:10px">
-  <form wicket:id="form">
-    <div id="formtable">
-      <div class="tablerow" wicket:id="propView">
-        <div class="tablecolumn_label medium_dynamicsize">
-          <span wicket:id="key">[key]</span>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
+  <wicket:extend>
+    <p class="ui-widget ui-corner-all ui-widget-header"><wicket:message key="title"/></p>
+    <div style="margin:10px">
+      <form wicket:id="form">
+        <div id="formtable">
+          <div class="tablerow" wicket:id="propView">
+            <div class="tablecolumn_label medium_dynamicsize">
+              <span wicket:id="key">[key]</span>
+            </div>
+            <div class="tablecolumn_field medium_dynamicsize">
+              <span wicket:id="value">[value]</span>
+
+            </div>
+          </div>
         </div>
-        <div class="tablecolumn_field medium_dynamicsize">
-          <span wicket:id="value">[value]</span>
 
+        <div style="margin: 20px 0">
+          <input type="button"
+                 class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"
+                 wicket:id="userDetails"/>
+          <input type="submit"
+                 class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"
+                 wicket:id="apply"/>
+          <input type="button"
+                 accept=""class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"
+                 wicket:id="cancel"/>
         </div>
-      </div>
-    </div>
 
-    <div style="margin: 20px 0">
-      <input type="button"
-             class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"
-             wicket:id="userDetails"/>
-      <input type="submit"
-             class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"
-             wicket:id="apply"/>
-      <input type="button"
-             accept=""class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"
-             wicket:id="cancel"/>
+      </form>
+      <div wicket:id="editUserWin">[Show modal window for editing user under approval]</div>
     </div>
-
-  </form>
-  <div wicket:id="editUserWin">[Show modal window for editing user under approval]</div>
-</div>
-</wicket:extend>
+  </wicket:extend>
+</html>

Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/BulkActionModalPage.html
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/BulkActionModalPage.html?rev=1537047&r1=1537046&r2=1537047&view=diff
==============================================================================
--- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/BulkActionModalPage.html (original)
+++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/BulkActionModalPage.html Wed Oct 30 11:26:19 2013
@@ -16,28 +16,30 @@ KIND, either express or implied.  See th
 specific language governing permissions and limitations
 under the License.
 -->
-<wicket:head>
-  <link rel="stylesheet" type="text/css" href="css/bulk.css" media="all"/>
-</wicket:head>
-<wicket:extend>
-  <p class="ui-widget ui-corner-all ui-widget-header"><wicket:message key="title"/></p>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
+  <wicket:head>
+    <link rel="stylesheet" type="text/css" href="css/bulk.css" media="all"/>
+  </wicket:head>
+  <wicket:extend>
+    <p class="ui-widget ui-corner-all ui-widget-header"><wicket:message key="title"/></p>
 
-<div id="selectedObjects">
-  <table class="ui-widget ui-widget-content table-hover pageRowElement" wicket:id="selectedObjects">[DataTable]</table>
+    <div id="selectedObjects">
+      <table class="ui-widget ui-widget-content table-hover pageRowElement" wicket:id="selectedObjects">[DataTable]</table>
 
-  <div id="actionRow" class="pageRowElement">
-    <div id="actions">
-      <div id="actionPanel" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only">
-        <span wicket:id="actions">[Actions]</span>
-      </div>
+      <div id="actionRow" class="pageRowElement">
+        <div id="actions">
+          <div id="actionPanel" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only">
+            <span wicket:id="actions">[Actions]</span>
+          </div>
 
-      <div id="cancelBtmForm">
-        <form wicket:id="form">
-          <input type="button" wicket:id="cancel" id="cancel"
-                 class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"/>
-        </form>
+          <div id="cancelBtmForm">
+            <form wicket:id="form">
+              <input type="button" wicket:id="cancel" id="cancel"
+                     class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"/>
+            </form>
+          </div>
+        </div>
       </div>
     </div>
-  </div>
-</div>
-</wicket:extend>
+  </wicket:extend>
+</html>

Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/RoleSummaryPanel.html
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/RoleSummaryPanel.html?rev=1537047&r1=1537046&r2=1537047&view=diff
==============================================================================
--- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/RoleSummaryPanel.html (original)
+++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/RoleSummaryPanel.html Wed Oct 30 11:26:19 2013
@@ -26,7 +26,7 @@ under the License.
     </wicket:fragment>
 
     <wicket:fragment wicket:id="rootPanel">
-      <div style="float:left; width:65%;">
+      <div style="float:left; width:70%;">
         <p style="height:15px; margin-top: 0px;" class="ui-widget ui-corner-all ui-widget-header">
           <span wicket:id="actionLink"/>
         </p>

Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/RoleTabPanel.html
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/RoleTabPanel.html?rev=1537047&r1=1537046&r2=1537047&view=diff
==============================================================================
--- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/RoleTabPanel.html (original)
+++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/RoleTabPanel.html Wed Oct 30 11:26:19 2013
@@ -16,39 +16,41 @@ KIND, either express or implied.  See th
 specific language governing permissions and limitations
 under the License.
 -->
-<wicket:panel>
-  <div style="float:left; width:65%;">
-    <p style="height:15px; margin-top: 0px;" class="ui-widget ui-corner-all ui-widget-header">
-    <wicket:message key="title"/>
-    <span wicket:id="displayName"/>
-    <span wicket:id="actionLink"/>
-    </p>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
+  <wicket:panel>
+    <div style="float:left; width:70%;">
+      <p style="height:15px; margin-top: 0px;" class="ui-widget ui-corner-all ui-widget-header">
+        <wicket:message key="title"/>
+        <span wicket:id="displayName"/>
+        <span wicket:id="actionLink"/>
+      </p>
 
-    <form wicket:id="roleForm">
-      <div id="tabs" style="margin: 0px;">
-        <ul>
-          <li><a href="#details"><span><wicket:message key="details"/></span></a></li>
-          <li><a href="#templates"><span><wicket:message key="templates"/></span></a></li>
-          <li><a href="#attrs"><span><wicket:message key="attrs"/></span></a></li>
-          <li><a href="#derAttrs"><span><wicket:message key="derAttrs"/></span></a></li>
-          <li><a href="#virAttrs"><span><wicket:message key="virAttrs"/></span></a></li>
-          <li><a href="#resources"><span><wicket:message key="resources"/></span></a></li>
-          <li><a href="#entitlements"><span><wicket:message key="entitlements"/></span></a></li>
-          <li><a href="#security"><span><wicket:message key="security"/></span></a></li>
-          <li><a href="#users"><span><wicket:message key="users"/></span></a></li>
-        </ul>
-        <div wicket:id="rolePanel">
-        </div>
-        <div id="users">
-          <div wicket:id="userListContainer">
-            <input type="button" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"
-                   wicket:id="search"/>
-            <div id="users-contain" class="ui-widget" style="width:auto">
-              <span wicket:id="userList"> [userList] </span>
+      <form wicket:id="roleForm">
+        <div id="tabs" style="margin: 0px;">
+          <ul>
+            <li><a href="#details"><span><wicket:message key="details"/></span></a></li>
+            <li><a href="#templates"><span><wicket:message key="templates"/></span></a></li>
+            <li><a href="#attrs"><span><wicket:message key="attrs"/></span></a></li>
+            <li><a href="#derAttrs"><span><wicket:message key="derAttrs"/></span></a></li>
+            <li><a href="#virAttrs"><span><wicket:message key="virAttrs"/></span></a></li>
+            <li><a href="#resources"><span><wicket:message key="resources"/></span></a></li>
+            <li><a href="#entitlements"><span><wicket:message key="entitlements"/></span></a></li>
+            <li><a href="#security"><span><wicket:message key="security"/></span></a></li>
+            <li><a href="#users"><span><wicket:message key="users"/></span></a></li>
+          </ul>
+          <div wicket:id="rolePanel">
+          </div>
+          <div id="users">
+            <div wicket:id="userListContainer">
+              <input type="button" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"
+                     wicket:id="search"/>
+              <div id="users-contain" class="ui-widget" style="width:auto">
+                <span wicket:id="userList"> [userList] </span>
+              </div>
             </div>
           </div>
         </div>
-      </div>
-    </form>
-  </div>
-</wicket:panel>
+      </form>
+    </div>
+  </wicket:panel>
+</html>

Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/StatusPanel.html
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/StatusPanel.html?rev=1537047&r1=1537046&r2=1537047&view=diff
==============================================================================
--- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/StatusPanel.html (original)
+++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/StatusPanel.html Wed Oct 30 11:26:19 2013
@@ -16,114 +16,115 @@ KIND, either express or implied.  See th
 specific language governing permissions and limitations
 under the License.
 -->
-<wicket:head>
-  <style>
-    div.group{
-      width:100%;
-    }
-
-    div#check{
-      width:8%;
-      height: 25px;
-      float:left;
-    }
-
-    div#resource{
-      margin-top: 3px;
-      margin-left: 5px;
-      width: 35%;
-      height: 25px;
-      float:left;
-    }
-
-    div#accountLink{
-      margin-top: 3px;
-      width:45%;
-      height: 25px;
-      float:left
-    }
-
-    div#status{
-      margin-top: 3px;
-      height: 25px;
-      width: 5%;
-      float: left;
-      text-align: center;
-    }
-
-    div#connObject{
-      margin-top: 3px;
-      height: 25px;
-      width: 5%;
-      float: left;
-      text-align: center;
-    }
-
-    div.assignment {
-      display: inline-table;
-      width: 100%
-    }
-
-    div.assignments {
-      margin-top: 5px;
-      display: inline-table;
-      width: 100%;
-      border: 1px solid #DDDDDD;
-      color: #555555;
-    }
-  </style>
-</wicket:head>
-<wicket:panel>
-  <div class="assignments">
-    <div class="group">
-      <div>
-        <div id="check">
-          <input type="checkbox" wicket:id="groupselector" />
-        </div>
-
-        <div id="resource">
-          <span style="font: Verdana,Arial,sans-serif; font-weight: bold">
-            <wicket:message key="resourceheader"/>
-          </span>
-        </div>
-        <div id="accountLink">
-          <span style="font: Verdana,Arial,sans-serif; font-weight: bold">
-            <wicket:message key="accountlinkheader"/>
-          </span>
-        </div>
-        <div id="status">
-          <span style="font: Verdana,Arial,sans-serif; font-weight: bold">
-            <wicket:message key="statusheader"/>
-          </span>
-        </div>
-        <div id="connObject">
-        </div>
-      </div>
-
-      <span wicket:id="group">
-
-        <div wicket:id="resources" class="assignment">
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
+  <wicket:head>
+    <style>
+      div.group{
+        width:100%;
+      }
+
+      div#check{
+        height: 25px;
+        float:left;
+      }
+
+      div#resource{
+        margin-top: 3px;
+        margin-left: 5px;
+        width: 35%;
+        height: 25px;
+        float:left;
+      }
+
+      div#accountLink{
+        margin-top: 3px;
+        width:45%;
+        height: 25px;
+        float:left
+      }
+
+      div#status{
+        margin-top: 3px;
+        height: 25px;
+        width: 5%;
+        float: left;
+        text-align: center;
+      }
+
+      div#connObject{
+        margin-top: 3px;
+        height: 25px;
+        width: 5%;
+        float: left;
+        text-align: center;
+      }
+
+      div.assignment {
+        display: inline-table;
+        width: 100%
+      }
+
+      div.assignments {
+        margin-top: 5px;
+        display: inline-table;
+        width: 100%;
+        border: 1px solid #DDDDDD;
+        color: #555555;
+      }
+    </style>
+  </wicket:head>
+  <wicket:panel>
+    <div class="assignments">
+      <div class="group">
+        <div>
           <div id="check">
-            <input type="checkbox" wicket:id="check"/>
+            <input type="checkbox" wicket:id="groupselector" />
           </div>
 
           <div id="resource">
-            <span wicket:id="resource">[resource name]</span>
+            <span style="font: Verdana,Arial,sans-serif; font-weight: bold">
+              <wicket:message key="resourceheader"/>
+            </span>
           </div>
           <div id="accountLink">
-            <span wicket:id="accountLink">[accountLink]</span>
+            <span style="font: Verdana,Arial,sans-serif; font-weight: bold">
+              <wicket:message key="accountlinkheader"/>
+            </span>
           </div>
           <div id="status">
-            <img wicket:id="icon"/>
+            <span style="font: Verdana,Arial,sans-serif; font-weight: bold">
+              <wicket:message key="statusheader"/>
+            </span>
           </div>
           <div id="connObject">
-            <span wicket:id="connObject">[connObject]</span>
           </div>
         </div>
-      </span>
-    </div>
 
-  </div>
+        <span wicket:id="group">
+
+          <div wicket:id="resources" class="assignment">
+            <div id="check">
+              <input type="checkbox" wicket:id="check"/>
+            </div>
+
+            <div id="resource">
+              <span wicket:id="resource">[resource name]</span>
+            </div>
+            <div id="accountLink">
+              <span wicket:id="accountLink">[accountLink]</span>
+            </div>
+            <div id="status">
+              <img wicket:id="icon"/>
+            </div>
+            <div id="connObject">
+              <span wicket:id="connObject">[connObject]</span>
+            </div>
+          </div>
+        </span>
+      </div>
+
+    </div>
 
-  <div wicket:id="connObjectWin">[Show modal window for showing connector object]</div>
-</wicket:panel>
+    <div wicket:id="connObjectWin">[Show modal window for showing connector object]</div>
+  </wicket:panel>
+</html>

Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/propagation/PropagationByResource.java
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/propagation/PropagationByResource.java?rev=1537047&r1=1537046&r2=1537047&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/propagation/PropagationByResource.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/propagation/PropagationByResource.java Wed Oct 30 11:26:19 2013
@@ -110,7 +110,7 @@ public class PropagationByResource imple
      * @param resourceNames target resources
      * @return whether the operation was successful or not
      */
-    public boolean addAll(final ResourceOperation type, final Set<String> resourceNames) {
+    public boolean addAll(final ResourceOperation type, final Collection<String> resourceNames) {
         Set<String> set;
         switch (type) {
             case CREATE:

Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/propagation/impl/PropagationManager.java
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/propagation/impl/PropagationManager.java?rev=1537047&r1=1537046&r2=1537047&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/propagation/impl/PropagationManager.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/propagation/impl/PropagationManager.java Wed Oct 30 11:26:19 2013
@@ -64,7 +64,7 @@ import org.springframework.transaction.a
 /**
  * Manage the data propagation to external resources.
  */
-@Transactional(rollbackFor = {Throwable.class})
+@Transactional(rollbackFor = { Throwable.class })
 public class PropagationManager {
 
     /**
@@ -267,7 +267,7 @@ public class PropagationManager {
      */
     public List<PropagationTask> getUserUpdateTaskIds(final WorkflowResult<Map.Entry<Long, Boolean>> wfResult,
             final String password, final Set<String> vAttrsToBeRemoved, final Set<AttributeMod> vAttrsToBeUpdated,
-            final Set<String> noPropResourceNames)
+            final Collection<String> noPropResourceNames)
             throws NotFoundException, UnauthorizedRoleException {
 
         SyncopeUser user = userDataBinder.getUserFromId(wfResult.getResult().getKey());
@@ -316,7 +316,7 @@ public class PropagationManager {
     protected List<PropagationTask> getUpdateTaskIds(final AbstractAttributable attributable,
             final String password, final Boolean enable,
             final Set<String> vAttrsToBeRemoved, final Set<AttributeMod> vAttrsToBeUpdated,
-            final PropagationByResource propByRes, final Set<String> noPropResourceNames)
+            final PropagationByResource propByRes, final Collection<String> noPropResourceNames)
             throws NotFoundException {
 
         AbstractAttributableDataBinder binder = attributable instanceof SyncopeUser

Added: syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/AbstractResourceAssociator.java
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/AbstractResourceAssociator.java?rev=1537047&view=auto
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/AbstractResourceAssociator.java (added)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/AbstractResourceAssociator.java Wed Oct 30 11:26:19 2013
@@ -0,0 +1,31 @@
+/*
+ * 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.core.rest.controller;
+
+import java.util.Collection;
+import org.apache.syncope.common.to.AbstractAttributableTO;
+
+public abstract class AbstractResourceAssociator<T extends AbstractAttributableTO> {
+
+    public abstract T unlink(Long id, Collection<String> resources);
+
+    public abstract T unassign(Long id, Collection<String> resources);
+
+    public abstract T deprovision(Long userId, Collection<String> resources);
+}

Propchange: syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/AbstractResourceAssociator.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/AbstractResourceAssociator.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/AbstractResourceAssociator.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/ConnectorController.java
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/ConnectorController.java?rev=1537047&r1=1537046&r2=1537047&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/ConnectorController.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/ConnectorController.java Wed Oct 30 11:26:19 2013
@@ -363,8 +363,8 @@ public class ConnectorController extends
     }
 
     @PreAuthorize("hasRole('CONNECTOR_DELETE') and #bulkAction.operation == #bulkAction.operation.DELETE")
-    public BulkActionRes bulkAction(final BulkAction bulkAction) {
-        LOG.debug("Bulk action '{}' called on '{}'", bulkAction.getOperation(), bulkAction.getTargets());
+    public BulkActionRes bulk(final BulkAction bulkAction) {
+        LOG.debug("Bulk '{}' called on '{}'", bulkAction.getOperation(), bulkAction.getTargets());
 
         BulkActionRes res = new BulkActionRes();
 

Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/EntitlementController.java
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/EntitlementController.java?rev=1537047&r1=1537046&r2=1537047&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/EntitlementController.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/EntitlementController.java Wed Oct 30 11:26:19 2013
@@ -41,7 +41,7 @@ public class EntitlementController exten
     @Autowired
     private EntitlementDAO entitlementDAO;
 
-    public List<String> listEntitlements() {
+    public List<String> getAll() {
         List<Entitlement> entitlements = entitlementDAO.findAll();
         List<String> result = new ArrayList<String>(entitlements.size());
         for (Entitlement entitlement : entitlements) {
@@ -51,7 +51,7 @@ public class EntitlementController exten
         return result;
     }
 
-    public Set<String> getEntitlements() {
+    public Set<String> getOwn() {
         Set<String> result = EntitlementUtil.getOwnedEntitlementNames();
 
         auditManager.audit(Category.authentication, AuthenticationSubCategory.getEntitlements, Result.success,

Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/ResourceController.java
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/ResourceController.java?rev=1537047&r1=1537046&r2=1537047&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/ResourceController.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/ResourceController.java Wed Oct 30 11:26:19 2013
@@ -18,17 +18,12 @@
  */
 package org.apache.syncope.core.rest.controller;
 
-import java.lang.reflect.Method;
-import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
 import java.util.Set;
 import javax.persistence.EntityExistsException;
-import javax.ws.rs.core.Response;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.common.to.BulkAction;
 import org.apache.syncope.common.to.BulkActionRes;
-import org.apache.syncope.common.to.BulkAssociationAction;
 import org.apache.syncope.common.to.ConnObjectTO;
 import org.apache.syncope.common.to.ResourceTO;
 import org.apache.syncope.common.types.AttributableType;
@@ -38,7 +33,6 @@ import org.apache.syncope.common.types.A
 import org.apache.syncope.common.types.AuditElements.Result;
 import org.apache.syncope.common.types.MappingPurpose;
 import org.apache.syncope.common.types.ClientExceptionType;
-import org.apache.syncope.common.validation.SyncopeClientCompositeException;
 import org.apache.syncope.common.validation.SyncopeClientException;
 import org.apache.syncope.core.audit.AuditManager;
 import org.apache.syncope.core.connid.ConnObjectUtil;
@@ -92,12 +86,6 @@ public class ResourceController extends 
     @Autowired
     private ImplementationClassNamesLoader classNamesLoader;
 
-    @Autowired
-    private UserController userController;
-
-    @Autowired
-    private RoleController roleController;
-
     /**
      * ConnectorObject util.
      */
@@ -244,8 +232,8 @@ public class ResourceController extends 
             throw new NotFoundException("AccountId mapping for " + type + " " + id + " on resource '" + resourceName
                     + "'");
         }
-        final String accountIdValue =
-                MappingUtil.getAccountIdValue(attributable, resource, attrUtil.getAccountIdItem(resource));
+        final String accountIdValue = MappingUtil.getAccountIdValue(
+                attributable, resource, attrUtil.getAccountIdItem(resource));
 
         final ObjectClass objectClass = AttributableType.USER == type ? ObjectClass.ACCOUNT : ObjectClass.GROUP;
 
@@ -298,8 +286,8 @@ public class ResourceController extends 
     }
 
     @PreAuthorize("hasRole('RESOURCE_DELETE') and #bulkAction.operation == #bulkAction.operation.DELETE")
-    public BulkActionRes bulkAction(final BulkAction bulkAction) {
-        LOG.debug("Bulk action '{}' called on '{}'", bulkAction.getOperation(), bulkAction.getTargets());
+    public BulkActionRes bulk(final BulkAction bulkAction) {
+        LOG.debug("Bulk '{}' called on '{}'", bulkAction.getOperation(), bulkAction.getTargets());
 
         BulkActionRes res = new BulkActionRes();
 
@@ -316,47 +304,4 @@ public class ResourceController extends 
 
         return res;
     }
-
-    public BulkActionRes usersBulkAssociationAction(
-            final String resourceName, final BulkAssociationAction bulkAction) {
-        return bulkAssociationActionDelegate(userController, bulkAction, resourceName);
-    }
-
-    public BulkActionRes rolesBulkAssociationAction(
-            final String resourceName, final BulkAssociationAction bulkAction) {
-        return bulkAssociationActionDelegate(roleController, bulkAction, resourceName);
-    }
-
-    private BulkActionRes bulkAssociationActionDelegate(
-            final Object obj,
-            final BulkAssociationAction bulkAction,
-            final String resourceName) {
-
-        final String methodName = bulkAction.getOperation().name().toLowerCase();
-
-        try {
-            final Method method = obj.getClass().getMethod(methodName, Long.class, Collection.class);
-
-            final BulkActionRes res = new BulkActionRes();
-
-            for (Long id : bulkAction.getTargets()) {
-                try {
-                    // audit is delegated to the called userController method ...
-                    method.invoke(obj, id, Collections.<String>singleton(resourceName));
-                    res.add(id, BulkActionRes.Status.SUCCESS);
-                } catch (Exception e) {
-                    LOG.warn("Error performing {} of user {}", methodName, id, e);
-                    res.add(id, BulkActionRes.Status.FAILURE);
-                }
-            }
-
-            return res;
-        } catch (Exception e) {
-            LOG.error("Error retrieving {} method", methodName, e);
-
-            SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.Unknown);
-            sce.getElements().add("Operation execution failed");
-            throw sce;
-        }
-    }
 }

Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/RoleController.java
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/RoleController.java?rev=1537047&r1=1537046&r2=1537047&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/RoleController.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/RoleController.java Wed Oct 30 11:26:19 2013
@@ -24,7 +24,6 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Set;
 import javax.annotation.Resource;
-import javax.ws.rs.core.Response;
 import org.apache.syncope.common.mod.RoleMod;
 import org.apache.syncope.common.search.NodeCond;
 import org.apache.syncope.common.services.InvalidSearchConditionException;
@@ -35,7 +34,6 @@ import org.apache.syncope.common.types.A
 import org.apache.syncope.common.types.AuditElements.Result;
 import org.apache.syncope.common.types.AuditElements.RoleSubCategory;
 import org.apache.syncope.common.types.ClientExceptionType;
-import org.apache.syncope.common.validation.SyncopeClientCompositeException;
 import org.apache.syncope.common.validation.SyncopeClientException;
 import org.apache.syncope.core.audit.AuditManager;
 import org.apache.syncope.core.persistence.beans.PropagationTask;
@@ -65,7 +63,7 @@ import org.springframework.stereotype.Co
 import org.springframework.transaction.annotation.Transactional;
 
 @Component
-public class RoleController {
+public class RoleController extends AbstractResourceAssociator<RoleTO> {
 
     /**
      * Logger.
@@ -122,7 +120,7 @@ public class RoleController {
     @PreAuthorize("isAuthenticated() "
             + "and not(hasRole(T(org.apache.syncope.common.SyncopeConstants).ANONYMOUS_ENTITLEMENT))")
     @Transactional(readOnly = true)
-    public RoleTO selfRead(final Long roleId) {
+    public RoleTO readSelf(final Long roleId) {
         // Explicit search instead of using binder.getRoleFromId() in order to bypass auth checks - will do here
         SyncopeRole role = roleDAO.find(roleId);
         if (role == null) {
@@ -390,6 +388,7 @@ public class RoleController {
 
     @PreAuthorize("hasRole('ROLE_UPDATE')")
     @Transactional(rollbackFor = { Throwable.class })
+    @Override
     public RoleTO unlink(final Long roleId, final Collection<String> resources) {
         LOG.debug("About to unlink role({}) and resources {}", roleId, resources);
 
@@ -412,6 +411,7 @@ public class RoleController {
 
     @PreAuthorize("hasRole('ROLE_UPDATE')")
     @Transactional(rollbackFor = { Throwable.class })
+    @Override
     public RoleTO unassign(final Long roleId, final Collection<String> resources) {
         LOG.debug("About to unassign role({}) and resources {}", roleId, resources);
 
@@ -424,6 +424,7 @@ public class RoleController {
 
     @PreAuthorize("hasRole('ROLE_UPDATE')")
     @Transactional(rollbackFor = { Throwable.class })
+    @Override
     public RoleTO deprovision(final Long roleId, final Collection<String> resources) {
         LOG.debug("About to deprovision role({}) from resources {}", roleId, resources);
 

Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/TaskController.java
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/TaskController.java?rev=1537047&r1=1537046&r2=1537047&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/TaskController.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/TaskController.java Wed Oct 30 11:26:19 2013
@@ -391,8 +391,8 @@ public class TaskController extends Abst
             + "(hasRole('TASK_EXECUTE') and "
             + "(#bulkAction.operation == #bulkAction.operation.EXECUTE or "
             + "#bulkAction.operation == #bulkAction.operation.DRYRUN))")
-    public BulkActionRes bulkAction(final BulkAction bulkAction) {
-        LOG.debug("Bulk action '{}' called on '{}'", bulkAction.getOperation(), bulkAction.getTargets());
+    public BulkActionRes bulk(final BulkAction bulkAction) {
+        LOG.debug("Bulk '{}' called on '{}'", bulkAction.getOperation(), bulkAction.getTargets());
 
         BulkActionRes res = new BulkActionRes();