From c1f0d8fa79c032c779b7f6f1009fae12ea93a130 Mon Sep 17 00:00:00 2001 From: Teryk Bellahsene Date: Wed, 30 Sep 2015 10:30:33 +0200 Subject: [PATCH] SONAR-6857 Rename WS components/search -> components/search_view_components --- .../server/component/ws/ComponentsWs.java | 13 +- .../component/ws/ComponentsWsAction.java | 27 ++++ .../server/component/ws/SearchAction.java | 116 ++------------- .../ws/SearchViewComponentsAction.java | 140 ++++++++++++++++++ .../platformlevel/PlatformLevel4.java | 3 +- .../server/component/ws/AppActionTest.java | 2 +- .../server/component/ws/ComponentsWsTest.java | 6 +- ...va => SearchViewComponentsActionTest.java} | 43 +++--- ...rn_only_authorized_projects_from_view.json | 0 ...urn_only_authorized_projects_from_view.xml | 0 .../return_only_first_page.json | 0 .../return_paged_result.json | 0 .../return_projects_from_subview.json | 0 .../return_projects_from_view.json | 0 .../shared.xml | 0 .../org/sonar/db/component/ResourceMapper.xml | 3 +- 16 files changed, 217 insertions(+), 136 deletions(-) create mode 100644 server/sonar-server/src/main/java/org/sonar/server/component/ws/ComponentsWsAction.java create mode 100644 server/sonar-server/src/main/java/org/sonar/server/component/ws/SearchViewComponentsAction.java rename server/sonar-server/src/test/java/org/sonar/server/component/ws/{SearchActionTest.java => SearchViewComponentsActionTest.java} (67%) rename server/sonar-server/src/test/resources/org/sonar/server/component/ws/{SearchActionTest => SearchViewComponentsActionTest}/return_only_authorized_projects_from_view.json (100%) rename server/sonar-server/src/test/resources/org/sonar/server/component/ws/{SearchActionTest => SearchViewComponentsActionTest}/return_only_authorized_projects_from_view.xml (100%) rename server/sonar-server/src/test/resources/org/sonar/server/component/ws/{SearchActionTest => SearchViewComponentsActionTest}/return_only_first_page.json (100%) rename server/sonar-server/src/test/resources/org/sonar/server/component/ws/{SearchActionTest => SearchViewComponentsActionTest}/return_paged_result.json (100%) rename server/sonar-server/src/test/resources/org/sonar/server/component/ws/{SearchActionTest => SearchViewComponentsActionTest}/return_projects_from_subview.json (100%) rename server/sonar-server/src/test/resources/org/sonar/server/component/ws/{SearchActionTest => SearchViewComponentsActionTest}/return_projects_from_view.json (100%) rename server/sonar-server/src/test/resources/org/sonar/server/component/ws/{SearchActionTest => SearchViewComponentsActionTest}/shared.xml (100%) diff --git a/server/sonar-server/src/main/java/org/sonar/server/component/ws/ComponentsWs.java b/server/sonar-server/src/main/java/org/sonar/server/component/ws/ComponentsWs.java index aba52c5b1bb..f4c83e3b18c 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/component/ws/ComponentsWs.java +++ b/server/sonar-server/src/main/java/org/sonar/server/component/ws/ComponentsWs.java @@ -27,11 +27,13 @@ import org.sonar.api.server.ws.WebService; public class ComponentsWs implements WebService { private final AppAction appAction; - private final SearchAction searchAction; + private final SearchViewComponentsAction searchViewComponentsAction; + private final ComponentsWsAction[] actions; - public ComponentsWs(AppAction appAction, SearchAction searchAction) { + public ComponentsWs(AppAction appAction, SearchViewComponentsAction searchViewComponentsAction, ComponentsWsAction... actions) { this.appAction = appAction; - this.searchAction = searchAction; + this.searchViewComponentsAction = searchViewComponentsAction; + this.actions = actions; } @Override @@ -40,8 +42,11 @@ public class ComponentsWs implements WebService { .setSince("4.2") .setDescription("Components management"); + for (ComponentsWsAction action : actions) { + action.define(controller); + } appAction.define(controller); - searchAction.define(controller); + searchViewComponentsAction.define(controller); defineSuggestionsAction(controller); controller.done(); diff --git a/server/sonar-server/src/main/java/org/sonar/server/component/ws/ComponentsWsAction.java b/server/sonar-server/src/main/java/org/sonar/server/component/ws/ComponentsWsAction.java new file mode 100644 index 00000000000..58266ab5c88 --- /dev/null +++ b/server/sonar-server/src/main/java/org/sonar/server/component/ws/ComponentsWsAction.java @@ -0,0 +1,27 @@ +/* + * 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.component.ws; + +import org.sonar.server.ws.WsAction; + +public interface ComponentsWsAction extends WsAction { + // marker interface +} diff --git a/server/sonar-server/src/main/java/org/sonar/server/component/ws/SearchAction.java b/server/sonar-server/src/main/java/org/sonar/server/component/ws/SearchAction.java index cc01d7470b6..36bb8722669 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/component/ws/SearchAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/component/ws/SearchAction.java @@ -20,120 +20,24 @@ package org.sonar.server.component.ws; -import com.google.common.collect.Sets; -import java.util.Collection; -import java.util.List; -import java.util.Set; import org.sonar.api.server.ws.Request; -import org.sonar.api.server.ws.RequestHandler; import org.sonar.api.server.ws.Response; import org.sonar.api.server.ws.WebService; -import org.sonar.api.server.ws.WebService.Param; -import org.sonar.api.utils.text.JsonWriter; -import org.sonar.api.web.UserRole; -import org.sonar.db.DbClient; -import org.sonar.db.DbSession; -import org.sonar.db.MyBatis; -import org.sonar.db.component.ComponentDto; -import org.sonar.server.component.ComponentFinder; -import org.sonar.server.es.SearchOptions; -import org.sonar.server.user.UserSession; -import static com.google.common.collect.Sets.newLinkedHashSet; -import static org.sonar.api.server.ws.WebService.Param.PAGE; -import static org.sonar.api.server.ws.WebService.Param.PAGE_SIZE; - -public class SearchAction implements RequestHandler { - - private static final short MINIMUM_SEARCH_CHARACTERS = 2; - - private static final String PARAM_COMPONENT_UUID = "componentUuid"; - - private final DbClient dbClient; - private final UserSession userSession; - private final ComponentFinder componentFinder; - - public SearchAction(DbClient dbClient, UserSession userSession, ComponentFinder componentFinder) { - this.dbClient = dbClient; - this.userSession = userSession; - this.componentFinder = componentFinder; - } - - void define(WebService.NewController controller) { - WebService.NewAction action = controller.createAction("search") - .setDescription("Search for components. Currently limited to projects in a view or a sub-view") - .setSince("5.1") - .setInternal(true) +public class SearchAction implements ComponentsWsAction { + @Override + public void define(WebService.NewController context) { + WebService.NewAction action = context.createAction("search") + .setSince("5.2") + .setDescription("Search for components") + .addPagingParams(100) + .addSearchQuery("sona", "project names") + .setResponseExample(getClass().getResource("search-example.json")) .setHandler(this); - - action - .createParam(PARAM_COMPONENT_UUID) - .setRequired(true) - .setDescription("View or sub view UUID") - .setExampleValue("d6d9e1e5-5e13-44fa-ab82-3ec29efa8935"); - - action - .createParam(Param.TEXT_QUERY) - .setRequired(true) - .setDescription("UTF-8 search query") - .setExampleValue("sonar"); - - action.addPagingParams(10); } @Override - public void handle(Request request, Response response) { - String query = request.mandatoryParam(Param.TEXT_QUERY); - if (query.length() < MINIMUM_SEARCH_CHARACTERS) { - throw new IllegalArgumentException(String.format("Minimum search is %s characters", MINIMUM_SEARCH_CHARACTERS)); - } - String componentUuid = request.mandatoryParam(PARAM_COMPONENT_UUID); - - JsonWriter json = response.newJsonWriter(); - json.beginObject(); - - DbSession session = dbClient.openSession(false); - try { - ComponentDto componentDto = componentFinder.getByUuid(session, componentUuid); - userSession.checkProjectUuidPermission(UserRole.USER, componentDto.projectUuid()); - - Set projectIds = newLinkedHashSet(dbClient.componentIndexDao().selectProjectIdsFromQueryAndViewOrSubViewUuid(session, query, componentDto.uuid())); - Collection authorizedProjectIds = dbClient.authorizationDao().keepAuthorizedProjectIds(session, projectIds, userSession.getUserId(), UserRole.USER); - - SearchOptions options = new SearchOptions(); - options.setPage(request.mandatoryParamAsInt(PAGE), request.mandatoryParamAsInt(PAGE_SIZE)); - Set pagedProjectIds = pagedProjectIds(authorizedProjectIds, options); - - List projects = dbClient.componentDao().selectByIds(session, pagedProjectIds); - - options.writeJson(json, authorizedProjectIds.size()); - json.name("components").beginArray(); - for (ComponentDto project : projects) { - json.beginObject(); - json.prop("uuid", project.uuid()); - json.prop("name", project.name()); - json.endObject(); - } - json.endArray(); - } finally { - MyBatis.closeQuietly(session); - } - - json.endObject(); - json.close(); - } + public void handle(Request wsRequest, Response wsResponse) throws Exception { - private static Set pagedProjectIds(Collection projectIds, SearchOptions options) { - Set results = Sets.newLinkedHashSet(); - int index = 0; - for (Long projectId : projectIds) { - if (index >= options.getOffset() && results.size() < options.getLimit()) { - results.add(projectId); - } else if (results.size() >= options.getLimit()) { - break; - } - index++; - } - return results; } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/component/ws/SearchViewComponentsAction.java b/server/sonar-server/src/main/java/org/sonar/server/component/ws/SearchViewComponentsAction.java new file mode 100644 index 00000000000..7474b2bf9e6 --- /dev/null +++ b/server/sonar-server/src/main/java/org/sonar/server/component/ws/SearchViewComponentsAction.java @@ -0,0 +1,140 @@ +/* + * 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.component.ws; + +import com.google.common.collect.Sets; +import java.util.Collection; +import java.util.List; +import java.util.Set; +import org.sonar.api.server.ws.Request; +import org.sonar.api.server.ws.RequestHandler; +import org.sonar.api.server.ws.Response; +import org.sonar.api.server.ws.WebService; +import org.sonar.api.server.ws.WebService.Param; +import org.sonar.api.utils.text.JsonWriter; +import org.sonar.api.web.UserRole; +import org.sonar.core.util.Uuids; +import org.sonar.db.DbClient; +import org.sonar.db.DbSession; +import org.sonar.db.MyBatis; +import org.sonar.db.component.ComponentDto; +import org.sonar.server.component.ComponentFinder; +import org.sonar.server.es.SearchOptions; +import org.sonar.server.user.UserSession; + +import static com.google.common.collect.Sets.newLinkedHashSet; +import static org.sonar.api.server.ws.WebService.Param.PAGE; +import static org.sonar.api.server.ws.WebService.Param.PAGE_SIZE; + +public class SearchViewComponentsAction implements RequestHandler { + + private static final short MINIMUM_SEARCH_CHARACTERS = 2; + + private static final String PARAM_COMPONENT_UUID = "componentId"; + + private final DbClient dbClient; + private final UserSession userSession; + private final ComponentFinder componentFinder; + + public SearchViewComponentsAction(DbClient dbClient, UserSession userSession, ComponentFinder componentFinder) { + this.dbClient = dbClient; + this.userSession = userSession; + this.componentFinder = componentFinder; + } + + void define(WebService.NewController controller) { + WebService.NewAction action = controller.createAction("search_view_components") + .setDescription("Search for components. Currently limited to projects in a view or a sub-view") + .setSince("5.1") + .setInternal(true) + .setHandler(this); + + action + .createParam(PARAM_COMPONENT_UUID) + .setRequired(true) + .setDescription("View or sub view UUID") + .setExampleValue(Uuids.UUID_EXAMPLE_01); + + action + .createParam(Param.TEXT_QUERY) + .setRequired(true) + .setDescription("UTF-8 search query") + .setExampleValue("sonar"); + + action.addPagingParams(10); + } + + @Override + public void handle(Request request, Response response) { + String query = request.mandatoryParam(Param.TEXT_QUERY); + if (query.length() < MINIMUM_SEARCH_CHARACTERS) { + throw new IllegalArgumentException(String.format("Minimum search is %s characters", MINIMUM_SEARCH_CHARACTERS)); + } + String componentUuid = request.mandatoryParam(PARAM_COMPONENT_UUID); + + JsonWriter json = response.newJsonWriter(); + json.beginObject(); + + DbSession session = dbClient.openSession(false); + try { + ComponentDto componentDto = componentFinder.getByUuid(session, componentUuid); + userSession.checkProjectUuidPermission(UserRole.USER, componentDto.projectUuid()); + + Set projectIds = newLinkedHashSet(dbClient.componentIndexDao().selectProjectIdsFromQueryAndViewOrSubViewUuid(session, query, componentDto.uuid())); + Collection authorizedProjectIds = dbClient.authorizationDao().keepAuthorizedProjectIds(session, projectIds, userSession.getUserId(), UserRole.USER); + + SearchOptions options = new SearchOptions(); + options.setPage(request.mandatoryParamAsInt(PAGE), request.mandatoryParamAsInt(PAGE_SIZE)); + Set pagedProjectIds = pagedProjectIds(authorizedProjectIds, options); + + List projects = dbClient.componentDao().selectByIds(session, pagedProjectIds); + + options.writeJson(json, authorizedProjectIds.size()); + json.name("components").beginArray(); + for (ComponentDto project : projects) { + json.beginObject(); + json.prop("uuid", project.uuid()); + json.prop("name", project.name()); + json.endObject(); + } + json.endArray(); + } finally { + MyBatis.closeQuietly(session); + } + + json.endObject(); + json.close(); + } + + private static Set pagedProjectIds(Collection projectIds, SearchOptions options) { + Set results = Sets.newLinkedHashSet(); + int index = 0; + for (Long projectId : projectIds) { + if (index >= options.getOffset() && results.size() < options.getLimit()) { + results.add(projectId); + } else if (results.size() >= options.getLimit()) { + break; + } + index++; + } + return results; + } +} diff --git a/server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel4.java b/server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel4.java index f21981e8380..e0b8f64d16e 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel4.java +++ b/server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel4.java @@ -61,6 +61,7 @@ import org.sonar.server.component.DefaultRubyComponentService; import org.sonar.server.component.ws.ComponentsWs; import org.sonar.server.component.ws.EventsWs; import org.sonar.server.component.ws.ResourcesWs; +import org.sonar.server.component.ws.SearchViewComponentsAction; import org.sonar.server.computation.CeModule; import org.sonar.server.computation.container.ReportProcessingModule; import org.sonar.server.computation.queue.CeQueueModule; @@ -560,7 +561,7 @@ public class PlatformLevel4 extends PlatformLevel { ResourcesWs.class, ComponentsWs.class, org.sonar.server.component.ws.AppAction.class, - org.sonar.server.component.ws.SearchAction.class, + SearchViewComponentsAction.class, EventsWs.class, NewAlerts.class, NewAlerts.newMetadata(), diff --git a/server/sonar-server/src/test/java/org/sonar/server/component/ws/AppActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/component/ws/AppActionTest.java index aead84b80bc..376305e19c2 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/component/ws/AppActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/component/ws/AppActionTest.java @@ -108,7 +108,7 @@ public class AppActionTest { when(measureDao.selectByComponentKeyAndMetricKeys(eq(session), anyString(), anyListOf(String.class))).thenReturn(measures); - tester = new WsTester(new ComponentsWs(new AppAction(dbClient, durations, i18n, userSessionRule, new ComponentFinder(dbClient)), mock(SearchAction.class))); + tester = new WsTester(new ComponentsWs(new AppAction(dbClient, durations, i18n, userSessionRule, new ComponentFinder(dbClient)), mock(SearchViewComponentsAction.class))); } @Test diff --git a/server/sonar-server/src/test/java/org/sonar/server/component/ws/ComponentsWsTest.java b/server/sonar-server/src/test/java/org/sonar/server/component/ws/ComponentsWsTest.java index 0f1ef335c94..0159481fafb 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/component/ws/ComponentsWsTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/component/ws/ComponentsWsTest.java @@ -45,8 +45,8 @@ public class ComponentsWsTest { public void setUp() { WsTester tester = new WsTester(new ComponentsWs( new AppAction(mock(DbClient.class), mock(Durations.class), mock(I18n.class), userSessionRule, mock(ComponentFinder.class)), - new SearchAction(mock(DbClient.class), userSessionRule, mock(ComponentFinder.class))) - ); + new SearchViewComponentsAction(mock(DbClient.class), userSessionRule, mock(ComponentFinder.class))) + ); controller = tester.controller("api/components"); } @@ -81,7 +81,7 @@ public class ComponentsWsTest { @Test public void define_search_action() { - WebService.Action action = controller.action("search"); + WebService.Action action = controller.action("search_view_components"); assertThat(action).isNotNull(); assertThat(action.isInternal()).isTrue(); assertThat(action.isPost()).isFalse(); diff --git a/server/sonar-server/src/test/java/org/sonar/server/component/ws/SearchActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/component/ws/SearchViewComponentsActionTest.java similarity index 67% rename from server/sonar-server/src/test/java/org/sonar/server/component/ws/SearchActionTest.java rename to server/sonar-server/src/test/java/org/sonar/server/component/ws/SearchViewComponentsActionTest.java index a5d67302d32..1ad3bad1c4c 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/component/ws/SearchActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/component/ws/SearchViewComponentsActionTest.java @@ -38,68 +38,68 @@ import org.sonar.test.DbTests; import static org.mockito.Mockito.mock; @Category(DbTests.class) -public class SearchActionTest { +public class SearchViewComponentsActionTest { @Rule public ExpectedException thrown = ExpectedException.none(); @Rule - public DbTester dbTester = DbTester.create(System2.INSTANCE); + public DbTester db = DbTester.create(System2.INSTANCE); @Rule public UserSessionRule userSessionRule = UserSessionRule.standalone(); - WsTester tester; + WsTester ws; @Before public void setUp() { - dbTester.truncateTables(); - tester = new WsTester(new ComponentsWs(mock(AppAction.class), new SearchAction(dbTester.getDbClient(), userSessionRule, new ComponentFinder(dbTester.getDbClient())))); + db.truncateTables(); + ws = new WsTester(new ComponentsWs(mock(AppAction.class), new SearchViewComponentsAction(db.getDbClient(), userSessionRule, new ComponentFinder(db.getDbClient())))); } @Test public void return_projects_from_view() throws Exception { - dbTester.prepareDbUnit(getClass(), "shared.xml"); + db.prepareDbUnit(getClass(), "shared.xml"); userSessionRule.login("john").addProjectUuidPermissions(UserRole.USER, "EFGH"); - WsTester.TestRequest request = tester.newGetRequest("api/components", "search").setParam("componentUuid", "EFGH").setParam("q", "st"); + WsTester.TestRequest request = newRequest().setParam("componentId", "EFGH").setParam("q", "st"); request.execute().assertJson(getClass(), "return_projects_from_view.json"); } @Test public void return_projects_from_subview() throws Exception { - dbTester.prepareDbUnit(getClass(), "shared.xml"); + db.prepareDbUnit(getClass(), "shared.xml"); userSessionRule.login("john").addComponentUuidPermission(UserRole.USER, "EFGH", "FGHI"); - WsTester.TestRequest request = tester.newGetRequest("api/components", "search").setParam("componentUuid", "FGHI").setParam("q", "st"); + WsTester.TestRequest request = newRequest().setParam("componentId", "FGHI").setParam("q", "st"); request.execute().assertJson(getClass(), "return_projects_from_subview.json"); } @Test public void return_only_authorized_projects_from_view() throws Exception { - dbTester.prepareDbUnit(getClass(), "return_only_authorized_projects_from_view.xml"); + db.prepareDbUnit(getClass(), "return_only_authorized_projects_from_view.xml"); userSessionRule.login("john").addProjectUuidPermissions(UserRole.USER, "EFGH"); - WsTester.TestRequest request = tester.newGetRequest("api/components", "search").setParam("componentUuid", "EFGH").setParam("q", "st"); + WsTester.TestRequest request = newRequest().setParam("componentId", "EFGH").setParam("q", "st"); request.execute().assertJson(getClass(), "return_only_authorized_projects_from_view.json"); } @Test public void return_paged_result() throws Exception { - dbTester.prepareDbUnit(getClass(), "shared.xml"); + db.prepareDbUnit(getClass(), "shared.xml"); userSessionRule.login("john").addProjectUuidPermissions(UserRole.USER, "EFGH"); - WsTester.TestRequest request = tester.newGetRequest("api/components", "search").setParam("componentUuid", "EFGH").setParam("q", "st").setParam(Param.PAGE, "2") + WsTester.TestRequest request = newRequest().setParam("componentId", "EFGH").setParam("q", "st").setParam(Param.PAGE, "2") .setParam(Param.PAGE_SIZE, "1"); request.execute().assertJson(getClass(), "return_paged_result.json"); } @Test public void return_only_first_page() throws Exception { - dbTester.prepareDbUnit(getClass(), "shared.xml"); + db.prepareDbUnit(getClass(), "shared.xml"); userSessionRule.login("john").addProjectUuidPermissions(UserRole.USER, "EFGH"); - WsTester.TestRequest request = tester.newGetRequest("api/components", "search").setParam("componentUuid", "EFGH").setParam("q", "st").setParam(Param.PAGE, "1") + WsTester.TestRequest request = newRequest().setParam("componentId", "EFGH").setParam("q", "st").setParam(Param.PAGE, "1") .setParam(Param.PAGE_SIZE, "1"); request.execute().assertJson(getClass(), "return_only_first_page.json"); } @@ -109,11 +109,10 @@ public class SearchActionTest { thrown.expect(IllegalArgumentException.class); thrown.expectMessage("Minimum search is 2 characters"); - - dbTester.prepareDbUnit(getClass(), "shared.xml"); + db.prepareDbUnit(getClass(), "shared.xml"); userSessionRule.login("john").addProjectUuidPermissions(UserRole.USER, "EFGH"); - WsTester.TestRequest request = tester.newGetRequest("api/components", "search").setParam("componentUuid", "EFGH").setParam("q", "s"); + WsTester.TestRequest request = newRequest().setParam("componentId", "EFGH").setParam("q", "s"); request.execute(); } @@ -122,10 +121,14 @@ public class SearchActionTest { thrown.expect(NotFoundException.class); thrown.expectMessage("Component id 'UNKNOWN' not found"); - dbTester.prepareDbUnit(getClass(), "shared.xml"); + db.prepareDbUnit(getClass(), "shared.xml"); userSessionRule.login("john").addProjectUuidPermissions(UserRole.USER, "EFGH"); - WsTester.TestRequest request = tester.newGetRequest("api/components", "search").setParam("componentUuid", "UNKNOWN").setParam("q", "st"); + WsTester.TestRequest request = newRequest().setParam("componentId", "UNKNOWN").setParam("q", "st"); request.execute(); } + + private WsTester.TestRequest newRequest() { + return ws.newGetRequest("api/components", "search_view_components"); + } } diff --git a/server/sonar-server/src/test/resources/org/sonar/server/component/ws/SearchActionTest/return_only_authorized_projects_from_view.json b/server/sonar-server/src/test/resources/org/sonar/server/component/ws/SearchViewComponentsActionTest/return_only_authorized_projects_from_view.json similarity index 100% rename from server/sonar-server/src/test/resources/org/sonar/server/component/ws/SearchActionTest/return_only_authorized_projects_from_view.json rename to server/sonar-server/src/test/resources/org/sonar/server/component/ws/SearchViewComponentsActionTest/return_only_authorized_projects_from_view.json diff --git a/server/sonar-server/src/test/resources/org/sonar/server/component/ws/SearchActionTest/return_only_authorized_projects_from_view.xml b/server/sonar-server/src/test/resources/org/sonar/server/component/ws/SearchViewComponentsActionTest/return_only_authorized_projects_from_view.xml similarity index 100% rename from server/sonar-server/src/test/resources/org/sonar/server/component/ws/SearchActionTest/return_only_authorized_projects_from_view.xml rename to server/sonar-server/src/test/resources/org/sonar/server/component/ws/SearchViewComponentsActionTest/return_only_authorized_projects_from_view.xml diff --git a/server/sonar-server/src/test/resources/org/sonar/server/component/ws/SearchActionTest/return_only_first_page.json b/server/sonar-server/src/test/resources/org/sonar/server/component/ws/SearchViewComponentsActionTest/return_only_first_page.json similarity index 100% rename from server/sonar-server/src/test/resources/org/sonar/server/component/ws/SearchActionTest/return_only_first_page.json rename to server/sonar-server/src/test/resources/org/sonar/server/component/ws/SearchViewComponentsActionTest/return_only_first_page.json diff --git a/server/sonar-server/src/test/resources/org/sonar/server/component/ws/SearchActionTest/return_paged_result.json b/server/sonar-server/src/test/resources/org/sonar/server/component/ws/SearchViewComponentsActionTest/return_paged_result.json similarity index 100% rename from server/sonar-server/src/test/resources/org/sonar/server/component/ws/SearchActionTest/return_paged_result.json rename to server/sonar-server/src/test/resources/org/sonar/server/component/ws/SearchViewComponentsActionTest/return_paged_result.json diff --git a/server/sonar-server/src/test/resources/org/sonar/server/component/ws/SearchActionTest/return_projects_from_subview.json b/server/sonar-server/src/test/resources/org/sonar/server/component/ws/SearchViewComponentsActionTest/return_projects_from_subview.json similarity index 100% rename from server/sonar-server/src/test/resources/org/sonar/server/component/ws/SearchActionTest/return_projects_from_subview.json rename to server/sonar-server/src/test/resources/org/sonar/server/component/ws/SearchViewComponentsActionTest/return_projects_from_subview.json diff --git a/server/sonar-server/src/test/resources/org/sonar/server/component/ws/SearchActionTest/return_projects_from_view.json b/server/sonar-server/src/test/resources/org/sonar/server/component/ws/SearchViewComponentsActionTest/return_projects_from_view.json similarity index 100% rename from server/sonar-server/src/test/resources/org/sonar/server/component/ws/SearchActionTest/return_projects_from_view.json rename to server/sonar-server/src/test/resources/org/sonar/server/component/ws/SearchViewComponentsActionTest/return_projects_from_view.json diff --git a/server/sonar-server/src/test/resources/org/sonar/server/component/ws/SearchActionTest/shared.xml b/server/sonar-server/src/test/resources/org/sonar/server/component/ws/SearchViewComponentsActionTest/shared.xml similarity index 100% rename from server/sonar-server/src/test/resources/org/sonar/server/component/ws/SearchActionTest/shared.xml rename to server/sonar-server/src/test/resources/org/sonar/server/component/ws/SearchViewComponentsActionTest/shared.xml diff --git a/sonar-db/src/main/resources/org/sonar/db/component/ResourceMapper.xml b/sonar-db/src/main/resources/org/sonar/db/component/ResourceMapper.xml index 39339fe5ec2..9c86d2c4e7f 100644 --- a/sonar-db/src/main/resources/org/sonar/db/component/ResourceMapper.xml +++ b/sonar-db/src/main/resources/org/sonar/db/component/ResourceMapper.xml @@ -64,7 +64,8 @@ and p.qualifier in - #{qualifier} + + #{qualifier} -- 2.39.5