private Criteria mapCriteria(final String filter, final DittoHeaders dittoHeaders) { try { final ParameterPredicateVisitor visitor = new ParameterPredicateVisitor(criteriaFactory, fieldExpressionFactory); final RootNode rootNode = rqlPredicateParser.parse(filter); visitor.visit(rootNode); final Criteria criteria; if (visitor.getCriteria().size() > 1) { criteria = criteriaFactory.and(visitor.getCriteria()); } else if (visitor.getCriteria().size() == 1) { criteria = visitor.getCriteria().get(0); } else { criteria = criteriaFactory.any(); } return criteria; } catch (final ParserException | IllegalArgumentException e) { throw InvalidRqlExpressionException.newBuilder() .message(e.getMessage()) .cause(e) .dittoHeaders(dittoHeaders) .build(); } } }