Skip to content

Commit

Permalink
SONAR-6244 Use placeholder in assignees instead of new parameter
Browse files Browse the repository at this point in the history
  • Loading branch information
jblievremont committed Mar 9, 2015
1 parent b902814 commit b43fa4b
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 24 deletions.
Expand Up @@ -60,6 +60,8 @@
*/
public class IssueQueryService implements ServerComponent {

public static final String LOGIN_MYSELF = "__me__";

private static final String UNKNOWN = "<UNKNOWN>";
private final DbClient dbClient;
private final ComponentService componentService;
Expand All @@ -82,9 +84,7 @@ public IssueQuery createFromMap(Map<String, Object> params) {
.rules(toRules(params.get(IssueFilterParameters.RULES)))
.actionPlans(RubyUtils.toStrings(params.get(IssueFilterParameters.ACTION_PLANS)))
.reporters(RubyUtils.toStrings(params.get(IssueFilterParameters.REPORTERS)))
.assignees(buildAssignees(
RubyUtils.toStrings(params.get(IssueFilterParameters.ASSIGNEES)),
RubyUtils.toBoolean(params.get(IssueFilterParameters.ASSIGNED_TO_ME))))
.assignees(buildAssignees(RubyUtils.toStrings(params.get(IssueFilterParameters.ASSIGNEES))))
.languages(RubyUtils.toStrings(params.get(IssueFilterParameters.LANGUAGES)))
.tags(RubyUtils.toStrings(params.get(IssueFilterParameters.TAGS)))
.assigned(RubyUtils.toBoolean(params.get(IssueFilterParameters.ASSIGNED)))
Expand Down Expand Up @@ -147,9 +147,7 @@ public IssueQuery createFromRequest(Request request) {
.rules(stringsToRules(request.paramAsStrings(IssueFilterParameters.RULES)))
.actionPlans(request.paramAsStrings(IssueFilterParameters.ACTION_PLANS))
.reporters(request.paramAsStrings(IssueFilterParameters.REPORTERS))
.assignees(buildAssignees(
request.paramAsStrings(IssueFilterParameters.ASSIGNEES),
request.paramAsBoolean(IssueFilterParameters.ASSIGNED_TO_ME)))
.assignees(buildAssignees(request.paramAsStrings(IssueFilterParameters.ASSIGNEES)))
.languages(request.paramAsStrings(IssueFilterParameters.LANGUAGES))
.tags(request.paramAsStrings(IssueFilterParameters.TAGS))
.assigned(request.paramAsBoolean(IssueFilterParameters.ASSIGNED))
Expand Down Expand Up @@ -190,12 +188,12 @@ public IssueQuery createFromRequest(Request request) {
}
}

private List<String> buildAssignees(@Nullable List<String> assigneesFromParams, @Nullable Boolean assignedToMe) {
private List<String> buildAssignees(@Nullable List<String> assigneesFromParams) {
List<String> assignees = Lists.newArrayList();
if (assigneesFromParams != null) {
assignees.addAll(assigneesFromParams);
}
if (BooleanUtils.isTrue(assignedToMe)) {
if (assignees.contains(LOGIN_MYSELF)) {
String login = UserSession.get().login();
if (login == null) {
assignees.add(UNKNOWN);
Expand Down
Expand Up @@ -58,7 +58,6 @@ public class IssueFilterParameters {
public static final String LANGUAGES = "languages";
public static final String TAGS = "tags";
public static final String ASSIGNED = "assigned";
public static final String ASSIGNED_TO_ME = "assigned_to_me";
public static final String PLANNED = "planned";
public static final String HIDE_RULES = "hideRules";
public static final String HIDE_COMMENTS = "hideComments";
Expand All @@ -71,9 +70,11 @@ public class IssueFilterParameters {
public static final String ASC = "asc";
public static final String IGNORE_PAGING = "ignorePaging";

public static final String FACET_ASSIGNED_TO_ME = "assigned_to_me";

public static final List<String> ALL = ImmutableList.of(ISSUES, SEVERITIES, STATUSES, RESOLUTIONS, RESOLVED, COMPONENTS, COMPONENT_ROOTS, RULES, ACTION_PLANS, REPORTERS, TAGS,
ASSIGNEES, LANGUAGES, ASSIGNED, PLANNED, HIDE_RULES, CREATED_AT, CREATED_AFTER, CREATED_BEFORE, PAGE_SIZE, PAGE_INDEX, SORT, ASC, COMPONENT_UUIDS, COMPONENT_ROOT_UUIDS,
PROJECTS, PROJECT_UUIDS, IGNORE_PAGING, PROJECT_KEYS, COMPONENT_KEYS, MODULE_UUIDS, DIRECTORIES, FILE_UUIDS, AUTHORS, HIDE_COMMENTS, ASSIGNED_TO_ME);
PROJECTS, PROJECT_UUIDS, IGNORE_PAGING, PROJECT_KEYS, COMPONENT_KEYS, MODULE_UUIDS, DIRECTORIES, FILE_UUIDS, AUTHORS, HIDE_COMMENTS);

public static final List<String> ALL_WITHOUT_PAGINATION = newArrayList(Iterables.filter(ALL, new Predicate<String>() {
@Override
Expand Down
Expand Up @@ -88,7 +88,7 @@ public class IssueIndex extends BaseIndex {
IssueFilterParameters.PROJECT_UUIDS,
IssueFilterParameters.RULES,
IssueFilterParameters.ASSIGNEES,
IssueFilterParameters.ASSIGNED_TO_ME,
IssueFilterParameters.FACET_ASSIGNED_TO_ME,
IssueFilterParameters.REPORTERS,
IssueFilterParameters.AUTHORS,
IssueFilterParameters.MODULE_UUIDS,
Expand Down Expand Up @@ -476,7 +476,6 @@ private AggregationBuilder createAssigneesFacet(IssueQuery query, Map<String, Fi
Map<String, FilterBuilder> assigneeFilters = Maps.newHashMap(filters);
assigneeFilters.remove("__isAssigned");
assigneeFilters.remove(fieldName);
assigneeFilters.remove(IssueFilterParameters.ASSIGNED_TO_ME);
StickyFacetBuilder assigneeFacetBuilder = new StickyFacetBuilder(queryBuilder, assigneeFilters);
BoolFilterBuilder facetFilter = assigneeFacetBuilder.getStickyFacetFilter(fieldName);
FilterAggregationBuilder facetTopAggregation = assigneeFacetBuilder.buildTopFacetAggregation(fieldName, facetName, facetFilter, DEFAULT_FACET_SIZE);
Expand All @@ -497,7 +496,7 @@ private AggregationBuilder createAssigneesFacet(IssueQuery query, Map<String, Fi
}

private void addAssignedToMeFacetIfNeeded(SearchRequestBuilder builder, SearchOptions options, IssueQuery query, Map<String, FilterBuilder> filters, QueryBuilder queryBuilder) {
if (!options.getFacets().contains(IssueFilterParameters.ASSIGNED_TO_ME)) {
if (!options.getFacets().contains(IssueFilterParameters.FACET_ASSIGNED_TO_ME)) {
return;
}

Expand All @@ -507,7 +506,7 @@ private void addAssignedToMeFacetIfNeeded(SearchRequestBuilder builder, SearchOp
}

String fieldName = IssueIndexDefinition.FIELD_ISSUE_ASSIGNEE;
String facetName = IssueFilterParameters.ASSIGNED_TO_ME;
String facetName = IssueFilterParameters.FACET_ASSIGNED_TO_ME;

// Same as in super.stickyFacetBuilder
Map<String, FilterBuilder> assigneeFilters = Maps.newHashMap(filters);
Expand Down
Expand Up @@ -172,14 +172,11 @@ public void define(WebService.NewController controller) {
.setDescription("Comma-separated list of SCM accounts")
.setExampleValue("torvalds@linux-foundation.org");
action.createParam(IssueFilterParameters.ASSIGNEES)
.setDescription("Comma-separated list of assignee logins")
.setDescription("Comma-separated list of assignee logins. The value '__me__' can be used as a placeholder for the current authenticating user")
.setExampleValue("admin,usera");
action.createParam(IssueFilterParameters.ASSIGNED)
.setDescription("To retrieve assigned or unassigned issues")
.setBooleanPossibleValues();
action.createParam(IssueFilterParameters.ASSIGNED_TO_ME)
.setDescription("To retrieve issues assigned to the authenticating user. Only valid when providing user credentials")
.setBooleanPossibleValues();
action.createParam(IssueFilterParameters.LANGUAGES)
.setDescription("Comma-separated list of languages. Available since 4.4")
.setExampleValue("java,js");
Expand Down Expand Up @@ -396,9 +393,10 @@ protected void writeFacets(Request request, SearchOptions options, SearchResult<
List<String> assigneesFromRequest = request.paramAsStrings(IssueFilterParameters.ASSIGNEES);
if (assigneesFromRequest != null) {
assignees.addAll(assigneesFromRequest);
assignees.remove(IssueQueryService.LOGIN_MYSELF);
}
addMandatoryFacetValues(results, IssueFilterParameters.ASSIGNEES, assignees);
addMandatoryFacetValues(results, IssueFilterParameters.ASSIGNED_TO_ME, Arrays.asList(UserSession.get().login()));
addMandatoryFacetValues(results, IssueFilterParameters.FACET_ASSIGNED_TO_ME, Arrays.asList(UserSession.get().login()));
addMandatoryFacetValues(results, IssueFilterParameters.REPORTERS, request.paramAsStrings(IssueFilterParameters.REPORTERS));
addMandatoryFacetValues(results, IssueFilterParameters.RULES, request.paramAsStrings(IssueFilterParameters.RULES));
addMandatoryFacetValues(results, IssueFilterParameters.LANGUAGES, request.paramAsStrings(IssueFilterParameters.LANGUAGES));
Expand Down Expand Up @@ -427,7 +425,7 @@ protected void writeFacets(Request request, SearchOptions options, SearchResult<
json.endObject();
}
// Prevent appearance of a glitch value due to dedicated parameter for this facet
if (!IssueFilterParameters.ASSIGNED_TO_ME.equals(facetName)) {
if (!IssueFilterParameters.FACET_ASSIGNED_TO_ME.equals(facetName)) {
addZeroFacetsForSelectedItems(request, facetName, itemsFromFacets, json);
}
}
Expand Down Expand Up @@ -800,7 +798,7 @@ private void addZeroFacetsForSelectedItems(Request request, String facetName, Se
List<String> requestParams = request.paramAsStrings(facetName);
if (requestParams != null) {
for (String param : requestParams) {
if (!itemsFromFacets.contains(param)) {
if (!itemsFromFacets.contains(param) && !IssueQueryService.LOGIN_MYSELF.equals(param)) {
json.beginObject();
json.prop("val", param);
json.prop("count", 0);
Expand Down
Expand Up @@ -88,7 +88,7 @@ public void define_action() throws Exception {
assertThat(show.isPost()).isFalse();
assertThat(show.isInternal()).isFalse();
assertThat(show.responseExampleAsString()).isNotEmpty();
assertThat(show.params()).hasSize(40);
assertThat(show.params()).hasSize(39);
}

@Test
Expand Down Expand Up @@ -469,15 +469,15 @@ public void filter_by_assigned_to_me() throws Exception {
MockUserSession.set().setLogin("john");
wsTester.newGetRequest(IssuesWs.API_ENDPOINT, SearchAction.SEARCH_ACTION)
.setParam("resolved", "false")
.setParam("assigned_to_me", "true")
.setParam("assignees", "__me__")
.setParam(WebService.Param.FACETS, "assignees,assigned_to_me")
.execute()
.assertJson(this.getClass(), "filter_by_assigned_to_me.json", false);

MockUserSession.set();
wsTester.newGetRequest(IssuesWs.API_ENDPOINT, SearchAction.SEARCH_ACTION)
.setParam("resolved", "false")
.setParam("assigned_to_me", "true")
.setParam("assignees", "__me__")
.execute()
.assertJson(this.getClass(), "empty_result.json", false);
}
Expand Down

0 comments on commit b43fa4b

Please sign in to comment.