Skip to content

Commit

Permalink
Fix collecting mark-based policy rules
Browse files Browse the repository at this point in the history
The origin determination was faulty.

This should fix failing TestShadowMarks.
  • Loading branch information
mederly committed Jul 22, 2023
1 parent d4d0831 commit 4887c97
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ public GlobalPolicyRuleConfigItem(@NotNull GlobalPolicyRuleType value, @NotNull
super(value, origin);
}

public static GlobalPolicyRuleConfigItem of(@NotNull GlobalPolicyRuleType bean, @NotNull ConfigurationItemOrigin origin) {
return new GlobalPolicyRuleConfigItem(bean, origin);
}

public static GlobalPolicyRuleConfigItem embedded(@NotNull GlobalPolicyRuleType bean) {
return new GlobalPolicyRuleConfigItem(bean, ConfigurationItemOrigin.embedded(bean));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,27 +7,28 @@

package com.evolveum.midpoint.model.common;

import com.evolveum.midpoint.schema.config.ConfigurationItemOrigin;
import com.evolveum.midpoint.schema.config.GlobalPolicyRuleConfigItem;
import com.evolveum.midpoint.schema.util.PolicyRuleTypeUtil;
import com.evolveum.midpoint.util.MiscUtil;
import com.evolveum.midpoint.xml.ns._public.common.common_3.GlobalPolicyRuleType;
import java.io.Serializable;

import org.jetbrains.annotations.NotNull;

import java.io.Serializable;
import com.evolveum.midpoint.schema.config.GlobalPolicyRuleConfigItem;
import com.evolveum.midpoint.schema.util.PolicyRuleTypeUtil;
import com.evolveum.midpoint.util.MiscUtil;

/** TEMPORARY */
public record GlobalRuleWithId(
@NotNull GlobalPolicyRuleConfigItem ruleCI,
@NotNull String ruleId) implements Serializable {

public static GlobalRuleWithId of(@NotNull GlobalPolicyRuleType embeddedRuleBean) {
GlobalPolicyRuleConfigItem item = GlobalPolicyRuleConfigItem.embedded(embeddedRuleBean);
// Very temporary/fragile constructor
public static GlobalRuleWithId of(
@NotNull GlobalPolicyRuleConfigItem ruleCI,
@NotNull String originatingObjectOid) {
var ruleBean = ruleCI.value();
var ruleId = PolicyRuleTypeUtil.createId(
((ConfigurationItemOrigin.InObject) item.origin()).getOriginatingObjectOid(),
MiscUtil.stateNonNull(embeddedRuleBean.getId(), () -> "Policy rule ID is null: " + embeddedRuleBean));
return new GlobalRuleWithId(item, ruleId);
originatingObjectOid,
MiscUtil.stateNonNull(ruleBean.getId(), () -> "Policy rule ID is null: " + ruleBean));
return new GlobalRuleWithId(ruleCI, ruleId);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
import java.util.*;
import java.util.stream.Collectors;

import com.evolveum.midpoint.schema.config.ConfigurationItemOrigin;
import com.evolveum.midpoint.schema.config.GlobalPolicyRuleConfigItem;
import com.evolveum.midpoint.schema.util.MarkTypeUtil;

import org.jetbrains.annotations.NotNull;
Expand Down Expand Up @@ -142,13 +142,15 @@ public class MarkManager {
for (MarkType mark : getAllMarks(result)) {
if (isEnabled(mark, task)) {
for (GlobalPolicyRuleType rule : mark.getPolicyRule()) {
GlobalPolicyRuleConfigItem ruleCI = GlobalPolicyRuleConfigItem.embedded(rule);
if (!Referencable.getOids(rule.getMarkRef()).contains(mark.getOid())) {
rule = rule.clone();
rule.getMarkRef().add(
var ruleClone = rule.clone();
ruleClone.getMarkRef().add(
ObjectTypeUtil.createObjectRef(mark));
ruleCI = GlobalPolicyRuleConfigItem.of(ruleClone, ruleCI.origin());
}
rules.add(
GlobalRuleWithId.of(rule));
GlobalRuleWithId.of(ruleCI, mark.getOid()));
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,9 @@ private List<GlobalRuleWithId> getGlobalRulesMatchingFocus(@Nullable PrismObject
if (systemConfiguration != null) {
for (GlobalPolicyRuleType ruleBean : systemConfiguration.getGlobalPolicyRule()) {
allRules.add(
GlobalRuleWithId.of(ruleBean));
GlobalRuleWithId.of(
GlobalPolicyRuleConfigItem.embedded(ruleBean),
systemConfiguration.getOid()));
}
}
allRules.addAll(
Expand Down

0 comments on commit 4887c97

Please sign in to comment.