]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-6693 WS issue_filters/search return distinct issue filters
authorTeryk Bellahsene <teryk.bellahsene@sonarsource.com>
Fri, 31 Jul 2015 14:18:33 +0000 (16:18 +0200)
committerTeryk Bellahsene <teryk.bellahsene@sonarsource.com>
Fri, 31 Jul 2015 14:18:33 +0000 (16:18 +0200)
server/sonar-server/src/main/java/org/sonar/server/issue/filter/SearchAction.java
server/sonar-server/src/test/java/org/sonar/server/issue/filter/SearchActionTest.java

index 71c6313ec990c9727dcefc22a58d6fc6f6b0331e..7d36b7e6badf1f3ff644bab630dc09f443a49c1c 100644 (file)
 
 package org.sonar.server.issue.filter;
 
+import com.google.common.collect.FluentIterable;
+import com.google.common.collect.ImmutableSortedSet;
 import com.google.common.io.Resources;
+import java.util.Comparator;
 import java.util.List;
 import org.sonar.api.server.ws.Request;
 import org.sonar.api.server.ws.Response;
@@ -62,8 +65,9 @@ public class SearchAction implements IssueFilterWsAction {
       List<IssueFilterDto> filters = service.findFavoriteFilters(userSession);
       List<IssueFilterDto> sharedFiltersWithoutUserFilters = service.findSharedFiltersWithoutUserFilters(userSession);
       filters.addAll(sharedFiltersWithoutUserFilters);
+      ImmutableSortedSet<IssueFilterDto> allUniqueIssueFilters = FluentIterable.from(filters).toSortedSet(IssueFilterDtoIdComparator.INSTANCE);
       json.name("issueFilters").beginArray();
-      for (IssueFilterDto favorite : filters) {
+      for (IssueFilterDto favorite : allUniqueIssueFilters) {
         issueFilterJsonWriter.write(json, favorite, userSession);
       }
       json.endArray();
@@ -72,4 +76,13 @@ public class SearchAction implements IssueFilterWsAction {
     json.endObject();
     json.close();
   }
+
+  private enum IssueFilterDtoIdComparator implements Comparator<IssueFilterDto> {
+    INSTANCE;
+
+    @Override
+    public int compare(IssueFilterDto o1, IssueFilterDto o2) {
+      return o1.getId().intValue() - o2.getId().intValue();
+    }
+  }
 }
index 050cb131a08b9e4ad9c22a394f46e30f1f073896..cd4e9045eab3e5527cd06379fd7059e510cd994b 100644 (file)
@@ -74,7 +74,12 @@ public class SearchActionTest {
         .setId(3L)
         .setName("My Unresolved Issues")
         .setShared(true)
-        .setData("resolved=false|assignees=__me__")
+        .setData("resolved=false|assignees=__me__"),
+      new IssueFilterDto()
+        .setId(2L)
+        .setName("False Positive and Won't Fix Issues")
+        .setShared(false)
+        .setData("resolutions=FALSE-POSITIVE,WONTFIX")
       ));
     when(service.findSharedFiltersWithoutUserFilters(userSessionRule)).thenReturn(newArrayList(
       new IssueFilterDto()