@NotNull private EvaluatedCompositeTrigger createTrigger(PolicyConstraintKindType kind, JAXBElement<PolicyConstraintsType> constraintElement, List<EvaluatedPolicyRuleTrigger<?>> triggers, PolicyRuleEvaluationContext<?> rctx, OperationResult result) throws ExpressionEvaluationException, ObjectNotFoundException, SchemaException, CommunicationException, ConfigurationException, SecurityViolationException { return new EvaluatedCompositeTrigger(kind, constraintElement.getValue(), createMessage(kind, constraintElement, rctx, result), createShortMessage(kind, constraintElement, rctx, result), triggers); }
@Override public EvaluatedLogicalTriggerType toEvaluatedPolicyRuleTriggerType(PolicyRuleExternalizationOptions options, PrismContext prismContext) { EvaluatedLogicalTriggerType rv = new EvaluatedLogicalTriggerType(); fillCommonContent(rv); if (!options.isRespectFinalFlag() || !isFinal()) { innerTriggers.forEach(t -> rv.getEmbedded().add(t.toEvaluatedPolicyRuleTriggerType(options, prismContext))); } return rv; } }
private void dumpTriggersCollection(int indent, StringBuilder sb, Collection<EvaluatedPolicyRuleTrigger<?>> triggers) { for (EvaluatedPolicyRuleTrigger trigger : triggers) { sb.append("\n"); DebugUtil.indentDebugDump(sb, indent); sb.append("trigger: ").append(trigger); if (trigger instanceof EvaluatedExclusionTrigger && ((EvaluatedExclusionTrigger) trigger).getConflictingAssignment() != null) { sb.append("\n"); DebugUtil.indentDebugDump(sb, indent + 1); sb.append("conflict: ") .append(((EvaluatedAssignmentImpl) ((EvaluatedExclusionTrigger) trigger) .getConflictingAssignment()).toHumanReadableString()); } if (trigger instanceof EvaluatedCompositeTrigger) { dumpTriggersCollection(indent + 1, sb, ((EvaluatedCompositeTrigger) trigger).getInnerTriggers()); } else if (trigger instanceof EvaluatedTransitionTrigger) { dumpTriggersCollection(indent + 1, sb, ((EvaluatedTransitionTrigger) trigger).getInnerTriggers()); } } }
EvaluatedCompositeTrigger trigger = compositeConstraintEvaluator.evaluate(conjunction, ctx, result); LOGGER.trace("Evaluated composite trigger {} for ctx {}", trigger, ctx); if (trigger != null && !trigger.getInnerTriggers().isEmpty()) { List<EvaluatedPolicyRuleTrigger<?>> triggers; triggers = new ArrayList<>(trigger.getInnerTriggers()); } else { triggers = Collections.singletonList(trigger);