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;
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();
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();
+ }
+ }
}
.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()