From e08b67c9999b875ebc65d2abba735605554c9196 Mon Sep 17 00:00:00 2001 From: Viliam Repan Date: Wed, 5 Sep 2018 12:23:01 +0200 Subject: [PATCH 1/5] don't run refreshShadowQick when raw=true --- .../midpoint/provisioning/impl/ShadowCache.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ShadowCache.java b/provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ShadowCache.java index 1eaf9a72f9e..981df025ba9 100644 --- a/provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ShadowCache.java +++ b/provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ShadowCache.java @@ -380,10 +380,14 @@ private PrismObject processNoFetchGet(ProvisioningContext ctx, XMLGregorianCalendar now, Task task, OperationResult parentResult) throws ObjectNotFoundException, SchemaException, CommunicationException, ConfigurationException, ExpressionEvaluationException, EncryptionException { LOGGER.trace("Processing noFetch get for {}", repositoryShadow); - - // Even with noFetch we still want to delete expired pending operations. And even delete - // the shadow if needed. - repositoryShadow = refreshShadowQick(ctx, repositoryShadow, now, task, parentResult); + + GetOperationOptions rootOptions = SelectorOptions.findRootOptions(options); + if (!GetOperationOptions.isRaw(rootOptions)) { + // Even with noFetch we still want to delete expired pending operations. And even delete + // the shadow if needed. + repositoryShadow = refreshShadowQick(ctx, repositoryShadow, now, task, parentResult); + } + if (repositoryShadow == null) { ObjectNotFoundException e = new ObjectNotFoundException("Resource object not found"); parentResult.recordFatalError(e); From 6c297a6c9dec5b7e14ea52bb1bf39e0003244b62 Mon Sep 17 00:00:00 2001 From: Viliam Repan Date: Wed, 5 Sep 2018 12:46:41 +0200 Subject: [PATCH 2/5] improved tooltips --- .../com/evolveum/midpoint/web/util/InfoTooltipBehavior.java | 5 ++++- .../src/main/resources/static/less/midpoint-theme.less | 6 ++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/util/InfoTooltipBehavior.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/util/InfoTooltipBehavior.java index d33df9bd1eb..3ea56567d81 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/util/InfoTooltipBehavior.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/util/InfoTooltipBehavior.java @@ -51,7 +51,10 @@ public String getModalContainer(Component component) { public void onConfigure(Component component) { super.onConfigure(component); - component.add(AttributeModifier.replace("class", getCssClass())); + String cssClass = getCssClass(); + if (cssClass != null) { + component.add(AttributeModifier.replace("class", cssClass)); + } } @Override diff --git a/gui/admin-gui/src/main/resources/static/less/midpoint-theme.less b/gui/admin-gui/src/main/resources/static/less/midpoint-theme.less index 3ebfd6adfc2..ecd28ed08aa 100644 --- a/gui/admin-gui/src/main/resources/static/less/midpoint-theme.less +++ b/gui/admin-gui/src/main/resources/static/less/midpoint-theme.less @@ -1382,3 +1382,9 @@ th.shrink { font-size: 12px; padding-bottom: 5px; } + +// This will make the tooltip respect new lines. +// Lines will still wrap if they are longer than the default max-width of the container. +.tooltip-inner { + white-space:pre-wrap; +} \ No newline at end of file From f7ba544a9f90c322d2a59b625834895015a92131 Mon Sep 17 00:00:00 2001 From: Viliam Repan Date: Wed, 5 Sep 2018 12:47:00 +0200 Subject: [PATCH 3/5] MID-4835 pending operations, work in progress --- .../midpoint/gui/api/component/BasePanel.java | 16 +- .../api/component/PendingOperationPanel.html | 23 +++ .../api/component/PendingOperationPanel.java | 170 ++++++++++++++++++ .../web/component/prism/CheckTableHeader.html | 4 +- .../web/component/prism/CheckTableHeader.java | 32 +++- .../admin/resources/ResourceContentPanel.java | 33 +++- .../localization/Midpoint.properties | 9 +- .../resources/localization/schema.properties | 6 + 8 files changed, 275 insertions(+), 18 deletions(-) create mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/PendingOperationPanel.html create mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/PendingOperationPanel.java diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/BasePanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/BasePanel.java index c57d06bf317..8fdb4a4e4fc 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/BasePanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/BasePanel.java @@ -30,16 +30,16 @@ * Base class for most midPoint GUI panels. It has a constructor and * utility methods for convenient handling of the model. It also has * other utility methods often used in reusable components. - * + *

