From d953ac33b97fcfb55042b3b812585cc95ee1759d Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Lievremont Date: Fri, 10 Apr 2015 11:36:26 +0200 Subject: [PATCH] SONAR-6405 Introduce marker interface for users WS --- .../server/user/ws/BaseUsersWsAction.java | 27 +++++++++++++++++++ .../sonar/server/user/ws/CreateAction.java | 6 ++--- .../sonar/server/user/ws/UpdateAction.java | 6 ++--- .../org/sonar/server/user/ws/UsersWs.java | 13 +++++---- .../server/user/ws/CreateActionTest.java | 2 +- .../server/user/ws/UpdateActionTest.java | 4 +-- 6 files changed, 41 insertions(+), 17 deletions(-) create mode 100644 server/sonar-server/src/main/java/org/sonar/server/user/ws/BaseUsersWsAction.java diff --git a/server/sonar-server/src/main/java/org/sonar/server/user/ws/BaseUsersWsAction.java b/server/sonar-server/src/main/java/org/sonar/server/user/ws/BaseUsersWsAction.java new file mode 100644 index 00000000000..b4506744948 --- /dev/null +++ b/server/sonar-server/src/main/java/org/sonar/server/user/ws/BaseUsersWsAction.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.user.ws; + +import org.sonar.server.ws.WsAction; + +public interface BaseUsersWsAction extends WsAction { + + // Marker interface for UsersWs actions +} diff --git a/server/sonar-server/src/main/java/org/sonar/server/user/ws/CreateAction.java b/server/sonar-server/src/main/java/org/sonar/server/user/ws/CreateAction.java index 3977830d023..ff26328774d 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/user/ws/CreateAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/user/ws/CreateAction.java @@ -22,7 +22,6 @@ package org.sonar.server.user.ws; import org.sonar.api.i18n.I18n; 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.utils.text.JsonWriter; @@ -31,7 +30,7 @@ import org.sonar.server.user.UserService; import org.sonar.server.user.UserSession; import org.sonar.server.user.index.UserDoc; -public class CreateAction implements RequestHandler { +public class CreateAction implements BaseUsersWsAction { private static final String PARAM_LOGIN = "login"; private static final String PARAM_PASSWORD = "password"; @@ -48,7 +47,8 @@ public class CreateAction implements RequestHandler { this.i18n = i18n; } - void define(WebService.NewController controller) { + @Override + public void define(WebService.NewController controller) { WebService.NewAction action = controller.createAction("create") .setDescription("Create a user. Requires Administer System permission") .setSince("3.7") diff --git a/server/sonar-server/src/main/java/org/sonar/server/user/ws/UpdateAction.java b/server/sonar-server/src/main/java/org/sonar/server/user/ws/UpdateAction.java index 4cb0526dcae..8a806866734 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/user/ws/UpdateAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/user/ws/UpdateAction.java @@ -21,7 +21,6 @@ package org.sonar.server.user.ws; 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.utils.text.JsonWriter; @@ -29,7 +28,7 @@ import org.sonar.server.user.UpdateUser; import org.sonar.server.user.UserService; import org.sonar.server.user.index.UserDoc; -public class UpdateAction implements RequestHandler { +public class UpdateAction implements BaseUsersWsAction { private static final String PARAM_LOGIN = "login"; private static final String PARAM_PASSWORD = "password"; @@ -44,7 +43,8 @@ public class UpdateAction implements RequestHandler { this.service = service; } - void define(WebService.NewController controller) { + @Override + public void define(WebService.NewController controller) { WebService.NewAction action = controller.createAction("update") .setDescription("Update a user. Requires Administer System permission") .setSince("3.7") diff --git a/server/sonar-server/src/main/java/org/sonar/server/user/ws/UsersWs.java b/server/sonar-server/src/main/java/org/sonar/server/user/ws/UsersWs.java index 6677468eac5..492de53a274 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/user/ws/UsersWs.java +++ b/server/sonar-server/src/main/java/org/sonar/server/user/ws/UsersWs.java @@ -26,12 +26,10 @@ import org.sonar.api.server.ws.WebService; public class UsersWs implements WebService { - private final CreateAction createAction; - private final UpdateAction updateAction; + private final BaseUsersWsAction[] actions; - public UsersWs(CreateAction createAction, UpdateAction updateAction) { - this.createAction = createAction; - this.updateAction = updateAction; + public UsersWs(BaseUsersWsAction... actions) { + this.actions = actions; } @Override @@ -41,9 +39,10 @@ public class UsersWs implements WebService { .setDescription("Users management"); defineSearchAction(controller); - createAction.define(controller); - updateAction.define(controller); defineDeactivateAction(controller); + for (BaseUsersWsAction action : actions) { + action.define(controller); + } controller.done(); } diff --git a/server/sonar-server/src/test/java/org/sonar/server/user/ws/CreateActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/user/ws/CreateActionTest.java index bacff868cec..f9c32466256 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/user/ws/CreateActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/user/ws/CreateActionTest.java @@ -63,7 +63,7 @@ public class CreateActionTest { @Before public void setUp() throws Exception { - tester = new WsTester(new UsersWs(new CreateAction(service, i18n), new UpdateAction(service))); + tester = new WsTester(new UsersWs(new CreateAction(service, i18n))); controller = tester.controller("api/users"); } diff --git a/server/sonar-server/src/test/java/org/sonar/server/user/ws/UpdateActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/user/ws/UpdateActionTest.java index 897ad17e386..4fb1cc8a0b7 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/user/ws/UpdateActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/user/ws/UpdateActionTest.java @@ -27,7 +27,6 @@ import org.mockito.ArgumentCaptor; import org.mockito.Captor; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; -import org.sonar.api.i18n.I18n; import org.sonar.api.server.ws.WebService; import org.sonar.server.user.UpdateUser; import org.sonar.server.user.UserService; @@ -39,7 +38,6 @@ import java.util.Map; 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.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -58,7 +56,7 @@ public class UpdateActionTest { @Before public void setUp() throws Exception { - tester = new WsTester(new UsersWs(new CreateAction(service, mock(I18n.class)), new UpdateAction(service))); + tester = new WsTester(new UsersWs(new UpdateAction(service))); controller = tester.controller("api/users"); } -- 2.39.5