From: Teryk Bellahsene Date: Fri, 31 Jul 2015 14:18:33 +0000 (+0200) Subject: SONAR-6693 WS issue_filters/search return distinct issue filters X-Git-Tag: 5.2-RC1~878 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=550c19389eea2df5c50b65c12a5c3278a2699316;p=sonarqube.git SONAR-6693 WS issue_filters/search return distinct issue filters --- diff --git a/server/sonar-server/src/main/java/org/sonar/server/issue/filter/SearchAction.java b/server/sonar-server/src/main/java/org/sonar/server/issue/filter/SearchAction.java index 71c6313ec99..7d36b7e6bad 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/issue/filter/SearchAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/issue/filter/SearchAction.java @@ -20,7 +20,10 @@ 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 filters = service.findFavoriteFilters(userSession); List sharedFiltersWithoutUserFilters = service.findSharedFiltersWithoutUserFilters(userSession); filters.addAll(sharedFiltersWithoutUserFilters); + ImmutableSortedSet 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 { + INSTANCE; + + @Override + public int compare(IssueFilterDto o1, IssueFilterDto o2) { + return o1.getId().intValue() - o2.getId().intValue(); + } + } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/filter/SearchActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/filter/SearchActionTest.java index 050cb131a08..cd4e9045eab 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/issue/filter/SearchActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/issue/filter/SearchActionTest.java @@ -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()