QueryContext options = new QueryContext();
Integer pageSize = RubyUtils.toInteger(params.get("pageSize"));
int size = pageSize != null ? pageSize : 50;
- Integer page = RubyUtils.toInteger(params.get("p"));
- int pageIndex = page != null ? page : 1;
- options.setPage(pageIndex, size);
- Result<Rule> result = service.search(query, options);
- return new PagedResult<Rule>(result.getHits(), PagingResult.create(options.getLimit(), pageIndex, result.getTotal()));
+ if (size > -1) {
+ Integer page = RubyUtils.toInteger(params.get("p"));
+ int pageIndex = page != null ? page : 1;
+ options.setPage(pageIndex, size);
+ Result<Rule> result = service.search(query, options);
+ return new PagedResult<>(result.getHits(), PagingResult.create(options.getLimit(), pageIndex, result.getTotal()));
+ } else {
+ List<Rule> rules = newArrayList(service.search(query, new QueryContext().setScroll(true)).scroll());
+ return new PagedResult<>(rules, PagingResult.create(Integer.MAX_VALUE, 1, rules.size()));
+ }
}
/**
import org.mockito.runners.MockitoJUnitRunner;
import org.sonar.api.rule.RuleKey;
import org.sonar.api.rule.RuleStatus;
+import org.sonar.server.paging.PagedResult;
import org.sonar.server.rule.index.RuleQuery;
import org.sonar.server.search.QueryContext;
import org.sonar.server.search.Result;
import org.sonar.server.user.UserSession;
import java.util.HashMap;
+import java.util.List;
+import static com.google.common.collect.Lists.newArrayList;
import static com.google.common.collect.Maps.newHashMap;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Matchers.any;
assertThat(optionsCaptor.getValue().getOffset()).isEqualTo(0);
}
+ @Test
+ public void search_all_rules() throws Exception {
+ List<Rule> rules = newArrayList(mock(Rule.class));
+ Result serviceResult = mock(Result.class);
+ when(serviceResult.scroll()).thenReturn(rules.iterator());
+
+ when(ruleService.search(any(RuleQuery.class), any(QueryContext.class))).thenReturn(serviceResult);
+
+ HashMap<String, Object> params = newHashMap();
+ params.put("pageSize", "-1");
+ PagedResult<Rule> result = service.find(params);
+
+ verify(serviceResult).scroll();
+
+ verify(ruleService).search(ruleQueryCaptor.capture(), optionsCaptor.capture());
+ assertThat(result.paging().pageSize()).isEqualTo(Integer.MAX_VALUE);
+ }
+
@Test
public void update_rule() throws Exception {
when(ruleService.search(any(RuleQuery.class), any(QueryContext.class))).thenReturn(mock(Result.class));