Skip to content

Commit

Permalink
Added support for org, type and exists filters in ExpressionUtil.eval…
Browse files Browse the repository at this point in the history
…uateFilterExpressions (and therefore fixed these queries in query playground).
  • Loading branch information
mederly committed Oct 11, 2016
1 parent 736f25e commit 52b0246
Showing 1 changed file with 18 additions and 11 deletions.
Expand Up @@ -31,6 +31,7 @@
import com.evolveum.midpoint.model.common.expression.functions.FunctionLibrary;
import com.evolveum.midpoint.model.common.expression.functions.LogExpressionFunctions;
import com.evolveum.midpoint.prism.*;
import com.evolveum.midpoint.prism.Visitor;
import com.evolveum.midpoint.prism.crypto.EncryptionException;
import com.evolveum.midpoint.prism.crypto.Protector;
import com.evolveum.midpoint.prism.delta.ItemDelta;
Expand All @@ -40,16 +41,7 @@
import com.evolveum.midpoint.prism.path.ItemPathSegment;
import com.evolveum.midpoint.prism.path.NameItemPathSegment;
import com.evolveum.midpoint.prism.polystring.PolyString;
import com.evolveum.midpoint.prism.query.AllFilter;
import com.evolveum.midpoint.prism.query.ExpressionWrapper;
import com.evolveum.midpoint.prism.query.InOidFilter;
import com.evolveum.midpoint.prism.query.LogicalFilter;
import com.evolveum.midpoint.prism.query.NoneFilter;
import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.prism.query.PropertyValueFilter;
import com.evolveum.midpoint.prism.query.UndefinedFilter;
import com.evolveum.midpoint.prism.query.ValueFilter;
import com.evolveum.midpoint.prism.query.*;
import com.evolveum.midpoint.prism.util.JavaTypeConverter;
import com.evolveum.midpoint.prism.util.PrismUtil;
import com.evolveum.midpoint.prism.xml.XmlTypeConverter;
Expand Down Expand Up @@ -607,10 +599,25 @@ private static ObjectFilter evaluateFilterExpressionsInternal(ObjectFilter filte
"Couldn't evaluate expression" + valueExpression + ": " + ex.getMessage(), ex);
}

} else if (filter instanceof ExistsFilter) {
ExistsFilter evaluatedFilter = ((ExistsFilter) filter).cloneEmpty();
ObjectFilter evaluatedSubFilter = evaluateFilterExpressionsInternal(((ExistsFilter) filter).getFilter(), variables,
expressionFactory, prismContext, shortDesc, task, result);
evaluatedFilter.setFilter(evaluatedSubFilter);
return evaluatedFilter;
} else if (filter instanceof TypeFilter) {
TypeFilter evaluatedFilter = ((TypeFilter) filter).cloneEmpty();
ObjectFilter evaluatedSubFilter = evaluateFilterExpressionsInternal(((TypeFilter) filter).getFilter(), variables,
expressionFactory, prismContext, shortDesc, task, result);
evaluatedFilter.setFilter(evaluatedSubFilter);
return evaluatedFilter;
} else if (filter instanceof OrgFilter) {
return filter;
} else if (filter instanceof AllFilter || filter instanceof NoneFilter || filter instanceof UndefinedFilter) {
return filter;
} else {
throw new IllegalStateException("Unsupported filter type: " + filter.getClass());
}

}

private static ObjectFilter createFilterForNoValue(ObjectFilter filter, ExpressionType valueExpression) throws ExpressionEvaluationException {
Expand Down

0 comments on commit 52b0246

Please sign in to comment.