From 3698a09035245126dfd7dfe8e721417ed308f957 Mon Sep 17 00:00:00 2001 From: Julien Lancelot Date: Mon, 6 Mar 2017 15:24:02 +0100 Subject: [PATCH] SONAR-8231 Rename facet and filter 'language' to 'languages' --- .../ws/ProjectMeasuresQueryFactory.java | 6 ++--- .../component/ws/SearchProjectsAction.java | 4 ++-- .../measure/index/ProjectMeasuresIndex.java | 10 ++++----- .../ws/ProjectMeasuresQueryFactoryTest.java | 13 +++++------ .../ws/SearchProjectsActionTest.java | 17 +++++++++----- .../index/ProjectMeasuresIndexTest.java | 22 +++++++++---------- .../client/project/ProjectsWsParameters.java | 3 +-- 7 files changed, 39 insertions(+), 36 deletions(-) diff --git a/server/sonar-server/src/main/java/org/sonar/server/component/ws/ProjectMeasuresQueryFactory.java b/server/sonar-server/src/main/java/org/sonar/server/component/ws/ProjectMeasuresQueryFactory.java index db2042e7621..8d7a742e329 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/component/ws/ProjectMeasuresQueryFactory.java +++ b/server/sonar-server/src/main/java/org/sonar/server/component/ws/ProjectMeasuresQueryFactory.java @@ -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> CRITERION_PROCESSORS = ImmutableMap.>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) { diff --git a/server/sonar-server/src/main/java/org/sonar/server/component/ws/SearchProjectsAction.java b/server/sonar-server/src/main/java/org/sonar/server/component/ws/SearchProjectsAction.java index 493060331d7..81e5aaf8a48 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/component/ws/SearchProjectsAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/component/ws/SearchProjectsAction.java @@ -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) diff --git a/server/sonar-server/src/main/java/org/sonar/server/measure/index/ProjectMeasuresIndex.java b/server/sonar-server/src/main/java/org/sonar/server/measure/index/ProjectMeasuresIndex.java index 8cc01948f18..83453f26338 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/measure/index/ProjectMeasuresIndex.java +++ b/server/sonar-server/src/main/java/org/sonar/server/measure/index/ProjectMeasuresIndex.java @@ -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))); diff --git a/server/sonar-server/src/test/java/org/sonar/server/component/ws/ProjectMeasuresQueryFactoryTest.java b/server/sonar-server/src/test/java/org/sonar/server/component/ws/ProjectMeasuresQueryFactoryTest.java index 46ec80c2d7d..57d3d985c05 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/component/ws/ProjectMeasuresQueryFactoryTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/component/ws/ProjectMeasuresQueryFactoryTest.java @@ -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( diff --git a/server/sonar-server/src/test/java/org/sonar/server/component/ws/SearchProjectsActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/component/ws/SearchProjectsActionTest.java index 034c9e97bdf..a6496d4f25d 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/component/ws/SearchProjectsActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/component/ws/SearchProjectsActionTest.java @@ -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("", "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("", "java", "xoo")); insertMetrics(COVERAGE, NCLOC_LANGUAGE_DISTRIBUTION_KEY); - request.setFilter("language IN (java, js, )"); + request.setFilter("languages IN (java, js, )"); SearchProjectsWsResponse result = call(request); @@ -465,12 +470,12 @@ public class SearchProjectsActionTest { insertProjectInDbAndEs(newProjectDto(organization).setName("Sonar Qube"), newArrayList(newMeasure(COVERAGE, 80d)), null, asList("", "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( diff --git a/server/sonar-server/src/test/java/org/sonar/server/measure/index/ProjectMeasuresIndexTest.java b/server/sonar-server/src/test/java/org/sonar/server/measure/index/ProjectMeasuresIndexTest.java index bbee61446f2..df5e1fd36c5 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/measure/index/ProjectMeasuresIndexTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/measure/index/ProjectMeasuresIndexTest.java @@ -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("", "java")), newDoc().setLanguages(asList("", "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("", 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("", "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("", 2L), entry("java", 4L), entry("xoo", 2L), @@ -1065,7 +1065,7 @@ public class ProjectMeasuresIndexTest { newDoc().setLanguages(asList("java", "xoo"))); userSession.logIn(USER1); - LinkedHashMap result = underTest.search(new ProjectMeasuresQuery(), new SearchOptions().addFacets(LANGUAGE)).getFacets().get(LANGUAGE); + LinkedHashMap result = underTest.search(new ProjectMeasuresQuery(), new SearchOptions().addFacets(LANGUAGES)).getFacets().get(LANGUAGES); assertThat(result).containsOnly( entry("java", 2L), diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/project/ProjectsWsParameters.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/project/ProjectsWsParameters.java index b04a4f39f6c..618a4dfc683 100644 --- a/sonar-ws/src/main/java/org/sonarqube/ws/client/project/ProjectsWsParameters.java +++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/project/ProjectsWsParameters.java @@ -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 -- 2.39.5