import org.sonar.api.rules.RuleFinder;
import org.sonar.api.user.User;
import org.sonar.api.user.UserFinder;
+import org.sonar.api.utils.Paging;
import org.sonar.api.web.UserRole;
import org.sonar.core.issue.DefaultIssueBuilder;
import org.sonar.core.issue.IssueNotifications;
// Extend the content of the resultSet to make an actual IssueResponse
IssueResult results = new IssueResult(issueIndex, esResults);
+ results.setPaging(Paging.create(
+ options.getLimit(),
+ (options.getOffset() * options.getLimit()) + 1,
+ new Long(esResults.getHits().getTotalHits()).intValue()));
// TODO Implement the logic of search here!!!
return results;
import org.sonar.server.search.Result;
import javax.annotation.Nullable;
-
import java.util.Collection;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class IssueResult extends Result<IssueDoc> implements IssueQueryResult {
- Map<String, Rule> rules;
- Map<String, Component> components;
- Map<String, Component> projects;
- Map<String, ActionPlan> actionPlans;
- Map<String, User> usersByLogin;
+ private final Map<String, Rule> rules;
+ private final Map<String, Component> components;
+ private final Map<String, Component> projects;
+ private final Map<String, ActionPlan> actionPlans;
+ private final Map<String, User> usersByLogin;
Paging paging;
public IssueResult(@Nullable BaseIndex<IssueDoc, ?, ?> index, SearchResponse response) {
super(index, response);
+ rules = new HashMap<String, Rule>();
+ components = new HashMap<String, Component>();
+ projects = new HashMap<String, Component>();
+ actionPlans = new HashMap<String, ActionPlan>();
+ usersByLogin = new HashMap<String, User>();
}
@Override
return paging;
}
+ public void setPaging(Paging paging) {
+ this.paging = paging;
+ }
+
@Override
public boolean maxResultsReached() {
return false;
import javax.annotation.CheckForNull;
import javax.annotation.Nullable;
import java.util.Collection;
+import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Map;
// Add globalized search options. Will also support legacy params
// Generic search parameters
SearchOptions.definePageParams(action);
+ SearchOptions.defineFieldsParam(action, Collections.<String>emptyList());
// Issue-specific search parameters
defineIssueSearchParameters(action);
}
@Test
- public void deactivate_rule() throws Exception {
- // QualityProfileDto profile = createProfile("java");
- // RuleDto rule = createRule(profile.getLanguage(), "toto");
- // createActiveRule(rule, profile);
- // session.commit();
- //
- // // 0. Assert No Active Rule for profile
- // assertThat(db.activeRuleDao().findByProfileKey(session, profile.getKey())).hasSize(1);
- //
- // // 1. Deactivate Rule
- // WsTester.TestRequest request = wsTester.newGetRequest(QProfilesWs.API_ENDPOINT, RuleActivationActions.DEACTIVATE_ACTION);
- // request.setParam(RuleActivationActions.PROFILE_KEY, profile.getKey().toString());
- // request.setParam(RuleActivationActions.RULE_KEY, rule.getKey().toString());
- // request.execute();
- // session.clearCache();
- //
- // // 2. Assert ActiveRule in DAO
- // assertThat(db.activeRuleDao().findByProfileKey(session, profile.getKey())).isEmpty();
+ public void empty_search() throws Exception {
+
+ WsTester.TestRequest request = wsTester.newGetRequest(IssuesWs.API_ENDPOINT, SearchAction.SEARCH_ACTION);
+ // request.setParam()
+ WsTester.Result result = request.execute();
+
+ assertThat(result).isNotNull();
+ result.assertJson(this.getClass(), "empty_result.json", false);
}
}
--- /dev/null
+{"maxResultsReached": false, "paging": {
+ "pageIndex": 1,
+ "pageSize": 10,
+ "total": 0,
+ "fTotal": "0",
+ "pages": 0
+}, "issues": [], "components": [], "projects": [], "rules": [], "users": []}