From 7e55d2d53438caee6eeffa7109dbc1324edd7516 Mon Sep 17 00:00:00 2001 From: Pavol Mederly Date: Tue, 13 Jun 2017 11:07:39 +0200 Subject: [PATCH 1/8] Working around strange H2-related exception (MID-3969). --- .../midpoint/repo/sql/SqlRepositoryFactory.java | 13 +++---------- .../midpoint/repo/sql/helpers/BaseHelper.java | 6 ++++++ 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/SqlRepositoryFactory.java b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/SqlRepositoryFactory.java index 3a5ad79bf79..4d80133a6d4 100644 --- a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/SqlRepositoryFactory.java +++ b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/SqlRepositoryFactory.java @@ -203,19 +203,13 @@ public String prepareJdbcUrlPrefix(SqlRepositoryConfiguration config) throws Rep LOGGER.debug("Base dir path in configuration was not defined."); if (StringUtils.isNotEmpty(System.getProperty(MIDPOINT_HOME_VARIABLE))) { config.setBaseDir(System.getProperty(MIDPOINT_HOME_VARIABLE)); - - LOGGER.info("Using {} with value {} as base dir for configuration.", - new Object[]{MIDPOINT_HOME_VARIABLE, config.getBaseDir()}); + LOGGER.info("Using {} with value {} as base dir for configuration.", MIDPOINT_HOME_VARIABLE, config.getBaseDir()); } else if (StringUtils.isNotEmpty(System.getProperty(USER_HOME_VARIABLE))) { config.setBaseDir(System.getProperty(USER_HOME_VARIABLE)); - - LOGGER.info("Using {} with value {} as base dir for configuration.", - new Object[]{USER_HOME_VARIABLE, config.getBaseDir()}); + LOGGER.info("Using {} with value {} as base dir for configuration.", USER_HOME_VARIABLE, config.getBaseDir()); } else { config.setBaseDir("."); - - LOGGER.info("Using '.' as base dir for configuration ({}, or {} was not defined).", - new Object[]{MIDPOINT_HOME_VARIABLE, USER_HOME_VARIABLE}); + LOGGER.info("Using '.' as base dir for configuration ({}, or {} was not defined).", MIDPOINT_HOME_VARIABLE, USER_HOME_VARIABLE); } } @@ -240,7 +234,6 @@ public String prepareJdbcUrlPrefix(SqlRepositoryConfiguration config) throws Rep jdbcUrl.append(databaseFile.getAbsolutePath()); } return jdbcUrl.toString(); - } private String getRelativeBaseDirPath(String baseDir) { diff --git a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/helpers/BaseHelper.java b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/helpers/BaseHelper.java index d9c6db75190..a177673d6a9 100644 --- a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/helpers/BaseHelper.java +++ b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/helpers/BaseHelper.java @@ -281,6 +281,12 @@ private boolean isExceptionRelatedToSerializationInternal(Exception ex) { return true; } + // this is some recent H2 weirdness (MID-3969) + if (getConfiguration().isUsingH2() && sqlException.getMessage() != null + && sqlException.getMessage().contains("Referential integrity constraint violation: \"FK_AUDIT_ITEM: PUBLIC.M_AUDIT_ITEM FOREIGN KEY(RECORD_ID) REFERENCES PUBLIC.M_AUDIT_EVENT(ID)")) { + return true; + } + return sqlException.getErrorCode() == 50200 || sqlException.getErrorCode() == 40001 || "40001".equals(sqlException.getSQLState()) From 117c05bb90d8fd569a0134d17db8519bd15586cb Mon Sep 17 00:00:00 2001 From: honchar Date: Tue, 13 Jun 2017 11:24:45 +0200 Subject: [PATCH 2/8] authorization check for MainObjectListPanel buttons (add and import actions) --- .../api/component/MainObjectListPanel.java | 64 +++++++++++++++++-- .../certification/PageCertDefinitions.java | 6 ++ .../admin/reports/PageCreatedReports.java | 14 ++-- .../page/admin/resources/PageResources.java | 7 ++ .../admin/resources/ResourceContentPanel.java | 5 ++ .../admin/resources/ResourceTasksPanel.java | 9 ++- .../web/page/admin/roles/PageRoles.java | 14 ++-- .../web/page/admin/services/PageServices.java | 6 ++ .../web/page/admin/users/PageUsers.java | 6 ++ .../component/AbstractRoleMemberPanel.java | 5 ++ 10 files changed, 116 insertions(+), 20 deletions(-) diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/MainObjectListPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/MainObjectListPanel.java index 945d5fdb16b..12aa9e6b3eb 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/MainObjectListPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/MainObjectListPanel.java @@ -20,23 +20,26 @@ import java.util.Collection; import java.util.List; +import com.evolveum.midpoint.gui.api.util.WebComponentUtil; +import com.evolveum.midpoint.model.api.ModelAuthorizationAction; +import com.evolveum.midpoint.prism.PrismObject; +import com.evolveum.midpoint.security.api.AuthorizationConstants; +import com.evolveum.midpoint.util.exception.SchemaException; +import com.evolveum.midpoint.util.logging.Trace; +import com.evolveum.midpoint.util.logging.TraceManager; import com.evolveum.midpoint.web.component.AjaxIconButton; -import com.evolveum.midpoint.web.component.util.Selectable; +import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour; +import com.evolveum.midpoint.xml.ns._public.common.common_3.AuthorizationPhaseType; import org.apache.commons.lang.StringUtils; import org.apache.wicket.Component; import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable; import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn; -import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn; import org.apache.wicket.extensions.markup.html.repeater.data.table.export.CSVDataExporter; import org.apache.wicket.extensions.markup.html.repeater.data.table.export.ExportToolbar; -import org.apache.wicket.extensions.markup.html.repeater.data.table.export.IDataExporter; -import org.apache.wicket.extensions.markup.html.repeater.data.table.export.IExportableColumn; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.link.AbstractLink; import org.apache.wicket.markup.html.link.ResourceLink; import org.apache.wicket.markup.html.panel.Fragment; -import org.apache.wicket.markup.repeater.data.IDataProvider; import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; @@ -49,7 +52,6 @@ import com.evolveum.midpoint.web.page.admin.configuration.PageImportObject; import com.evolveum.midpoint.web.session.UserProfileStorage.TableId; import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; -import org.apache.wicket.model.ResourceModel; import org.apache.wicket.request.resource.ResourceStreamResource; import org.apache.wicket.util.resource.IResourceStream; @@ -64,6 +66,7 @@ public abstract class MainObjectListPanel extends ObjectLi private static final String ID_IMPORT_OBJECT = "importObject"; private static final String ID_EXPORT_DATA = "exportData"; private static final String ID_BUTTON_BAR = "buttonBar"; + private static final Trace LOGGER = TraceManager.getTrace(MainObjectListPanel.class); public MainObjectListPanel(String id, Class type, TableId tableId, Collection> options, PageBase parentPage) { super(id, type, tableId, options, parentPage); @@ -160,6 +163,26 @@ public void onClick(AjaxRequestTarget target) { mainObjectListPanel.newObjectPerformed(target); } }; + newObjectIcon.add(new VisibleEnableBehaviour(){ + private static final long serialVersionUID = 1L; + + @Override + public boolean isVisible(){ + + boolean isVisible = false; + try { + PrismObject objectToCreate = mainObjectListPanel.getNewObjectListObject(); + mainObjectListPanel.adoptNewObject(objectToCreate); + isVisible = ((PageBase) getPage()).getSecurityEnforcer().isAuthorized(ModelAuthorizationAction.ADD.getUrl(), + null, objectToCreate, null, null, null) + && WebComponentUtil.isAuthorized(AuthorizationConstants.AUTZ_UI_USERS_ALL_URL, AuthorizationConstants.AUTZ_UI_USER_URL); + } catch (Exception ex){ + LOGGER.error("Failed to check authorization for ADD action on new object of " + mainObjectListPanel.getType().getSimpleName() + + " type, ", ex); + } + return isVisible; + } + }); add(newObjectIcon); AjaxIconButton importObject = new AjaxIconButton(ID_IMPORT_OBJECT, new Model<>("fa fa-upload"), @@ -172,6 +195,25 @@ public void onClick(AjaxRequestTarget target) { ((PageBase) getPage()).navigateToNext(PageImportObject.class); } }; + importObject.add(new VisibleEnableBehaviour(){ + private static final long serialVersionUID = 1L; + + @Override + public boolean isVisible(){ + + boolean isVisible = false; + try { + isVisible = ((PageBase) getPage()).getSecurityEnforcer().isAuthorized(ModelAuthorizationAction.IMPORT_OBJECTS.getUrl(), + null, null, null, null, null) + && WebComponentUtil.isAuthorized(AuthorizationConstants.AUTZ_UI_CONFIGURATION_ALL_URL, + AuthorizationConstants.AUTZ_UI_CONFIGURATION_IMPORT_URL); + } catch (Exception ex){ + LOGGER.error("Failed to check authorization for IMPORT action for " + mainObjectListPanel.getType().getSimpleName() + + " object, ", ex); + } + return isVisible; + } + }); add(importObject); String fileName = mainObjectListPanel.getType().getSimpleName() + @@ -188,4 +230,12 @@ protected IResourceStream getResourceStream() { } } + + protected PrismObject getNewObjectListObject(){ + return null; + } + + private void adoptNewObject(PrismObject object) throws SchemaException{ + getPageBase().getMidpointApplication().getPrismContext().adopt(object); + } } \ No newline at end of file diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertDefinitions.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertDefinitions.java index 56bf1598ca2..9f43961865e 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertDefinitions.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertDefinitions.java @@ -19,6 +19,7 @@ import com.evolveum.midpoint.gui.api.GuiStyleConstants; import com.evolveum.midpoint.gui.api.component.MainObjectListPanel; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; +import com.evolveum.midpoint.prism.PrismObject; import com.evolveum.midpoint.prism.delta.ObjectDelta; import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.schema.result.OperationResultStatus; @@ -99,6 +100,11 @@ public void objectDetailsPerformed(AjaxRequestTarget target, AccessCertification PageCertDefinitions.this.detailsPerformed(target, service); } + @Override + protected PrismObject getNewObjectListObject(){ + return (new AccessCertificationDefinitionType()).asPrismObject(); + } + @Override protected List, String>> createColumns() { return PageCertDefinitions.this.initColumns(); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageCreatedReports.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageCreatedReports.java index 8a6ee605b28..73d8ac59130 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageCreatedReports.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageCreatedReports.java @@ -28,6 +28,7 @@ import javax.xml.namespace.QName; +import com.evolveum.midpoint.xml.ns._public.common.common_3.*; import org.apache.commons.lang.StringUtils; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.form.OnChangeAjaxBehavior; @@ -79,10 +80,6 @@ import com.evolveum.midpoint.web.page.admin.reports.dto.ReportDeleteDialogDto; import com.evolveum.midpoint.web.session.UserProfileStorage; import com.evolveum.midpoint.web.util.OnePageParameterEncoder; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ExportType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.MetadataType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ReportOutputType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ReportType; /** * @author lazyman @@ -214,8 +211,13 @@ protected List createInlineMenu() { protected List, String>> createColumns() { return PageCreatedReports.this.initColumns(ajaxDownloadBehavior); } - - @Override + + @Override + protected PrismObject getNewObjectListObject(){ + return (new ReportOutputType()).asPrismObject(); + } + + @Override protected void objectDetailsPerformed(AjaxRequestTarget target, ReportOutputType object) { // TODO Auto-generated method stub diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/PageResources.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/PageResources.java index b2fd76ac27f..7a927b8e555 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/PageResources.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/PageResources.java @@ -20,6 +20,7 @@ import java.util.Collection; import java.util.List; +import com.evolveum.midpoint.prism.PrismObject; import com.evolveum.midpoint.web.application.Url; import com.evolveum.midpoint.web.component.data.column.DoubleButtonColumn; import com.evolveum.midpoint.web.component.data.column.InlineMenuButtonColumn; @@ -27,6 +28,7 @@ import com.evolveum.midpoint.web.component.search.*; import com.evolveum.midpoint.web.session.PageStorage; import com.evolveum.midpoint.web.session.SessionStorage; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ReportOutputType; import com.evolveum.midpoint.xml.ns._public.common.common_3.SearchBoxModeType; import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType; import org.apache.commons.lang.StringUtils; @@ -174,6 +176,11 @@ protected List, String>> createColumns() { return PageResources.this.initResourceColumns(); } + @Override + protected PrismObject getNewObjectListObject(){ + return (new ResourceType()).asPrismObject(); + } + @Override protected IColumn, String> createActionsColumn() { return PageResources.this.createResourceActionsColumn(); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentPanel.java index f923a1a2026..9653bbcbd7a 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentPanel.java @@ -268,6 +268,11 @@ protected List, String>> createColumns() { return ResourceContentPanel.this.initColumns(); } + @Override + protected PrismObject getNewObjectListObject(){ + return (new ShadowType()).asPrismObject(); + } + @Override protected IColumn, String> createActionsColumn(){ return new InlineMenuHeaderColumn(createHeaderMenuItems()); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceTasksPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceTasksPanel.java index ff6191b5cdf..d4b09ddb5d4 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceTasksPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceTasksPanel.java @@ -19,6 +19,7 @@ import java.util.List; import com.evolveum.midpoint.prism.query.builder.QueryBuilder; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowType; import org.apache.wicket.Component; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn; @@ -121,8 +122,12 @@ protected List createInlineMenu() { // TODO Auto-generated method stub return null; } - - + + @Override + protected PrismObject getNewObjectListObject(){ + return (new TaskType()).asPrismObject(); + } + @Override public void objectDetailsPerformed(AjaxRequestTarget target, TaskType task) { // TODO Auto-generated method stub diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/PageRoles.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/PageRoles.java index d9e2fe86fc8..e688cd131ee 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/PageRoles.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/PageRoles.java @@ -18,6 +18,7 @@ import com.evolveum.midpoint.gui.api.GuiStyleConstants; import com.evolveum.midpoint.gui.api.component.MainObjectListPanel; +import com.evolveum.midpoint.prism.PrismObject; import com.evolveum.midpoint.security.api.AuthorizationConstants; import com.evolveum.midpoint.util.logging.Trace; import com.evolveum.midpoint.util.logging.TraceManager; @@ -33,10 +34,7 @@ import com.evolveum.midpoint.web.component.util.SelectableBean; import com.evolveum.midpoint.web.session.UserProfileStorage.TableId; import com.evolveum.midpoint.web.util.OnePageParameterEncoder; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.RoleType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.*; import org.apache.wicket.Component; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.behavior.AttributeAppender; @@ -98,6 +96,7 @@ private void initLayout() { add(mainForm); MainObjectListPanel roleListPanel = new MainObjectListPanel(ID_TABLE, RoleType.class, TableId.TABLE_ROLES, null, this) { + private static final long serialVersionUID = 1L; @Override protected List createInlineMenu() { @@ -109,7 +108,12 @@ protected List, String>> createColumns() { return PageRoles.this.initColumns(); } - @Override + @Override + protected PrismObject getNewObjectListObject(){ + return (new RoleType()).asPrismObject(); + } + + @Override protected IColumn, String> createActionsColumn() { return PageRoles.this.createActionsColumn(); } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/services/PageServices.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/services/PageServices.java index 6e61811171a..79167a42a3c 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/services/PageServices.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/services/PageServices.java @@ -18,6 +18,7 @@ import com.evolveum.midpoint.gui.api.GuiStyleConstants; import com.evolveum.midpoint.gui.api.component.MainObjectListPanel; +import com.evolveum.midpoint.prism.PrismObject; import com.evolveum.midpoint.security.api.AuthorizationConstants; import com.evolveum.midpoint.util.logging.Trace; import com.evolveum.midpoint.util.logging.TraceManager; @@ -102,6 +103,11 @@ public void objectDetailsPerformed(AjaxRequestTarget target, ServiceType service PageServices.this.serviceDetailsPerformed(target, service); } + @Override + protected PrismObject getNewObjectListObject(){ + return (new ServiceType()).asPrismObject(); + } + @Override protected List, String>> createColumns() { return ColumnUtils.getDefaultServiceColumns(); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/PageUsers.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/PageUsers.java index 74a0cfeb363..7973ca56b14 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/PageUsers.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/PageUsers.java @@ -21,6 +21,7 @@ import java.util.List; import com.evolveum.midpoint.gui.api.component.ObjectBrowserPanel; +import com.evolveum.midpoint.prism.PrismObject; import com.evolveum.midpoint.prism.query.InOidFilter; import com.evolveum.midpoint.prism.query.NotFilter; import com.evolveum.midpoint.prism.query.ObjectFilter; @@ -178,6 +179,11 @@ protected List, String>> createColumns() { return PageUsers.this.initColumns(); } + @Override + protected PrismObject getNewObjectListObject(){ + return (new UserType()).asPrismObject(); + } + @Override protected IColumn, String> createActionsColumn() { return new InlineMenuButtonColumn>(createRowActions(false), 3, PageUsers.this){ diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/AbstractRoleMemberPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/AbstractRoleMemberPanel.java index 9f1dabd8e98..f7889e30419 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/AbstractRoleMemberPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/AbstractRoleMemberPanel.java @@ -135,6 +135,11 @@ protected void objectDetailsPerformed(AjaxRequestTarget target, ObjectType objec detailsPerformed(target, object); } + @Override + protected PrismObject getNewObjectListObject(){ + return null; + } + @Override protected boolean isClickable(IModel> rowModel) { if (rowModel == null || rowModel.getObject() == null From 4ba8d57c42bc9955fa748d4f3678762540414699 Mon Sep 17 00:00:00 2001 From: Katarina Valalikova Date: Tue, 13 Jun 2017 11:53:30 +0200 Subject: [PATCH 3/8] fix for MID-3439 - added support for expression for substring filter. --- .../prism/marshaller/QueryConvertor.java | 63 ++++++++++++------- .../midpoint/prism/query/SubstringFilter.java | 8 ++- .../midpoint/schema/TestQueryConvertor.java | 4 +- ...-substring-anchor-start-end-expression.xml | 35 +++++++++++ .../filter-user-substring-expression.xml | 33 ++++++++++ 5 files changed, 118 insertions(+), 25 deletions(-) create mode 100644 infra/schema/src/test/resources/queryconvertor/filter-user-substring-anchor-start-end-expression.xml create mode 100644 infra/schema/src/test/resources/queryconvertor/filter-user-substring-expression.xml diff --git a/infra/prism/src/main/java/com/evolveum/midpoint/prism/marshaller/QueryConvertor.java b/infra/prism/src/main/java/com/evolveum/midpoint/prism/marshaller/QueryConvertor.java index 4816ec2475b..3ad445d26b6 100644 --- a/infra/prism/src/main/java/com/evolveum/midpoint/prism/marshaller/QueryConvertor.java +++ b/infra/prism/src/main/java/com/evolveum/midpoint/prism/marshaller/QueryConvertor.java @@ -509,7 +509,7 @@ private static RefFilter parseRefFilter(MapXNode claus private static ExpressionWrapper parseExpression(MapXNode xmap, PrismContext prismContext) throws SchemaException { Entry expressionEntry = xmap.getSingleEntryThatDoesNotMatch( - ELEMENT_VALUE, ELEMENT_MATCHING, ELEMENT_PATH); + ELEMENT_VALUE, ELEMENT_MATCHING, ELEMENT_ANCHOR_START, ELEMENT_ANCHOR_END, ELEMENT_PATH); return PrismUtil.parseExpression(expressionEntry, prismContext); } @@ -517,18 +517,12 @@ private static SubstringFilter parseSubstringFilter(Ma throws SchemaException { ItemPath itemPath = getPath(clauseXMap); - if (itemPath == null || itemPath.isEmpty()){ - throw new SchemaException("Could not convert query, because query does not contain item path."); + if (itemPath == null || itemPath.isEmpty()) { + throw new SchemaException("Could not convert query, because query does not contain item path."); } QName itemName = ItemPath.getName(itemPath.last()); QName matchingRule = getMatchingRule(clauseXMap); - XNode valueXnode = clauseXMap.get(ELEMENT_VALUE); - - ItemDefinition itemDefinition = locateItemDefinition(valueXnode, itemPath, pcd, prismContext); - - Item item = parseItem(new RootXNode(ELEMENT_VALUE, valueXnode), itemName, itemDefinition, prismContext); - Boolean anchorStart = clauseXMap.getParsedPrimitiveValue(ELEMENT_ANCHOR_START, DOMUtil.XSD_BOOLEAN); if (anchorStart == null) { anchorStart = false; @@ -539,21 +533,46 @@ private static SubstringFilter parseSubstringFilter(Ma anchorEnd = false; } - if (preliminaryParsingOnly) { - return null; - } else { - List values = item.getValues(); - Object realValue; - if (values == null || values.isEmpty()) { - realValue = null; // TODO throw an exception? - } else if (values.size() > 1) { - throw new IllegalArgumentException("Expected at most 1 value, got " + values); + XNode valueXnode = clauseXMap.get(ELEMENT_VALUE); + ItemDefinition itemDefinition = locateItemDefinition(valueXnode, itemPath, pcd, prismContext); + + if (valueXnode != null) { + + Item item = parseItem(new RootXNode(ELEMENT_VALUE, valueXnode), itemName, itemDefinition, prismContext); + + if (preliminaryParsingOnly) { + return null; } else { - realValue = ((PrismPropertyValue) values.get(0)).getValue(); + List values = item.getValues(); + Object realValue; + if (values == null || values.isEmpty()) { + realValue = null; // TODO throw an exception? + } else if (values.size() > 1) { + throw new IllegalArgumentException("Expected at most 1 value, got " + values); + } else { + realValue = ((PrismPropertyValue) values.get(0)).getValue(); + } + return SubstringFilter.createSubstring(itemPath, (PrismPropertyDefinition) itemDefinition, prismContext, + matchingRule, realValue, anchorStart, anchorEnd); + } - return SubstringFilter.createSubstring(itemPath, (PrismPropertyDefinition) itemDefinition, - prismContext, matchingRule, realValue, anchorStart, anchorEnd); - } + } else { + ExpressionWrapper expressionWrapper = parseExpression(clauseXMap, prismContext); + if (expressionWrapper != null) { + if (preliminaryParsingOnly) { + return null; + } else { + return SubstringFilter.createSubstring(itemPath, (PrismPropertyDefinition) itemDefinition, prismContext, matchingRule, expressionWrapper, anchorStart, anchorEnd); + } + } else { + if (preliminaryParsingOnly) { + return null; + } else { + return SubstringFilter.createSubstring(itemPath, (PrismPropertyDefinition) itemDefinition, prismContext, matchingRule, + (ExpressionWrapper) null, anchorStart, anchorEnd); + } + } + } } private static OrgFilter parseOrgFilter(MapXNode clauseXMap, PrismContainerDefinition pcd, boolean preliminaryParsingOnly, PrismContext prismContext) throws SchemaException { diff --git a/infra/prism/src/main/java/com/evolveum/midpoint/prism/query/SubstringFilter.java b/infra/prism/src/main/java/com/evolveum/midpoint/prism/query/SubstringFilter.java index 81d40863e7b..a36d916ee7b 100644 --- a/infra/prism/src/main/java/com/evolveum/midpoint/prism/query/SubstringFilter.java +++ b/infra/prism/src/main/java/com/evolveum/midpoint/prism/query/SubstringFilter.java @@ -57,8 +57,12 @@ public static SubstringFilter createSubstring(@NotNull ItemPath path, @Nu List> values = anyValueToPropertyValueList(prismContext, anyValue); return new SubstringFilter<>(path, itemDefinition, matchingRule, values, null, anchorStart, anchorEnd); } - - // TODO expression based substring filter + + public static SubstringFilter createSubstring(@NotNull ItemPath path, @Nullable PrismPropertyDefinition itemDefinition, + @NotNull PrismContext prismContext, + @Nullable QName matchingRule, ExpressionWrapper expressionWrapper, boolean anchorStart, boolean anchorEnd) { + return new SubstringFilter<>(path, itemDefinition, matchingRule, null, expressionWrapper, anchorStart, anchorEnd); + } public boolean isAnchorStart() { return anchorStart; diff --git a/infra/schema/src/test/java/com/evolveum/midpoint/schema/TestQueryConvertor.java b/infra/schema/src/test/java/com/evolveum/midpoint/schema/TestQueryConvertor.java index 8ef7447445c..cb809a0326a 100644 --- a/infra/schema/src/test/java/com/evolveum/midpoint/schema/TestQueryConvertor.java +++ b/infra/schema/src/test/java/com/evolveum/midpoint/schema/TestQueryConvertor.java @@ -400,7 +400,9 @@ public void testUserQuery() throws Exception { File[] userQueriesToTest = new File[] { new File(TEST_DIR, "filter-user-by-fullName.xml"), new File(TEST_DIR, "filter-user-by-name.xml"), new File(TEST_DIR, "filter-user-substring-fullName.xml"), - new File(TEST_DIR, "filter-user-substring-employeeType.xml") + new File(TEST_DIR, "filter-user-substring-employeeType.xml"), + new File(TEST_DIR, "filter-user-substring-expression.xml"), + new File(TEST_DIR, "filter-user-substring-anchor-start-end-expression.xml") }; // prismContext.silentMarshalObject(queryTypeNew, LOGGER); for (File file : userQueriesToTest) { diff --git a/infra/schema/src/test/resources/queryconvertor/filter-user-substring-anchor-start-end-expression.xml b/infra/schema/src/test/resources/queryconvertor/filter-user-substring-anchor-start-end-expression.xml new file mode 100644 index 00000000000..b45fd142683 --- /dev/null +++ b/infra/schema/src/test/resources/queryconvertor/filter-user-substring-anchor-start-end-expression.xml @@ -0,0 +1,35 @@ + + + + + + + + c:employeeType + + + + return "12345" + + + + false + false + + + diff --git a/infra/schema/src/test/resources/queryconvertor/filter-user-substring-expression.xml b/infra/schema/src/test/resources/queryconvertor/filter-user-substring-expression.xml new file mode 100644 index 00000000000..10ab4445ae0 --- /dev/null +++ b/infra/schema/src/test/resources/queryconvertor/filter-user-substring-expression.xml @@ -0,0 +1,33 @@ + + + + + + + + c:employeeType + + + + return "12345" + + + + + + From 3b0cc2608154b6a94cf66aa641708eeac13953b7 Mon Sep 17 00:00:00 2001 From: honchar Date: Tue, 13 Jun 2017 12:38:41 +0200 Subject: [PATCH 4/8] show all assignments menu itm visibility --- .../assignment/AssignmentTablePanel.java | 25 +++++++++++-------- .../FocusAssignmentsTabPanel.java | 9 +++++++ 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentTablePanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentTablePanel.java index ffcff76af9f..56404f84b39 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentTablePanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentTablePanel.java @@ -280,17 +280,18 @@ public void onClick(AjaxRequestTarget target) { }); items.add(item); } - item = new InlineMenuItem(createStringResource("AssignmentTablePanel.menu.showAllAssignments"), - new InlineMenuItemAction() { - private static final long serialVersionUID = 1L; - - @Override - public void onClick(AjaxRequestTarget target) { - showAllAssignments(target); - } - }); - items.add(item); + if (isShowAllAssignmentsVisible()) { + item = new InlineMenuItem(createStringResource("AssignmentTablePanel.menu.showAllAssignments"), + new InlineMenuItemAction() { + private static final long serialVersionUID = 1L; + @Override + public void onClick(AjaxRequestTarget target) { + showAllAssignments(target); + } + }); + items.add(item); + } return items; } @@ -298,6 +299,10 @@ protected void showAllAssignments(AjaxRequestTarget target) { } + protected boolean isShowAllAssignmentsVisible(){ + return false; + } + private List getSelectedAssignments() { List selected = new ArrayList<>(); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/FocusAssignmentsTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/FocusAssignmentsTabPanel.java index ac2b530a41e..07ec7746268 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/FocusAssignmentsTabPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/FocusAssignmentsTabPanel.java @@ -17,6 +17,8 @@ import com.evolveum.midpoint.gui.api.model.LoadableModel; import com.evolveum.midpoint.gui.api.page.PageBase; +import com.evolveum.midpoint.prism.PrismContainer; +import com.evolveum.midpoint.prism.path.ItemPath; import com.evolveum.midpoint.util.logging.Trace; import com.evolveum.midpoint.util.logging.TraceManager; import com.evolveum.midpoint.web.component.assignment.AssignmentEditorDto; @@ -68,6 +70,13 @@ protected boolean getAssignmentMenuVisibility() { return !getObjectWrapper().isReadonly(); } + @Override + protected boolean isShowAllAssignmentsVisible(){ + PrismContainer assignmentContainer = getObjectWrapper().getObject().findContainer(new ItemPath(FocusType.F_ASSIGNMENT)); + return assignmentContainer != null && assignmentContainer.getDefinition() != null ? + assignmentContainer.getDefinition().canRead() : super.isShowAllAssignmentsVisible(); + } + @Override protected void showAllAssignments(AjaxRequestTarget target) { List assignmentsPreviewDtos = ((PageAdminFocus) getPageBase()).recomputeAssignmentsPerformed(target); From 1a2c5a04957a767d237fcc7ab29c71b7f2a1831f Mon Sep 17 00:00:00 2001 From: Katarina Valalikova Date: Tue, 13 Jun 2017 13:55:56 +0200 Subject: [PATCH 5/8] implementing MID-3124 --- .../gui/api/util/WebComponentUtil.java | 33 +++++++++++++++++++ .../util/FocusListInlineMenuHelper.java | 7 ++-- .../web/page/admin/roles/PageRoles.java | 20 +++++++---- .../web/page/admin/services/PageServices.java | 16 +++++---- .../localization/Midpoint.properties | 2 ++ 5 files changed, 60 insertions(+), 18 deletions(-) diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java index 3491b9c92fd..80d2abdf05b 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java @@ -39,6 +39,8 @@ import com.evolveum.midpoint.schema.SelectorOptions; import com.evolveum.midpoint.web.util.ObjectTypeGuiDescriptor; import com.evolveum.midpoint.xml.ns._public.common.common_3.*; + +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.Validate; import org.apache.commons.lang.math.NumberUtils; @@ -77,6 +79,7 @@ import org.joda.time.format.DateTimeFormat; import com.evolveum.midpoint.gui.api.GuiStyleConstants; +import com.evolveum.midpoint.gui.api.component.MainObjectListPanel; import com.evolveum.midpoint.gui.api.component.result.OpResult; import com.evolveum.midpoint.gui.api.model.LoadableModel; import com.evolveum.midpoint.gui.api.model.NonEmptyModel; @@ -109,6 +112,7 @@ import com.evolveum.midpoint.prism.query.ObjectPaging; import com.evolveum.midpoint.prism.query.ObjectQuery; import com.evolveum.midpoint.prism.query.QueryJaxbConvertor; +import com.evolveum.midpoint.prism.query.builder.QueryBuilder; import com.evolveum.midpoint.prism.xml.XmlTypeConverter; import com.evolveum.midpoint.schema.DeltaConvertor; import com.evolveum.midpoint.schema.SchemaConstantsGenerated; @@ -135,8 +139,10 @@ import com.evolveum.midpoint.web.component.TabbedPanel; import com.evolveum.midpoint.web.component.data.BaseSortableDataProvider; import com.evolveum.midpoint.web.component.data.Table; +import com.evolveum.midpoint.web.component.data.column.ColumnMenuAction; import com.evolveum.midpoint.web.component.input.DropDownChoicePanel; import com.evolveum.midpoint.web.component.util.Selectable; +import com.evolveum.midpoint.web.component.util.SelectableBean; import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour; import com.evolveum.midpoint.web.page.PageDialog; import com.evolveum.midpoint.web.page.admin.configuration.component.EmptyOnBlurAjaxFormUpdatingBehaviour; @@ -1933,5 +1939,32 @@ public static boolean getElementVisibility(UserInterfaceElementVisibilityType vi } return true; } + + public static IModel createAbstractRoleConfirmationMessage(String actionName, ColumnMenuAction action, MainObjectListPanel abstractRoleTable, PageBase pageBase) { + List selectedRoles = new ArrayList<>(); + if (action.getRowModel() == null) { + selectedRoles.addAll(abstractRoleTable.getSelectedObjects()); + } else { + selectedRoles.add(((SelectableBean) action.getRowModel().getObject()).getValue()); + } + OperationResult result = new OperationResult("Search Members"); + boolean atLeastOneWithMembers = false; + for (AR selectedRole : selectedRoles) { + ObjectQuery query = QueryBuilder.queryFor(FocusType.class, pageBase.getPrismContext()).item(FocusType.F_ROLE_MEMBERSHIP_REF).ref(ObjectTypeUtil.createObjectRef(selectedRole).asReferenceValue()).maxSize(1).build(); + List> members = WebModelServiceUtils.searchObjects(FocusType.class, query, result, pageBase); + if (CollectionUtils.isNotEmpty(members)) { + atLeastOneWithMembers = true; + break; + } + } + String members = atLeastOneWithMembers ? ".members" : ""; + if (action.getRowModel() == null) { + return pageBase.createStringResource("pageRoles.message.confirmationMessageForMultipleObject" + members, + actionName, abstractRoleTable.getSelectedObjectsCount() ); + } else { + return pageBase.createStringResource("pageRoles.message.confirmationMessageForSingleObject" + members, + actionName, ((ObjectType)((SelectableBean)action.getRowModel().getObject()).getValue()).getName()); + } + } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/util/FocusListInlineMenuHelper.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/util/FocusListInlineMenuHelper.java index 2a8c57f789a..2592dcf3c0c 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/util/FocusListInlineMenuHelper.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/util/FocusListInlineMenuHelper.java @@ -231,11 +231,10 @@ public void deleteConfirmedPerformed(AjaxRequestTarget target, F selectedObject) try { Task task = parentPage.createSimpleTask(getOperationName(OPERATION_DELETE_OBJECT)); - ObjectDelta delta = new ObjectDelta(objectClass, ChangeType.DELETE, parentPage.getPrismContext()); - delta.setOid(object.getOid()); - parentPage.getModelService().executeChanges(WebComponentUtil.createDeltaCollection(delta), null, task, subResult); + ObjectDelta delta = ObjectDelta.createDeleteDelta(objectClass, object.getOid(), parentPage.getPrismContext()); + WebModelServiceUtils.save(delta, subResult, task, parentPage); subResult.computeStatus(); - } catch (CommonException|RuntimeException ex) { + } catch (RuntimeException ex) { subResult.recomputeStatus(); subResult.recordFatalError("Couldn't delete object.", ex); LoggingUtils.logUnexpectedException(LOGGER, "Couldn't delete object", ex); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/PageRoles.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/PageRoles.java index e688cd131ee..b779e3ca940 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/PageRoles.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/PageRoles.java @@ -18,7 +18,13 @@ import com.evolveum.midpoint.gui.api.GuiStyleConstants; import com.evolveum.midpoint.gui.api.component.MainObjectListPanel; +import com.evolveum.midpoint.gui.api.util.WebComponentUtil; +import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils; import com.evolveum.midpoint.prism.PrismObject; +import com.evolveum.midpoint.prism.query.ObjectQuery; +import com.evolveum.midpoint.prism.query.builder.QueryBuilder; +import com.evolveum.midpoint.schema.result.OperationResult; +import com.evolveum.midpoint.schema.util.ObjectTypeUtil; import com.evolveum.midpoint.security.api.AuthorizationConstants; import com.evolveum.midpoint.util.logging.Trace; import com.evolveum.midpoint.util.logging.TraceManager; @@ -35,6 +41,8 @@ import com.evolveum.midpoint.web.session.UserProfileStorage.TableId; import com.evolveum.midpoint.web.util.OnePageParameterEncoder; import com.evolveum.midpoint.xml.ns._public.common.common_3.*; + +import org.apache.commons.collections4.CollectionUtils; import org.apache.wicket.Component; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.behavior.AttributeAppender; @@ -68,6 +76,8 @@ public class PageRoles extends PageAdminRoles implements FocusListComponent { private static final String ID_TABLE = "table"; private static final String ID_MAIN_FORM = "mainForm"; + private static final String OPERATION_SEARCH_MEMBERS = DOT_CLASS + "searchMembers"; + private IModel searchModel; public PageRoles() { @@ -179,15 +189,11 @@ public MainObjectListPanel getObjectListPanel() { private IModel getConfirmationMessageModel(ColumnMenuAction action, String actionName){ - if (action.getRowModel() == null) { - return createStringResource("pageRoles.message.confirmationMessageForMultipleObject", - actionName, getRoleTable().getSelectedObjectsCount() ); - } else { - return createStringResource("pageRoles.message.confirmationMessageForSingleObject", - actionName, ((ObjectType)((SelectableBean)action.getRowModel().getObject()).getValue()).getName()); - } + return WebComponentUtil.createAbstractRoleConfirmationMessage(actionName, action, getRoleTable(), this); } + + private boolean isShowConfirmationDialog(ColumnMenuAction action){ return action.getRowModel() != null || diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/services/PageServices.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/services/PageServices.java index 79167a42a3c..0831cb07b09 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/services/PageServices.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/services/PageServices.java @@ -18,6 +18,7 @@ import com.evolveum.midpoint.gui.api.GuiStyleConstants; import com.evolveum.midpoint.gui.api.component.MainObjectListPanel; +import com.evolveum.midpoint.gui.api.util.WebComponentUtil; import com.evolveum.midpoint.prism.PrismObject; import com.evolveum.midpoint.security.api.AuthorizationConstants; import com.evolveum.midpoint.util.logging.Trace; @@ -156,13 +157,14 @@ public MainObjectListPanel getObjectListPanel() { } private IModel getConfirmationMessageModel(ColumnMenuAction action, String actionName){ - if (action.getRowModel() == null) { - return createStringResource("PageServices.message.confirmationMessageForMultipleObject", - actionName, getObjectListPanel().getSelectedObjectsCount() ); - } else { - return createStringResource("PageServices.message.confirmationMessageForSingleObject", - actionName, ((ObjectType)((SelectableBean)action.getRowModel().getObject()).getValue()).getName()); - } + return WebComponentUtil.createAbstractRoleConfirmationMessage(actionName, action, getObjectListPanel(), this); +// if (action.getRowModel() == null) { +// return createStringResource("PageServices.message.confirmationMessageForMultipleObject", +// actionName, getObjectListPanel().getSelectedObjectsCount() ); +// } else { +// return createStringResource("PageServices.message.confirmationMessageForSingleObject", +// actionName, ((ObjectType)((SelectableBean)action.getRowModel().getObject()).getValue()).getName()); +// } } diff --git a/gui/admin-gui/src/main/resources/localization/Midpoint.properties b/gui/admin-gui/src/main/resources/localization/Midpoint.properties index e0762735528..eca1594b7ac 100644 --- a/gui/admin-gui/src/main/resources/localization/Midpoint.properties +++ b/gui/admin-gui/src/main/resources/localization/Midpoint.properties @@ -1885,6 +1885,8 @@ pageRoles.button.delete=Delete pageRoles.dialog.title.confirmDelete=Confirm delete pageRoles.message.confirmationMessageForMultipleObject=Do you really want to {0} selected {1} role(s)? pageRoles.message.confirmationMessageForSingleObject=Do you really want to {0} role '{1}'? +pageRoles.message.confirmationMessageForMultipleObject.members=Do you really want to {0} selected {1} role(s)? Some of the roles have member(s). +pageRoles.message.confirmationMessageForSingleObject.members=Do you really want to {0} role '{1}'? Selected role has member(s). pageRoles.message.nothingSelected=No role has been selected. pageRoles.message.queryError=Error occurred during translation search query to filter. pageRoles.requestable=Requestable From f8c09778306f618ed23f273251eb3000f83a475a Mon Sep 17 00:00:00 2001 From: honchar Date: Tue, 13 Jun 2017 14:04:24 +0200 Subject: [PATCH 6/8] assign member menu item fix --- .../web/page/admin/roles/RoleMemberPanel.java | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/RoleMemberPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/RoleMemberPanel.java index e58c77efafb..578be757045 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/RoleMemberPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/RoleMemberPanel.java @@ -361,19 +361,4 @@ private ObjectQuery createDirectMemberQuery() { return ObjectQuery.createObjectQuery(TypeFilter.createType(objectType, query.getFilter())); } } - - @Override - protected List newMemberInlineMenuItems() { - return super.createNewMemberInlineMenuItems(); - } - - @Override - protected List createUnassignMemberInlineMenuItems() { - return super.createUnassignMemberInlineMenuItems(); - } - - @Override - protected List createMemberRecomputeInlineMenuItems() { - return super.createMemberRecomputeInlineMenuItems(); - } } From c58ab5beec7c3a3079a64957625502968d64aff4 Mon Sep 17 00:00:00 2001 From: Katarina Valalikova Date: Tue, 13 Jun 2017 14:28:25 +0200 Subject: [PATCH 7/8] implementing MID-3710 --- .../web/page/admin/configuration/dto/LoggingDto.java | 1 + .../page/admin/configuration/dto/StandardLoggerType.java | 4 +++- .../src/main/resources/localization/Midpoint.properties | 2 ++ .../src/main/resources/localization/schema.properties | 1 + .../main/resources/xml/ns/public/common/common-core-3.xsd | 7 +++++++ 5 files changed, 14 insertions(+), 1 deletion(-) diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/dto/LoggingDto.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/dto/LoggingDto.java index 1be7bced3d1..534420a2277 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/dto/LoggingDto.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/dto/LoggingDto.java @@ -60,6 +60,7 @@ public class LoggingDto implements Serializable { componentMap.put("com.evolveum.midpoint.wf", LoggingComponentType.WORKFLOWS); componentMap.put("com.evolveum.midpoint.notifications", LoggingComponentType.NOTIFICATIONS); componentMap.put("com.evolveum.midpoint.certification", LoggingComponentType.ACCESS_CERTIFICATION); + componentMap.put("com.evolveum.midpoint.security", LoggingComponentType.SECURITY); } private LoggingLevelType rootLevel; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/dto/StandardLoggerType.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/dto/StandardLoggerType.java index 8242ad687e7..6a64712548f 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/dto/StandardLoggerType.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/dto/StandardLoggerType.java @@ -26,7 +26,9 @@ public enum StandardLoggerType { PROJECTOR("com.evolveum.midpoint.model.impl.lens.projector.Projector"), PROJECTOR_DETAIL("com.evolveum.midpoint.model.impl.lens.projector"), CLOCKWORK("com.evolveum.midpoint.model.impl.lens.Clockwork"), - CHANGE_EXECUTOR("com.evolveum.midpoint.model.impl.lens.ChangeExecutor"); + CHANGE_EXECUTOR("com.evolveum.midpoint.model.impl.lens.ChangeExecutor"), + SYNCHRONIZATION("com.evolveum.midpoint.model.impl.sync.SynchronizationServiceImpl"), + AUTHORIZATION("com.evolveum.midpoint.security.impl.SecurityEnforcerImpl"); private final String value; diff --git a/gui/admin-gui/src/main/resources/localization/Midpoint.properties b/gui/admin-gui/src/main/resources/localization/Midpoint.properties index eca1594b7ac..74c61a8f386 100644 --- a/gui/admin-gui/src/main/resources/localization/Midpoint.properties +++ b/gui/admin-gui/src/main/resources/localization/Midpoint.properties @@ -2697,6 +2697,8 @@ StandardLoggerType.EXPRESSION=Expression (c.e.m.common.expression.Expression) StandardLoggerType.MAPPING=Mapping (c.e.m.common.mapping.Mapping) StandardLoggerType.PROJECTOR_DETAIL=Projector detailed (c.e.m.model.impl.lens.projector) StandardLoggerType.PROJECTOR=Projector (c.e.m.model.impl.lens.projector.Projector) +StandardLoggerType.SYNCHRONIZATION=Synchronization service (c.e.m.model.impl.sync.SynchronizationServiceImpl) +StandardLoggerType.AUTHORIZATION=Authorization (c.e.m.security.impl.SecurityEnforcerImpl) StandardLoggerType.SCRIPT_EXPRESSION=Script expression (c.e.m.common.expression.script.ScriptExpression) SubtasksPanel.label.category=Category SubtasksPanel.label.detail=Detail diff --git a/infra/schema/src/main/resources/localization/schema.properties b/infra/schema/src/main/resources/localization/schema.properties index e1ffc319472..624ce03e366 100644 --- a/infra/schema/src/main/resources/localization/schema.properties +++ b/infra/schema/src/main/resources/localization/schema.properties @@ -148,6 +148,7 @@ LoggingComponentType.RESOURCEOBJECTCHANGELISTENER=Resource object change listene LoggingComponentType.TASKMANAGER=Task manager logger LoggingComponentType.WORKFLOWS = Workflow logger LoggingComponentType.ACCESS_CERTIFICATION = Access certification logger +LoggingComponentType.SECURITY = Security logger LoggingLevelType.ALL=All LoggingLevelType.DEBUG=Debug LoggingLevelType.ERROR=Error diff --git a/infra/schema/src/main/resources/xml/ns/public/common/common-core-3.xsd b/infra/schema/src/main/resources/xml/ns/public/common/common-core-3.xsd index 4b917bfbab3..eeb579c8ff1 100644 --- a/infra/schema/src/main/resources/xml/ns/public/common/common-core-3.xsd +++ b/infra/schema/src/main/resources/xml/ns/public/common/common-core-3.xsd @@ -11729,6 +11729,13 @@ + + + + + + + From 7f7c1af5a22a5c3682531d74b96b95a78de46fe1 Mon Sep 17 00:00:00 2001 From: honchar Date: Tue, 13 Jun 2017 15:08:10 +0200 Subject: [PATCH 8/8] small style repair --- .../admin/configuration/PageDebugList.java | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) 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 3e0fc8401bb..6b0ba9c53b8 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 @@ -971,19 +971,11 @@ protected String resourceKey(ObjectTypes object) { WebMarkupContainer choiceContainer = new WebMarkupContainer(ID_CHOICE_CONTAINER); choiceContainer.setOutputMarkupId(true); - choiceContainer.add(new AttributeAppender("style", new LoadableModel() { - private static final long serialVersionUID = 1L; - @Override - public String load(){ - PageDebugList page = (PageDebugList) getPage(); - return page.searchModel.getObject().getSearch().isFullTextSearchEnabled() ? - "margin-top: -15px;" : ""; - } - })); searchForm.add(choiceContainer); DropDownChoice choice = new DropDownChoice(ID_CHOICE, new PropertyModel(model, DebugSearchDto.F_TYPE), createChoiceModel(renderer), renderer); + choice.add(getDropDownStyleAppender()); choiceContainer.add(choice); choice.add(new OnChangeAjaxBehavior() { @@ -997,6 +989,7 @@ protected void onUpdate(AjaxRequestTarget target) { DropDownChoice resource = new DropDownChoice(ID_RESOURCE, new PropertyModel(model, DebugSearchDto.F_RESOURCE), resourcesModel, createResourceRenderer()); + resource.add(getDropDownStyleAppender()); resource.setNullValid(true); resource.add(new AjaxFormComponentUpdatingBehavior("blur") { @@ -1085,5 +1078,17 @@ public Object getDisplayValue(ObjectViewDto object) { }; } + + private AttributeAppender getDropDownStyleAppender(){ + return new AttributeAppender("style", new LoadableModel() { + private static final long serialVersionUID = 1L; + @Override + public String load(){ + PageDebugList page = (PageDebugList) getPage(); + return page.searchModel.getObject().getSearch().isFullTextSearchEnabled() ? + "margin-top: -15px;" : ""; + } + }); + } } }