- public void setFilter(String filterExpression) {\r
- if (filterExpression != null && filterExpression.length()>0) {\r
- if (filterExpression.split("[=~]").length==1) {\r
- removeFilters(filterExpression.split("[=~]")[0]);\r
- } else if (filterExpression.split("[=~]").length==2) {\r
- setParameter(new FilterParameter(new Expression(filterExpression)));\r
- } else {\r
- logger.error("Could not parse filter expression [" + filterExpression + "]");\r
+ public void setFilter(String compoundExpression) {\r
+ if (getParameter("filter") != null) removeParameterInState("filter");\r
+ if (compoundExpression != null && compoundExpression.length()>0) { \r
+ // Split expression by commas that are not escaped with backslash\r
+ String[] subExpressions = compoundExpression.split("(?<!\\\\),");\r
+ for (int i=0; i<subExpressions.length; i++) {\r
+ if (i==0) {\r
+ setParameterInState(new FilterParameter(new Expression(subExpressions[i])));\r
+ } else {\r
+ addExpressionInState("filter",new Expression(subExpressions[i]));\r
+ }\r