aboutsummaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorTeryk Bellahsene <teryk.bellahsene@sonarsource.com>2015-10-14 14:04:19 +0200
committerTeryk Bellahsene <teryk.bellahsene@sonarsource.com>2015-10-14 14:04:19 +0200
commit2a443e6ce3e61d7d5ddbc899d3efe4a90ad02e58 (patch)
treefe8378f6bb126702075ffab6be3684ad2e90c993 /server
parent48ba89d7ff49ed5355761e6148beb5efb1fb69a6 (diff)
downloadsonarqube-2a443e6ce3e61d7d5ddbc899d3efe4a90ad02e58.tar.gz
sonarqube-2a443e6ce3e61d7d5ddbc899d3efe4a90ad02e58.zip
Revert "SONAR-6310 Delete RoR WS api/profiles/index"
This reverts commit 4dba36f4e20ac32291d473a3169ee372408a9a22.
Diffstat (limited to 'server')
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ProfilesWs.java30
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ProfilesWsTest.java13
-rw-r--r--server/sonar-web/src/main/webapp/WEB-INF/app/controllers/api/profiles_controller.rb22
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