Repository: syncope Updated Branches: refs/heads/1_2_X e1c258763 -> 261233722 refs/heads/master 3eb0bfb6c -> 97607b16e
[SYNCOPE-676] Various improvements including a new optional 'details' boolean parameter for list and search, defaulting to true to keep backward compatibility Project: http://git-wip-us.apache.org/repos/asf/syncope/repo Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/26123372 Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/26123372 Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/26123372 Branch: refs/heads/1_2_X Commit: 2612337228f1fbd3818f61c4dd3371b7bf1d37fb Parents: e1c2587 Author: Francesco Chicchiriccò <[email protected]> Authored: Mon Jul 6 15:58:37 2015 +0200 Committer: Francesco Chicchiriccò <[email protected]> Committed: Mon Jul 6 15:58:37 2015 +0200 ---------------------------------------------------------------------- .../syncope/common/services/JAXRSService.java | 2 + .../syncope/common/services/RoleService.java | 8 +- .../syncope/common/services/UserService.java | 8 +- .../syncope/console/commons/Constants.java | 2 - .../pages/DisplayAttributesModalPage.java | 46 +---------- .../pages/panels/UserSearchResultPanel.java | 13 +--- .../syncope/console/rest/RoleRestClient.java | 12 ++- .../syncope/console/rest/UserRestClient.java | 4 +- .../pages/DisplayAttributesModalPage.html | 2 - .../syncope/console/ReportTestITCase.java | 4 +- .../core/notification/NotificationManager.java | 10 +-- .../syncope/core/report/RoleReportlet.java | 2 +- .../syncope/core/report/UserReportlet.java | 4 +- .../controller/AbstractSubjectController.java | 5 +- .../core/rest/controller/RoleController.java | 22 +++--- .../core/rest/controller/UserController.java | 12 +-- .../syncope/core/rest/data/RoleDataBinder.java | 80 ++++++++++---------- .../syncope/core/rest/data/UserDataBinder.java | 51 +++++++------ .../syncope/core/services/RoleServiceImpl.java | 24 +++--- .../syncope/core/services/UserServiceImpl.java | 24 +++--- .../core/sync/impl/RolePushResultHandler.java | 4 +- .../activiti/ActivitiUserWorkflowAdapter.java | 4 +- core/src/main/resources/indexes.xml | 28 ++++++- 23 files changed, 189 insertions(+), 182 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/syncope/blob/26123372/common/src/main/java/org/apache/syncope/common/services/JAXRSService.java ---------------------------------------------------------------------- diff --git a/common/src/main/java/org/apache/syncope/common/services/JAXRSService.java b/common/src/main/java/org/apache/syncope/common/services/JAXRSService.java index c801bb1..757d298 100644 --- a/common/src/main/java/org/apache/syncope/common/services/JAXRSService.java +++ b/common/src/main/java/org/apache/syncope/common/services/JAXRSService.java @@ -36,4 +36,6 @@ public interface JAXRSService { final String PARAM_ORDERBY = "orderby"; + final String PARAM_DETAILS = "details"; + } http://git-wip-us.apache.org/repos/asf/syncope/blob/26123372/common/src/main/java/org/apache/syncope/common/services/RoleService.java ---------------------------------------------------------------------- diff --git a/common/src/main/java/org/apache/syncope/common/services/RoleService.java b/common/src/main/java/org/apache/syncope/common/services/RoleService.java index 1f4e45b..9bd1588 100644 --- a/common/src/main/java/org/apache/syncope/common/services/RoleService.java +++ b/common/src/main/java/org/apache/syncope/common/services/RoleService.java @@ -138,6 +138,7 @@ public interface RoleService extends JAXRSService { * @param page result page number * @param size number of entries per page * @param orderBy list of ordering clauses, separated by comma + * @param details whether include all details or not, defaults to true * @return paged list of existing roles matching page/size conditions */ @GET @@ -145,7 +146,8 @@ public interface RoleService extends JAXRSService { PagedResult<RoleTO> list( @NotNull @Min(1) @QueryParam(PARAM_PAGE) @DefaultValue(DEFAULT_PARAM_PAGE) Integer page, @NotNull @Min(1) @QueryParam(PARAM_SIZE) @DefaultValue(DEFAULT_PARAM_SIZE) Integer size, - @QueryParam(PARAM_ORDERBY) String orderBy); + @QueryParam(PARAM_ORDERBY) String orderBy, + @QueryParam(PARAM_DETAILS) @DefaultValue("true") boolean details); /** * Returns a paged list of roles matching the provided FIQL search condition. @@ -193,6 +195,7 @@ public interface RoleService extends JAXRSService { * @param page result page number * @param size number of entries per page * @param orderBy list of ordering clauses, separated by comma + * @param details whether include all details or not, defaults to true * @return paged list of roles matching the provided FIQL search condition */ @GET @@ -201,7 +204,8 @@ public interface RoleService extends JAXRSService { PagedResult<RoleTO> search(@QueryParam(PARAM_FIQL) String fiql, @NotNull @Min(1) @QueryParam(PARAM_PAGE) @DefaultValue(DEFAULT_PARAM_PAGE) Integer page, @NotNull @Min(1) @QueryParam(PARAM_SIZE) @DefaultValue(DEFAULT_PARAM_SIZE) Integer size, - @QueryParam(PARAM_ORDERBY) String orderBy); + @QueryParam(PARAM_ORDERBY) String orderBy, + @QueryParam(PARAM_DETAILS) @DefaultValue("true") boolean details); /** * Creates a new role. http://git-wip-us.apache.org/repos/asf/syncope/blob/26123372/common/src/main/java/org/apache/syncope/common/services/UserService.java ---------------------------------------------------------------------- diff --git a/common/src/main/java/org/apache/syncope/common/services/UserService.java b/common/src/main/java/org/apache/syncope/common/services/UserService.java index c720218..270920f 100644 --- a/common/src/main/java/org/apache/syncope/common/services/UserService.java +++ b/common/src/main/java/org/apache/syncope/common/services/UserService.java @@ -131,6 +131,7 @@ public interface UserService extends JAXRSService { * @param page result page number * @param size number of entries per page * @param orderBy list of ordering clauses, separated by comma + * @param details whether include all details or not, defaults to true * @return paged list of existing users matching page/size conditions */ @GET @@ -138,7 +139,8 @@ public interface UserService extends JAXRSService { PagedResult<UserTO> list( @NotNull @Min(1) @QueryParam(PARAM_PAGE) @DefaultValue(DEFAULT_PARAM_PAGE) Integer page, @NotNull @Min(1) @QueryParam(PARAM_SIZE) @DefaultValue(DEFAULT_PARAM_SIZE) Integer size, - @QueryParam(PARAM_ORDERBY) String orderBy); + @QueryParam(PARAM_ORDERBY) String orderBy, + @QueryParam(PARAM_DETAILS) @DefaultValue("true") boolean details); /** * Returns a paged list of users matching the provided FIQL search condition. @@ -185,6 +187,7 @@ public interface UserService extends JAXRSService { * @param page result page number * @param size number of entries per page * @param orderBy list of ordering clauses, separated by comma + * @param details whether include all details or not, defaults to true * @return paged list of users matching the provided FIQL search condition */ @GET @@ -193,7 +196,8 @@ public interface UserService extends JAXRSService { PagedResult<UserTO> search(@QueryParam(PARAM_FIQL) String fiql, @NotNull @Min(1) @QueryParam(PARAM_PAGE) @DefaultValue(DEFAULT_PARAM_PAGE) Integer page, @NotNull @Min(1) @QueryParam(PARAM_SIZE) @DefaultValue(DEFAULT_PARAM_SIZE) Integer size, - @QueryParam(PARAM_ORDERBY) String orderBy); + @QueryParam(PARAM_ORDERBY) String orderBy, + @QueryParam(PARAM_DETAILS) @DefaultValue("true") boolean details); /** * Creates a new user. http://git-wip-us.apache.org/repos/asf/syncope/blob/26123372/console/src/main/java/org/apache/syncope/console/commons/Constants.java ---------------------------------------------------------------------- diff --git a/console/src/main/java/org/apache/syncope/console/commons/Constants.java b/console/src/main/java/org/apache/syncope/console/commons/Constants.java index 92f8d77..d43759d 100644 --- a/console/src/main/java/org/apache/syncope/console/commons/Constants.java +++ b/console/src/main/java/org/apache/syncope/console/commons/Constants.java @@ -46,8 +46,6 @@ public final class Constants { public static final String PREF_USERS_DERIVED_ATTRIBUTES_VIEW = "users.derived.attributes.view"; - public static final String PREF_USERS_VIRTUAL_ATTRIBUTES_VIEW = "users.virtual.attributes.view"; - public static final String PREF_CONF_SCHEMA_PAGINATOR_ROWS = "conf.schema.paginator.rows"; public static final String PREF_USER_SCHEMA_PAGINATOR_ROWS = "user.schema.paginator.rows"; http://git-wip-us.apache.org/repos/asf/syncope/blob/26123372/console/src/main/java/org/apache/syncope/console/pages/DisplayAttributesModalPage.java ---------------------------------------------------------------------- diff --git a/console/src/main/java/org/apache/syncope/console/pages/DisplayAttributesModalPage.java b/console/src/main/java/org/apache/syncope/console/pages/DisplayAttributesModalPage.java index 724b7cd..dd60881 100644 --- a/console/src/main/java/org/apache/syncope/console/pages/DisplayAttributesModalPage.java +++ b/console/src/main/java/org/apache/syncope/console/pages/DisplayAttributesModalPage.java @@ -68,10 +68,8 @@ public class DisplayAttributesModalPage extends BaseModalPage { private final List<String> selectedDerSchemas; - private final List<String> selectedVirSchemas; - public DisplayAttributesModalPage(final PageReference pageRef, final ModalWindow window, - final List<String> schemaNames, final List<String> dSchemaNames, final List<String> vSchemaNames) { + final List<String> schemaNames, final List<String> dSchemaNames) { super(); @@ -105,16 +103,6 @@ public class DisplayAttributesModalPage extends BaseModalPage { } }; - final IModel<List<String>> vsnames = new LoadableDetachableModel<List<String>>() { - - private static final long serialVersionUID = 5275935387613157437L; - - @Override - protected List<String> load() { - return vSchemaNames; - } - }; - final Form form = new Form(FORM); form.setModel(new CompoundPropertyModel(this)); @@ -124,8 +112,6 @@ public class DisplayAttributesModalPage extends BaseModalPage { selectedDerSchemas = prefMan.getList(getRequest(), Constants.PREF_USERS_DERIVED_ATTRIBUTES_VIEW); - selectedVirSchemas = prefMan.getList(getRequest(), Constants.PREF_USERS_VIRTUAL_ATTRIBUTES_VIEW); - final CheckGroup dgroup = new CheckGroup("dCheckGroup", new PropertyModel(this, "selectedDetails")); form.add(dgroup); @@ -191,39 +177,13 @@ public class DisplayAttributesModalPage extends BaseModalPage { dsgroup.add(derSchemas); } - if (vsnames.getObject() == null || vsnames.getObject().isEmpty()) { - final Fragment fragment = new Fragment("vschemas", "emptyFragment", form); - form.add(fragment); - - selectedVirSchemas.clear(); - } else { - final Fragment fragment = new Fragment("vschemas", "vsfragment", form); - form.add(fragment); - - final CheckGroup vsgroup = new CheckGroup("vsCheckGroup", new PropertyModel(this, "selectedVirSchemas")); - fragment.add(vsgroup); - - final ListView<String> virSchemas = new ListView<String>("virSchemas", vsnames) { - - private static final long serialVersionUID = 9101744072914090143L; - - @Override - protected void populateItem(ListItem<String> item) { - item.add(new Check("vscheck", item.getModel())); - item.add(new Label("vsname", new ResourceModel(item.getModelObject(), item.getModelObject()))); - } - }; - vsgroup.add(virSchemas); - } - final AjaxButton submit = new IndicatingAjaxButton(SUBMIT, new ResourceModel(SUBMIT)) { private static final long serialVersionUID = -4804368561204623354L; @Override protected void onSubmit(final AjaxRequestTarget target, final Form<?> form) { - if (selectedDetails.size() + selectedSchemas.size() + selectedVirSchemas.size() + selectedDerSchemas. - size() + if (selectedDetails.size() + selectedSchemas.size() + selectedDerSchemas.size() > MAX_SELECTIONS) { error(getString("tooManySelections")); @@ -237,8 +197,6 @@ public class DisplayAttributesModalPage extends BaseModalPage { prefs.put(Constants.PREF_USERS_DERIVED_ATTRIBUTES_VIEW, selectedDerSchemas); - prefs.put(Constants.PREF_USERS_VIRTUAL_ATTRIBUTES_VIEW, selectedVirSchemas); - prefMan.setList(getRequest(), getResponse(), prefs); ((BasePage) pageRef.getPage()).setModalResult(true); http://git-wip-us.apache.org/repos/asf/syncope/blob/26123372/console/src/main/java/org/apache/syncope/console/pages/panels/UserSearchResultPanel.java ---------------------------------------------------------------------- diff --git a/console/src/main/java/org/apache/syncope/console/pages/panels/UserSearchResultPanel.java b/console/src/main/java/org/apache/syncope/console/pages/panels/UserSearchResultPanel.java index 84b9e31..c519c52 100644 --- a/console/src/main/java/org/apache/syncope/console/pages/panels/UserSearchResultPanel.java +++ b/console/src/main/java/org/apache/syncope/console/pages/panels/UserSearchResultPanel.java @@ -69,8 +69,6 @@ public class UserSearchResultPanel extends AbstractSearchResultPanel { private final List<String> dSchemaNames; - private final List<String> vSchemaNames; - public <T extends AbstractAttributableTO> UserSearchResultPanel(final String id, final boolean filtered, final String fiql, final PageReference callerRef, final AbstractSubjectRestClient restClient) { @@ -78,7 +76,6 @@ public class UserSearchResultPanel extends AbstractSearchResultPanel { this.schemaNames = schemaRestClient.getSchemaNames(AttributableType.USER); this.dSchemaNames = schemaRestClient.getDerSchemaNames(AttributableType.USER); - this.vSchemaNames = schemaRestClient.getVirSchemaNames(AttributableType.USER); initResultTable(); } @@ -113,12 +110,6 @@ public class UserSearchResultPanel extends AbstractSearchResultPanel { } } - for (String name : prefMan.getList(getRequest(), Constants.PREF_USERS_VIRTUAL_ATTRIBUTES_VIEW)) { - if (vSchemaNames.contains(name)) { - columns.add(new AttrColumn(name, SchemaType.VIRTUAL)); - } - } - // Add defaults in case of no selection if (columns.isEmpty()) { for (String name : DisplayAttributesModalPage.DEFAULT_SELECTION) { @@ -252,8 +243,8 @@ public class UserSearchResultPanel extends AbstractSearchResultPanel { @Override public Page createPage() { - return new DisplayAttributesModalPage(page.getPageReference(), displaymodal, - schemaNames, dSchemaNames, vSchemaNames); + return new DisplayAttributesModalPage( + page.getPageReference(), displaymodal, schemaNames, dSchemaNames); } }); http://git-wip-us.apache.org/repos/asf/syncope/blob/26123372/console/src/main/java/org/apache/syncope/console/rest/RoleRestClient.java ---------------------------------------------------------------------- diff --git a/console/src/main/java/org/apache/syncope/console/rest/RoleRestClient.java b/console/src/main/java/org/apache/syncope/console/rest/RoleRestClient.java index e5a7587..a26a5cf 100644 --- a/console/src/main/java/org/apache/syncope/console/rest/RoleRestClient.java +++ b/console/src/main/java/org/apache/syncope/console/rest/RoleRestClient.java @@ -18,6 +18,7 @@ */ package org.apache.syncope.console.rest; +import java.util.ArrayList; import java.util.List; import javax.ws.rs.core.Response; @@ -53,12 +54,17 @@ public class RoleRestClient extends AbstractSubjectRestClient { } public List<RoleTO> list() { - return getService(RoleService.class).list(1, 1000).getResult(); + final List<RoleTO> allRoles = new ArrayList<RoleTO>(); + final int count = count(); + for (int page = 1; page <= (count / 100) + 1; page++) { + allRoles.addAll(getService(RoleService.class).list(page, 100, null, false).getResult()); + } + return allRoles; } @Override public List<RoleTO> list(final int page, final int size, final SortParam<String> sort) { - return getService(RoleService.class).list(page, size, toOrderBy(sort)).getResult(); + return getService(RoleService.class).list(page, size, toOrderBy(sort), false).getResult(); } @Override @@ -68,7 +74,7 @@ public class RoleRestClient extends AbstractSubjectRestClient { @Override public List<RoleTO> search(final String fiql, final int page, final int size, final SortParam<String> sort) { - return getService(RoleService.class).search(fiql, page, size, toOrderBy(sort)).getResult(); + return getService(RoleService.class).search(fiql, page, size, toOrderBy(sort), false).getResult(); } @Override http://git-wip-us.apache.org/repos/asf/syncope/blob/26123372/console/src/main/java/org/apache/syncope/console/rest/UserRestClient.java ---------------------------------------------------------------------- diff --git a/console/src/main/java/org/apache/syncope/console/rest/UserRestClient.java b/console/src/main/java/org/apache/syncope/console/rest/UserRestClient.java index f9e73ee..b064fd3 100644 --- a/console/src/main/java/org/apache/syncope/console/rest/UserRestClient.java +++ b/console/src/main/java/org/apache/syncope/console/rest/UserRestClient.java @@ -55,7 +55,7 @@ public class UserRestClient extends AbstractSubjectRestClient { @Override public List<UserTO> list(final int page, final int size, final SortParam<String> sort) { - return getService(UserService.class).list(page, size, toOrderBy(sort)).getResult(); + return getService(UserService.class).list(page, size, toOrderBy(sort), false).getResult(); } public UserTO create(final UserTO userTO, final boolean storePassword) { @@ -101,7 +101,7 @@ public class UserRestClient extends AbstractSubjectRestClient { @Override public List<UserTO> search(final String fiql, final int page, final int size, final SortParam<String> sort) { - return getService(UserService.class).search(fiql, page, size, toOrderBy(sort)).getResult(); + return getService(UserService.class).search(fiql, page, size, toOrderBy(sort), false).getResult(); } @Override http://git-wip-us.apache.org/repos/asf/syncope/blob/26123372/console/src/main/resources/org/apache/syncope/console/pages/DisplayAttributesModalPage.html ---------------------------------------------------------------------- diff --git a/console/src/main/resources/org/apache/syncope/console/pages/DisplayAttributesModalPage.html b/console/src/main/resources/org/apache/syncope/console/pages/DisplayAttributesModalPage.html index 9d9d233..bb1ba9d 100644 --- a/console/src/main/resources/org/apache/syncope/console/pages/DisplayAttributesModalPage.html +++ b/console/src/main/resources/org/apache/syncope/console/pages/DisplayAttributesModalPage.html @@ -81,8 +81,6 @@ under the License. <span wicket:id="dschemas">[derived schemas]</span> - <span wicket:id="vschemas">[virtual schemas]</span> - </div> <wicket:fragment wicket:id="sfragment"> http://git-wip-us.apache.org/repos/asf/syncope/blob/26123372/console/src/test/java/org/apache/syncope/console/ReportTestITCase.java ---------------------------------------------------------------------- diff --git a/console/src/test/java/org/apache/syncope/console/ReportTestITCase.java b/console/src/test/java/org/apache/syncope/console/ReportTestITCase.java index fae8233..59319a6 100644 --- a/console/src/test/java/org/apache/syncope/console/ReportTestITCase.java +++ b/console/src/test/java/org/apache/syncope/console/ReportTestITCase.java @@ -30,7 +30,7 @@ public class ReportTestITCase extends AbstractTest { seleniumDriver.findElement(By.xpath("//img[@alt=\"Reports\"]")).click(); wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//div[@id='tabs']"))); - seleniumDriver.findElement(By.xpath("//table/tbody/tr/td[8]/div/span[13]/a")).click(); + seleniumDriver.findElement(By.xpath("//table/tbody/tr/td[9]/div/span[13]/a")).click(); wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//iframe"))); seleniumDriver.switchTo().frame(0); @@ -72,7 +72,7 @@ public class ReportTestITCase extends AbstractTest { wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//div[@id='tabs']"))); - seleniumDriver.findElement(By.xpath("//table/tbody/tr/td[8]/div/span[6]/a")).click(); + seleniumDriver.findElement(By.xpath("//table/tbody/tr/td[9]/div/span[6]/a")).click(); wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("feedback"))); assertTrue(seleniumDriver.findElement(By.tagName("body")).getText().contains("Operation executed successfully")); http://git-wip-us.apache.org/repos/asf/syncope/blob/26123372/core/src/main/java/org/apache/syncope/core/notification/NotificationManager.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/syncope/core/notification/NotificationManager.java b/core/src/main/java/org/apache/syncope/core/notification/NotificationManager.java index 48caa54..fead0a1 100644 --- a/core/src/main/java/org/apache/syncope/core/notification/NotificationManager.java +++ b/core/src/main/java/org/apache/syncope/core/notification/NotificationManager.java @@ -202,7 +202,7 @@ public class NotificationManager { LOG.warn("{} cannot be notified: {} not found", recipient, notification.getRecipientAttrName()); } else { recipientEmails.add(email); - recipientTOs.add(userDataBinder.getUserTO(recipient)); + recipientTOs.add(userDataBinder.getUserTO(recipient, true)); } } @@ -324,20 +324,20 @@ public class NotificationManager { model.put("input", input); if (subject instanceof SyncopeUser) { - model.put("user", userDataBinder.getUserTO((SyncopeUser) subject)); + model.put("user", userDataBinder.getUserTO((SyncopeUser) subject, true)); } else if (subject instanceof SyncopeRole) { - model.put("role", roleDataBinder.getRoleTO((SyncopeRole) subject)); + model.put("role", roleDataBinder.getRoleTO((SyncopeRole) subject, true)); } NotificationTask notificationTask = getNotificationTask(notification, subject, model); notificationTask = taskDAO.save(notificationTask); - notificationList.add(notificationTask); + notificationList.add(notificationTask); } } else { LOG.debug("Notification {}, userAbout {}, roleAbout {} is deactivated, " + "notification task will not be created", notification.getId(), notification.getUserAbout(), notification.getRoleAbout()); } - } + } return notificationList; } http://git-wip-us.apache.org/repos/asf/syncope/blob/26123372/core/src/main/java/org/apache/syncope/core/report/RoleReportlet.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/syncope/core/report/RoleReportlet.java b/core/src/main/java/org/apache/syncope/core/report/RoleReportlet.java index dae1259..aa8b93f 100644 --- a/core/src/main/java/org/apache/syncope/core/report/RoleReportlet.java +++ b/core/src/main/java/org/apache/syncope/core/report/RoleReportlet.java @@ -231,7 +231,7 @@ public class RoleReportlet extends AbstractReportlet<RoleReportletConf> { // Using RoleTO for attribute values, since the conversion logic of // values to String is already encapsulated there - RoleTO roleTO = roleDataBinder.getRoleTO(role); + RoleTO roleTO = roleDataBinder.getRoleTO(role, true); doExtractAttributes(handler, roleTO, conf.getAttrs(), conf.getDerAttrs(), conf.getVirAttrs()); http://git-wip-us.apache.org/repos/asf/syncope/blob/26123372/core/src/main/java/org/apache/syncope/core/report/UserReportlet.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/syncope/core/report/UserReportlet.java b/core/src/main/java/org/apache/syncope/core/report/UserReportlet.java index 30bdac0..a54ac53 100644 --- a/core/src/main/java/org/apache/syncope/core/report/UserReportlet.java +++ b/core/src/main/java/org/apache/syncope/core/report/UserReportlet.java @@ -269,7 +269,7 @@ public class UserReportlet extends AbstractReportlet<UserReportletConf> { // Using UserTO for attribute values, since the conversion logic of // values to String is already encapsulated there - UserTO userTO = userDataBinder.getUserTO(user); + UserTO userTO = userDataBinder.getUserTO(user, true); doExtractAttributes(handler, userTO, conf.getAttrs(), conf.getDerAttrs(), conf.getVirAttrs()); @@ -293,7 +293,7 @@ public class UserReportlet extends AbstractReportlet<UserReportletConf> { LOG.warn("Unexpected: cannot find membership for role {} for user {}", memb.getRoleId(), user); } else { - doExtractResources(handler, roleDataBinder.getRoleTO(actualMemb.getSyncopeRole())); + doExtractResources(handler, roleDataBinder.getRoleTO(actualMemb.getSyncopeRole(), true)); } } http://git-wip-us.apache.org/repos/asf/syncope/blob/26123372/core/src/main/java/org/apache/syncope/core/rest/controller/AbstractSubjectController.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/syncope/core/rest/controller/AbstractSubjectController.java b/core/src/main/java/org/apache/syncope/core/rest/controller/AbstractSubjectController.java index 8ae6581..a7bb91f 100644 --- a/core/src/main/java/org/apache/syncope/core/rest/controller/AbstractSubjectController.java +++ b/core/src/main/java/org/apache/syncope/core/rest/controller/AbstractSubjectController.java @@ -35,9 +35,10 @@ public abstract class AbstractSubjectController<T extends AbstractSubjectTO, V e public abstract T delete(Long id); - public abstract List<T> list(int page, int size, List<OrderByClause> orderBy); + public abstract List<T> list(int page, int size, List<OrderByClause> orderBy, boolean includeDetails); - public abstract List<T> search(SearchCond searchCondition, int page, int size, List<OrderByClause> orderBy); + public abstract List<T> search(SearchCond searchCondition, + int page, int size, List<OrderByClause> orderBy, boolean includeDetails); public abstract int searchCount(SearchCond searchCondition); } http://git-wip-us.apache.org/repos/asf/syncope/blob/26123372/core/src/main/java/org/apache/syncope/core/rest/controller/RoleController.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/syncope/core/rest/controller/RoleController.java b/core/src/main/java/org/apache/syncope/core/rest/controller/RoleController.java index a64bdb5..c8fb25f 100644 --- a/core/src/main/java/org/apache/syncope/core/rest/controller/RoleController.java +++ b/core/src/main/java/org/apache/syncope/core/rest/controller/RoleController.java @@ -111,7 +111,7 @@ public class RoleController extends AbstractSubjectController<RoleTO, RoleMod> { throw new NotFoundException("Role " + roleId); } - return binder.getRoleTO(role); + return binder.getRoleTO(role, true); } @PreAuthorize("isAuthenticated() " @@ -138,7 +138,7 @@ public class RoleController extends AbstractSubjectController<RoleTO, RoleMod> { throw new UnauthorizedRoleException(role.getId()); } - return binder.getRoleTO(role); + return binder.getRoleTO(role, true); } @PreAuthorize("hasRole('ROLE_READ')") @@ -153,12 +153,12 @@ public class RoleController extends AbstractSubjectController<RoleTO, RoleMod> { RoleTO result = role.getParent() == null ? null - : binder.getRoleTO(role.getParent()); + : binder.getRoleTO(role.getParent(), true); return result; } - @PreAuthorize("hasRole('ROLE_READ')") + @PreAuthorize("hasRole('ROLE_LIST')") @Transactional(readOnly = true) public List<RoleTO> children(final Long roleId) { SyncopeRole role = binder.getRoleFromId(roleId); @@ -169,7 +169,7 @@ public class RoleController extends AbstractSubjectController<RoleTO, RoleMod> { List<RoleTO> childrenTOs = new ArrayList<RoleTO>(children.size()); for (SyncopeRole child : children) { if (allowedRoleIds.contains(child.getId())) { - childrenTOs.add(binder.getRoleTO(child)); + childrenTOs.add(binder.getRoleTO(child, true)); } } @@ -186,12 +186,14 @@ public class RoleController extends AbstractSubjectController<RoleTO, RoleMod> { @PreAuthorize("isAuthenticated()") @Transactional(readOnly = true) @Override - public List<RoleTO> list(final int page, final int size, final List<OrderByClause> orderBy) { + public List<RoleTO> list( + final int page, final int size, final List<OrderByClause> orderBy, final boolean details) { + List<SyncopeRole> roles = roleDAO.findAll(page, size, orderBy); List<RoleTO> roleTOs = new ArrayList<RoleTO>(roles.size()); for (SyncopeRole role : roles) { - roleTOs.add(binder.getRoleTO(role)); + roleTOs.add(binder.getRoleTO(role, details)); } return roleTOs; @@ -209,7 +211,7 @@ public class RoleController extends AbstractSubjectController<RoleTO, RoleMod> { @Transactional(readOnly = true, rollbackFor = { Throwable.class }) @Override public List<RoleTO> search(final SearchCond searchCondition, final int page, final int size, - final List<OrderByClause> orderBy) { + final List<OrderByClause> orderBy, final boolean details) { final List<SyncopeRole> matchingRoles = searchDAO.search( EntitlementUtil.getRoleIds(EntitlementUtil.getOwnedEntitlementNames()), @@ -217,7 +219,7 @@ public class RoleController extends AbstractSubjectController<RoleTO, RoleMod> { final List<RoleTO> result = new ArrayList<RoleTO>(matchingRoles.size()); for (SyncopeRole role : matchingRoles) { - result.add(binder.getRoleTO(role)); + result.add(binder.getRoleTO(role, details)); } return result; @@ -426,7 +428,7 @@ public class RoleController extends AbstractSubjectController<RoleTO, RoleMod> { propagationReporter.onPrimaryResourceFailure(tasks); } - final RoleTO updatedTO = binder.getRoleTO(role); + final RoleTO updatedTO = binder.getRoleTO(role, true); updatedTO.getPropagationStatusTOs().addAll(propagationReporter.getStatuses()); return updatedTO; } http://git-wip-us.apache.org/repos/asf/syncope/blob/26123372/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java b/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java index dc5fdd2..5cbd5de 100644 --- a/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java +++ b/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java @@ -147,13 +147,15 @@ public class UserController extends AbstractSubjectController<UserTO, UserMod> { @PreAuthorize("hasRole('USER_LIST')") @Transactional(readOnly = true, rollbackFor = { Throwable.class }) @Override - public List<UserTO> list(final int page, final int size, final List<OrderByClause> orderBy) { + public List<UserTO> list( + final int page, final int size, final List<OrderByClause> orderBy, final boolean details) { + Set<Long> adminRoleIds = EntitlementUtil.getRoleIds(EntitlementUtil.getOwnedEntitlementNames()); List<SyncopeUser> users = userDAO.findAll(adminRoleIds, page, size, orderBy); List<UserTO> userTOs = new ArrayList<UserTO>(users.size()); for (SyncopeUser user : users) { - userTOs.add(binder.getUserTO(user)); + userTOs.add(binder.getUserTO(user, details)); } return userTOs; @@ -177,7 +179,7 @@ public class UserController extends AbstractSubjectController<UserTO, UserMod> { @Transactional(readOnly = true) @Override public List<UserTO> search(final SearchCond searchCondition, final int page, final int size, - final List<OrderByClause> orderBy) { + final List<OrderByClause> orderBy, final boolean details) { final List<SyncopeUser> matchingUsers = searchDAO.search( EntitlementUtil.getRoleIds(EntitlementUtil.getOwnedEntitlementNames()), @@ -185,7 +187,7 @@ public class UserController extends AbstractSubjectController<UserTO, UserMod> { final List<UserTO> result = new ArrayList<UserTO>(matchingUsers.size()); for (SyncopeUser user : matchingUsers) { - result.add(binder.getUserTO(user)); + result.add(binder.getUserTO(user, details)); } return result; @@ -600,7 +602,7 @@ public class UserController extends AbstractSubjectController<UserTO, UserMod> { propagationReporter.onPrimaryResourceFailure(tasks); } - final UserTO updatedUserTO = binder.getUserTO(user); + final UserTO updatedUserTO = binder.getUserTO(user, true); updatedUserTO.getPropagationStatusTOs().addAll(propagationReporter.getStatuses()); return updatedUserTO; } http://git-wip-us.apache.org/repos/asf/syncope/blob/26123372/core/src/main/java/org/apache/syncope/core/rest/data/RoleDataBinder.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/syncope/core/rest/data/RoleDataBinder.java b/core/src/main/java/org/apache/syncope/core/rest/data/RoleDataBinder.java index 58029aa..fcd5c06 100644 --- a/core/src/main/java/org/apache/syncope/core/rest/data/RoleDataBinder.java +++ b/core/src/main/java/org/apache/syncope/core/rest/data/RoleDataBinder.java @@ -369,9 +369,7 @@ public class RoleDataBinder extends AbstractAttributableDataBinder { @SuppressWarnings("unchecked") @Transactional(readOnly = true) - public RoleTO getRoleTO(final SyncopeRole role) { - connObjectUtil.retrieveVirAttrValues(role, AttributableUtil.getInstance(AttributableType.ROLE)); - + public RoleTO getRoleTO(final SyncopeRole role, final boolean details) { RoleTO roleTO = new RoleTO(); // set sys info @@ -405,41 +403,6 @@ public class RoleDataBinder extends AbstractAttributableDataBinder { roleTO.setRoleOwner(role.getRoleOwner().getId()); } - // ------------------------- - // Retrieve all [derived/virtual] attributes (inherited and not) - // ------------------------- - final List<RAttr> allAttributes = role.findLastInheritedAncestorAttributes(); - - final List<RDerAttr> allDerAttributes = role.findLastInheritedAncestorDerivedAttributes(); - - final List<RVirAttr> allVirAttributes = role.findLastInheritedAncestorVirtualAttributes(); - // ------------------------- - - fillTO(roleTO, allAttributes, allDerAttributes, allVirAttributes, role.getResources()); - - for (Entitlement entitlement : role.getEntitlements()) { - roleTO.getEntitlements().add(entitlement.getName()); - } - - for (RAttrTemplate template : role.findInheritedTemplates(RAttrTemplate.class)) { - roleTO.getRAttrTemplates().add(template.getSchema().getName()); - } - for (RDerAttrTemplate template : role.findInheritedTemplates(RDerAttrTemplate.class)) { - roleTO.getRDerAttrTemplates().add(template.getSchema().getName()); - } - for (RVirAttrTemplate template : role.findInheritedTemplates(RVirAttrTemplate.class)) { - roleTO.getRVirAttrTemplates().add(template.getSchema().getName()); - } - for (MAttrTemplate template : role.findInheritedTemplates(MAttrTemplate.class)) { - roleTO.getMAttrTemplates().add(template.getSchema().getName()); - } - for (MDerAttrTemplate template : role.findInheritedTemplates(MDerAttrTemplate.class)) { - roleTO.getMDerAttrTemplates().add(template.getSchema().getName()); - } - for (MVirAttrTemplate template : role.findInheritedTemplates(MVirAttrTemplate.class)) { - roleTO.getMVirAttrTemplates().add(template.getSchema().getName()); - } - roleTO.setPasswordPolicy(role.getPasswordPolicy() == null ? null : role.getPasswordPolicy().getId()); @@ -447,11 +410,50 @@ public class RoleDataBinder extends AbstractAttributableDataBinder { ? null : role.getAccountPolicy().getId()); + if (details) { + // ------------------------- + // Retrieve all [derived/virtual] attributes (inherited and not) + // ------------------------- + connObjectUtil.retrieveVirAttrValues(role, AttributableUtil.getInstance(AttributableType.ROLE)); + + final List<RAttr> allAttributes = role.findLastInheritedAncestorAttributes(); + + final List<RDerAttr> allDerAttributes = role.findLastInheritedAncestorDerivedAttributes(); + + final List<RVirAttr> allVirAttributes = role.findLastInheritedAncestorVirtualAttributes(); + // ------------------------- + + fillTO(roleTO, allAttributes, allDerAttributes, allVirAttributes, role.getResources()); + + for (Entitlement entitlement : role.getEntitlements()) { + roleTO.getEntitlements().add(entitlement.getName()); + } + + for (RAttrTemplate template : role.findInheritedTemplates(RAttrTemplate.class)) { + roleTO.getRAttrTemplates().add(template.getSchema().getName()); + } + for (RDerAttrTemplate template : role.findInheritedTemplates(RDerAttrTemplate.class)) { + roleTO.getRDerAttrTemplates().add(template.getSchema().getName()); + } + for (RVirAttrTemplate template : role.findInheritedTemplates(RVirAttrTemplate.class)) { + roleTO.getRVirAttrTemplates().add(template.getSchema().getName()); + } + for (MAttrTemplate template : role.findInheritedTemplates(MAttrTemplate.class)) { + roleTO.getMAttrTemplates().add(template.getSchema().getName()); + } + for (MDerAttrTemplate template : role.findInheritedTemplates(MDerAttrTemplate.class)) { + roleTO.getMDerAttrTemplates().add(template.getSchema().getName()); + } + for (MVirAttrTemplate template : role.findInheritedTemplates(MVirAttrTemplate.class)) { + roleTO.getMVirAttrTemplates().add(template.getSchema().getName()); + } + } + return roleTO; } @Transactional(readOnly = true) public RoleTO getRoleTO(final Long roleId) { - return getRoleTO(getRoleFromId(roleId)); + return getRoleTO(getRoleFromId(roleId), true); } } http://git-wip-us.apache.org/repos/asf/syncope/blob/26123372/core/src/main/java/org/apache/syncope/core/rest/data/UserDataBinder.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/syncope/core/rest/data/UserDataBinder.java b/core/src/main/java/org/apache/syncope/core/rest/data/UserDataBinder.java index a904611..3ac56fc 100644 --- a/core/src/main/java/org/apache/syncope/core/rest/data/UserDataBinder.java +++ b/core/src/main/java/org/apache/syncope/core/rest/data/UserDataBinder.java @@ -163,7 +163,7 @@ public class UserDataBinder extends AbstractAttributableDataBinder { authUserTO.setUsername(adminUser); } else { SyncopeUser authUser = userDAO.find(authUsername); - authUserTO = getUserTO(authUser); + authUserTO = getUserTO(authUser, true); } return authUserTO; @@ -327,7 +327,7 @@ public class UserDataBinder extends AbstractAttributableDataBinder { // of the user object currently in memory (which has potentially // some modifications compared to the one stored in the DB membership = user.getMembership(membership.getSyncopeRole().getId()); - if (membershipToBeAddedRoleIds.contains(membership.getSyncopeRole().getId())) { + if (membership != null && membershipToBeAddedRoleIds.contains(membership.getSyncopeRole().getId())) { Set<Long> attributeIds = new HashSet<Long>(membership.getAttrs().size()); for (AbstractAttr attribute : membership.getAttrs()) { attributeIds.add(attribute.getId()); @@ -413,7 +413,7 @@ public class UserDataBinder extends AbstractAttributableDataBinder { } @Transactional(readOnly = true) - public UserTO getUserTO(final SyncopeUser user) { + public UserTO getUserTO(final SyncopeUser user, final boolean details) { UserTO userTO = new UserTO(); BeanUtils.copyProperties(user, userTO, IGNORE_USER_PROPERTIES); @@ -422,31 +422,36 @@ public class UserDataBinder extends AbstractAttributableDataBinder { userTO.setSecurityQuestion(user.getSecurityQuestion().getId()); } - connObjectUtil.retrieveVirAttrValues(user, AttributableUtil.getInstance(AttributableType.USER)); + if (details) { + connObjectUtil.retrieveVirAttrValues(user, AttributableUtil.getInstance(AttributableType.USER)); + } + fillTO(userTO, user.getAttrs(), user.getDerAttrs(), user.getVirAttrs(), user.getResources()); - MembershipTO membershipTO; - for (Membership membership : user.getMemberships()) { - membershipTO = new MembershipTO(); + if (details) { + for (Membership membership : user.getMemberships()) { + MembershipTO membershipTO = new MembershipTO(); - // set sys info - membershipTO.setCreator(membership.getCreator()); - membershipTO.setCreationDate(membership.getCreationDate()); - membershipTO.setLastModifier(membership.getLastModifier()); - membershipTO.setLastChangeDate(membership.getLastChangeDate()); + // set sys info + membershipTO.setCreator(membership.getCreator()); + membershipTO.setCreationDate(membership.getCreationDate()); + membershipTO.setLastModifier(membership.getLastModifier()); + membershipTO.setLastChangeDate(membership.getLastChangeDate()); - membershipTO.setId(membership.getId()); - membershipTO.setRoleId(membership.getSyncopeRole().getId()); - membershipTO.setRoleName(membership.getSyncopeRole().getName()); + membershipTO.setId(membership.getId()); + membershipTO.setRoleId(membership.getSyncopeRole().getId()); + membershipTO.setRoleName(membership.getSyncopeRole().getName()); - // SYNCOPE-458 retrieve also membership virtual attributes - connObjectUtil.retrieveVirAttrValues(membership, AttributableUtil.getInstance(AttributableType.MEMBERSHIP)); + // SYNCOPE-458 retrieve also membership virtual attributes + connObjectUtil.retrieveVirAttrValues(membership, AttributableUtil.getInstance( + AttributableType.MEMBERSHIP)); - fillTO(membershipTO, - membership.getAttrs(), membership.getDerAttrs(), membership.getVirAttrs(), - Collections.<ExternalResource>emptyList()); + fillTO(membershipTO, + membership.getAttrs(), membership.getDerAttrs(), membership.getVirAttrs(), + Collections.<ExternalResource>emptyList()); - userTO.getMemberships().add(membershipTO); + userTO.getMemberships().add(membershipTO); + } } return userTO; @@ -454,12 +459,12 @@ public class UserDataBinder extends AbstractAttributableDataBinder { @Transactional(readOnly = true) public UserTO getUserTO(final String username) { - return getUserTO(getUserFromUsername(username)); + return getUserTO(getUserFromUsername(username), true); } @Transactional(readOnly = true) public UserTO getUserTO(final Long userId) { - return getUserTO(getUserFromId(userId)); + return getUserTO(getUserFromId(userId), true); } /** http://git-wip-us.apache.org/repos/asf/syncope/blob/26123372/core/src/main/java/org/apache/syncope/core/services/RoleServiceImpl.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/syncope/core/services/RoleServiceImpl.java b/core/src/main/java/org/apache/syncope/core/services/RoleServiceImpl.java index 91466a5..04d48ea 100644 --- a/core/src/main/java/org/apache/syncope/core/services/RoleServiceImpl.java +++ b/core/src/main/java/org/apache/syncope/core/services/RoleServiceImpl.java @@ -67,23 +67,25 @@ public class RoleServiceImpl extends AbstractServiceImpl implements RoleService @Override public PagedResult<RoleTO> list() { - return list(DEFAULT_PARAM_PAGE_VALUE, DEFAULT_PARAM_SIZE_VALUE, null); + return list(DEFAULT_PARAM_PAGE_VALUE, DEFAULT_PARAM_SIZE_VALUE, null, true); } @Override public PagedResult<RoleTO> list(final String orderBy) { - return list(DEFAULT_PARAM_PAGE_VALUE, DEFAULT_PARAM_SIZE_VALUE, orderBy); + return list(DEFAULT_PARAM_PAGE_VALUE, DEFAULT_PARAM_SIZE_VALUE, orderBy, true); } @Override public PagedResult<RoleTO> list(final Integer page, final Integer size) { - return list(page, size, null); + return list(page, size, null, true); } @Override - public PagedResult<RoleTO> list(final Integer page, final Integer size, final String orderBy) { + public PagedResult<RoleTO> list( + final Integer page, final Integer size, final String orderBy, final boolean details) { + List<OrderByClause> orderByClauses = getOrderByClauses(orderBy); - return buildPagedResult(controller.list(page, size, orderByClauses), page, size, controller.count()); + return buildPagedResult(controller.list(page, size, orderByClauses, details), page, size, controller.count()); } @Override @@ -98,25 +100,27 @@ public class RoleServiceImpl extends AbstractServiceImpl implements RoleService @Override public PagedResult<RoleTO> search(final String fiql) { - return search(fiql, DEFAULT_PARAM_PAGE_VALUE, DEFAULT_PARAM_SIZE_VALUE, null); + return search(fiql, DEFAULT_PARAM_PAGE_VALUE, DEFAULT_PARAM_SIZE_VALUE, null, true); } @Override public PagedResult<RoleTO> search(final String fiql, final String orderBy) { - return search(fiql, DEFAULT_PARAM_PAGE_VALUE, DEFAULT_PARAM_SIZE_VALUE, orderBy); + return search(fiql, DEFAULT_PARAM_PAGE_VALUE, DEFAULT_PARAM_SIZE_VALUE, orderBy, true); } @Override public PagedResult<RoleTO> search(final String fiql, final Integer page, final Integer size) { - return search(fiql, page, size, null); + return search(fiql, page, size, null, true); } @Override - public PagedResult<RoleTO> search(final String fiql, final Integer page, final Integer size, final String orderBy) { + public PagedResult<RoleTO> search( + final String fiql, final Integer page, final Integer size, final String orderBy, final boolean details) { + SearchCond cond = getSearchCond(fiql); List<OrderByClause> orderByClauses = getOrderByClauses(orderBy); return buildPagedResult( - controller.search(cond, page, size, orderByClauses), page, size, controller.searchCount(cond)); + controller.search(cond, page, size, orderByClauses, details), page, size, controller.searchCount(cond)); } @Override http://git-wip-us.apache.org/repos/asf/syncope/blob/26123372/core/src/main/java/org/apache/syncope/core/services/UserServiceImpl.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/syncope/core/services/UserServiceImpl.java b/core/src/main/java/org/apache/syncope/core/services/UserServiceImpl.java index e1287fe..7cd2ad7 100644 --- a/core/src/main/java/org/apache/syncope/core/services/UserServiceImpl.java +++ b/core/src/main/java/org/apache/syncope/core/services/UserServiceImpl.java @@ -79,23 +79,25 @@ public class UserServiceImpl extends AbstractServiceImpl implements UserService @Override public PagedResult<UserTO> list() { - return list(DEFAULT_PARAM_PAGE_VALUE, DEFAULT_PARAM_SIZE_VALUE, null); + return list(DEFAULT_PARAM_PAGE_VALUE, DEFAULT_PARAM_SIZE_VALUE, null, true); } @Override public PagedResult<UserTO> list(final String orderBy) { - return list(DEFAULT_PARAM_PAGE_VALUE, DEFAULT_PARAM_SIZE_VALUE, orderBy); + return list(DEFAULT_PARAM_PAGE_VALUE, DEFAULT_PARAM_SIZE_VALUE, orderBy, true); } @Override public PagedResult<UserTO> list(final Integer page, final Integer size) { - return list(page, size, null); + return list(page, size, null, true); } @Override - public PagedResult<UserTO> list(final Integer page, final Integer size, final String orderBy) { + public PagedResult<UserTO> list( + final Integer page, final Integer size, final String orderBy, final boolean details) { + List<OrderByClause> orderByClauses = getOrderByClauses(orderBy); - return buildPagedResult(controller.list(page, size, orderByClauses), page, size, controller.count()); + return buildPagedResult(controller.list(page, size, orderByClauses, details), page, size, controller.count()); } @Override @@ -105,25 +107,27 @@ public class UserServiceImpl extends AbstractServiceImpl implements UserService @Override public PagedResult<UserTO> search(final String fiql) { - return search(fiql, DEFAULT_PARAM_PAGE_VALUE, DEFAULT_PARAM_SIZE_VALUE, null); + return search(fiql, DEFAULT_PARAM_PAGE_VALUE, DEFAULT_PARAM_SIZE_VALUE, null, true); } @Override public PagedResult<UserTO> search(final String fiql, final String orderBy) { - return search(fiql, DEFAULT_PARAM_PAGE_VALUE, DEFAULT_PARAM_SIZE_VALUE, orderBy); + return search(fiql, DEFAULT_PARAM_PAGE_VALUE, DEFAULT_PARAM_SIZE_VALUE, orderBy, true); } @Override public PagedResult<UserTO> search(final String fiql, final Integer page, final Integer size) { - return search(fiql, page, size, null); + return search(fiql, page, size, null, true); } @Override - public PagedResult<UserTO> search(final String fiql, final Integer page, final Integer size, final String orderBy) { + public PagedResult<UserTO> search( + final String fiql, final Integer page, final Integer size, final String orderBy, final boolean details) { + SearchCond cond = getSearchCond(fiql); List<OrderByClause> orderByClauses = getOrderByClauses(orderBy); return buildPagedResult( - controller.search(cond, page, size, orderByClauses), page, size, controller.searchCount(cond)); + controller.search(cond, page, size, orderByClauses, details), page, size, controller.searchCount(cond)); } @Override http://git-wip-us.apache.org/repos/asf/syncope/blob/26123372/core/src/main/java/org/apache/syncope/core/sync/impl/RolePushResultHandler.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/syncope/core/sync/impl/RolePushResultHandler.java b/core/src/main/java/org/apache/syncope/core/sync/impl/RolePushResultHandler.java index 18f7008..a6586b4 100644 --- a/core/src/main/java/org/apache/syncope/core/sync/impl/RolePushResultHandler.java +++ b/core/src/main/java/org/apache/syncope/core/sync/impl/RolePushResultHandler.java @@ -46,7 +46,7 @@ public class RolePushResultHandler extends AbstractSubjectPushResultHandler { @Override protected AbstractSubject deprovision(final AbstractSubject sbj) { - final RoleTO before = roleDataBinder.getRoleTO(SyncopeRole.class.cast(sbj)); + final RoleTO before = roleDataBinder.getRoleTO(SyncopeRole.class.cast(sbj), true); final List<String> noPropResources = new ArrayList<String>(before.getResources()); noPropResources.remove(profile.getSyncTask().getResource().getName()); @@ -58,7 +58,7 @@ public class RolePushResultHandler extends AbstractSubjectPushResultHandler { @Override protected AbstractSubject provision(final AbstractSubject sbj, final Boolean enabled) { - final RoleTO before = roleDataBinder.getRoleTO(SyncopeRole.class.cast(sbj)); + final RoleTO before = roleDataBinder.getRoleTO(SyncopeRole.class.cast(sbj), true); final List<String> noPropResources = new ArrayList<String>(before.getResources()); noPropResources.remove(profile.getSyncTask().getResource().getName()); http://git-wip-us.apache.org/repos/asf/syncope/blob/26123372/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/ActivitiUserWorkflowAdapter.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/ActivitiUserWorkflowAdapter.java b/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/ActivitiUserWorkflowAdapter.java index e15942e..2873c67 100644 --- a/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/ActivitiUserWorkflowAdapter.java +++ b/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/ActivitiUserWorkflowAdapter.java @@ -393,7 +393,7 @@ public class ActivitiUserWorkflowAdapter extends AbstractUserWorkflowAdapter { @Override protected void doRequestPasswordReset(final SyncopeUser user) throws WorkflowException { Map<String, Object> variables = new HashMap<String, Object>(2); - variables.put(USER_TO, userDataBinder.getUserTO(user)); + variables.put(USER_TO, userDataBinder.getUserTO(user, true)); variables.put(EVENT, "requestPasswordReset"); doExecuteTask(user, "requestPasswordReset", variables); @@ -407,7 +407,7 @@ public class ActivitiUserWorkflowAdapter extends AbstractUserWorkflowAdapter { Map<String, Object> variables = new HashMap<String, Object>(4); variables.put(TOKEN, token); variables.put(PASSWORD, password); - variables.put(USER_TO, userDataBinder.getUserTO(user)); + variables.put(USER_TO, userDataBinder.getUserTO(user, true)); variables.put(EVENT, "confirmPasswordReset"); doExecuteTask(user, "confirmPasswordReset", variables); http://git-wip-us.apache.org/repos/asf/syncope/blob/26123372/core/src/main/resources/indexes.xml ---------------------------------------------------------------------- diff --git a/core/src/main/resources/indexes.xml b/core/src/main/resources/indexes.xml index c63d931..ff308d6 100644 --- a/core/src/main/resources/indexes.xml +++ b/core/src/main/resources/indexes.xml @@ -26,16 +26,42 @@ under the License. <entry key="UAttrValue_longvalueIndex">CREATE INDEX UAttrValue_longvalueIndex ON UAttrValue(longvalue)</entry> <entry key="UAttrValue_doublevalueIndex">CREATE INDEX UAttrValue_doublevalueIndex ON UAttrValue(doublevalue)</entry> <entry key="UAttrValue_booleanvalueIndex">CREATE INDEX UAttrValue_booleanvalueIndex ON UAttrValue(booleanvalue)</entry> + <entry key="MAttrValue_stringvalueIndex">CREATE INDEX MAttrValue_stringvalueIndex ON MAttrValue(stringvalue)</entry> <entry key="MAttrValue_datevalueIndex">CREATE INDEX MAttrValue_datevalueIndex ON MAttrValue(datevalue)</entry> <entry key="MAttrValue_longvalueIndex">CREATE INDEX MAttrValue_longvalueIndex ON MAttrValue(longvalue)</entry> <entry key="MAttrValue_doublevalueIndex">CREATE INDEX MAttrValue_doublevalueIndex ON MAttrValue(doublevalue)</entry> <entry key="MAttrValue_booleanvalueIndex">CREATE INDEX MAttrValue_booleanvalueIndex ON MAttrValue(booleanvalue)</entry> + <entry key="RAttrValue_stringvalueIndex">CREATE INDEX RAttrValue_stringvalueIndex ON RAttrValue(stringvalue)</entry> <entry key="RAttrValue_datevalueIndex">CREATE INDEX RAttrValue_datevalueIndex ON RAttrValue(datevalue)</entry> <entry key="RAttrValue_longvalueIndex">CREATE INDEX RAttrValue_longvalueIndex ON RAttrValue(longvalue)</entry> <entry key="RAttrValue_doublevalueIndex">CREATE INDEX RAttrValue_doublevalueIndex ON RAttrValue(doublevalue)</entry> <entry key="RAttrValue_booleanvalueIndex">CREATE INDEX RAttrValue_booleanvalueIndex ON RAttrValue(booleanvalue)</entry> + + <entry key="Membership_syncopeRoleIndex">CREATE INDEX Membership_syncopeRoleIndex ON Membership(syncopeRole_id)</entry> + <entry key="Membership_syncopeUserIndex">CREATE INDEX Membership_syncopeUserIndex ON Membership(syncopeUser_id)</entry> + + <entry key="RAttrValue_attributeIdIndex">CREATE INDEX RAttrValue_attribute_idIndex on RAttrValue(attribute_id)</entry> + <entry key="UAttrValue_attributeIdIndex">CREATE INDEX UAttrValue_attribute_idIndex on UAttrValue(attribute_id)</entry> + <entry key="MAttrValue_attributeIdIndex">CREATE INDEX MAttrValue_attribute_idIndex on MAttrValue(attribute_id)</entry> + <entry key="CAttrValue_attributeIdIndex">CREATE INDEX CAttrValue_attribute_idIndex on CAttrValue(attribute_id)</entry> + + <entry key="RAttr_templateIdIndex">CREATE INDEX RAttr_template_idIndex on RAttr(template_id)</entry> + <entry key="MAttr_templateIdIndex">CREATE INDEX MAttr_template_idIndex on MAttr(template_id)</entry> + <entry key="RAttr_owner_id_index">CREATE INDEX RAttr_owner_id_index on RAttr(owner_id)</entry> + <entry key="UAttr_owner_id_index">CREATE INDEX UAttr_owner_id_index on UAttr(owner_id)</entry> + <entry key="MAttr_owner_id_index">CREATE INDEX MAttr_owner_id_index on MAttr(owner_id)</entry> + + <entry key="RDerAttr_owner_id_index">CREATE INDEX RDerAttr_owner_id_index on RDerAttr(owner_id)</entry> + <entry key="UDerAttr_owner_id_index">CREATE INDEX UDerAttr_owner_id_index on UDerAttr(owner_id)</entry> + <entry key="MDerAttr_owner_id_index">CREATE INDEX MDerAttr_owner_id_index on MDerAttr(owner_id)</entry> + + <entry key="RVirAttr_owner_id_index">CREATE INDEX RVirAttr_owner_id_index on RVirAttr(owner_id)</entry> + <entry key="UVirAttr_owner_id_index">CREATE INDEX UVirAttr_owner_id_index on UVirAttr(owner_id)</entry> + <entry key="MVirAttr_owner_id_index">CREATE INDEX MVirAttr_owner_id_index on MVirAttr(owner_id)</entry> + <entry key="Task_executedIndex">CREATE INDEX Task_executedIndex ON Task(executed)</entry> + <entry key="ACT_RU_TASK_PARENT_TASK_ID_">CREATE INDEX ACT_RU_TASK_PARENT_TASK_ID_ ON ACT_RU_TASK(PARENT_TASK_ID_)</entry> -</properties> +</properties> \ No newline at end of file
