From ab77e51c66fad883b27e6cddd025e6087caa6b99 Mon Sep 17 00:00:00 2001 From: Tony Tkacik Date: Mon, 31 May 2021 10:55:37 +0200 Subject: [PATCH] Fixed trimTo in TransformableComplexType Signed-off-by: Tony Tkacik --- .../TransformableComplexTypeDefinition.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/schema/transform/TransformableComplexTypeDefinition.java b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/schema/transform/TransformableComplexTypeDefinition.java index bd06969d47b..f28b9b2245d 100644 --- a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/schema/transform/TransformableComplexTypeDefinition.java +++ b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/schema/transform/TransformableComplexTypeDefinition.java @@ -8,6 +8,7 @@ package com.evolveum.midpoint.model.impl.schema.transform; import java.util.ArrayList; +import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -22,9 +23,11 @@ import com.evolveum.midpoint.prism.ComplexTypeDefinition; import com.evolveum.midpoint.prism.ItemDefinition; import com.evolveum.midpoint.prism.MutableComplexTypeDefinition; +import com.evolveum.midpoint.prism.PrismContainerDefinition; import com.evolveum.midpoint.prism.PrismContext; import com.evolveum.midpoint.prism.deleg.ComplexTypeDefinitionDelegator; import com.evolveum.midpoint.prism.path.ItemPath; +import com.evolveum.midpoint.prism.path.ItemPathCollectionsUtil; import com.evolveum.midpoint.schema.processor.MutableObjectClassComplexTypeDefinition; import com.evolveum.midpoint.schema.processor.ObjectClassComplexTypeDefinition; import com.evolveum.midpoint.schema.processor.deleg.ObjectClassTypeDefinitionDelegator; @@ -228,6 +231,21 @@ public TransformableComplexTypeDefinition copy() { return copy; } + @Override + public void trimTo(@NotNull Collection paths) { + for (ItemDefinition itemDef : getDefinitions()) { + ItemPath itemPath = itemDef.getItemName(); + if (!ItemPathCollectionsUtil.containsSuperpathOrEquivalent(paths, itemPath)) { + delete(itemDef.getItemName()); + } else if (itemDef instanceof PrismContainerDefinition) { + PrismContainerDefinition itemPcd = (PrismContainerDefinition) itemDef; + if (itemPcd.getComplexTypeDefinition() != null) { + itemPcd.getComplexTypeDefinition().trimTo(ItemPathCollectionsUtil.remainder(paths, itemPath, false)); + } + } + } + } + public static class ObjectClass extends TransformableComplexTypeDefinition implements ObjectClassTypeDefinitionDelegator, PartiallyMutableComplexTypeDefinition.ObjectClassDefinition {