package org.sonar.server.rule2.index;
import com.google.common.base.Preconditions;
-import com.google.common.collect.ImmutableSet;
import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.common.xcontent.XContentBuilder;
public class RuleIndex extends BaseIndex<Rule, RuleDto, RuleKey> {
- public static final Set<String> PUBLIC_FIELDS = ImmutableSet.of(
- RuleNormalizer.RuleField.KEY.key(),
- RuleNormalizer.RuleField.NAME.key(),
- RuleNormalizer.RuleField.HTML_DESCRIPTION.key(),
- RuleNormalizer.RuleField.LANGUAGE.key(),
- RuleNormalizer.RuleField.SEVERITY.key(),
- RuleNormalizer.RuleField.STATUS.key(),
- RuleNormalizer.RuleField.TAGS.key(),
- RuleNormalizer.RuleField.SYSTEM_TAGS.key(),
- RuleNormalizer.RuleField.CREATED_AT.key(),
- RuleNormalizer.RuleField.REPOSITORY.key(),
- RuleNormalizer.RuleField.PARAMS.key(),
- RuleNormalizer.RuleField.TEMPLATE.key(),
- RuleNormalizer.RuleField.NOTE.key(),
- RuleNormalizer.RuleField.NOTE_CREATED_AT.key(),
- RuleNormalizer.RuleField.NOTE_UPDATED_AT.key(),
- RuleNormalizer.RuleField.NOTE_LOGIN.key(),
- RuleNormalizer.RuleField.INTERNAL_KEY.key(),
- RuleNormalizer.RuleField.UPDATED_AT.key(),
- RuleNormalizer.RuleField.DEBT_FUNCTION_TYPE.key(),
- RuleNormalizer.RuleField.DEBT_FUNCTION_COEFFICIENT.key(),
- RuleNormalizer.RuleField.DEBT_FUNCTION_OFFSET.key(),
- RuleNormalizer.RuleField.SUB_CHARACTERISTIC.key(),
- RuleNormalizer.RuleField.CHARACTERISTIC.key());
-
-
public RuleIndex(RuleNormalizer normalizer, WorkQueue workQueue, ESNode node) {
super(new RuleIndexDefinition(), normalizer, workQueue, node);
}
/* integrate Option's Fields */
Set<String> fields = new HashSet<String>();
- if (options.getFieldsToReturn() != null && !options.getFieldsToReturn().isEmpty()) {
+ if (!options.getFieldsToReturn().isEmpty()) {
fields.addAll(options.getFieldsToReturn());
// required field
fields.add(RuleNormalizer.RuleField.KEY.key());
update.put(RuleField.CHARACTERISTIC.key(),
db.debtCharacteristicDao().selectById(characteristic.getParentId()).getKey());
}
+ } else {
+ update.put(RuleField.CHARACTERISTIC.key(),null);
+ update.put(RuleField.SUB_CHARACTERISTIC.key(),null);
}
String dType = null, dCoefficient = null, dOffset = null;
public RuleMapping(Languages languages, MacroInterpreter macroInterpreter) {
super();
- addIndexField("repo", RuleNormalizer.RuleField.REPOSITORY.key());
- addIndexField("name", RuleNormalizer.RuleField.NAME.key());
+ addIndexStringField("repo", RuleNormalizer.RuleField.REPOSITORY.key());
+ addIndexStringField("name", RuleNormalizer.RuleField.NAME.key());
addIndexDatetimeField("createdAt", RuleNormalizer.RuleField.CREATED_AT.key());
addField("htmlDesc", new HtmlDescField(macroInterpreter));
- addIndexField("severity", RuleNormalizer.RuleField.SEVERITY.key());
- addIndexField("status", RuleNormalizer.RuleField.STATUS.key());
- addIndexField("internalKey", RuleNormalizer.RuleField.INTERNAL_KEY.key());
+ addIndexStringField("severity", RuleNormalizer.RuleField.SEVERITY.key());
+ addIndexStringField("status", RuleNormalizer.RuleField.STATUS.key());
+ addIndexStringField("internalKey", RuleNormalizer.RuleField.INTERNAL_KEY.key());
addIndexBooleanField("template", RuleNormalizer.RuleField.TEMPLATE.key());
addIndexArrayField("tags", RuleNormalizer.RuleField.TAGS.key());
addIndexArrayField("sysTags", RuleNormalizer.RuleField.SYSTEM_TAGS.key());
- addIndexField("debtSubChar", RuleNormalizer.RuleField.SUB_CHARACTERISTIC.key());
- addField("debtRemFn", new IndexField("debtRemFnType", RuleNormalizer.RuleField.DEBT_FUNCTION_TYPE.key()));
- addField("debtRemFn", new IndexField("debtRemFnCoeff", RuleNormalizer.RuleField.DEBT_FUNCTION_COEFFICIENT.key()));
- addField("debtRemFn", new IndexField("debtRemFnOffset", RuleNormalizer.RuleField.DEBT_FUNCTION_OFFSET.key()));
- addIndexField("mdNote", RuleNormalizer.RuleField.NOTE.key());
- // TODO how to require NOTE ?
+ addField("debtChar", new IndexStringField("debtChar", RuleNormalizer.RuleField.CHARACTERISTIC.key()));
+ addField("debtChar", new IndexStringField("debtSubChar", RuleNormalizer.RuleField.SUB_CHARACTERISTIC.key()));
+ addField("debtRemFn", new IndexStringField("debtRemFnType", RuleNormalizer.RuleField.DEBT_FUNCTION_TYPE.key()));
+ addField("debtRemFn", new IndexStringField("debtRemFnCoeff", RuleNormalizer.RuleField.DEBT_FUNCTION_COEFFICIENT.key()));
+ addField("debtRemFn", new IndexStringField("debtRemFnOffset", RuleNormalizer.RuleField.DEBT_FUNCTION_OFFSET.key()));
+ addIndexStringField("mdNote", RuleNormalizer.RuleField.NOTE.key());
addField("htmlNote", new HtmlNoteField(macroInterpreter));
- addIndexField("noteLogin", RuleNormalizer.RuleField.NOTE_LOGIN.key());
- addIndexField("lang", RuleNormalizer.RuleField.LANGUAGE.key());
+ addIndexStringField("noteLogin", RuleNormalizer.RuleField.NOTE_LOGIN.key());
+ addIndexStringField("lang", RuleNormalizer.RuleField.LANGUAGE.key());
addField("langName", new LangNameField(languages));
- // TODO how to require field "params" ?
addField("params", new ParamsField());
}
- private static class ParamsField implements Field<Rule> {
+ private static class ParamsField extends IndexField<Rule> {
+ ParamsField() {
+ super(RuleNormalizer.RuleField.PARAMS.key());
+ }
+
@Override
public void write(JsonWriter json, Rule rule) {
json.name("params").beginArray();
}
}
- private static class LangNameField implements Field<Rule> {
+ private static class LangNameField extends IndexField<Rule> {
private final Languages languages;
private LangNameField(Languages languages) {
+ super(RuleNormalizer.RuleField.LANGUAGE.key());
this.languages = languages;
}
}
}
- private static class HtmlNoteField implements Field<Rule> {
+ private static class HtmlNoteField extends IndexField<Rule> {
private final MacroInterpreter macroInterpreter;
private HtmlNoteField(MacroInterpreter macroInterpreter) {
+ super(RuleNormalizer.RuleField.NOTE.key());
this.macroInterpreter = macroInterpreter;
}
json.name(entry.getKey());
json.beginArray();
for (ActiveRule activeRule : entry.getValue()) {
- json
- .beginObject()
- .prop("qProfile", activeRule.key().qProfile().toString())
- .prop("inherit", activeRule.inheritance().toString())
- .prop("severity", activeRule.severity());
- if (activeRule.parentKey() != null) {
- json.prop("parent", activeRule.parentKey().toString());
- }
- json.name("params").beginArray();
- for (Map.Entry<String, String> param : activeRule.params().entrySet()) {
- json
- .beginObject()
- .prop("key", param.getKey())
- .prop("value", param.getValue())
- .endObject();
- }
- json.endArray().endObject();
+ writeActiveRule(json, activeRule);
}
json.endArray();
}
json.endObject();
}
+ /**
+ * This method is static and package protected because it's used by {@link org.sonar.server.rule2.ws.ShowAction}
+ */
+ static void writeActiveRule(JsonWriter json, ActiveRule activeRule) {
+ json
+ .beginObject()
+ .prop("qProfile", activeRule.key().qProfile().toString())
+ .prop("inherit", activeRule.inheritance().toString())
+ .prop("severity", activeRule.severity());
+ if (activeRule.parentKey() != null) {
+ json.prop("parent", activeRule.parentKey().toString());
+ }
+ json.name("params").beginArray();
+ for (Map.Entry<String, String> param : activeRule.params().entrySet()) {
+ json
+ .beginObject()
+ .prop("key", param.getKey())
+ .prop("value", param.getValue())
+ .endObject();
+ }
+ json.endArray().endObject();
+ }
+
private void writeFacets(RuleResult results, JsonWriter json) {
json.name("facets").beginArray();
for (Map.Entry<String, Collection<FacetValue>> facet : results.getFacets().entrySet()) {
import org.sonar.server.search.BaseDoc;
import java.util.List;
-import java.util.Map;
/**
* @since 4.4
action
.createParam(PARAM_ACTIVATION)
.setDescription("Show rule's activations for all profiles (ActiveRules)")
- .setRequired(false)
.setDefaultValue("true")
- .setBooleanPossibleValues()
- .setExampleValue("true");
+ .setBooleanPossibleValues();
}
@Override
JsonWriter json = response.newJsonWriter().beginObject().name("rule");
mapping.write((BaseDoc) rule, json);
- /** add activeRules (or not) */
- if (request.paramAsBoolean(PARAM_ACTIVATION)) {
- writeActiveRules(key, activeRuleService.findByRuleKey(key), json);
+ if (request.mandatoryParamAsBoolean(PARAM_ACTIVATION)) {
+ writeActiveRules(activeRuleService.findByRuleKey(key), json);
}
json.endObject().close();
}
- private void writeActiveRules(RuleKey key, List<ActiveRule> activeRules, JsonWriter json) {
+ void writeActiveRules(List<ActiveRule> activeRules, JsonWriter json) {
json.name("actives").beginArray();
for (ActiveRule activeRule : activeRules) {
- json
- .beginObject()
- .prop("qProfile", activeRule.key().qProfile().toString())
- .prop("inherit", activeRule.inheritance().toString())
- .prop("severity", activeRule.severity());
- if (activeRule.parentKey() != null) {
- json.prop("parent", activeRule.parentKey().toString());
- }
- json.name("params").beginArray();
- for (Map.Entry<String, String> param : activeRule.params().entrySet()) {
- json
- .beginObject()
- .prop("key", param.getKey())
- .prop("value", param.getValue())
- .endObject();
- }
- json.endArray()
- .endObject();
+ SearchAction.writeActiveRule(json, activeRule);
}
json.endArray();
package org.sonar.server.search;
import com.google.common.base.Preconditions;
+import com.google.common.collect.Sets;
-import javax.annotation.CheckForNull;
import javax.annotation.Nullable;
import java.util.Arrays;
import java.util.Collection;
-import java.util.HashSet;
import java.util.Set;
/**
private int offset = DEFAULT_OFFSET;
private int limit = DEFAULT_LIMIT;
private boolean facet = DEFAULT_FACET;
- private Set<String> fieldsToReturn = new HashSet<String>();
+ private Set<String> fieldsToReturn = Sets.newHashSet();
/**
* Whether or not the search returns facets for the domain. Defaults to {@link #DEFAULT_OFFSET}
return this;
}
- @CheckForNull
public Set<String> getFieldsToReturn() {
return fieldsToReturn;
}
public QueryOptions setFieldsToReturn(@Nullable Collection<String> c) {
- this.fieldsToReturn.clear();
+ fieldsToReturn.clear();
if (c != null) {
- this.fieldsToReturn.addAll(c);
+ this.fieldsToReturn = Sets.newHashSet(c);
}
return this;
}
}
public QueryOptions addFieldsToReturn(String... c) {
- fieldsToReturn.addAll(Arrays.asList(c));
- return this;
+ return addFieldsToReturn(Arrays.asList(c));
}
}
import org.sonar.server.search.QueryOptions;
import javax.annotation.Nullable;
+import java.util.Arrays;
import java.util.List;
import java.util.Set;
json.endObject();
}
- protected BaseMapping addIndexField(String key, String indexKey) {
- indexFields.put(key, indexKey);
- fields.put(key, new BaseMapping.IndexField(key, indexKey));
- return this;
+ protected BaseMapping addIndexStringField(String key, String indexKey) {
+ return addField(key, new IndexStringField(key, indexKey));
}
protected BaseMapping addIndexBooleanField(String key, String indexKey) {
- indexFields.put(key, indexKey);
- fields.put(key, new BaseMapping.IndexBooleanField(key, indexKey));
- return this;
+ return addField(key, new IndexBooleanField(key, indexKey));
}
protected BaseMapping addIndexDatetimeField(String key, String indexKey) {
- indexFields.put(key, indexKey);
- fields.put(key, new BaseMapping.IndexDatetimeField(key, indexKey));
- return this;
+ return addField(key, new IndexDatetimeField(key, indexKey));
}
protected BaseMapping addIndexArrayField(String key, String indexKey) {
- indexFields.put(key, indexKey);
- fields.put(key, new BaseMapping.IndexArrayField(key, indexKey));
- return this;
+ return addField(key, new IndexArrayField(key, indexKey));
}
- protected BaseMapping addField(String key, BaseMapping.Field field) {
+ protected BaseMapping addField(String key, Field field) {
fields.put(key, field);
+ if (field instanceof IndexField) {
+ IndexField indexField = (IndexField) field;
+ indexFields.putAll(key, Arrays.asList(indexField.indexFields()));
+ }
return this;
}
void write(JsonWriter json, D doc);
}
+ public static abstract class IndexField<D> implements Field<D> {
+ protected final String[] indexFields;
+
+ protected IndexField(String... indexFields) {
+ this.indexFields = indexFields;
+ }
+
+ String[] indexFields() {
+ return indexFields;
+ }
+ }
+
/**
* String field
*/
- public static class IndexField implements Field<BaseDoc> {
- private final String key, indexKey;
+ public static class IndexStringField extends IndexField<BaseDoc> {
+ private final String key;
- public IndexField(String key, String indexKey) {
+ public IndexStringField(String key, String indexKey) {
+ super(indexKey);
this.key = key;
- this.indexKey = indexKey;
}
@Override
public void write(JsonWriter json, BaseDoc doc) {
- Object val = doc.getField(indexKey);
+ Object val = doc.getField(indexFields[0]);
json.prop(key, val != null ? val.toString() : null);
}
}
- public static class IndexBooleanField implements Field<BaseDoc> {
- private final String key, indexKey;
+ public static class IndexBooleanField extends IndexField<BaseDoc> {
+ private final String key;
public IndexBooleanField(String key, String indexKey) {
+ super(indexKey);
this.key = key;
- this.indexKey = indexKey;
}
@Override
public void write(JsonWriter json, BaseDoc doc) {
- Boolean val = doc.getField(indexKey);
+ Boolean val = doc.getField(indexFields[0]);
json.prop(key, val != null ? val.booleanValue() : null);
}
}
- public static class IndexArrayField implements Field<BaseDoc> {
- private final String key, indexKey;
+ public static class IndexArrayField extends IndexField<BaseDoc> {
+ private final String key;
public IndexArrayField(String key, String indexKey) {
+ super(indexKey);
this.key = key;
- this.indexKey = indexKey;
}
@Override
public void write(JsonWriter json, BaseDoc doc) {
- Iterable<String> values = doc.getField(indexKey);
+ Iterable<String> values = doc.getField(indexFields[0]);
json.name(key).beginArray().values(values).endArray();
}
}
- public static class IndexDatetimeField implements Field<BaseDoc> {
- private final String key, indexKey;
+ public static class IndexDatetimeField extends IndexField<BaseDoc> {
+ private final String key;
public IndexDatetimeField(String key, String indexKey) {
+ super(indexKey);
this.key = key;
- this.indexKey = indexKey;
}
@Override
public void write(JsonWriter json, BaseDoc doc) {
- String val = doc.getField(indexKey);
+ String val = doc.getField(indexFields[0]);
if (val != null) {
json.propDateTime(key, IndexUtils.parseDateTime(val));
}
import org.sonar.api.server.ws.Request;
import org.sonar.api.server.ws.WebService;
import org.sonar.api.utils.text.JsonWriter;
+import org.sonar.server.search.QueryOptions;
import org.sonar.server.search.Result;
import javax.annotation.CheckForNull;
this.page = page;
}
+ /**
+ * The fields to be returned in JSON response. <code>null</code> means that
+ * all the fields must be returned.
+ */
@CheckForNull
public List<String> fields() {
return fields;
}
- public void setFields(@Nullable List<String> fields) {
+ public SearchOptions setFields(@Nullable List<String> fields) {
this.fields = fields;
+ return this;
}
public boolean hasField(String key) {
public static SearchOptions create(Request request) {
SearchOptions options = new SearchOptions();
+
+ // both parameters have default values
options.setPage(request.mandatoryParamAsInt(PARAM_PAGE));
options.setPageSize(request.mandatoryParamAsInt(PARAM_PAGE_SIZE));
+
+ // optional field
options.setFields(request.paramAsStrings(PARAM_FIELDS));
+
return options;
}
action
.createParam(PARAM_PAGE_SIZE)
.setDescription("Page size. Must be greater than 0.")
- .setExampleValue("10")
- .setDefaultValue("25");
+ .setExampleValue("20")
+ .setDefaultValue(String.valueOf(QueryOptions.DEFAULT_LIMIT));
}
}
+++ /dev/null
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.server.rule2.index;
-
-import org.junit.Test;
-
-import static org.fest.assertions.Assertions.assertThat;
-
-public class RuleMappingTest {
-
- @Test
- public void all_rule_fields() throws Exception {
- assertThat(RuleNormalizer.RuleField.ALL_KEYS).contains(
- RuleNormalizer.RuleField.KEY.key(), RuleNormalizer.RuleField.REPOSITORY.key(), RuleNormalizer.RuleField.TAGS.key(),
- RuleNormalizer.RuleField.CREATED_AT.key());
- }
-
- @Test
- public void key_of_rule_field() throws Exception {
- assertThat(RuleNormalizer.RuleField.INTERNAL_KEY.key()).isEqualTo("internalKey");
- }
-}
--- /dev/null
+/*
+ * SonarQube, open source software quality management tool.
+ * Copyright (C) 2008-2014 SonarSource
+ * mailto:contact AT sonarsource DOT com
+ *
+ * SonarQube is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * SonarQube is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.sonar.server.rule2.ws;
+
+import org.junit.Test;
+import org.sonar.api.resources.Languages;
+import org.sonar.api.server.ws.internal.SimpleGetRequest;
+import org.sonar.server.rule2.index.RuleNormalizer;
+import org.sonar.server.search.QueryOptions;
+import org.sonar.server.search.ws.SearchOptions;
+import org.sonar.server.text.MacroInterpreter;
+
+import static org.fest.assertions.Assertions.assertThat;
+import static org.mockito.Mockito.mock;
+
+public class RuleMappingTest {
+
+ Languages languages = new Languages();
+ MacroInterpreter macroInterpreter = mock(MacroInterpreter.class);
+
+ @Test
+ public void toQueryOptions_load_all_fields() throws Exception {
+ RuleMapping mapping = new RuleMapping(languages, macroInterpreter);
+ SimpleGetRequest request = new SimpleGetRequest();
+ request.setParam("p", "1");
+ request.setParam("ps", "10");
+ QueryOptions queryOptions = mapping.newQueryOptions(SearchOptions.create(request));
+
+ assertThat(queryOptions.getFieldsToReturn()).isEmpty();
+ }
+
+ @Test
+ public void toQueryOptions_load_only_few_simple_fields() throws Exception {
+ RuleMapping mapping = new RuleMapping(languages, macroInterpreter);
+ SimpleGetRequest request = new SimpleGetRequest();
+ request.setParam("p", "1");
+ request.setParam("ps", "10");
+ request.setParam("f", "repo,name,lang");
+ QueryOptions queryOptions = mapping.newQueryOptions(SearchOptions.create(request));
+
+ assertThat(queryOptions.getFieldsToReturn()).containsOnly(
+ RuleNormalizer.RuleField.REPOSITORY.key(),
+ RuleNormalizer.RuleField.NAME.key(),
+ RuleNormalizer.RuleField.LANGUAGE.key());
+ }
+
+ @Test
+ public void toQueryOptions_langName_requires_lang() throws Exception {
+ RuleMapping mapping = new RuleMapping(languages, macroInterpreter);
+ SimpleGetRequest request = new SimpleGetRequest();
+ request.setParam("p", "1");
+ request.setParam("ps", "10");
+ request.setParam("f", "langName");
+ QueryOptions queryOptions = mapping.newQueryOptions(SearchOptions.create(request));
+
+ assertThat(queryOptions.getFieldsToReturn()).containsOnly(RuleNormalizer.RuleField.LANGUAGE.key());
+ }
+
+ @Test
+ public void toQueryOptions_debt_requires_group_of_fields() throws Exception {
+ RuleMapping mapping = new RuleMapping(languages, macroInterpreter);
+ SimpleGetRequest request = new SimpleGetRequest();
+ request.setParam("p", "1");
+ request.setParam("ps", "10");
+ request.setParam("f", "debtRemFn");
+ QueryOptions queryOptions = mapping.newQueryOptions(SearchOptions.create(request));
+
+ assertThat(queryOptions.getFieldsToReturn()).containsOnly(
+ RuleNormalizer.RuleField.DEBT_FUNCTION_COEFFICIENT.key(),
+ RuleNormalizer.RuleField.DEBT_FUNCTION_OFFSET.key(),
+ RuleNormalizer.RuleField.DEBT_FUNCTION_TYPE.key());
+ }
+
+ @Test
+ public void toQueryOptions_html_note_requires_markdown_note() throws Exception {
+ RuleMapping mapping = new RuleMapping(languages, macroInterpreter);
+ SimpleGetRequest request = new SimpleGetRequest();
+ request.setParam("p", "1");
+ request.setParam("ps", "10");
+ request.setParam("f", "htmlNote");
+ QueryOptions queryOptions = mapping.newQueryOptions(SearchOptions.create(request));
+
+ assertThat(queryOptions.getFieldsToReturn()).containsOnly(RuleNormalizer.RuleField.NOTE.key());
+ }
+
+ @Test
+ public void toQueryOptions_debt_characteristics() throws Exception {
+ RuleMapping mapping = new RuleMapping(languages, macroInterpreter);
+ SimpleGetRequest request = new SimpleGetRequest();
+ request.setParam("p", "1");
+ request.setParam("ps", "10");
+ request.setParam("f", "debtChar");
+ QueryOptions queryOptions = mapping.newQueryOptions(SearchOptions.create(request));
+
+ assertThat(queryOptions.getFieldsToReturn()).containsOnly(
+ RuleNormalizer.RuleField.CHARACTERISTIC.key(),
+ RuleNormalizer.RuleField.SUB_CHARACTERISTIC.key());
+ }
+}
import org.junit.Test;
import java.util.Arrays;
+import java.util.Collections;
import static org.fest.assertions.Assertions.assertThat;
import static org.fest.assertions.Fail.fail;
}
@Test
- public void fields_to_return() throws Exception {
+ public void getFieldsToReturn() throws Exception {
assertThat(options.getFieldsToReturn()).isEmpty();
options.setFieldsToReturn(Arrays.asList("one", "two"));
import org.sonar.api.server.ws.WebService;
import org.sonar.api.server.ws.internal.SimpleGetRequest;
import org.sonar.api.utils.text.JsonWriter;
+import org.sonar.server.search.QueryOptions;
import org.sonar.server.search.Result;
import java.io.StringWriter;
assertThat(page.defaultValue()).isEqualTo("1");
WebService.Param pageSize = searchAction.param("ps");
assertThat(pageSize).isNotNull();
- assertThat(pageSize.defaultValue()).isEqualTo("25");
+ assertThat(pageSize.defaultValue()).isEqualTo("" + QueryOptions.DEFAULT_LIMIT);
}
}