Skip to content

Commit

Permalink
revert fix for evaluation of expression in ValueFilter, equal filter …
Browse files Browse the repository at this point in the history
…unsupport multivalue
  • Loading branch information
skublik committed Sep 9, 2021
1 parent 55ef21d commit dafb4f2
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -157,19 +157,17 @@ public void test152EvaluateExpressionEmployeeTypeDefaultsCaptain() throws Except
executeFilter(filter, 1, task, result);
}

@Test
//@Test //TODO uncomment when eq filter will support multivalue values
public void test160EvaluateExpressionNameMultivalueFilter() throws Exception {
// GIVEN
Task task = getTestTask();
OperationResult result = task.getResult();

ObjectFilter filter = evaluateExpressionAssertFilter("expression-name-multivalue-filter.xml",
null, OrFilter.class, task, result);
null, EqualFilter.class, task, result);

OrFilter orFilter = (OrFilter) filter;
List actualValues = orFilter.getConditions().stream().map(
equalFilter -> ((EqualFilter) equalFilter).getSingleValue()).collect(Collectors.toList());
PrismAsserts.assertValues("Wrong values in filter", actualValues,
EqualFilter equalFilter = (EqualFilter) filter;
PrismAsserts.assertValues("Wrong values in filter", equalFilter.getValues(),
new PolyString("jack", "jack"), new PolyString("barbossa", "barbossa"));

executeFilter(filter, 2, task, result);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -667,23 +667,11 @@ private static ObjectFilter evaluateFilterExpressionsInternal(ObjectFilter filte
LOGGER.trace("Search filter expression in the rule for {} evaluated to {}.",
shortDesc, nonEmptyResults);

ObjectFilter evaluatedFilter;

if (nonEmptyResults.size() == 1) {
ValueFilter evaluatedValueFilter = valueFilter.clone();
evaluatedValueFilter.setValue(nonEmptyResults.iterator().next());
evaluatedValueFilter.setExpression(null);
evaluatedFilter = evaluatedValueFilter;
} else {
evaluatedFilter = prismContext.queryFactory().createOr(
nonEmptyResults.stream().map(expressionResult -> {
ValueFilter evaluatedValueFilter = valueFilter.clone();
evaluatedValueFilter.setValue(expressionResult);
evaluatedValueFilter.setExpression(null);
return evaluatedValueFilter;
}).collect(Collectors.toList())
);
}
ValueFilter evaluatedFilter = valueFilter.clone();
nonEmptyResults.forEach(expressionResult -> expressionResult.setParent(evaluatedFilter));
evaluatedFilter.setValue(null); //set fakeValue because of creating empty list
evaluatedFilter.getValues().addAll(nonEmptyResults);
evaluatedFilter.setExpression(null);

if (LOGGER.isTraceEnabled()) {
LOGGER.trace("Transformed filter to:\n{}", evaluatedFilter.debugDump());
Expand Down

0 comments on commit dafb4f2

Please sign in to comment.