Skip to content

Commit

Permalink
Fixed trimTo in TransformableComplexType
Browse files Browse the repository at this point in the history
Signed-off-by: Tony Tkacik <tonydamage@gmail.com>
  • Loading branch information
tonydamage committed May 31, 2021
1 parent 978cd21 commit ab77e51
Showing 1 changed file with 18 additions and 0 deletions.
Expand Up @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -228,6 +231,21 @@ public TransformableComplexTypeDefinition copy() {
return copy;
}

@Override
public void trimTo(@NotNull Collection<ItemPath> 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 {
Expand Down

0 comments on commit ab77e51

Please sign in to comment.