diff options
author | Teryk Bellahsene <teryk.bellahsene@sonarsource.com> | 2015-10-14 14:04:19 +0200 |
---|---|---|
committer | Teryk Bellahsene <teryk.bellahsene@sonarsource.com> | 2015-10-14 14:04:19 +0200 |
commit | 2a443e6ce3e61d7d5ddbc899d3efe4a90ad02e58 (patch) | |
tree | fe8378f6bb126702075ffab6be3684ad2e90c993 /server | |
parent | 48ba89d7ff49ed5355761e6148beb5efb1fb69a6 (diff) | |
download | sonarqube-2a443e6ce3e61d7d5ddbc899d3efe4a90ad02e58.tar.gz sonarqube-2a443e6ce3e61d7d5ddbc899d3efe4a90ad02e58.zip |
Revert "SONAR-6310 Delete RoR WS api/profiles/index"
This reverts commit 4dba36f4e20ac32291d473a3169ee372408a9a22.
Diffstat (limited to 'server')
3 files changed, 61 insertions, 4 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ProfilesWs.java b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ProfilesWs.java index b66a056b9ad..0d38341d6c6 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ProfilesWs.java +++ b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ProfilesWs.java @@ -24,6 +24,10 @@ import com.google.common.io.Resources; import org.sonar.api.server.ws.RailsHandler; import org.sonar.api.server.ws.WebService; +/** + * List of quality profiles WS implemented in Rails. + * New WS on quality profiles MUST be declared in {@link org.sonar.server.qualityprofile.ws.QProfilesWs} + */ public class ProfilesWs implements WebService { public static final String API_ENDPOINT = "api/profiles"; @@ -37,18 +41,38 @@ public class ProfilesWs implements WebService { @Override public void define(Context context) { NewController controller = context.createController(API_ENDPOINT) - .setDescription("Old Quality Profiles") + .setDescription("Old Quality Profiles. Deprecated since 5.2") .setSince("4.4"); + restoreAction.define(controller); defineListAction(controller); - + defineIndexAction(controller); + controller.done(); } + private static void defineIndexAction(NewController controller) { + WebService.NewAction action = controller.createAction("index") + .setDescription("Get a profile. Deprecated since 5.2.") + .setSince("3.3") + .setHandler(RailsHandler.INSTANCE) + .setResponseExample(Resources.getResource(ProfilesWs.class, "example-index.json")); + + action.createParam("language") + .setDescription("Profile language") + .setRequired(true) + .setExampleValue("java"); + action.createParam("name") + .setDescription("Profile name. If no profile name is given, default profile for the given language will be returned") + .setRequired(true) + .setExampleValue("Sonar way"); + RailsHandler.addFormatParam(action); + } + private static void defineListAction(NewController controller) { WebService.NewAction action = controller.createAction("list") - .setDescription("Get a list of profiles") + .setDescription("Get a list of profiles. Deprecated since 5.2.") .setSince("3.3") .setHandler(RailsHandler.INSTANCE) .setResponseExample(Resources.getResource(ProfilesWs.class, "example-list.json")); diff --git a/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ProfilesWsTest.java b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ProfilesWsTest.java index fd6e3c29eb7..6294190b917 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ProfilesWsTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ProfilesWsTest.java @@ -49,7 +49,18 @@ public class ProfilesWsTest { assertThat(controller).isNotNull(); assertThat(controller.path()).isEqualTo("api/profiles"); assertThat(controller.description()).isNotEmpty(); - assertThat(controller.actions()).hasSize(2); + assertThat(controller.actions()).hasSize(3); + } + + @Test + public void define_index_action() { + WebService.Controller controller = ws.controller("api/profiles"); + + WebService.Action restoreProfiles = controller.action("index"); + assertThat(restoreProfiles).isNotNull(); + assertThat(restoreProfiles.handler()).isInstanceOf(RailsHandler.class); + assertThat(restoreProfiles.responseExampleAsString()).isNotEmpty(); + assertThat(restoreProfiles.params()).hasSize(3); } @Test diff --git a/server/sonar-web/src/main/webapp/WEB-INF/app/controllers/api/profiles_controller.rb b/server/sonar-web/src/main/webapp/WEB-INF/app/controllers/api/profiles_controller.rb index 00766fef820..892ec9e3eb4 100644 --- a/server/sonar-web/src/main/webapp/WEB-INF/app/controllers/api/profiles_controller.rb +++ b/server/sonar-web/src/main/webapp/WEB-INF/app/controllers/api/profiles_controller.rb @@ -81,6 +81,28 @@ class Api::ProfilesController < Api::ApiController format.text { render :text => text_not_supported } end end + + # GET /api/profiles?language=<language>[&name=<name>] + def index + require_parameters :language + + language=params[:language] + name=params[:name] + if name.blank? + @profile=Profile.by_default(language) + else + @profile=Profile.find_by_name_and_language(name, language) + end + not_found('Profile not found') unless @profile + + @active_rules=filter_rules() + + respond_to do |format| + format.json { render :json => jsonp(to_json) } + format.xml { render :xml => to_xml } + format.text { render :text => text_not_supported } + end + end private |