public Builder<V, D> addVariableDefinitions(Map<QName, Object> extraVariables) { variables.addVariableDefinitions(extraVariables); return this; }
scriptVariables.addVariableDefinitions(sourceVariables); PlusMinusZero valueDestination; boolean useNew = false;
/** * Adds map of extra variables to the expression. * If there are variables with deltas (ObjectDeltaObject) the operation fail because * it cannot decide which version to use. */ public void addVariableDefinitions(Map<QName, Object> extraVariables) { addVariableDefinitions(extraVariables, emptySet()); }
public void addVariableDefinitions(ExpressionVariables extraVariables) { addVariableDefinitions(extraVariables, emptySet()); }
public void addVariableDefinitions(ExpressionVariables extraVariables, @NotNull Collection<QName> exceptFor) { addVariableDefinitions(extraVariables.getMap(), exceptFor); }
public ExpressionVariables getDefaultVariables(Event event, OperationResult result) { ExpressionVariables expressionVariables = new ExpressionVariables(); Map<QName, Object> variables = new HashMap<>(); event.createExpressionVariables(variables, result); variables.put(SchemaConstants.C_TEXT_FORMATTER, textFormatter); variables.put(SchemaConstants.C_NOTIFICATION_FUNCTIONS, notificationsUtil); variables.put(ExpressionConstants.VAR_CONFIGURATION, getSystemConfiguration(result)); expressionVariables.addVariableDefinitions(variables); return expressionVariables; }
@Override @NotNull public LocalizableMessageType createLocalizableMessageType(LocalizableMessageTemplateType template, Map<QName, Object> variables, Task task, OperationResult result) throws ObjectNotFoundException, SchemaException, ExpressionEvaluationException, CommunicationException, ConfigurationException, SecurityViolationException { ExpressionVariables vars = new ExpressionVariables(); vars.addVariableDefinitions(variables); return LensUtil.interpretLocalizableMessageTemplate(template, vars, expressionFactory, prismContext, task, result); }
expressionVariables.addVariableDefinition(SchemaConstants.C_ITEM_TO_APPROVE, itemToApprove); if (additionalVariables != null) { expressionVariables.addVariableDefinitions(additionalVariables);
variables.addVariableDefinitions(parameters);
private boolean evalCondition(Object value) throws SchemaException, ExpressionEvaluationException, ObjectNotFoundException, CommunicationException, ConfigurationException, SecurityViolationException { ExpressionVariables variables = new ExpressionVariables(); variables.addVariableDefinition(ExpressionConstants.VAR_INPUT, value); if (additionalVariableName != null) { variables.addVariableDefinition(additionalVariableName, value); } if (additionalVariables != null) { variables.addVariableDefinitions(additionalVariables, variables.keySet()); } ExpressionEvaluationContext context = new ExpressionEvaluationContext(null, variables, shortDesc, task, result); PrismValueDeltaSetTriple<PrismPropertyValue<Boolean>> outputTriple = condition.evaluate(context); if (outputTriple == null) { return false; } return ExpressionUtil.computeConditionResult(outputTriple.getNonNegativeValues()); }
private boolean isInRange(V value, Task task, OperationResult result) throws ExpressionEvaluationException, ObjectNotFoundException, SchemaException, CommunicationException, ConfigurationException, SecurityViolationException { @NotNull ValueSetSpecificationType range = mappingType.getRange(); if (range.getIsInSetExpression() == null) { return false; } ExpressionVariables variables = new ExpressionVariables(); variables.addVariableDefinitions(this.variables); // TODO is this ok? if (value instanceof PrismContainerValue) { // artificially create parent for PCV in order to pass it to expression PrismContainer.createParentIfNeeded((PrismContainerValue) value, outputDefinition); } variables.addVariableDefinition(ExpressionConstants.VAR_VALUE, value); PrismPropertyDefinition<Boolean> outputDef = getPrismContext().definitionFactory().createPropertyDefinition(SchemaConstantsGenerated.C_VALUE, DOMUtil.XSD_BOOLEAN, null, false); PrismPropertyValue<Boolean> rv = ExpressionUtil.evaluateExpression(variables, outputDef, range.getIsInSetExpression(), expressionFactory, "isInSet expression in " + contextDescription, task, result); // but now remove the parent! TODO: PM: why??? // if (value.getParent() != null) { // value.setParent(null); // } return rv != null && rv.getValue() != null ? rv.getValue() : Boolean.FALSE; }
private ObjectFilter evaluateExpressionAssertFilter(String filename, String input, Class<? extends ObjectFilter> expectedType, Task task, OperationResult result) throws SchemaException, IOException, ObjectNotFoundException, ExpressionEvaluationException, CommunicationException, ConfigurationException, SecurityViolationException { PrismContext prismContext = PrismTestUtil.getPrismContext(); SearchFilterType filterType = PrismTestUtil.parseAtomicValue(new File(TEST_DIR, filename), SearchFilterType.COMPLEX_TYPE); ObjectFilter filter = prismContext.getQueryConverter().createObjectFilter(UserType.class, filterType); Map<QName, Object> params = new HashMap<>(); PrismPropertyValue<String> pval = null; if (input != null) { pval = prismContext.itemFactory().createPropertyValue(input); } params.put(ExpressionConstants.VAR_INPUT, pval); ExpressionVariables variables = new ExpressionVariables(); variables.addVariableDefinitions(params); // WHEN ObjectFilter evaluatedFilter = ExpressionUtil.evaluateFilterExpressions(filter, variables, expressionFactory, prismContext, "evaluating filter with null value not allowed", task, result); // THEN display("Evaluated filter", evaluatedFilter); AssertJUnit.assertTrue("Expression should be evaluated to "+expectedType+", but was "+evaluatedFilter, expectedType.isAssignableFrom(evaluatedFilter.getClass())); return evaluatedFilter; }
@NotNull private <O extends ObjectType> List<PrismObject<O>> resolveTargetsFromFilter(Class<O> targetClass, SearchFilterType filter, AssignmentPathSegmentImpl segment, EvaluationContext ctx) throws SchemaException, ObjectNotFoundException, ExpressionEvaluationException, CommunicationException, ConfigurationException, SecurityViolationException{ ModelExpressionThreadLocalHolder.pushExpressionEnvironment(new ExpressionEnvironment<>(lensContext, null, ctx.task, ctx.result)); try { PrismObject<SystemConfigurationType> systemConfiguration = systemObjectCache.getSystemConfiguration(ctx.result); ExpressionVariables variables = ModelImplUtils.getDefaultExpressionVariables(segment.source, null, null, systemConfiguration.asObjectable()); variables.addVariableDefinition(ExpressionConstants.VAR_SOURCE, segment.getOrderOneObject()); AssignmentPathVariables assignmentPathVariables = LensUtil.computeAssignmentPathVariables(ctx.assignmentPath); if (assignmentPathVariables != null) { ModelImplUtils.addAssignmentPathVariables(assignmentPathVariables, variables); } variables.addVariableDefinitions(getAssignmentEvaluationVariables()); ObjectFilter origFilter = prismContext.getQueryConverter().parseFilter(filter, targetClass); ObjectFilter evaluatedFilter = ExpressionUtil.evaluateFilterExpressions(origFilter, variables, getMappingFactory().getExpressionFactory(), prismContext, " evaluating resource filter expression ", ctx.task, ctx.result); if (evaluatedFilter == null) { throw new SchemaException("The OID is null and filter could not be evaluated in assignment targetRef in "+segment.source); } return repository.searchObjects(targetClass, prismContext.queryFactory().createQuery(evaluatedFilter), null, ctx.result); // we don't check for no targets here; as we don't care for referential integrity } finally { ModelExpressionThreadLocalHolder.popExpressionEnvironment(); } }
variables.addVariableDefinitions(parameters);