public static final String SORT_BY_CREATION_DATE = "CREATION_DATE";
public static final String SORT_BY_UPDATE_DATE = "UPDATE_DATE";
public static final String SORT_BY_CLOSE_DATE = "CLOSE_DATE";
+ /**
+ * @deprecated since 7.2, it's no more possible to sort by assignee
+ */
+ @Deprecated
public static final String SORT_BY_ASSIGNEE = "ASSIGNEE";
public static final String SORT_BY_SEVERITY = "SEVERITY";
public static final String SORT_BY_STATUS = "STATUS";
}
private static IssueProcessor getIssueProcessor(String sort) {
- if (IssueQuery.SORT_BY_ASSIGNEE.equals(sort)) {
- return new AssigneeSortIssueProcessor();
- }
if (IssueQuery.SORT_BY_SEVERITY.equals(sort)) {
return new SeveritySortIssueProcessor();
}
}
}
- static class AssigneeSortIssueProcessor extends TextSortIssueProcessor {
- @Override
- String sortField(IssueDto issueDto) {
- return issueDto.getAssigneeUuid();
- }
- }
-
static class StatusSortIssueProcessor extends TextSortIssueProcessor {
@Override
String sortField(IssueDto issueDto) {
this.authorizationTypeSupport = authorizationTypeSupport;
this.sorting = new Sorting();
- this.sorting.add(IssueQuery.SORT_BY_ASSIGNEE, IssueIndexDefinition.FIELD_ISSUE_ASSIGNEE_UUID);
this.sorting.add(IssueQuery.SORT_BY_STATUS, IssueIndexDefinition.FIELD_ISSUE_STATUS);
this.sorting.add(IssueQuery.SORT_BY_SEVERITY, IssueIndexDefinition.FIELD_ISSUE_SEVERITY_VALUE);
this.sorting.add(IssueQuery.SORT_BY_CREATION_DATE, IssueIndexDefinition.FIELD_ISSUE_FUNC_CREATED_AT);
import static org.sonar.api.utils.Paging.forPageIndex;
import static org.sonar.core.util.stream.MoreCollectors.toSet;
import static org.sonar.server.es.SearchOptions.MAX_LIMIT;
+import static org.sonar.server.issue.IssueQuery.SORT_BY_ASSIGNEE;
import static org.sonar.server.issue.IssueQueryFactory.UNKNOWN;
import static org.sonar.server.ws.KeyExamples.KEY_BRANCH_EXAMPLE_001;
import static org.sonar.server.ws.KeyExamples.KEY_PROJECT_EXAMPLE_001;
new Change("5.5", "response fields 'reporter' and 'actionPlan' are removed (drop of action plan and manual issue features)"),
new Change("5.5", "parameters 'reporters', 'actionPlans' and 'planned' are dropped and therefore ignored (drop of action plan and manual issue features)"),
new Change("5.5", "response field 'debt' is renamed 'effort'"),
- new Change("7.2", "response field 'externalRuleEngine' added to issues that have been imported from an external rule engine"))
+ new Change("7.2", "response field 'externalRuleEngine' added to issues that have been imported from an external rule engine"),
+ new Change("7.2", format("value '%s' in parameter '%s' is deprecated, it won't have any effect", SORT_BY_ASSIGNEE, Param.SORT)))
.setResponseExample(getClass().getResource("search-example.json"));
action.addPagingParams(100, MAX_LIMIT);
.createdBefore(new Date())
.createdAt(new Date())
.resolved(true)
- .sort(IssueQuery.SORT_BY_ASSIGNEE)
+ .sort(IssueQuery.SORT_BY_CREATION_DATE)
.asc(true)
.build();
assertThat(query.issueKeys()).containsOnly("ABCDE");
assertThat(query.createdBefore()).isNotNull();
assertThat(query.createdAt()).isNotNull();
assertThat(query.resolved()).isTrue();
- assertThat(query.sort()).isEqualTo(IssueQuery.SORT_BY_ASSIGNEE);
+ assertThat(query.sort()).isEqualTo(IssueQuery.SORT_BY_CREATION_DATE);
assertThat(query.asc()).isTrue();
}
public class IssuesFinderSortTest {
- @Test
- public void should_sort_by_assignee() {
- IssueDto issue1 = new IssueDto().setId(1L).setAssigneeUuid("perceval");
- IssueDto issue2 = new IssueDto().setId(2L).setAssigneeUuid("arthur");
- IssueDto issue3 = new IssueDto().setId(3L).setAssigneeUuid("vincent");
- IssueDto issue4 = new IssueDto().setId(4L).setAssigneeUuid(null);
- List<IssueDto> dtoList = newArrayList(issue1, issue2, issue3, issue4);
-
- IssueQuery query = IssueQuery.builder().sort(IssueQuery.SORT_BY_ASSIGNEE).asc(true).build();
- IssuesFinderSort issuesFinderSort = new IssuesFinderSort(dtoList, query);
-
- List<IssueDto> result = newArrayList(issuesFinderSort.sort());
-
- assertThat(result).hasSize(4);
- assertThat(result.get(0).getAssigneeUuid()).isEqualTo("arthur");
- assertThat(result.get(1).getAssigneeUuid()).isEqualTo("perceval");
- assertThat(result.get(2).getAssigneeUuid()).isEqualTo("vincent");
- assertThat(result.get(3).getAssigneeUuid()).isNull();
- }
-
@Test
public void should_sort_by_status() {
IssueDto issue1 = new IssueDto().setId(1L).setStatus("CLOSED");
assertThatSearchReturnsOnly(query, "I1", "I4", "I5", "I3", "I2");
}
- @Test
- public void sort_by_assignee() {
- ComponentDto project = newPrivateProjectDto(newOrganizationDto());
- ComponentDto file = newFileDto(project, null);
-
- indexIssues(
- newDoc("I1", file).setAssigneeUuid("steph-uuid"),
- newDoc("I2", file).setAssigneeUuid("marcel-uuid"));
-
- IssueQuery.Builder query = IssueQuery.builder().sort(IssueQuery.SORT_BY_ASSIGNEE).asc(true);
- assertThatSearchReturnsOnly(query, "I2", "I1");
-
- query = IssueQuery.builder().sort(IssueQuery.SORT_BY_ASSIGNEE).asc(false);
- assertThatSearchReturnsOnly(query, "I1", "I2");
- }
-
@Test
public void sort_by_creation_date() {
ComponentDto project = newPrivateProjectDto(newOrganizationDto());