Skip to content

Commit

Permalink
HeteroComparator/(Hetero)EqualsChecker rename fixes for midpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
virgo47 committed Feb 8, 2023
1 parent 0fe5635 commit cc09163
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
import com.evolveum.midpoint.prism.PrismContainerValue;
import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.prism.PrismValue;
import com.evolveum.midpoint.util.HeteroComparator;
import com.evolveum.midpoint.util.HeteroEqualsChecker;
import com.evolveum.midpoint.util.MiscUtil;
import com.evolveum.midpoint.util.QNameUtil;
import com.evolveum.midpoint.util.exception.ObjectNotFoundException;
Expand Down Expand Up @@ -269,7 +269,7 @@ public static void visit(List<EvaluatedPolicyRuleTriggerType> triggers, Consumer

public static boolean triggerCollectionsEqual(Collection<EvaluatedPolicyRuleTriggerType> triggers,
Collection<EvaluatedPolicyRuleTriggerType> currentTriggersUnpacked) {
HeteroComparator<EvaluatedPolicyRuleTriggerType, EvaluatedPolicyRuleTriggerType> comparator = (t1, t2) -> {
HeteroEqualsChecker<EvaluatedPolicyRuleTriggerType, EvaluatedPolicyRuleTriggerType> equalsChecker = (t1, t2) -> {
if (!(t1 instanceof EvaluatedSituationTriggerType) || !(t2 instanceof EvaluatedSituationTriggerType)) {
return Objects.equals(t1, t2);
}
Expand All @@ -287,7 +287,7 @@ public static boolean triggerCollectionsEqual(Collection<EvaluatedPolicyRuleTrig
&& Objects.equals(st1.getPresentationOrder(), st2.getPresentationOrder())
&& MiscUtil.unorderedCollectionEquals(st1.getSourceRule(), st2.getSourceRule());
};
return MiscUtil.unorderedCollectionEquals(currentTriggersUnpacked, triggers, comparator);
return MiscUtil.unorderedCollectionEquals(currentTriggersUnpacked, triggers, equalsChecker);
}

public static List<PolicyActionType> getAllActions(PolicyActionsType actions) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@
import com.evolveum.midpoint.schema.util.ObjectTypeUtil;
import com.evolveum.midpoint.schema.util.SchemaDebugUtil;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.EqualsChecker;
import com.evolveum.midpoint.util.MiscUtil;
import com.evolveum.midpoint.util.QNameUtil;
import com.evolveum.midpoint.util.exception.*;
Expand Down Expand Up @@ -875,7 +876,8 @@ <F extends ObjectType> void processOrgAssignments(
computeTenantRef(context);
}

private <F extends ObjectType> void computeTenantRef(LensContext<F> context) throws PolicyViolationException, SchemaException {
private <F extends ObjectType> void computeTenantRef(LensContext<F> context)
throws PolicyViolationException, SchemaException {
String tenantOid = null;
LensFocusContext<F> focusContext = context.getFocusContext();
PrismObject<F> objectNew = focusContext.getObjectNew();
Expand Down Expand Up @@ -1032,7 +1034,8 @@ private void addRoleReferences(Collection<PrismReferenceValue> shouldBeRoleRefs,
}

for (PrismReferenceValue roleRef : shouldBeRoleRefs) {
List<EvaluatedAssignmentTargetImpl> evaluatedAssignmentTargets = findEvaluatedAssignmentTargets(roleRef, evalAssignment);
List<EvaluatedAssignmentTargetImpl> evaluatedAssignmentTargets =
findEvaluatedAssignmentTargets(roleRef, evalAssignment);
if (evaluatedAssignmentTargets.isEmpty()) {
LOGGER.warn("EvaluatedAssignmentTarget not found for role ref {}", roleRef);
continue;
Expand All @@ -1057,7 +1060,7 @@ private AssignmentPathMetadataType assignmentPathToMetadata(AssignmentPathType a
AssignmentPathMetadataType metadata = new AssignmentPathMetadataType();
metadata.sourceRef(assignmentPath.getSegment().get(0).getSourceRef());
for (AssignmentPathSegmentType segment : assignmentPath.getSegment()) {
boolean isAssignment = segment.isIsAssignment();
boolean isAssignment = BooleanUtils.isTrue(segment.isIsAssignment());
metadata.beginSegment()
.segmentOrder(segment.getSegmentOrder())
.targetRef(segment.getTargetRef())
Expand Down Expand Up @@ -1099,16 +1102,19 @@ private <F extends ObjectType> void setReferences(LensFocusContext<F> focusConte
} else {
// we don't use QNameUtil.match here, because we want to ensure we store qualified values there
// (and newValues are all qualified)
Comparator<PrismReferenceValue> comparator =
(a, b) -> 2 * a.getOid().compareTo(b.getOid())
+ (Objects.equals(a.getRelation(), b.getRelation()) ? 0 : 1);
if (MiscUtil.unorderedCollectionCompare(targetState, existingState.getValues(), comparator)) {
EqualsChecker<PrismReferenceValue> comparator =
(a, b) -> Objects.equals(a.getOid(), b.getOid())
&& Objects.equals(a.getRelation(), b.getRelation()
// TODO metadata equals
);
if (MiscUtil.unorderedCollectionEquals(targetState, existingState.getValues(), comparator)) {
return;
}
}
}

PrismReferenceDefinition itemDef = focusContext.getObjectDefinition().findItemDefinition(itemName, PrismReferenceDefinition.class);
PrismReferenceDefinition itemDef = focusContext.getObjectDefinition()
.findItemDefinition(itemName, PrismReferenceDefinition.class);
ReferenceDelta itemDelta = prismContext.deltaFactory().reference().create(itemName, itemDef);
itemDelta.setValuesToReplace(targetState);
focusContext.swallowToSecondaryDelta(itemDelta);
Expand Down

0 comments on commit cc09163

Please sign in to comment.