From d9c95f2861074817461b5d4e03b35789da76915e Mon Sep 17 00:00:00 2001 From: Katarina Valalikova Date: Wed, 3 Oct 2018 20:22:21 +0200 Subject: [PATCH 1/2] fix for expression evaluation in validateValue method (MID-4602) --- .../model/impl/controller/ModelInteractionServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/controller/ModelInteractionServiceImpl.java b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/controller/ModelInteractionServiceImpl.java index 1bb0898aeaa..eb3657afded 100644 --- a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/controller/ModelInteractionServiceImpl.java +++ b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/controller/ModelInteractionServiceImpl.java @@ -1379,10 +1379,10 @@ private boolean validateValue(PrismObject object, V private AbstractValuePolicyOriginResolver getOriginResolver(PrismObject object) { if (object != null && UserType.class.equals(object.getCompileTimeClass())) { - new UserValuePolicyOriginResolver((PrismObject) object, objectResolver); + return (AbstractValuePolicyOriginResolver) new UserValuePolicyOriginResolver((PrismObject) object, objectResolver); } - //TODO not supported yet + //TODO not supported yet, throw exception instead of null??? return null; } From 8eb1e1e0c52c7b254710fbfed609a63340abba5d Mon Sep 17 00:00:00 2001 From: Katarina Valalikova Date: Tue, 11 Sep 2018 18:50:11 +0200 Subject: [PATCH 2/2] fixing creation of property&reference wrappers - path (cherry picked from commit 83f856cc3eea796ebcb31f5cb4a0ec496308e77b) --- .../component/prism/ContainerValueWrapper.java | 1 - .../component/prism/ContainerWrapperFactory.java | 15 +++++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ContainerValueWrapper.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ContainerValueWrapper.java index c9ba4544459..74c6dc191a7 100755 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ContainerValueWrapper.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ContainerValueWrapper.java @@ -411,7 +411,6 @@ public PrismContainerValue createContainerValueAddDelta() throws SchemaExcept } else { PropertyOrReferenceWrapper propOrRef = (PropertyOrReferenceWrapper) item; - ItemPath path = propOrRef.getPath(); ItemDelta itemDelta = collectAddModifications(propOrRef); ItemPath itemPath = itemDelta.getParentPath().remainder(getContainer().getPath()); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ContainerWrapperFactory.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ContainerWrapperFactory.java index 2e53919f798..ec1c8b6afc0 100755 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ContainerWrapperFactory.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ContainerWrapperFactory.java @@ -250,7 +250,14 @@ private List> createContainer } container.getValues().forEach(pcv -> { - ContainerValueWrapper containerValueWrapper = createContainerValueWrapper(cWrapper, pcv, cWrapper.getObjectStatus(), cWrapper.getStatus() == ContainerStatus.ADDING ? ValueStatus.ADDED : ValueStatus.NOT_CHANGED, pcv.getPath(), task); + ValueStatus status = ValueStatus.NOT_CHANGED; + ItemPath pcvPath = pcv.getPath(); + if (cWrapper.getStatus() == ContainerStatus.ADDING) { + status = ValueStatus.ADDED; + pcvPath = cWrapper.getPath(); + } + + ContainerValueWrapper containerValueWrapper = createContainerValueWrapper(cWrapper, pcv, cWrapper.getObjectStatus(), status, pcvPath, task); containerValueWrappers.add(containerValueWrapper); }); @@ -388,7 +395,7 @@ private PropertyWrapper createPropertyWrapper( PrismProperty newProperty = def.instantiate(); // We cannot just get path from newProperty.getPath(). The property is not added to the container, so it does not know its path. // Definitions are reusable, they do not have paths either. - ItemPath propPath = containerValue.getPath().subPath(newProperty.getElementName()); + ItemPath propPath = cWrapper.getPath().subPath(newProperty.getElementName()); return new PropertyWrapper(cWrapper, newProperty, propertyIsReadOnly, ValueStatus.ADDED, propPath); } return new PropertyWrapper(cWrapper, property, propertyIsReadOnly, cWrapper.getStatus() == ValueStatus.ADDED ? ValueStatus.ADDED: ValueStatus.NOT_CHANGED, property.getPath()); @@ -420,9 +427,9 @@ private ReferenceWrapper createReferenceWrapper(PrismR if (QNameUtil.match(AbstractRoleType.F_APPROVER_REF, def.getName()) || QNameUtil.match(AbstractRoleType.F_APPROVER_REF, def.getName())) { refWrapper.setTargetTypes(Arrays.asList(FocusType.COMPLEX_TYPE, OrgType.COMPLEX_TYPE)); } else { - + QName targetType = def.getTargetTypeName(); - + if (targetType == null || ObjectType.COMPLEX_TYPE.equals(targetType)) { refWrapper.setTargetTypes(WebComponentUtil.createObjectTypeList()); } else if (AbstractRoleType.COMPLEX_TYPE.equals(targetType)) {