* Almost all reusable components should extend this class. * * @author lazyman * @author semancik */ public class BasePanel extends Panel { - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; - private IModel model; + private IModel model; public BasePanel(String id) { this(id, null); @@ -66,10 +66,14 @@ public String getString(String resourceKey, Object... objects) { return createStringResource(resourceKey, objects).getString(); } + public String getString(Enum e) { + return createStringResource(e).getString(); + } + public StringResourceModel createStringResource(String resourceKey, Object... objects) { - return new StringResourceModel(resourceKey, this).setModel(null) - .setDefaultValue(resourceKey) - .setParameters(objects); + return new StringResourceModel(resourceKey, this).setModel(null) + .setDefaultValue(resourceKey) + .setParameters(objects); // return StringResourceModelMigration.of(resourceKey, this, null, resourceKey, objects); } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/PendingOperationPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/PendingOperationPanel.html new file mode 100644 index 00000000000..e06cf020e68 --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/PendingOperationPanel.html @@ -0,0 +1,23 @@ + + + + + + + + + diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/PendingOperationPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/PendingOperationPanel.java new file mode 100644 index 00000000000..cf516b7d56e --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/PendingOperationPanel.java @@ -0,0 +1,170 @@ +/* + * Copyright (c) 2010-2018 Evolveum + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.evolveum.midpoint.gui.api.component; + +import com.evolveum.midpoint.gui.api.util.WebComponentUtil; +import com.evolveum.midpoint.web.util.InfoTooltipBehavior; +import com.evolveum.midpoint.xml.ns._public.common.common_3.OperationResultStatusType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.PendingOperationExecutionStatusType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.PendingOperationType; +import org.apache.wicket.AttributeModifier; +import org.apache.wicket.behavior.AttributeAppender; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.list.ListItem; +import org.apache.wicket.markup.html.list.ListView; +import org.apache.wicket.model.AbstractReadOnlyModel; +import org.apache.wicket.model.IModel; + +import java.util.List; + +/** + * Created by Viliam Repan (lazyman). + */ +public class PendingOperationPanel extends BasePanel> { + + private static final String ID_OPERATION = "operation"; + private static final String ID_TEXT = "text"; + + public PendingOperationPanel(String id, IModel> model) { + super(id, model); + } + + @Override + protected void onInitialize() { + super.onInitialize(); + + initLayout(); + } + + private void initLayout() { + ListView operation = new ListView(ID_OPERATION, getModel()) { + + private static final long serialVersionUID = 1L; + + @Override + protected void populateItem(ListItem item) { + Label text = new Label(ID_TEXT, createLabelText(item.getModel())); + text.setRenderBodyOnly(true); + item.add(text); + + item.add(AttributeAppender.append("class", createTextClass(item.getModel()))); + + item.add(AttributeModifier.replace("title", createTextTooltipModel(item.getModel()))); + item.add(new InfoTooltipBehavior() { + + @Override + public String getCssClass() { + return null; + } + }); + } + }; + add(operation); + } + + private IModel createTextClass(IModel model) { + return new AbstractReadOnlyModel() { + + private static final long serialVersionUID = 1L; + + @Override + public String getObject() { + PendingOperationType op = model.getObject(); + OperationResultStatusType rStatus = op.getResultStatus(); + PendingOperationExecutionStatusType eStatus = op.getExecutionStatus(); + + if (rStatus != null && + (rStatus == OperationResultStatusType.FATAL_ERROR || rStatus == OperationResultStatusType.PARTIAL_ERROR)) { + return "label-danger"; + } + + if (rStatus != null && + (rStatus == OperationResultStatusType.UNKNOWN || rStatus == OperationResultStatusType.WARNING)) { + return "label-warning"; + } + + if ((rStatus != null && rStatus == OperationResultStatusType.SUCCESS) + || (eStatus != null && eStatus == PendingOperationExecutionStatusType.COMPLETED)) { + return "label-success"; + } + + if ((rStatus != null && + (rStatus == OperationResultStatusType.IN_PROGRESS || rStatus == OperationResultStatusType.NOT_APPLICABLE || rStatus == OperationResultStatusType.HANDLED_ERROR))) { + return "label-info"; + } + + return "label-default"; + } + }; + } + + private IModel createTextTooltipModel(IModel model) { + return new AbstractReadOnlyModel() { + + private static final long serialVersionUID = 1L; + + @Override + public String getObject() { + StringBuilder sb = new StringBuilder(); + + PendingOperationType op = model.getObject(); + + buildStringItem(sb, "PendingOperationPanel.resultStatus", op.getResultStatus()); + buildStringItem(sb, "PendingOperationPanel.executionStatus", op.getExecutionStatus()); + buildStringItem(sb, "PendingOperationPanel.attempt", op.getAttemptNumber()); + buildStringItem(sb, "PendingOperationPanel.pendingOperationType", op.getType()); + buildStringItem(sb, "PendingOperationPanel.lastAttemptTimestamp", WebComponentUtil.formatDate(op.getLastAttemptTimestamp())); + buildStringItem(sb, "PendingOperationPanel.completionTimestamp", WebComponentUtil.formatDate(op.getCompletionTimestamp())); + + return sb.toString(); + } + }; + } + + private void buildStringItem(StringBuilder sb, String key, Object obj) { + if (obj == null) { + return; + } + + sb.append(getString(key)).append(" "); + + String value = obj instanceof Enum ? getString((Enum) obj) : obj.toString(); + + sb.append(value); + sb.append('\n'); + } + + private IModel createLabelText(IModel model) { + return new AbstractReadOnlyModel() { + + private static final long serialVersionUID = 1L; + + @Override + public String getObject() { + PendingOperationType op = model.getObject(); + OperationResultStatusType rStatus = op.getResultStatus(); + PendingOperationExecutionStatusType eStatus = op.getExecutionStatus(); + + if (rStatus == null) { + return getString(eStatus); + } + + return getString(rStatus); + } + }; + } +} diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/CheckTableHeader.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/CheckTableHeader.html index 632a3ca4c40..1ab52bce77b 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/CheckTableHeader.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/CheckTableHeader.html @@ -24,7 +24,9 @@ - + + + diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/CheckTableHeader.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/CheckTableHeader.java index dd100b346b7..927540c252f 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/CheckTableHeader.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/CheckTableHeader.java @@ -18,6 +18,7 @@ import com.evolveum.midpoint.gui.api.GuiStyleConstants; import com.evolveum.midpoint.gui.api.component.BasePanel; +import com.evolveum.midpoint.gui.api.component.PendingOperationPanel; import com.evolveum.midpoint.gui.api.component.togglebutton.ToggleIconButton; import com.evolveum.midpoint.gui.api.page.PageBase; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; @@ -28,6 +29,7 @@ import com.evolveum.midpoint.prism.path.ItemPath; import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.web.component.BootstrapLabel; +import com.evolveum.midpoint.web.component.util.VisibleBehaviour; import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour; import com.evolveum.midpoint.web.util.TooltipBehavior; import com.evolveum.midpoint.xml.ns._public.common.common_3.*; @@ -37,7 +39,6 @@ import org.apache.wicket.ajax.markup.html.AjaxLink; import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox; import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.model.*; import javax.xml.datatype.XMLGregorianCalendar; @@ -59,6 +60,7 @@ public class CheckTableHeader extends BasePanel> model) { super(id, model); @@ -78,6 +80,10 @@ protected void onUpdate(AjaxRequestTarget target) { }; add(check); + PendingOperationPanel pendingPanel = new PendingOperationPanel(ID_PENDING_OPERATION, createPendingOperationsModel()); + pendingPanel.add(new VisibleBehaviour(() -> ShadowType.class.equals(getModelObject().getDefinition().getCompileTimeClass()))); + add(pendingPanel); + Label icon = new Label(ID_ICON); icon.add(AttributeModifier.replace("class", new AbstractReadOnlyModel() { private static final long serialVersionUID = 1L; @@ -171,6 +177,30 @@ public boolean isOn() { } + private IModel> createPendingOperationsModel() { + return new AbstractReadOnlyModel>() { + + private static final long serialVersionUID = 1L; + + @Override + public List getObject() { + List list = new ArrayList<>(); + + ObjectWrapper wrapper = getModelObject(); + ContainerWrapper operations = wrapper.findContainerWrapper(new ItemPath(ShadowType.F_PENDING_OPERATION)); + if (operations == null) { + return list; + } + + for (ContainerValueWrapper cw : (List) operations.getValues()) { + list.add(cw.getContainerValue().asContainerable()); + } + + return list; + } + }; + } + private String createAccountIcon() { ObjectWrapper wrapper = getModelObject(); PrismObject object = wrapper.getObject(); 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 ebe53d7d648..bd4f7d5a55e 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 @@ -23,7 +23,10 @@ import javax.xml.namespace.QName; import com.evolveum.midpoint.gui.api.GuiConstants; +import com.evolveum.midpoint.gui.api.component.PendingOperationPanel; import com.evolveum.midpoint.web.component.menu.cog.ButtonInlineMenuItem; +import com.evolveum.midpoint.web.component.prism.ObjectWrapper; +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.extensions.markup.html.repeater.data.grid.ICellPopulator; @@ -112,15 +115,6 @@ import com.evolveum.midpoint.web.session.SessionStorage; 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.ActivationStatusType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.FocusType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.OperationResultType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowKindType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.TaskType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType; /** * Implementation classes : ResourceContentResourcePanel, @@ -690,6 +684,27 @@ public void onClick(AjaxRequestTarget target, IModel> } }); + + columns.add(new AbstractColumn, String>( + createStringResource("PageAccounts.accounts.pendingOperations")) { + + private static final long serialVersionUID = 1L; + + @Override + public void populateItem(Item>> cellItem, + String componentId, IModel> rowModel) { + cellItem.add(new PendingOperationPanel(componentId, new AbstractReadOnlyModel>() { + + private static final long serialVersionUID = 1L; + + @Override + public List getObject() { + SelectableBean bean = rowModel.getObject(); + return bean.getValue().getPendingOperation(); + } + })); + } + }); return columns; } diff --git a/gui/admin-gui/src/main/resources/localization/Midpoint.properties b/gui/admin-gui/src/main/resources/localization/Midpoint.properties index 84db0aedee5..f403c57f552 100755 --- a/gui/admin-gui/src/main/resources/localization/Midpoint.properties +++ b/gui/admin-gui/src/main/resources/localization/Midpoint.properties @@ -1042,6 +1042,7 @@ PageAccounts.accounts.owner=Owner PageAccounts.accounts.result=Result PageAccounts.accounts.synchronizationSituation=Situation PageAccounts.accounts.synchronizationTimestamp=Timestamp +PageAccounts.accounts.pendingOperations=Pending operations PageAccounts.button.clearExportFolder=Clear export folder PageAccounts.button.export=Export PageAccounts.button.load=Load @@ -4178,4 +4179,10 @@ transition.details=Transition ref.details=Reference ShowEmptyButton.showMore=Show empty fields ShowEmptyButton.showLess=Hide empty fields -TaskExecutionGroupConstraintType.details.newValue=New secondary execution group definition \ No newline at end of file +TaskExecutionGroupConstraintType.details.newValue=New secondary execution group definition +PendingOperationPanel.pendingOperationType=Type: +PendingOperationPanel.resultStatus=Result status: +PendingOperationPanel.executionStatus=Execution status: +PendingOperationPanel.attempt=Attempt: +PendingOperationPanel.lastAttemptTimestamp=Last attempt: +PendingOperationPanel.completionTimestamp=Completed: \ No newline at end of file diff --git a/infra/schema/src/main/resources/localization/schema.properties b/infra/schema/src/main/resources/localization/schema.properties index 7a8492f10dd..2352152833e 100755 --- a/infra/schema/src/main/resources/localization/schema.properties +++ b/infra/schema/src/main/resources/localization/schema.properties @@ -1081,3 +1081,9 @@ WorkItemTimedActionsType.actions=Actions WorkItemTimedActionsType.condition=Condition WorkItemTimedActionsType.escalationLevelFrom=Escalation level from WorkItemTimedActionsType.escalationLevelTo=Escalation level to +PendingOperationExecutionStatusType.REQUESTED=Requested +PendingOperationExecutionStatusType.EXECUTION_PENDING=Execution pending +PendingOperationExecutionStatusType.EXECUTING=Executing +PendingOperationExecutionStatusType.COMPLETED=Completed +PendingOperationTypeType.MANUAL=Manual +PendingOperationTypeType.RETRY=Retry \ No newline at end of file From 64510d3956e80a74215727f66bebaf5397ffffbc Mon Sep 17 00:00:00 2001 From: Radovan Semancik Date: Wed, 5 Sep 2018 13:54:46 +0200 Subject: [PATCH 4/5] Fixing (some) conntest --- .../midpoint/testing/conntest/AbstractLdapConnTest.java | 6 +++++- .../evolveum/midpoint/testing/conntest/TestOpenDj.java | 4 ++-- .../midpoint/testing/conntest/TestOpenDjDumber.java | 4 ++-- .../midpoint/testing/conntest/TestOpenLdapDumber.java | 9 ++++++++- 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/testing/conntest/src/test/java/com/evolveum/midpoint/testing/conntest/AbstractLdapConnTest.java b/testing/conntest/src/test/java/com/evolveum/midpoint/testing/conntest/AbstractLdapConnTest.java index a3fca98e5eb..85a52e99e47 100644 --- a/testing/conntest/src/test/java/com/evolveum/midpoint/testing/conntest/AbstractLdapConnTest.java +++ b/testing/conntest/src/test/java/com/evolveum/midpoint/testing/conntest/AbstractLdapConnTest.java @@ -282,11 +282,15 @@ public void test151CountAllAccounts() throws Exception { displayWhen(TEST_NAME); Integer count = modelService.countObjects(ShadowType.class, query, null, task, result); - assertEquals("Wrong account count", (Integer)getNumberOfAllAccounts(), count); + assertCountAllAccounts(count); assertLdapConnectorInstances(1, 2); } + protected void assertCountAllAccounts(Integer count) { + assertEquals("Wrong account count", (Integer)getNumberOfAllAccounts(), count); + } + /** * Blocksize is 100, so this is in one block. */ diff --git a/testing/conntest/src/test/java/com/evolveum/midpoint/testing/conntest/TestOpenDj.java b/testing/conntest/src/test/java/com/evolveum/midpoint/testing/conntest/TestOpenDj.java index 6d83d3fb1c5..3f14696aa9f 100644 --- a/testing/conntest/src/test/java/com/evolveum/midpoint/testing/conntest/TestOpenDj.java +++ b/testing/conntest/src/test/java/com/evolveum/midpoint/testing/conntest/TestOpenDj.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2014-2017 Evolveum + * Copyright (c) 2014-2018 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -31,7 +31,7 @@ public class TestOpenDj extends AbstractLdapConnTest { private static final String OPENDJ_TEMPLATE_NAME = "opendj-4000.template"; - private static final int INITIAL_SYNC_TOKEN = 23; + private static final int INITIAL_SYNC_TOKEN = 22; @Override protected String getResourceOid() { diff --git a/testing/conntest/src/test/java/com/evolveum/midpoint/testing/conntest/TestOpenDjDumber.java b/testing/conntest/src/test/java/com/evolveum/midpoint/testing/conntest/TestOpenDjDumber.java index 5f9498c235c..4910d662ed2 100644 --- a/testing/conntest/src/test/java/com/evolveum/midpoint/testing/conntest/TestOpenDjDumber.java +++ b/testing/conntest/src/test/java/com/evolveum/midpoint/testing/conntest/TestOpenDjDumber.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2016 Evolveum + * Copyright (c) 2016-2018 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,7 +26,7 @@ */ public class TestOpenDjDumber extends TestOpenDj { - private static final int INITIAL_SYNC_TOKEN = 21; + private static final int INITIAL_SYNC_TOKEN = 20; @Override protected File getBaseDir() { diff --git a/testing/conntest/src/test/java/com/evolveum/midpoint/testing/conntest/TestOpenLdapDumber.java b/testing/conntest/src/test/java/com/evolveum/midpoint/testing/conntest/TestOpenLdapDumber.java index 24cb0e79d8a..bde86d079f5 100644 --- a/testing/conntest/src/test/java/com/evolveum/midpoint/testing/conntest/TestOpenLdapDumber.java +++ b/testing/conntest/src/test/java/com/evolveum/midpoint/testing/conntest/TestOpenLdapDumber.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2017 Evolveum + * Copyright (c) 2017-2018 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,6 +15,7 @@ */ package com.evolveum.midpoint.testing.conntest; +import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertNotNull; import static org.testng.AssertJUnit.assertNull; @@ -60,5 +61,11 @@ protected boolean hasAssociationShortcut() { protected boolean isUsingGroupShortcutAttribute() { return false; } + + // This is a dumb resource. It cannot count. + @Override + protected void assertCountAllAccounts(Integer count) { + assertEquals("Wrong account count", (Integer)null, count); + } } From f8ec361665287062887332eecb68609ce6acaa0a Mon Sep 17 00:00:00 2001 From: Viliam Repan Date: Wed, 5 Sep 2018 14:29:49 +0200 Subject: [PATCH 5/5] MID-4835 some style improvements --- .../gui/api/component/PendingOperationPanel.html | 8 +++----- .../gui/api/component/PendingOperationPanel.java | 15 +++++++++++---- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/PendingOperationPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/PendingOperationPanel.html index e06cf020e68..3934a880a31 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/PendingOperationPanel.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/PendingOperationPanel.html @@ -15,9 +15,7 @@ --> - - - - - +

+ +
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/PendingOperationPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/PendingOperationPanel.java index cf516b7d56e..37df8847b2c 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/PendingOperationPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/PendingOperationPanel.java @@ -23,6 +23,7 @@ import com.evolveum.midpoint.xml.ns._public.common.common_3.PendingOperationType; import org.apache.wicket.AttributeModifier; import org.apache.wicket.behavior.AttributeAppender; +import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.list.ListItem; import org.apache.wicket.markup.html.list.ListView; @@ -36,6 +37,7 @@ */ public class PendingOperationPanel extends BasePanel> { + private static final String ID_LABEL = "label"; private static final String ID_OPERATION = "operation"; private static final String ID_TEXT = "text"; @@ -57,14 +59,19 @@ private void initLayout() { @Override protected void populateItem(ListItem item) { + item.setRenderBodyOnly(true); + + WebMarkupContainer label = new WebMarkupContainer(ID_LABEL); + item.add(label); + Label text = new Label(ID_TEXT, createLabelText(item.getModel())); text.setRenderBodyOnly(true); - item.add(text); + label.add(text); - item.add(AttributeAppender.append("class", createTextClass(item.getModel()))); + label.add(AttributeAppender.append("class", createTextClass(item.getModel()))); - item.add(AttributeModifier.replace("title", createTextTooltipModel(item.getModel()))); - item.add(new InfoTooltipBehavior() { + label.add(AttributeModifier.replace("title", createTextTooltipModel(item.getModel()))); + label.add(new InfoTooltipBehavior() { @Override public String getCssClass() {