]> source.dussan.org Git - sonarqube.git/commitdiff
FilterParser handles key containing and
authorTeryk Bellahsene <teryk.bellahsene@sonarsource.com>
Thu, 2 Mar 2017 13:36:18 +0000 (14:36 +0100)
committerTeryk Bellahsene <teryk.bellahsene@sonarsource.com>
Fri, 3 Mar 2017 10:07:45 +0000 (11:07 +0100)
server/sonar-server/src/main/java/org/sonar/server/component/ws/FilterParser.java

index f65bfeff0065a17442ee468aea81fe2e844747dc..c352c622f7e4ca8a30c5461c05c4a965289781e2 100644 (file)
@@ -22,7 +22,6 @@ package org.sonar.server.component.ws;
 import com.google.common.base.Splitter;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Objects;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.stream.StreamSupport;
@@ -39,21 +38,18 @@ public class FilterParser {
 
   private static final String DOUBLE_QUOTES = "\"";
 
-  private static final Splitter CRITERIA_SPLITTER = Splitter.on(Pattern.compile("and", Pattern.CASE_INSENSITIVE));
+  private static final Splitter CRITERIA_SPLITTER = Splitter.on(Pattern.compile(" and ", Pattern.CASE_INSENSITIVE)).trimResults().omitEmptyStrings();
   private static final Splitter IN_VALUES_SPLITTER = Splitter.on(",").omitEmptyStrings().trimResults();
 
   private static final Pattern PATTERN = Pattern.compile("(\\w+)\\s*([<>]?[=]?)\\s*(.*)", Pattern.CASE_INSENSITIVE);
   private static final Pattern PATTERN_HAVING_VALUES = Pattern.compile("(\\w+)\\s+(in)\\s+\\((.*)\\)", Pattern.CASE_INSENSITIVE);
 
-  private FilterParser(){
+  private FilterParser() {
     // Only static methods
   }
 
   public static List<Criterion> parse(String filter) {
-    return StreamSupport.stream(CRITERIA_SPLITTER.split(filter.trim()).spliterator(), false)
-      .filter(Objects::nonNull)
-      .filter(criterion -> !criterion.isEmpty())
-      .map(String::trim)
+    return StreamSupport.stream(CRITERIA_SPLITTER.split(filter).spliterator(), false)
       .map(FilterParser::parseCriterion)
       .collect(Collectors.toList());
   }