@Override public EvaluatedModificationTriggerType toEvaluatedPolicyRuleTriggerType(PolicyRuleExternalizationOptions options, PrismContext prismContext) { EvaluatedModificationTriggerType rv = new EvaluatedModificationTriggerType(); fillCommonContent(rv); return rv; } }
@Override public <AH extends AssignmentHolderType> EvaluatedPolicyRuleTrigger<?> evaluate(JAXBElement<ModificationPolicyConstraintType> constraint, PolicyRuleEvaluationContext<AH> rctx, OperationResult result) throws SchemaException, ExpressionEvaluationException, ObjectNotFoundException, CommunicationException, ConfigurationException, SecurityViolationException { if (!(rctx instanceof ObjectPolicyRuleEvaluationContext)) { LOGGER.trace("Policy rule evaluationo context is not of type ObjectPolicyRuleEvaluationContext. Skipping processing."); return null; } ObjectPolicyRuleEvaluationContext<AH> ctx = (ObjectPolicyRuleEvaluationContext<AH>) rctx; if (modificationConstraintMatches(constraint, ctx, result)) { LocalizableMessage message = createMessage(constraint, rctx, result); LocalizableMessage shortMessage = createShortMessage(constraint, rctx, result); return new EvaluatedModificationTrigger(PolicyConstraintKindType.OBJECT_MODIFICATION, constraint.getValue(), message, shortMessage); } else { LOGGER.trace("No operation matches."); return null; } }
@Override public <AH extends AssignmentHolderType> EvaluatedPolicyRuleTrigger evaluate(JAXBElement<AssignmentModificationPolicyConstraintType> constraintElement, PolicyRuleEvaluationContext<AH> rctx, OperationResult result) throws ExpressionEvaluationException, ObjectNotFoundException, SchemaException, CommunicationException, ConfigurationException, SecurityViolationException { AssignmentModificationPolicyConstraintType constraint = constraintElement.getValue(); if (!(rctx instanceof AssignmentPolicyRuleEvaluationContext)) { return null; } AssignmentPolicyRuleEvaluationContext<AH> ctx = (AssignmentPolicyRuleEvaluationContext<AH>) rctx; if (!ctx.isDirect || !operationMatches(constraint, ctx.inPlus, ctx.inZero, ctx.inMinus) || !relationMatches(constraint, ctx) || !pathsMatch(constraint, ctx) || !expressionPasses(constraintElement, ctx, result)) { return null; } // TODO check modifications return new EvaluatedModificationTrigger(PolicyConstraintKindType.ASSIGNMENT_MODIFICATION, constraint, createMessage(constraintElement, ctx, result), createShortMessage(constraintElement, ctx, result)); }