private void evaluateCondition(Task task, OperationResult result) throws SchemaException, ExpressionEvaluationException, ObjectNotFoundException, CommunicationException, ConfigurationException, SecurityViolationException {
ExpressionType conditionExpressionType = mappingType.getCondition();
if (conditionExpressionType == null) {
conditionOutputTriple = getPrismContext().deltaFactory().createPrismValueDeltaSetTriple();
conditionOutputTriple.addToZeroSet(getPrismContext().itemFactory().createPropertyValue(Boolean.TRUE));
return;
}
Expression<PrismPropertyValue<Boolean>,PrismPropertyDefinition<Boolean>> expression =
ExpressionUtil.createCondition(conditionExpressionType, expressionFactory,
"condition in "+getMappingContextDescription(), task, result);
ExpressionEvaluationContext context = new ExpressionEvaluationContext(sources, variables,
"condition in "+getMappingContextDescription(), task, result);
context.setValuePolicyResolver(stringPolicyResolver);
context.setExpressionFactory(expressionFactory);
context.setDefaultSource(defaultSource);
context.setDefaultTargetContext(getTargetContext());
context.setRefinedObjectClassDefinition(getRefinedObjectClassDefinition());
context.setMappingQName(mappingQName);
context.setVariableProducer(variableProducer);
conditionOutputTriple = expression.evaluate(context);
}