]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-8231 Rename facet and filter 'language' to 'languages'
authorJulien Lancelot <julien.lancelot@sonarsource.com>
Mon, 6 Mar 2017 14:24:02 +0000 (15:24 +0100)
committerJulien Lancelot <julien.lancelot@sonarsource.com>
Tue, 7 Mar 2017 11:19:50 +0000 (12:19 +0100)
server/sonar-server/src/main/java/org/sonar/server/component/ws/ProjectMeasuresQueryFactory.java
server/sonar-server/src/main/java/org/sonar/server/component/ws/SearchProjectsAction.java
server/sonar-server/src/main/java/org/sonar/server/measure/index/ProjectMeasuresIndex.java
server/sonar-server/src/test/java/org/sonar/server/component/ws/ProjectMeasuresQueryFactoryTest.java
server/sonar-server/src/test/java/org/sonar/server/component/ws/SearchProjectsActionTest.java
server/sonar-server/src/test/java/org/sonar/server/measure/index/ProjectMeasuresIndexTest.java
sonar-ws/src/main/java/org/sonarqube/ws/client/project/ProjectsWsParameters.java

index db2042e76214983f012990de31dac712ac2e621f..8d7a742e32911e1e3f9db2162a17a0aca8282b37 100644 (file)
@@ -41,7 +41,7 @@ import static org.sonar.api.measures.CoreMetrics.ALERT_STATUS_KEY;
 import static org.sonar.server.component.ws.FilterParser.Operator.EQ;
 import static org.sonar.server.component.ws.FilterParser.Operator.IN;
 import static org.sonar.server.measure.index.ProjectMeasuresQuery.MetricCriterion;
