private boolean evaluateScriptCondition(OperationProvisioningScriptType script, ExpressionVariables variables, Task task, OperationResult result) throws SchemaException, ExpressionEvaluationException, ObjectNotFoundException, CommunicationException, ConfigurationException, SecurityViolationException { ExpressionType condition = script.getCondition(); if (condition == null) { return true; } PrismPropertyValue<Boolean> conditionOutput = ExpressionUtil.evaluateCondition(variables, condition, expressionFactory, " condition for provisioning script ", task, result); if (conditionOutput == null) { return true; } Boolean conditionOutputValue = conditionOutput.getValue(); return BooleanUtils.isNotFalse(conditionOutputValue); }
private <O extends ObjectType> boolean checkExpression(String generatedValue, ExpressionType checkExpression, AbstractValuePolicyOriginResolver<O> originResolver, String shortDesc, Task task, OperationResult result) throws SchemaException, ObjectNotFoundException, ExpressionEvaluationException, CommunicationException, ConfigurationException, SecurityViolationException { ExpressionVariables variables = new ExpressionVariables(); variables.addVariableDefinition(ExpressionConstants.VAR_INPUT, generatedValue); variables.addVariableDefinition(ExpressionConstants.VAR_OBJECT, originResolver == null ? null : originResolver.getObject()); PrismPropertyValue<Boolean> output = ExpressionUtil.evaluateCondition(variables, checkExpression, expressionFactory, shortDesc, task, result); return ExpressionUtil.getBooleanConditionOutput(output); }
private static <F extends FocusType> Boolean evaluateSynchronizationPolicyCondition(ObjectSynchronizationType synchronizationPolicy, SynchronizationContext<F> syncCtx, ExpressionFactory expressionFactory) throws SchemaException, ExpressionEvaluationException, ObjectNotFoundException, CommunicationException, ConfigurationException, SecurityViolationException { if (synchronizationPolicy.getCondition() == null) { return null; } ExpressionType conditionExpressionType = synchronizationPolicy.getCondition(); String desc = "condition in object synchronization " + synchronizationPolicy.getName(); ExpressionVariables variables = ModelImplUtils.getDefaultExpressionVariables(null, syncCtx.getApplicableShadow(), null, syncCtx.getResource(), syncCtx.getSystemConfiguration(), null); try { ModelExpressionThreadLocalHolder.pushExpressionEnvironment(new ExpressionEnvironment<>(syncCtx.getTask(), syncCtx.getResult())); PrismPropertyValue<Boolean> evaluateCondition = ExpressionUtil.evaluateCondition(variables, conditionExpressionType, expressionFactory, desc, syncCtx.getTask(), syncCtx.getResult()); return evaluateCondition.getValue(); } finally { ModelExpressionThreadLocalHolder.popExpressionEnvironment(); } } }