@SuppressWarnings("unchecked")
@NotNull
public <AH extends AssignmentHolderType> List<EvaluatedPolicyRuleTrigger<?>> evaluateConstraints(PolicyConstraintsType constraints,
boolean allMustApply, PolicyRuleEvaluationContext<AH> ctx, OperationResult result)
throws SchemaException, ExpressionEvaluationException, ObjectNotFoundException, CommunicationException, ConfigurationException, SecurityViolationException {
if (constraints == null) {
return Collections.emptyList();
}
List<EvaluatedPolicyRuleTrigger<?>> triggers = new ArrayList<>();
for (JAXBElement<AbstractPolicyConstraintType> constraint : toConstraintsList(constraints, false, false)) {
PolicyConstraintEvaluator<AbstractPolicyConstraintType> evaluator =
(PolicyConstraintEvaluator<AbstractPolicyConstraintType>) getConstraintEvaluator(constraint);
EvaluatedPolicyRuleTrigger<?> trigger = evaluator.evaluate(constraint, ctx, result);
LOGGER.trace("Evaluated policy rule trigger: {}", trigger);
traceConstraintEvaluationResult(constraint, ctx, trigger);
if (trigger != null) {
triggers.add(trigger);
} else {
if (allMustApply) {
return Collections.emptyList();
}
}
}
return triggers;
}