From aacbc7d497131a73bff50dde45ba8a1075db1ec1 Mon Sep 17 00:00:00 2001 From: Erik Suta Date: Tue, 1 Jul 2014 17:52:07 +0200 Subject: [PATCH 1/4] Small code improvements. --- .../web/component/dialog/DeleteAllDialog.java | 269 +++++++----------- .../dialog/DeleteAllDialog.properties | 6 + .../web/component/dialog/DeleteAllDto.java | 85 +++++- .../admin/configuration/PageDebugList.java | 30 +- .../configuration/PageDebugList.properties | 8 +- 5 files changed, 195 insertions(+), 203 deletions(-) diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/dialog/DeleteAllDialog.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/dialog/DeleteAllDialog.java index 0efb94f0536..df85f12b4f9 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/dialog/DeleteAllDialog.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/dialog/DeleteAllDialog.java @@ -15,8 +15,6 @@ */ package com.evolveum.midpoint.web.component.dialog; -import com.evolveum.midpoint.model.api.ModelService; -import com.evolveum.midpoint.prism.PrismContext; import com.evolveum.midpoint.prism.PrismObject; import com.evolveum.midpoint.prism.path.ItemPath; import com.evolveum.midpoint.prism.query.EqualFilter; @@ -39,7 +37,6 @@ import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.form.OnChangeAjaxBehavior; import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow; -import org.apache.wicket.extensions.markup.html.repeater.data.table.filter.NoFilter; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.form.CheckBox; @@ -77,20 +74,14 @@ public class DeleteAllDialog extends ModalWindow{ private static final String ID_NO = "no"; private static final String ID_TOTAL = "totalCountLabel"; - private IModel messageUsers; - private IModel messageOrgUnits; - private IModel messageAccountShadows; - private IModel messageRoleShadows; - private IModel messageOrgShadows; - private IModel messageTotal; - private IModel model; - - private int objectsToDelete = 0; - private int accountShadowTypeCount = 0; - private int orgUnitCount = 0; - private int userCount = 0; - private int orgShadowCount = 0; - private int roleShadowCount = 0; + private IModel model = new Model(new DeleteAllDto()); + +// private int objectsToDelete = 0; +// private int accountShadowTypeCount = 0; +// private int orgUnitCount = 0; +// private int userCount = 0; +// private int orgShadowCount = 0; +// private int roleShadowCount = 0; public DeleteAllDialog(String id, IModel title){ super(id); @@ -99,15 +90,6 @@ public DeleteAllDialog(String id, IModel title){ setTitle(title); } - model = new LoadableModel(false) { - - @Override - protected DeleteAllDto load() { - return new DeleteAllDto(); - } - }; - loadMessages(); - setCssClassName(ModalWindow.CSS_CLASS_GRAY); setCookieName(ConfirmationDialog.class.getSimpleName() + ((int) (Math.random() * 100))); showUnloadConfirmation(false); @@ -142,49 +124,15 @@ public IModel getModel(){ return model; } - private void loadMessages(){ - messageUsers = new LoadableModel() { - @Override - protected String load() { - return createDeleteUsersMessage(); - } - }; - - messageOrgUnits = new LoadableModel() { - @Override - protected String load() { - return createDeleteOrgUnitsMessage(); - } - }; + private void updateLabelModel(AjaxRequestTarget target, String labelID){ + LoadableModel model = (LoadableModel)getLabel(labelID).getDefaultModel(); + model.reset(); - messageAccountShadows = new LoadableModel() { - @Override - protected String load() { - return createDeleteAccountShadowsMessage(); - } - }; + model = (LoadableModel)getLabel(ID_TOTAL).getDefaultModel(); + model.reset(); - messageOrgShadows = new LoadableModel() { - @Override - protected String load() { - return createDeleteShadowsMessage(OrgType.COMPLEX_TYPE); - } - }; - - messageRoleShadows = new LoadableModel() { - @Override - protected String load() { - return createDeleteShadowsMessage(RoleType.COMPLEX_TYPE); - } - }; - - messageTotal = new LoadableModel() { - - @Override - protected String load() { - return createTotalMessage(); - } - }; + target.add(getLabel(labelID)); + target.add(getLabel(ID_TOTAL)); } private void initLayout(WebMarkupContainer content){ @@ -194,10 +142,7 @@ private void initLayout(WebMarkupContainer content){ @Override protected void onUpdate(AjaxRequestTarget target) { - messageUsers.setObject(createDeleteUsersMessage()); - messageTotal.setObject(createTotalMessage()); - target.add(getLabel(ID_TEXT_USERS)); - target.add(getLabel(ID_TOTAL)); + updateLabelModel(target, ID_TEXT_USERS); } }); content.add(deleteUsersCheckbox); @@ -207,10 +152,7 @@ protected void onUpdate(AjaxRequestTarget target) { @Override protected void onUpdate(AjaxRequestTarget target) { - messageOrgUnits.setObject(createDeleteOrgUnitsMessage()); - messageTotal.setObject(createTotalMessage()); - target.add(getLabel(ID_TEXT_ORGS)); - target.add(getLabel(ID_TOTAL)); + updateLabelModel(target, ID_TEXT_ORGS); } }); content.add(deleteOrgsCheckbox); @@ -221,10 +163,7 @@ protected void onUpdate(AjaxRequestTarget target) { @Override protected void onUpdate(AjaxRequestTarget target) { - messageAccountShadows.setObject(createDeleteAccountShadowsMessage()); - messageTotal.setObject(createTotalMessage()); - target.add(getLabel(ID_TEXT_ACC_SHADOWS)); - target.add(getLabel(ID_TOTAL)); + updateLabelModel(target, ID_TEXT_ACC_SHADOWS); } }); content.add(deleteAccountShadowsCheckbox); @@ -235,10 +174,7 @@ protected void onUpdate(AjaxRequestTarget target) { @Override protected void onUpdate(AjaxRequestTarget target) { - messageOrgShadows.setObject(createDeleteShadowsMessage(OrgType.COMPLEX_TYPE)); - messageTotal.setObject(createTotalMessage()); - target.add(getLabel(ID_TEXT_ORG_SHADOWS)); - target.add(getLabel(ID_TOTAL)); + updateLabelModel(target, ID_TEXT_ORG_SHADOWS); } }); content.add(deleteOrgShadowsCheckbox); @@ -249,35 +185,62 @@ protected void onUpdate(AjaxRequestTarget target) { @Override protected void onUpdate(AjaxRequestTarget target) { - messageRoleShadows.setObject(createDeleteShadowsMessage(RoleType.COMPLEX_TYPE)); - messageTotal.setObject(createTotalMessage()); - target.add(getLabel(ID_TEXT_ROLE_SHADOWS)); - target.add(getLabel(ID_TOTAL)); + updateLabelModel(target, ID_TEXT_ROLE_SHADOWS); } }); content.add(deleteRoleShadowsCheckbox); - Label usersLabel = new Label(ID_TEXT_USERS, messageUsers); + Label usersLabel = new Label(ID_TEXT_USERS, new LoadableModel() { + @Override + protected String load() { + return createDeleteUsersMessage(); + } + }); usersLabel.setOutputMarkupId(true); content.add(usersLabel); - Label orgsLabel = new Label(ID_TEXT_ORGS, messageOrgUnits); + Label orgsLabel = new Label(ID_TEXT_ORGS, new LoadableModel() { + @Override + protected String load() { + return createDeleteOrgUnitsMessage(); + } + }); orgsLabel.setOutputMarkupId(true); content.add(orgsLabel); - Label accShadowsLabel = new Label(ID_TEXT_ACC_SHADOWS, messageAccountShadows); + Label accShadowsLabel = new Label(ID_TEXT_ACC_SHADOWS, new LoadableModel() { + @Override + protected String load() { + return createDeleteAccountShadowsMessage(); + } + }); accShadowsLabel.setOutputMarkupId(true); content.add(accShadowsLabel); - Label orgShadowsLabel = new Label(ID_TEXT_ORG_SHADOWS, messageOrgShadows); + Label orgShadowsLabel = new Label(ID_TEXT_ORG_SHADOWS, new LoadableModel() { + @Override + protected String load() { + return createDeleteShadowsMessage(OrgType.COMPLEX_TYPE); + } + }); orgShadowsLabel.setOutputMarkupId(true); content.add(orgShadowsLabel); - Label roleShadowsLabel = new Label(ID_TEXT_ROLE_SHADOWS, messageRoleShadows); + Label roleShadowsLabel = new Label(ID_TEXT_ROLE_SHADOWS, new LoadableModel() { + @Override + protected String load() { + return createDeleteShadowsMessage(RoleType.COMPLEX_TYPE); + } + }); roleShadowsLabel.setOutputMarkupId(true); content.add(roleShadowsLabel); - Label countLabel = new Label(ID_TOTAL, messageTotal); + Label countLabel = new Label(ID_TOTAL, new LoadableModel() { + @Override + protected String load() { + return createTotalMessage(); + } + }); countLabel.setOutputMarkupId(true); content.add(countLabel); @@ -311,35 +274,34 @@ public StringResourceModel createStringResource(String resourceKey, Object... ob } private String createTotalMessage(){ - objectsToDelete = 0; DeleteAllDto dto = model.getObject(); + dto.setObjectsToDelete(0); + if(dto.getDeleteUsers()){ - objectsToDelete += userCount; + dto.setObjectsToDelete(dto.getObjectsToDelete() + dto.getUserCount()); } if(dto.getDeleteOrgs()){ - objectsToDelete += orgUnitCount; + dto.setObjectsToDelete(dto.getObjectsToDelete() + dto.getOrgUnitCount()); } if(dto.getDeleteAccountShadow()){ - objectsToDelete += accountShadowTypeCount; + dto.setObjectsToDelete(dto.getObjectsToDelete() + dto.getAccountShadowTypeCount()); } if(dto.getDeleteOrgShadow()){ - objectsToDelete += orgShadowCount; + dto.setObjectsToDelete(dto.getObjectsToDelete() + dto.getOrgShadowCount()); } if(dto.getDeleteRoleShadow()){ - objectsToDelete += roleShadowCount; + dto.setObjectsToDelete(dto.getObjectsToDelete() + dto.getRoleShadowCount()); } - return createStringResource("pageDebugList.label.totalToDelete", objectsToDelete).getString(); + return createStringResource("deleteAllDialog.label.totalToDelete", dto.getObjectsToDelete()).getString(); } private String createDeleteUsersMessage(){ if(!model.getObject().getDeleteUsers()){ - return createStringResource("pageDebugList.label.usersDelete", 0).getString(); + return createStringResource("deleteAllDialog.label.usersDelete", 0).getString(); } - - userCount = 0; - - Task task = createSimpleTask(OPERATION_COUNT_TASK); + DeleteAllDto dto = model.getObject(); + Task task = getPagebase().createSimpleTask(OPERATION_COUNT_TASK); OperationResult result = new OperationResult(OPERATION_COUNT_TASK); Collection> options = new ArrayList<>(); @@ -347,27 +309,26 @@ private String createDeleteUsersMessage(){ options.add(SelectorOptions.create(ItemPath.EMPTY_PATH, opt)); try { - userCount = getModelService().countObjects(UserType.class, null, options, task, result); + dto.setUserCount(getPagebase().getModelService().countObjects(UserType.class, null, options, task, result)); //We need to substract 1, because we are not deleting user 'Administrator' - userCount--; - objectsToDelete += userCount; + dto.setUserCount(dto.getUserCount()-1); + dto.setObjectsToDelete(dto.getObjectsToDelete() + dto.getUserCount()); } catch (Exception ex) { - result.computeStatus(getString("pageDebugList.message.countSearchProblem")); - LoggingUtils.logException(LOGGER, getString("pageDebugList.message.countSearchProblem"), ex); + result.computeStatus(getString("deleteAllDialog.message.countSearchProblem")); + LoggingUtils.logException(LOGGER, getString("deleteAllDialog.message.countSearchProblem"), ex); } - return createStringResource("pageDebugList.label.usersDelete", userCount).getString(); + return createStringResource("deleteAllDialog.label.usersDelete", dto.getUserCount()).getString(); } private String createDeleteOrgUnitsMessage(){ if(!model.getObject().getDeleteOrgs()){ - return createStringResource("pageDebugList.label.orgUnitsDelete", 0).getString(); + return createStringResource("deleteAllDialog.label.orgUnitsDelete", 0).getString(); } - orgUnitCount = 0; - - Task task = createSimpleTask(OPERATION_COUNT_TASK); + DeleteAllDto dto = model.getObject(); + Task task = getPagebase().createSimpleTask(OPERATION_COUNT_TASK); OperationResult result = new OperationResult(OPERATION_COUNT_TASK); Collection> options = new ArrayList<>(); @@ -375,25 +336,24 @@ private String createDeleteOrgUnitsMessage(){ options.add(SelectorOptions.create(ItemPath.EMPTY_PATH, opt)); try { - orgUnitCount = getModelService().countObjects(OrgType.class, null, options, task, result); + dto.setOrgUnitCount(getPagebase().getModelService().countObjects(OrgType.class, null, options, task, result)); - objectsToDelete += orgUnitCount; + dto.setObjectsToDelete(dto.getObjectsToDelete() + dto.getOrgUnitCount()); } catch (Exception ex) { - result.computeStatus(getString("pageDebugList.message.countSearchProblem")); - LoggingUtils.logException(LOGGER, getString("pageDebugList.message.countSearchProblem"), ex); + result.computeStatus(getString("deleteAllDialog.message.countSearchProblem")); + LoggingUtils.logException(LOGGER, getString("deleteAllDialog.message.countSearchProblem"), ex); } - return createStringResource("pageDebugList.label.orgUnitsDelete", orgUnitCount).getString(); + return createStringResource("deleteAllDialog.label.orgUnitsDelete", dto.getOrgUnitCount()).getString(); } private String createDeleteAccountShadowsMessage(){ if(!model.getObject().getDeleteAccountShadow()){ - return createStringResource("pageDebugList.label.accountShadowsDelete", 0).getString(); + return createStringResource("deleteAllDialog.label.accountShadowsDelete", 0).getString(); } - accountShadowTypeCount = 0; - - Task task = createSimpleTask(OPERATION_SEARCH_ITERATIVE_TASK); + DeleteAllDto dto = model.getObject(); + Task task = getPagebase().createSimpleTask(OPERATION_SEARCH_ITERATIVE_TASK); OperationResult result = new OperationResult(OPERATION_SEARCH_ITERATIVE_TASK); Collection> options = new ArrayList<>(); @@ -401,30 +361,28 @@ private String createDeleteAccountShadowsMessage(){ options.add(SelectorOptions.create(ItemPath.EMPTY_PATH, opt)); try { - ObjectFilter filter = EqualFilter.createEqual(ShadowType.F_KIND, ShadowType.class, getPrismContext(), null, ShadowKindType.ACCOUNT); + ObjectFilter filter = EqualFilter.createEqual(ShadowType.F_KIND, ShadowType.class, getPagebase().getPrismContext(), null, ShadowKindType.ACCOUNT); ObjectQuery query = ObjectQuery.createObjectQuery(filter); - accountShadowTypeCount = getModelService().countObjects(ShadowType.class, query, options, task, result); - objectsToDelete += accountShadowTypeCount; + dto.setAccountShadowTypeCount(getPagebase().getModelService().countObjects(ShadowType.class, query, options, task, result)); + dto.setObjectsToDelete(dto.getObjectsToDelete() + dto.getAccountShadowTypeCount()); } catch (Exception ex) { - result.computeStatus(getString("pageDebugList.message.countSearchProblem")); - LoggingUtils.logException(LOGGER, getString("pageDebugList.message.countSearchProblem"), ex); + result.computeStatus(getString("deleteAllDialog.message.countSearchProblem")); + LoggingUtils.logException(LOGGER, getString("deleteAllDialog.message.countSearchProblem"), ex); } - return createStringResource("pageDebugList.label.accountShadowsDelete", accountShadowTypeCount).getString(); + return createStringResource("deleteAllDialog.label.accountShadowsDelete", dto.getAccountShadowTypeCount()).getString(); } private String createDeleteShadowsMessage(final QName focus){ if(OrgType.COMPLEX_TYPE.equals(focus) && !model.getObject().getDeleteOrgShadow()){ - return createStringResource("pageDebugList.label.orgShadowsDelete", 0).getString(); + return createStringResource("deleteAllDialog.label.orgShadowsDelete", 0).getString(); } else if(RoleType.COMPLEX_TYPE.equals(focus) && !model.getObject().getDeleteRoleShadow()){ - return createStringResource("pageDebugList.label.roleShadowsDelete", 0).getString(); + return createStringResource("deleteAllDialog.label.roleShadowsDelete", 0).getString(); } - - orgShadowCount = 0; - roleShadowCount = 0; + DeleteAllDto dto = model.getObject(); int count = 0; - Task task = createSimpleTask(OPERATION_SEARCH_ITERATIVE_TASK); + Task task = getPagebase().createSimpleTask(OPERATION_SEARCH_ITERATIVE_TASK); final OperationResult result = new OperationResult(OPERATION_SEARCH_ITERATIVE_TASK); Collection> options = new ArrayList<>(); @@ -442,7 +400,7 @@ public boolean handle(PrismObject object, OperationResult parentResult) { return true; } - PrismObject resource = WebModelUtils.loadObject(ResourceType.class, oid, result, (PageBase) getPage()); + PrismObject resource = WebModelUtils.loadObject(ResourceType.class, oid, result, getPagebase()); if(resource != null && resource.asObjectable() != null){ SynchronizationType sync = resource.asObjectable().getSynchronization(); @@ -459,52 +417,45 @@ public boolean handle(PrismObject object, OperationResult parentResult) { }; try { - ObjectFilter filter = EqualFilter.createEqual(ShadowType.F_KIND, ShadowType.class, getPrismContext(), null, ShadowKindType.ACCOUNT); + ObjectFilter filter = EqualFilter.createEqual(ShadowType.F_KIND, ShadowType.class, getPagebase().getPrismContext(), null, ShadowKindType.ACCOUNT); ObjectQuery query = ObjectQuery.createObjectQuery(NotFilter.createNot(filter)); - getModelService().searchObjectsIterative(ShadowType.class, query, orgShadowHandler, options, task, result); + getPagebase().getModelService().searchObjectsIterative(ShadowType.class, query, orgShadowHandler, options, task, result); if(OrgType.COMPLEX_TYPE.equals(focus)){ - count = orgShadowCount; + count = dto.getOrgShadowCount(); } else if(RoleType.COMPLEX_TYPE.equals(focus)){ - count = roleShadowCount; + count = dto.getRoleShadowCount(); } - objectsToDelete += count; + dto.setObjectsToDelete(dto.getObjectsToDelete() + count); } catch (Exception ex) { - result.computeStatus(getString("pageDebugList.message.countSearchProblem")); - LoggingUtils.logException(LOGGER, getString("pageDebugList.message.countSearchProblem"), ex); + result.computeStatus(getString("deleteAllDialog.message.countSearchProblem")); + LoggingUtils.logException(LOGGER, getString("deleteAllDialog.message.countSearchProblem"), ex); } if(OrgType.COMPLEX_TYPE.equals(focus)){ - return createStringResource("pageDebugList.label.orgShadowsDelete", count).getString(); + return createStringResource("deleteAllDialog.label.orgShadowsDelete", count).getString(); } else if(RoleType.COMPLEX_TYPE.equals(focus)){ - return createStringResource("pageDebugList.label.roleShadowsDelete", count).getString(); + return createStringResource("deleteAllDialog.label.roleShadowsDelete", count).getString(); } else { return null; } } public int getObjectsToDelete(){ - return objectsToDelete; + return model.getObject().getObjectsToDelete(); } private void addShadowType(String focus){ + DeleteAllDto dto = model.getObject(); if(OrgType.COMPLEX_TYPE.getLocalPart().equals(focus)){ - orgShadowCount++; + dto.setOrgShadowCount(dto.getOrgShadowCount() + 1); } else if(RoleType.COMPLEX_TYPE.getLocalPart().equals(focus)){ - roleShadowCount++; + dto.setOrgShadowCount(dto.getRoleShadowCount() + 1); } } - public Task createSimpleTask(String operation){ - return null; - } - - public ModelService getModelService(){ - return null; - } - - public PrismContext getPrismContext(){ - return null; + private PageBase getPagebase(){ + return (PageBase) getPage(); } public void yesPerformed(AjaxRequestTarget target) { diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/dialog/DeleteAllDialog.properties b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/dialog/DeleteAllDialog.properties index ec56d3c3ad8..888d11659bc 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/dialog/DeleteAllDialog.properties +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/dialog/DeleteAllDialog.properties @@ -22,3 +22,9 @@ deleteAllDialog.label.org=Org. Units deleteAllDialog.label.shadow.account=Account shadows deleteAllDialog.label.shadow.role=Role shadows deleteAllDialog.label.shadow.org=Org. unit shadows +deleteAllDialog.label.usersDelete=Users to delete: {0} (User 'Administrator' will not be deleted) +deleteAllDialog.label.orgUnitsDelete=Org. units to delete: {0} +deleteAllDialog.label.accountShadowsDelete=Account shadows to delete: {0} +deleteAllDialog.label.orgShadowsDelete=Org. unit shadows to delete: {0} +deleteAllDialog.label.roleShadowsDelete=Role shadows to delete: {0} +deleteAllDialog.label.totalToDelete=Total objects to delete: {0} diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/dialog/DeleteAllDto.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/dialog/DeleteAllDto.java index bfa24ac5ea3..f042e9e0b05 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/dialog/DeleteAllDto.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/dialog/DeleteAllDto.java @@ -30,11 +30,18 @@ public class DeleteAllDto implements Serializable{ public static final String F_ORG_SHADOW = "deleteOrgShadow"; public static final String F_ROLE_SHADOW = "deleteRoleShadow"; - private Boolean deleteUsers = false; - private Boolean deleteOrgs = false; - private Boolean deleteAccountShadow = false; - private Boolean deleteRoleShadow = false; - private Boolean deleteOrgShadow = false; + private boolean deleteUsers = false; + private boolean deleteOrgs = false; + private boolean deleteAccountShadow = false; + private boolean deleteRoleShadow = false; + private boolean deleteOrgShadow = false; + + private int objectsToDelete = 0; + private int accountShadowTypeCount = 0; + private int orgUnitCount = 0; + private int userCount = 0; + private int orgShadowCount = 0; + private int roleShadowCount = 0; private Map resourceFocusMap = new HashMap<>(); @@ -46,43 +53,91 @@ public void setResourceFocusMap(Map resourceFocusMap) { this.resourceFocusMap = resourceFocusMap; } - public Boolean getDeleteUsers() { + public boolean getDeleteUsers() { return deleteUsers; } - public void setDeleteUsers(Boolean deleteUsers) { + public void setDeleteUsers(boolean deleteUsers) { this.deleteUsers = deleteUsers; } - public Boolean getDeleteOrgs() { + public boolean getDeleteOrgs() { return deleteOrgs; } - public void setDeleteOrgs(Boolean deleteOrgs) { + public void setDeleteOrgs(boolean deleteOrgs) { this.deleteOrgs = deleteOrgs; } - public Boolean getDeleteAccountShadow() { + public boolean getDeleteAccountShadow() { return deleteAccountShadow; } - public void setDeleteAccountShadow(Boolean deleteAccountShadow) { + public void setDeleteAccountShadow(boolean deleteAccountShadow) { this.deleteAccountShadow = deleteAccountShadow; } - public Boolean getDeleteRoleShadow() { + public boolean getDeleteRoleShadow() { return deleteRoleShadow; } - public void setDeleteRoleShadow(Boolean deleteRoleShadow) { + public void setDeleteRoleShadow(boolean deleteRoleShadow) { this.deleteRoleShadow = deleteRoleShadow; } - public Boolean getDeleteOrgShadow() { + public boolean getDeleteOrgShadow() { return deleteOrgShadow; } - public void setDeleteOrgShadow(Boolean deleteOrgShadow) { + public void setDeleteOrgShadow(boolean deleteOrgShadow) { this.deleteOrgShadow = deleteOrgShadow; } + + public int getObjectsToDelete() { + return objectsToDelete; + } + + public void setObjectsToDelete(int objectsToDelete) { + this.objectsToDelete = objectsToDelete; + } + + public int getAccountShadowTypeCount() { + return accountShadowTypeCount; + } + + public void setAccountShadowTypeCount(int accountShadowTypeCount) { + this.accountShadowTypeCount = accountShadowTypeCount; + } + + public int getOrgUnitCount() { + return orgUnitCount; + } + + public void setOrgUnitCount(int orgUnitCount) { + this.orgUnitCount = orgUnitCount; + } + + public int getUserCount() { + return userCount; + } + + public void setUserCount(int userCount) { + this.userCount = userCount; + } + + public int getOrgShadowCount() { + return orgShadowCount; + } + + public void setOrgShadowCount(int orgShadowCount) { + this.orgShadowCount = orgShadowCount; + } + + public int getRoleShadowCount() { + return roleShadowCount; + } + + public void setRoleShadowCount(int roleShadowCount) { + this.roleShadowCount = roleShadowCount; + } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageDebugList.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageDebugList.java index 4f0b21d79ab..cad3d190731 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageDebugList.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageDebugList.java @@ -17,8 +17,6 @@ package com.evolveum.midpoint.web.page.admin.configuration; import com.evolveum.midpoint.model.api.ModelExecuteOptions; -import com.evolveum.midpoint.model.api.ModelService; -import com.evolveum.midpoint.prism.PrismContext; import com.evolveum.midpoint.prism.PrismObject; import com.evolveum.midpoint.prism.delta.ObjectDelta; import com.evolveum.midpoint.prism.match.PolyStringNormMatchingRule; @@ -46,6 +44,7 @@ import com.evolveum.midpoint.web.component.data.column.LinkColumn; import com.evolveum.midpoint.web.component.dialog.ConfirmationDialog; import com.evolveum.midpoint.web.component.dialog.DeleteAllDialog; +import com.evolveum.midpoint.web.component.dialog.DeleteAllDto; import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem; import com.evolveum.midpoint.web.component.util.LoadableModel; import com.evolveum.midpoint.web.page.PageBase; @@ -143,21 +142,6 @@ private void initLayout() { DeleteAllDialog deleteAllDialog = new DeleteAllDialog(ID_DELETE_ALL_DIALOG, createStringResource("pageDebugList.dialog.title.deleteAll")){ - @Override - public Task createSimpleTask(String operation){ - return PageDebugList.this.createSimpleTask(operation); - } - - @Override - public ModelService getModelService(){ - return PageDebugList.this.getModelService(); - } - - @Override - public PrismContext getPrismContext(){ - return PageDebugList.this.getPrismContext(); - } - @Override public void yesPerformed(AjaxRequestTarget target) { close(target); @@ -170,19 +154,21 @@ public void yesPerformed(AjaxRequestTarget target) { OperationResult result = new OperationResult(OPERATION_LAXATIVE_DELETE); objectsDeleted = 0; - if(getModel().getObject().getDeleteUsers()){ + DeleteAllDto dto = getModel().getObject(); + + if(dto.getDeleteUsers()){ deleteAllUsers(task, result, options); } - if(getModel().getObject().getDeleteOrgs()){ + if(dto.getDeleteOrgs()){ deleteAllOrgUnits(task, result, options); } - if(getModel().getObject().getDeleteAccountShadow()){ + if(dto.getDeleteAccountShadow()){ deleteAllAccountShadows(task, result, options); } - if(getModel().getObject().getDeleteOrgShadow()){ + if(dto.getDeleteOrgShadow()){ deleteAllNonAccountShadows(task, result, options, OrgType.COMPLEX_TYPE); } - if(getModel().getObject().getDeleteRoleShadow()){ + if(dto.getDeleteRoleShadow()){ deleteAllNonAccountShadows(task, result, options, RoleType.COMPLEX_TYPE); } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageDebugList.properties b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageDebugList.properties index ebb9edb2829..e18c107da49 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageDebugList.properties +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageDebugList.properties @@ -43,10 +43,4 @@ pageDebugList.message.countSearchProblem=Couldn't perform search operation on us pageDebugList.message.singleUserDeleteProblem=Couldn't delete user pageDebugList.message.singleOrgDeleteProblem=Couldn't delete org. unit pageDebugList.message.singleShadowDeleteProblem=Couldn't delete shadow -pageDebugList.message.laxativeProblem=Drop all identities operation has not performed successfully -pageDebugList.label.usersDelete=Users to delete: {0} (User 'Administrator' will not be deleted) -pageDebugList.label.orgUnitsDelete=Org. units to delete: {0} -pageDebugList.label.accountShadowsDelete=Account shadows to delete: {0} -pageDebugList.label.orgShadowsDelete=Org. unit shadows to delete: {0} -pageDebugList.label.roleShadowsDelete=Role shadows to delete: {0} -pageDebugList.label.totalToDelete=Total objects to delete: {0} +pageDebugList.message.laxativeProblem=Drop all identities operation has not performed successfully \ No newline at end of file From 58a5be6cf078b540f48a63f3a0a9cc8aa8c76ccb Mon Sep 17 00:00:00 2001 From: Radovan Semancik Date: Wed, 2 Jul 2014 14:46:16 +0200 Subject: [PATCH 2/4] Support for logging of SOAP messages --- .../infra/wsutil/AbstractWebServiceClient.java | 11 ++++++++--- .../main/resources/META-INF/cxf/org.apache.cxf.Logger | 1 + 2 files changed, 9 insertions(+), 3 deletions(-) create mode 100644 infra/ws-util/src/main/resources/META-INF/cxf/org.apache.cxf.Logger diff --git a/infra/ws-util/src/main/java/com/evolveum/midpoint/infra/wsutil/AbstractWebServiceClient.java b/infra/ws-util/src/main/java/com/evolveum/midpoint/infra/wsutil/AbstractWebServiceClient.java index 1cb8f5ca4db..a15a5e93216 100644 --- a/infra/ws-util/src/main/java/com/evolveum/midpoint/infra/wsutil/AbstractWebServiceClient.java +++ b/infra/ws-util/src/main/java/com/evolveum/midpoint/infra/wsutil/AbstractWebServiceClient.java @@ -30,6 +30,8 @@ import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; import org.apache.cxf.frontend.ClientProxy; +import org.apache.cxf.interceptor.LoggingInInterceptor; +import org.apache.cxf.interceptor.LoggingOutInterceptor; import org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor; import org.apache.ws.security.WSConstants; import org.apache.ws.security.handler.WSHandlerConstants; @@ -85,6 +87,7 @@ protected void init(String[] args) throws ParseException { options.addOption("p", "password", true, "Password"); options.addOption("e", "endpoint", true, "Endpoint URL"); options.addOption("v", "verbose", false, "Verbose mode"); + options.addOption("m", "messages", false, "Log SOAP messages"); options.addOption("h", "help", false, "Usage help"); extendOptions(options); parseCommandLine(args); @@ -157,9 +160,11 @@ protected P createPort() throws Exception { WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(wssProps); cxfEndpoint.getOutInterceptors().add(wssOut); - // enable the following to get client-side logging of outgoing requests and incoming responses - //cxfEndpoint.getOutInterceptors().add(new LoggingOutInterceptor()); - //cxfEndpoint.getInInterceptors().add(new LoggingInInterceptor()); + + if (commandLine.hasOption('m')) { + cxfEndpoint.getInInterceptors().add(new LoggingInInterceptor()); + cxfEndpoint.getOutInterceptors().add(new LoggingOutInterceptor()); + } return modelPort; } diff --git a/infra/ws-util/src/main/resources/META-INF/cxf/org.apache.cxf.Logger b/infra/ws-util/src/main/resources/META-INF/cxf/org.apache.cxf.Logger new file mode 100644 index 00000000000..27dd788b315 --- /dev/null +++ b/infra/ws-util/src/main/resources/META-INF/cxf/org.apache.cxf.Logger @@ -0,0 +1 @@ +org.apache.cxf.common.logging.Slf4jLogger \ No newline at end of file From e087a590eb6c20e4dbdf5ad1080ec573a2cd0229 Mon Sep 17 00:00:00 2001 From: Radovan Semancik Date: Wed, 2 Jul 2014 15:12:36 +0200 Subject: [PATCH 3/4] Support for password types --- .../infra/wsutil/AbstractWebServiceClient.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/infra/ws-util/src/main/java/com/evolveum/midpoint/infra/wsutil/AbstractWebServiceClient.java b/infra/ws-util/src/main/java/com/evolveum/midpoint/infra/wsutil/AbstractWebServiceClient.java index a15a5e93216..a1a31d87198 100644 --- a/infra/ws-util/src/main/java/com/evolveum/midpoint/infra/wsutil/AbstractWebServiceClient.java +++ b/infra/ws-util/src/main/java/com/evolveum/midpoint/infra/wsutil/AbstractWebServiceClient.java @@ -61,7 +61,18 @@ public void setVerbose(boolean verbose) { protected abstract String getDefaultUsername(); protected String getPasswordType() { - return WSConstants.PW_DIGEST; + if (commandLine.hasOption('P')) { + String optionValue = commandLine.getOptionValue('P'); + if ("text".equals(optionValue)) { + return WSConstants.PW_TEXT; + } else if ("digest".equals(optionValue)) { + return WSConstants.PW_DIGEST; + } else { + throw new IllegalArgumentException("Unknown password type "+optionValue); + } + } else { + return WSConstants.PW_TEXT; + } } protected abstract String getDefaultPassword(); @@ -85,6 +96,7 @@ public void main(String[] args) { protected void init(String[] args) throws ParseException { options.addOption("u", "user", true, "Username"); options.addOption("p", "password", true, "Password"); + options.addOption("P", "password-type", true, "Password type (text or digest)"); options.addOption("e", "endpoint", true, "Endpoint URL"); options.addOption("v", "verbose", false, "Verbose mode"); options.addOption("m", "messages", false, "Log SOAP messages"); From a82a3ed46fd11391e430a704f3b485503b617461 Mon Sep 17 00:00:00 2001 From: Radovan Semancik Date: Wed, 2 Jul 2014 16:05:24 +0200 Subject: [PATCH 4/4] Support for PasswordText in WSS UsernameToken --- .../midpoint/model/impl/security/PasswordCallback.java | 8 ++++++++ model/model-impl/src/main/resources/ctx-model.xml | 3 +-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/security/PasswordCallback.java b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/security/PasswordCallback.java index e98a75be024..395577b3d6e 100644 --- a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/security/PasswordCallback.java +++ b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/security/PasswordCallback.java @@ -26,6 +26,8 @@ import com.evolveum.midpoint.security.api.MidPointPrincipal; import com.evolveum.midpoint.security.api.UserProfileService; import com.evolveum.midpoint.util.exception.ObjectNotFoundException; +import com.evolveum.midpoint.util.logging.Trace; +import com.evolveum.midpoint.util.logging.TraceManager; import com.evolveum.midpoint.xml.ns._public.common.common_3.CredentialsType; import com.evolveum.midpoint.xml.ns._public.common.common_3.PasswordType; import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType; @@ -36,6 +38,8 @@ * @author Igor Farinic */ public class PasswordCallback implements CallbackHandler { + + private static final Trace LOGGER = TraceManager.getTrace(PasswordCallback.class); private UserProfileService userDetailsService; private Protector protector; @@ -46,8 +50,12 @@ public PasswordCallback(UserProfileService userDetailsService, Protector protect } public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException { + LOGGER.trace("Invoked PasswordCallback with {} callbacks: {}", callbacks.length, callbacks); WSPasswordCallback pc = (WSPasswordCallback) callbacks[0]; + String wssPasswordType = pc.getType(); + LOGGER.trace("Password type: {}", wssPasswordType); + MidPointPrincipal user; try { user = userDetailsService.getPrincipal(pc.getIdentifier()); diff --git a/model/model-impl/src/main/resources/ctx-model.xml b/model/model-impl/src/main/resources/ctx-model.xml index 19312077f9d..ff41c6ac009 100644 --- a/model/model-impl/src/main/resources/ctx-model.xml +++ b/model/model-impl/src/main/resources/ctx-model.xml @@ -407,14 +407,13 @@ - - +