-import static org.sonarqube.ws.client.project.ProjectsWsParameters.FILTER_LANGUAGE;
+import static org.sonarqube.ws.client.project.ProjectsWsParameters.FILTER_LANGUAGES;
 
 class ProjectMeasuresQueryFactory {
 
@@ -51,7 +51,7 @@ class ProjectMeasuresQueryFactory {
 
   private static final Map<String, BiConsumer<Criterion, ProjectMeasuresQuery>> CRITERION_PROCESSORS = ImmutableMap.<String, BiConsumer<Criterion, ProjectMeasuresQuery>>builder()
     .put(IS_FAVORITE_CRITERION.toLowerCase(ENGLISH), (criterion, query) -> processIsFavorite(criterion))
-    .put(FILTER_LANGUAGE, ProjectMeasuresQueryFactory::processLanguages)
+    .put(FILTER_LANGUAGES, ProjectMeasuresQueryFactory::processLanguages)
     .put(CRITERION_TAG, ProjectMeasuresQueryFactory::processTags)
     .put(QUERY_KEY, ProjectMeasuresQueryFactory::processQuery)
     .put(ALERT_STATUS_KEY, ProjectMeasuresQueryFactory::processQualityGateStatus)
@@ -90,7 +90,7 @@ class ProjectMeasuresQueryFactory {
       query.setLanguages(new HashSet<>(values));
       return;
     }
-    throw new IllegalArgumentException("Language should be set either by using 'language = java' or 'language IN (java, js)'");
+    throw new IllegalArgumentException("Languages should be set either by using 'languages = java' or 'languages IN (java, js)'");
   }
 
   private static void processTags(Criterion criterion, ProjectMeasuresQuery query) {
index 493060331d7669051f13a1fd409b2fbb308c1736..81e5aaf8a48faa100eca0b7b6bed80cbd1aa09da 100644 (file)
@@ -78,7 +78,7 @@ import static org.sonarqube.ws.client.component.ComponentsWsParameters.PARAM_FIL
 import static org.sonarqube.ws.client.component.ComponentsWsParameters.PARAM_ORGANIZATION;
 import static org.sonarqube.ws.client.component.SearchProjectsRequest.DEFAULT_PAGE_SIZE;
 import static org.sonarqube.ws.client.component.SearchProjectsRequest.MAX_PAGE_SIZE;
-import static org.sonarqube.ws.client.project.ProjectsWsParameters.FILTER_LANGUAGE;
+import static org.sonarqube.ws.client.project.ProjectsWsParameters.FILTER_LANGUAGES;
 
 public class SearchProjectsAction implements ComponentsWsAction {
 
@@ -105,7 +105,7 @@ public class SearchProjectsAction implements ComponentsWsAction {
       .addPagingParams(DEFAULT_PAGE_SIZE, MAX_PAGE_SIZE)
       .setInternal(true)
       .setResponseExample(getClass().getResource("search_projects-example.json"))
-      .setChangelog(new Change("6.4", format("The '%s' parameter accepts '%s' to filter by language", FILTER_LANGUAGE, PARAM_FILTER)))
+      .setChangelog(new Change("6.4", format("The '%s' parameter accepts '%s' to filter by language", FILTER_LANGUAGES, PARAM_FILTER)))
       .setHandler(this);
 
     action.createFieldsParam(POSSIBLE_FIELDS)
index 8cc01948f1812c6d08ab1b5e1dcb0ec6c8c56ed2..83453f263389762c6703975a9bf8f2ed3fa7bff2 100644 (file)
@@ -81,7 +81,7 @@ import static org.sonar.server.measure.index.ProjectMeasuresIndexDefinition.FIEL
 import static org.sonar.server.measure.index.ProjectMeasuresIndexDefinition.FIELD_TAGS;
 import static org.sonar.server.measure.index.ProjectMeasuresIndexDefinition.INDEX_TYPE_PROJECT_MEASURES;
 import static org.sonar.server.measure.index.ProjectMeasuresQuery.SORT_BY_NAME;
-import static org.sonarqube.ws.client.project.ProjectsWsParameters.FILTER_LANGUAGE;
+import static org.sonarqube.ws.client.project.ProjectsWsParameters.FILTER_LANGUAGES;
 
 public class ProjectMeasuresIndex extends BaseIndex {
 
@@ -93,7 +93,7 @@ public class ProjectMeasuresIndex extends BaseIndex {
     RELIABILITY_RATING_KEY,
     SECURITY_RATING_KEY,
     ALERT_STATUS_KEY,
-    FILTER_LANGUAGE,
+    FILTER_LANGUAGES,
     FIELD_TAGS);
 
   private static final String FIELD_MEASURES_KEY = FIELD_MEASURES + "." + ProjectMeasuresIndexDefinition.FIELD_MEASURES_KEY;
@@ -107,7 +107,7 @@ public class ProjectMeasuresIndex extends BaseIndex {
     .put(RELIABILITY_RATING_KEY, (esSearch, filters) -> addRatingFacet(esSearch, RELIABILITY_RATING_KEY, filters))
     .put(SECURITY_RATING_KEY, (esSearch, filters) -> addRatingFacet(esSearch, SECURITY_RATING_KEY, filters))
     .put(ALERT_STATUS_KEY, (esSearch, filters) -> esSearch.addAggregation(createStickyFacet(ALERT_STATUS_KEY, filters, createQualityGateFacet())))
-    .put(FILTER_LANGUAGE, (esSearch, filters) -> esSearch.addAggregation(createStickyFacet(FILTER_LANGUAGE, filters, createLanguagesFacet())))
+    .put(FILTER_LANGUAGES, (esSearch, filters) -> esSearch.addAggregation(createStickyFacet(FILTER_LANGUAGES, filters, createLanguagesFacet())))
     .put(FIELD_TAGS, (esSearch, filters) -> esSearch.addAggregation(createStickyFacet(FIELD_TAGS, filters, createTagsFacet())))
     .build();
 
@@ -228,7 +228,7 @@ public class ProjectMeasuresIndex extends BaseIndex {
   }
 
   private static AbstractAggregationBuilder createLanguagesFacet() {
-    return AggregationBuilders.terms(FILTER_LANGUAGE).field(FIELD_LANGUAGES);
+    return AggregationBuilders.terms(FILTER_LANGUAGES).field(FIELD_LANGUAGES);
   }
 
   private static AbstractAggregationBuilder createTagsFacet() {
@@ -258,7 +258,7 @@ public class ProjectMeasuresIndex extends BaseIndex {
       .ifPresent(projectUuids -> filters.put("ids", termsQuery("_id", projectUuids)));
 
     query.getLanguages()
-      .ifPresent(languages -> filters.put(FILTER_LANGUAGE, termsQuery(FIELD_LANGUAGES, languages)));
+      .ifPresent(languages -> filters.put(FILTER_LANGUAGES, termsQuery(FIELD_LANGUAGES, languages)));
 
     query.getOrganizationUuid()
       .ifPresent(organizationUuid -> filters.put(FIELD_ORGANIZATION_UUID, termQuery(FIELD_ORGANIZATION_UUID, organizationUuid)));
index 46ec80c2d7d4b572d17517fb84332fefeadc3522..57d3d985c05caba40d6b3f30a25d3a2e3bbf4cd0 100644 (file)
@@ -120,7 +120,7 @@ public class ProjectMeasuresQueryFactoryTest {
   @Test
   public void create_query_on_language_using_in_operator() throws Exception {
     ProjectMeasuresQuery query = newProjectMeasuresQuery(
-      singletonList(Criterion.builder().setKey("language").setOperator(IN).setValues(asList("java", "js")).build()),
+      singletonList(Criterion.builder().setKey("languages").setOperator(IN).setValues(asList("java", "js")).build()),
       emptySet());
 
     assertThat(query.getLanguages().get()).containsOnly("java", "js");
@@ -129,7 +129,7 @@ public class ProjectMeasuresQueryFactoryTest {
   @Test
   public void create_query_on_language_using_equals_operator() throws Exception {
     ProjectMeasuresQuery query = newProjectMeasuresQuery(
-      singletonList(Criterion.builder().setKey("language").setOperator(EQ).setValue("java").build()),
+      singletonList(Criterion.builder().setKey("languages").setOperator(EQ).setValue("java").build()),
       emptySet());
 
     assertThat(query.getLanguages().get()).containsOnly("java");
@@ -138,20 +138,19 @@ public class ProjectMeasuresQueryFactoryTest {
   @Test
   public void fail_to_create_query_on_language_using_in_operator_and_value() throws Exception {
     expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("Language should be set either by using 'language = java' or 'language IN (java, js)");
+    expectedException.expectMessage("Languages should be set either by using 'languages = java' or 'languages IN (java, js)");
 
-    newProjectMeasuresQuery(singletonList(Criterion.builder().setKey("language").setOperator(IN).setValue("java").build()), emptySet());
+    newProjectMeasuresQuery(singletonList(Criterion.builder().setKey("languages").setOperator(IN).setValue("java").build()), emptySet());
   }
 
   @Test
   public void fail_to_create_query_on_language_using_eq_operator_and_values() throws Exception {
     expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("Language should be set either by using 'language = java' or 'language IN (java, js)");
+    expectedException.expectMessage("Languages should be set either by using 'languages = java' or 'languages IN (java, js)");
 
-    newProjectMeasuresQuery(singletonList(Criterion.builder().setKey("language").setOperator(EQ).setValues(asList("java")).build()), emptySet());
+    newProjectMeasuresQuery(singletonList(Criterion.builder().setKey("languages").setOperator(EQ).setValues(asList("java")).build()), emptySet());
   }
 
-
   @Test
   public void create_query_on_tag_using_in_operator() throws Exception {
     ProjectMeasuresQuery query = newProjectMeasuresQuery(
index 034c9e97bdf9061147889d2c74ceac0ce0bbab75..a6496d4f25d626a29f7f66c3607a078e7944739d 100644 (file)
@@ -91,7 +91,7 @@ import static org.sonar.server.measure.index.ProjectMeasuresIndexDefinition.INDE
 import static org.sonar.test.JsonAssert.assertJson;
 import static org.sonarqube.ws.client.component.ComponentsWsParameters.PARAM_FILTER;
 import static org.sonarqube.ws.client.component.ComponentsWsParameters.PARAM_ORGANIZATION;
-import static org.sonarqube.ws.client.project.ProjectsWsParameters.FILTER_LANGUAGE;
+import static org.sonarqube.ws.client.project.ProjectsWsParameters.FILTER_LANGUAGES;
 
 public class SearchProjectsActionTest {
 
@@ -150,6 +150,11 @@ public class SearchProjectsActionTest {
     Param additionalFields = def.param("f");
     assertThat(additionalFields.defaultValue()).isNull();
     assertThat(additionalFields.possibleValues()).containsOnly("analysisDate");
+
+    Param facets = def.param("facets");
+    assertThat(facets.defaultValue()).isNull();
+    assertThat(facets.possibleValues()).containsOnly("ncloc", "duplicated_lines_density", "coverage", "sqale_rating", "reliability_rating", "security_rating", "alert_status",
+      "languages", "tags");
   }
 
   @Test
@@ -284,11 +289,11 @@ public class SearchProjectsActionTest {
   public void filter_projects_by_languages() {
     OrganizationDto organizationDto = db.organizations().insertForKey("my-org-key-1");
     insertProjectInDbAndEs(newProjectDto(organizationDto).setName("Sonar Java"), newArrayList(newMeasure(COVERAGE, 81d)), null, asList("<null>", "java", "xoo"));
-    insertProjectInDbAndEs(newProjectDto(organizationDto).setName("Sonar Groovy"), newArrayList(newMeasure(COVERAGE, 81)), null,asList("java", "xoo"));
+    insertProjectInDbAndEs(newProjectDto(organizationDto).setName("Sonar Groovy"), newArrayList(newMeasure(COVERAGE, 81)), null, asList("java", "xoo"));
     insertProjectInDbAndEs(newProjectDto(organizationDto).setName("Sonar Markdown"), newArrayList(newMeasure(COVERAGE, 80d)), null, asList("xoo"));
     insertProjectInDbAndEs(newProjectDto(organizationDto).setName("Sonar Qube"), newArrayList(newMeasure(COVERAGE, 80d)), null, asList("<null>", "java", "xoo"));
     insertMetrics(COVERAGE, NCLOC_LANGUAGE_DISTRIBUTION_KEY);
-    request.setFilter("language IN (java, js, <null>)");
+    request.setFilter("languages IN (java, js, <null>)");
 
     SearchProjectsWsResponse result = call(request);
 
@@ -465,12 +470,12 @@ public class SearchProjectsActionTest {
     insertProjectInDbAndEs(newProjectDto(organization).setName("Sonar Qube"), newArrayList(newMeasure(COVERAGE, 80d)), null, asList("<null>", "java", "xoo"));
     insertMetrics(COVERAGE, NCLOC_LANGUAGE_DISTRIBUTION_KEY);
 
-    SearchProjectsWsResponse result = call(request.setFacets(singletonList(FILTER_LANGUAGE)));
+    SearchProjectsWsResponse result = call(request.setFacets(singletonList(FILTER_LANGUAGES)));
 
     Common.Facet facet = result.getFacets().getFacetsList().stream()
-      .filter(oneFacet -> FILTER_LANGUAGE.equals(oneFacet.getProperty()))
+      .filter(oneFacet -> FILTER_LANGUAGES.equals(oneFacet.getProperty()))
       .findFirst().orElseThrow(IllegalStateException::new);
-    assertThat(facet.getProperty()).isEqualTo(FILTER_LANGUAGE);
+    assertThat(facet.getProperty()).isEqualTo(FILTER_LANGUAGES);
     assertThat(facet.getValuesList())
       .extracting(Common.FacetValue::getVal, Common.FacetValue::getCount)
       .containsExactly(
index bbee61446f214f1040ebfe51e5f3623f2d70356e..df5e1fd36c56f8a7a070acedc89bb0d3605bb8de 100644 (file)
@@ -72,7 +72,7 @@ public class ProjectMeasuresIndexTest {
   private static final String COVERAGE = "coverage";
   private static final String DUPLICATION = "duplicated_lines_density";
   private static final String NCLOC = "ncloc";
-  private static final String LANGUAGE = "language";
+  private static final String LANGUAGES = "languages";
 
   private static final OrganizationDto ORG = OrganizationTesting.newOrganizationDto();
   private static final ComponentDto PROJECT1 = newProjectDto(ORG).setUuid("Project-1").setName("Project 1").setKey("key-1");
@@ -993,7 +993,7 @@ public class ProjectMeasuresIndexTest {
   }
 
   @Test
-  public void facet_language() {
+  public void facet_languages() {
     index(
       newDoc().setLanguages(singletonList("java")),
       newDoc().setLanguages(singletonList("java")),
@@ -1002,9 +1002,9 @@ public class ProjectMeasuresIndexTest {
       newDoc().setLanguages(asList("<null>", "java")),
       newDoc().setLanguages(asList("<null>", "java", "xoo")));
 
-    Facets facets = underTest.search(new ProjectMeasuresQuery(), new SearchOptions().addFacets(LANGUAGE)).getFacets();
+    Facets facets = underTest.search(new ProjectMeasuresQuery(), new SearchOptions().addFacets(LANGUAGES)).getFacets();
 
-    assertThat(facets.get(LANGUAGE)).containsOnly(
+    assertThat(facets.get(LANGUAGES)).containsOnly(
       entry("<null>", 2L),
       entry("java", 4L),
       entry("xoo", 2L),
@@ -1012,19 +1012,19 @@ public class ProjectMeasuresIndexTest {
   }
 
   @Test
-  public void facet_language_is_limited_to_10_languages() {
+  public void facet_languages_is_limited_to_10_languages() {
     index(
       newDoc().setLanguages(asList("<null>", "java", "xoo", "css", "cpp")),
       newDoc().setLanguages(asList("xml", "php", "python", "perl", "ruby")),
       newDoc().setLanguages(asList("js", "scala")));
 
-    Facets facets = underTest.search(new ProjectMeasuresQuery(), new SearchOptions().addFacets(LANGUAGE)).getFacets();
+    Facets facets = underTest.search(new ProjectMeasuresQuery(), new SearchOptions().addFacets(LANGUAGES)).getFacets();
 
-    assertThat(facets.get(LANGUAGE)).hasSize(10);
+    assertThat(facets.get(LANGUAGES)).hasSize(10);
   }
 
   @Test
-  public void facet_language_is_sticky() {
+  public void facet_languages_is_sticky() {
     index(
       newDoc(NCLOC, 10d).setLanguages(singletonList("java")),
       newDoc(NCLOC, 10d).setLanguages(singletonList("java")),
@@ -1035,10 +1035,10 @@ public class ProjectMeasuresIndexTest {
 
     Facets facets = underTest.search(
       new ProjectMeasuresQuery().setLanguages(ImmutableSet.of("java")),
-      new SearchOptions().addFacets(LANGUAGE, NCLOC)).getFacets();
+      new SearchOptions().addFacets(LANGUAGES, NCLOC)).getFacets();
 
     // Sticky facet on language does not take into account language filter
-    assertThat(facets.get(LANGUAGE)).containsOnly(
+    assertThat(facets.get(LANGUAGES)).containsOnly(
       entry("<null>", 2L),
       entry("java", 4L),
       entry("xoo", 2L),
@@ -1065,7 +1065,7 @@ public class ProjectMeasuresIndexTest {
       newDoc().setLanguages(asList("java", "xoo")));
 
     userSession.logIn(USER1);
-    LinkedHashMap<String, Long> result = underTest.search(new ProjectMeasuresQuery(), new SearchOptions().addFacets(LANGUAGE)).getFacets().get(LANGUAGE);
+    LinkedHashMap<String, Long> result = underTest.search(new ProjectMeasuresQuery(), new SearchOptions().addFacets(LANGUAGES)).getFacets().get(LANGUAGES);
 
     assertThat(result).containsOnly(
       entry("java", 2L),
index b04a4f39f6ce240bc41b56d5b1bbf3e8ea5cd25f..618a4dfc683b33a3c2f42b00bf74a6a6cdea8a1d 100644 (file)
@@ -41,8 +41,7 @@ public class ProjectsWsParameters {
   public static final String PARAM_TO = "to";
   public static final String PARAM_DRY_RUN = "dryRun";
 
-
-  public static final String FILTER_LANGUAGE = "language";
+  public static final String FILTER_LANGUAGES = "languages";
 
   private ProjectsWsParameters() {
     // static utils only