]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-5111 Add missing format parameters
authorJulien Lancelot <julien.lancelot@sonarsource.com>
Fri, 9 May 2014 07:30:43 +0000 (09:30 +0200)
committerJulien Lancelot <julien.lancelot@sonarsource.com>
Fri, 9 May 2014 07:30:43 +0000 (09:30 +0200)
31 files changed:
sonar-plugin-api/src/main/java/org/sonar/api/server/ws/RailsHandler.java
sonar-server/src/main/java/org/sonar/server/authentication/ws/AuthenticationWs.java
sonar-server/src/main/java/org/sonar/server/component/ws/ComponentsWs.java
sonar-server/src/main/java/org/sonar/server/component/ws/ProjectsWs.java
sonar-server/src/main/java/org/sonar/server/component/ws/ResourcesWs.java
sonar-server/src/main/java/org/sonar/server/issue/actionplan/ActionPlanWs.java
sonar-server/src/main/java/org/sonar/server/issue/ws/IssuesWs.java
sonar-server/src/main/java/org/sonar/server/measure/ws/TimeMachineWs.java
sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionsWs.java
sonar-server/src/main/java/org/sonar/server/platform/ws/ServerWs.java
sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ProfilesWs.java
sonar-server/src/main/java/org/sonar/server/test/ws/TestsWs.java
sonar-server/src/main/java/org/sonar/server/updatecenter/ws/UpdateCenterWs.java
sonar-server/src/main/java/org/sonar/server/user/ws/UsersWs.java
sonar-server/src/main/resources/org/sonar/server/component/ws/projects-example-create.json [new file with mode: 0644]
sonar-server/src/main/resources/org/sonar/server/issue/ws/example-changelog.json [new file with mode: 0644]
sonar-server/src/main/resources/org/sonar/server/platform/ws/example-index.json [new file with mode: 0644]
sonar-server/src/main/resources/org/sonar/server/qualityprofile/ws/example-index.json [new file with mode: 0644]
sonar-server/src/test/java/org/sonar/server/authentication/ws/AuthenticationWsTest.java
sonar-server/src/test/java/org/sonar/server/component/ws/ComponentsWsTest.java
sonar-server/src/test/java/org/sonar/server/component/ws/ProjectsWsTest.java
sonar-server/src/test/java/org/sonar/server/component/ws/ResourcesWsTest.java
sonar-server/src/test/java/org/sonar/server/issue/actionplan/ActionPlanWsTest.java
sonar-server/src/test/java/org/sonar/server/issue/ws/IssuesWsTest.java
sonar-server/src/test/java/org/sonar/server/measure/ws/TimeMachineWsTest.java
sonar-server/src/test/java/org/sonar/server/permission/ws/PermissionsWsTest.java
sonar-server/src/test/java/org/sonar/server/platform/ws/ServerWsTest.java
sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ProfilesWsTest.java
sonar-server/src/test/java/org/sonar/server/test/ws/TestsWsTest.java
sonar-server/src/test/java/org/sonar/server/updatecenter/ws/UpdateCenterWsTest.java
sonar-server/src/test/java/org/sonar/server/user/ws/UsersWsTest.java

index 87f798b525073fd5aec89b0f1e83761f1439c02d..9b0342574d6c898e524b2d480110ceb20aa450eb 100644 (file)
@@ -38,4 +38,24 @@ public class RailsHandler implements RequestHandler {
     throw new UnsupportedOperationException("This web service is implemented in rails");
   }
 
+  public static WebService.NewParam addFormatParam(WebService.NewAction action) {
+    return action.createParam("format")
+      .setDescription("Response format can be set through:" +
+        "<ul>" +
+        "<li>Parameter format: xml | json</li>" +
+        "<li>Or the 'Accept' property in the HTTP header:" +
+        "<ul>" +
+        "<li>Accept:text/xml</li>" +
+        "<li>Accept:application/json</li>" +
+        "</ul></li></ul>" +
+        "If nothing is set, json is used")
+      .setPossibleValues("json", "xml");
+  }
+
+  public static WebService.NewParam addJsonOnlyFormatParam(WebService.NewAction action) {
+    return action.createParam("format")
+      .setDescription("Only json response format is available")
+      .setPossibleValues("json");
+  }
+
 }
index 6de8f94300505aaeac819b21eccbf0884a4c8492..d928302540db24b1a0b3d0b7a8e215d4c5015c3f 100644 (file)
@@ -31,13 +31,19 @@ public class AuthenticationWs implements WebService {
     NewController controller = context.createController("api/authentication");
     controller.setDescription("Check authentication credentials");
 
-    controller.createAction("validate")
+    defineValidateAction(controller);
+
+    controller.done();
+  }
+
+  private void defineValidateAction(NewController controller) {
+    NewAction action = controller.createAction("validate")
       .setDescription("Check credentials")
       .setSince("3.3")
       .setHandler(RailsHandler.INSTANCE)
       .setResponseExample(Resources.getResource(this.getClass(), "example-validate.json"));
 
-    controller.done();
+    RailsHandler.addFormatParam(action);
   }
 
 }
index e8e03caf64282c751bf239d836bedd4efdd33f60..0dc9390e5b521a94dad66c29f67bdf209b1d4f73 100644 (file)
@@ -49,6 +49,8 @@ public class ComponentsWs implements WebService {
       .setRequired(true)
       .setDescription("Substring of project key (minimum 2 characters)")
       .setExampleValue("sonar");
+
+    RailsHandler.addJsonOnlyFormatParam(action);
   }
 
 }
index 532fe26033a7e664bd7fcb2be48e30884d9395b1..5bb14174d3eda6432d4c07afedbf779291252ef9 100644 (file)
@@ -78,6 +78,8 @@ public class ProjectsWs implements WebService {
       .setDescription("Load version")
       .setDefaultValue("false")
       .setPossibleValues("true", "false", "last");
+
+    RailsHandler.addFormatParam(action);
   }
 
   private void defineCreateAction(NewController controller) {
@@ -85,7 +87,8 @@ public class ProjectsWs implements WebService {
       .setDescription("Provision a project. Requires Provision Projects permission")
       .setSince("4.0")
       .setPost(true)
-      .setHandler(RailsHandler.INSTANCE);
+      .setHandler(RailsHandler.INSTANCE)
+      .setResponseExample(Resources.getResource(this.getClass(), "projects-example-create.json"));
 
     action.createParam("key")
       .setDescription("Key of the project")
@@ -96,6 +99,8 @@ public class ProjectsWs implements WebService {
       .setDescription("Name of the project")
       .setRequired(true)
       .setExampleValue("SonarQube");
+
+    RailsHandler.addFormatParam(action);
   }
 
   private void defineDestroyAction(NewController controller) {
index e7c2552b865c82e8489d8f2d1ee39eea716cd136..6431124137fd60fd32277be325479d38eeb6bde6 100644 (file)
@@ -32,13 +32,13 @@ public class ResourcesWs implements WebService {
       .setDescription("Former components web service")
       .setSince("2.10");
 
-    defineSystemAction(controller);
+    defineIndexAction(controller);
     defineSearchAction(controller);
 
     controller.done();
   }
 
-  private void defineSystemAction(NewController controller) {
+  private void defineIndexAction(NewController controller) {
     NewAction action = controller.createAction("index")
       .setDescription("Get a list of components. Requires Browse permission on resource")
       .setSince("2.10")
@@ -112,6 +112,8 @@ public class ResourcesWs implements WebService {
         "(such as 'blocker_violations', 'critical_violations', ..., 'new_blocker_violations', ...). Possible values: true | false | list of rule ids")
       .setDefaultValue("false")
       .setExampleValue("true");
+
+    RailsHandler.addFormatParam(action);
   }
 
   private void defineSearchAction(NewController controller) {
@@ -152,6 +154,8 @@ public class ResourcesWs implements WebService {
       .setDescription("Page size")
       .setDefaultValue("10")
       .setExampleValue("15");
+
+    RailsHandler.addJsonOnlyFormatParam(action);
   }
 
 }
index e8cd57aeac45d32816ceb8af9cd11cf004fab718..c9b8a51d959c392429c63fdc4af2d502d300bf43 100644 (file)
@@ -31,55 +31,80 @@ public class ActionPlanWs implements WebService {
     NewController controller = context.createController("api/action_plans");
     controller.setDescription("Action plans management");
 
-    WebService.NewAction search = controller.createAction("search")
+    defineSearchAction(controller);
+    defineCreateAction(controller);
+    defineUpdateAction(controller);
+    defineDeleteAction(controller);
+    defineOpenAction(controller);
+    defineCloseAction(controller);
+
+    controller.done();
+  }
+
+  private void defineSearchAction(NewController controller) {
+    WebService.NewAction action = controller.createAction("search")
       .setDescription("Get a list of action plans. Requires Browse permission on project")
       .setSince("3.6")
       .setHandler(RailsHandler.INSTANCE)
       .setResponseExample(Resources.getResource(this.getClass(), "example-search.json"));
-    addProjectParam(search);
+    addProjectParam(action);
+    addFormatParam(action);
+  }
 
-    WebService.NewAction create = controller.createAction("create")
+  private void defineCreateAction(NewController controller) {
+    WebService.NewAction action = controller.createAction("create")
       .setDescription("Create an action plan. Requires Administer permission on project")
       .setSince("3.6")
       .setPost(true)
       .setHandler(RailsHandler.INSTANCE);
-    addNameParam(create);
-    addDescriptionParam(create);
-    addDeadLineParam(create);
-    addProjectParam(create);
+    addNameParam(action);
+    addDescriptionParam(action);
+    addDeadLineParam(action);
+    addProjectParam(action);
+    addFormatParam(action);
+  }
 
-    WebService.NewAction update = controller.createAction("update")
+  private void defineUpdateAction(NewController controller) {
+    WebService.NewAction action = controller.createAction("update")
       .setDescription("Update an action plan. Requires Administer permission on project")
       .setSince("3.6")
       .setPost(true)
       .setHandler(RailsHandler.INSTANCE);
-    addKeyParam(update);
-    addNameParam(update);
-    addDescriptionParam(update);
-    addDeadLineParam(update);
+    addKeyParam(action);
+    addNameParam(action);
+    addDescriptionParam(action);
+    addDeadLineParam(action);
+    addFormatParam(action);
+  }
 
-    WebService.NewAction delete = controller.createAction("delete")
+  private void defineDeleteAction(NewController controller) {
+    WebService.NewAction action = controller.createAction("delete")
       .setDescription("Delete an action plan. Requires Administer permission on project")
       .setSince("3.6")
       .setPost(true)
       .setHandler(RailsHandler.INSTANCE);
-    addKeyParam(delete);
+    addKeyParam(action);
+    addFormatParam(action);
+  }
 
-    WebService.NewAction open = controller.createAction("open")
+  private void defineOpenAction(NewController controller) {
+    WebService.NewAction action = controller.createAction("open")
       .setDescription("Open an action plan. Requires Administer permission on project")
       .setSince("3.6")
       .setPost(true)
       .setHandler(RailsHandler.INSTANCE);
-    addKeyParam(open);
+    addKeyParam(action);
+    addFormatParam(action);
+  }
 
-    WebService.NewAction close = controller.createAction("close")
+  private void defineCloseAction(NewController controller) {
+    WebService.NewAction action = controller.createAction("close")
       .setDescription("Close an action plan. Requires Administer permission on project")
       .setSince("3.6")
       .setPost(true)
       .setHandler(RailsHandler.INSTANCE);
-    addKeyParam(close);
-
-    controller.done();
+    addKeyParam(action);
+    addFormatParam(action);
   }
 
   private static NewParam addKeyParam(WebService.NewAction action) {
@@ -114,4 +139,8 @@ public class ActionPlanWs implements WebService {
       .setExampleValue("org.codehaus.sonar:sonar")
       .setRequired(true);
   }
+
+  private static NewParam addFormatParam(WebService.NewAction action) {
+    return RailsHandler.addFormatParam(action);
+  }
 }
index c1b19f522c92b166584c13ac8b8032057bac196e..7ee8710c8b25a83ec90913443539da8645a6b1fa 100644 (file)
@@ -42,15 +42,17 @@ public class IssuesWs implements WebService {
 
     showHandler.define(controller);
     defineSearchAction(controller);
+    defineChangelogAction(controller);
     defineAssignAction(controller);
     defineAddCommentAction(controller);
     defineDeleteCommentAction(controller);
     defineEditCommentAction(controller);
-    defineChangeSeverityAction(controller);
+    defineSetSeverityAction(controller);
     definePlanAction(controller);
     defineDoTransitionAction(controller);
     defineTransitionsAction(controller);
     defineCreateAction(controller);
+    defineDoActionAction(controller);
     defineBulkChangeAction(controller);
 
     controller.done();
@@ -124,6 +126,21 @@ public class IssuesWs implements WebService {
       .setDescription("Index of the selected page")
       .setDefaultValue("1")
       .setExampleValue("2");
+    RailsHandler.addFormatParam(action);
+  }
+
+  private void defineChangelogAction(NewController controller) {
+    WebService.NewAction action = controller.createAction("changelog")
+      .setDescription("Display changelog of an issue")
+      .setSince("4.1")
+      .setHandler(RailsHandler.INSTANCE)
+      .setResponseExample(Resources.getResource(this.getClass(), "example-changelog.json"));
+
+    action.createParam("issue")
+      .setDescription("Key of the issue")
+      .setRequired(true)
+      .setExampleValue("5bccd6e8-f525-43a2-8d76-fcb13dde79ef");
+    RailsHandler.addFormatParam(action);
   }
 
   private void defineAssignAction(NewController controller) {
@@ -140,6 +157,7 @@ public class IssuesWs implements WebService {
     action.createParam("assignee")
       .setDescription("Login of the assignee")
       .setExampleValue("admin");
+    RailsHandler.addFormatParam(action);
   }
 
   private void defineAddCommentAction(NewController controller) {
@@ -156,6 +174,7 @@ public class IssuesWs implements WebService {
     action.createParam("text")
       .setDescription("Comment")
       .setExampleValue("blabla...");
+    RailsHandler.addFormatParam(action);
   }
 
   private void defineDeleteCommentAction(NewController controller) {
@@ -185,9 +204,10 @@ public class IssuesWs implements WebService {
     action.createParam("text")
       .setDescription("New comment")
       .setExampleValue("blabla2...");
+    RailsHandler.addFormatParam(action);
   }
 
-  private void defineChangeSeverityAction(NewController controller) {
+  private void defineSetSeverityAction(NewController controller) {
     WebService.NewAction action = controller.createAction("set_severity")
       .setDescription("Change severity. Requires authentication and Browse permission on project")
       .setSince("3.6")
@@ -202,6 +222,7 @@ public class IssuesWs implements WebService {
       .setDescription("New severity")
       .setExampleValue(Severity.BLOCKER)
       .setPossibleValues(Severity.ALL);
+    RailsHandler.addFormatParam(action);
   }
 
   private void definePlanAction(NewController controller) {
@@ -218,6 +239,7 @@ public class IssuesWs implements WebService {
     action.createParam("plan")
       .setDescription("Key of the action plan")
       .setExampleValue("3f19de90-1521-4482-a737-a311758ff513");
+    RailsHandler.addFormatParam(action);
   }
 
   private void defineDoTransitionAction(NewController controller) {
@@ -235,6 +257,7 @@ public class IssuesWs implements WebService {
       .setDescription("Transition")
       .setExampleValue("reopen")
       .setPossibleValues(DefaultTransitions.ALL);
+    RailsHandler.addFormatParam(action);
   }
 
   private void defineTransitionsAction(NewController controller) {
@@ -276,6 +299,24 @@ public class IssuesWs implements WebService {
     action.createParam("message")
       .setDescription("Description of the issue")
       .setExampleValue("blabla...");
+    RailsHandler.addFormatParam(action);
+  }
+
+  private void defineDoActionAction(NewController controller) {
+    WebService.NewAction action = controller.createAction("do_action")
+      .setDescription("Do workflow transition on an issue. Requires authentication and Browse permission on project")
+      .setSince("3.6")
+      .setHandler(RailsHandler.INSTANCE)
+      .setPost(true);
+
+    action.createParam("issue")
+      .setDescription("Key of the issue")
+      .setRequired(true)
+      .setExampleValue("5bccd6e8-f525-43a2-8d76-fcb13dde79ef");
+    action.createParam("actionKey")
+      .setDescription("Action to perform")
+      .setExampleValue("link-to-jira");
+    RailsHandler.addFormatParam(action);
   }
 
   private void defineBulkChangeAction(NewController controller) {
@@ -314,6 +355,7 @@ public class IssuesWs implements WebService {
       .setDescription("Available since version 4.0")
       .setDefaultValue("false")
       .setBooleanPossibleValues();
+    RailsHandler.addFormatParam(action);
   }
 
 }
index 153ad047268d3abc88e0adb8f9b8215a3176c1ac..ef6b1e2d7c59e24072646b73cee691e544a151d3 100644 (file)
@@ -61,6 +61,10 @@ public class TimeMachineWs implements WebService {
     action.createParam("toDateTime")
       .setDescription("ISO-8601 datetime (inclusive)")
       .setExampleValue("2010-12-25T23:59:59+0100");
+
+    action.createParam("format")
+      .setDescription("Response format")
+      .setPossibleValues("json", "csv");
   }
 
 }
index 28460946e6588e2a0ba76a3ff73185a65327d434..4ad77024acfcfeea794dcdc64cf1b6d747c97d9f 100644 (file)
@@ -62,6 +62,7 @@ public class PermissionsWs implements WebService {
     action.createParam("component")
       .setDescription("Key of the project. Required if a project permission is set. Available since version 4.0")
       .setExampleValue("org.codehaus.sonar");
+    RailsHandler.addFormatParam(action);
   }
 
   private void defineRemoveAction(NewController controller) {
@@ -86,6 +87,7 @@ public class PermissionsWs implements WebService {
     action.createParam("component")
       .setDescription("Key of the project. Required if a project permission is set. Available since version 4.0")
       .setExampleValue("org.codehaus.sonar");
+    RailsHandler.addFormatParam(action);
   }
 
 }
index 7a51f55474881911ccdc375dc657901631a32343..b6e8ddf66f38a4c786f633fa0f740928af23cf96 100644 (file)
@@ -32,27 +32,50 @@ public class ServerWs implements WebService {
       .setDescription("Get system properties and upgrade db")
       .setSince("2.10");
 
+    defineIndexAction(controller);
     defineSystemAction(controller);
     defineSetupAction(controller);
 
     controller.done();
   }
 
+  private void defineIndexAction(NewController controller) {
+    NewAction action = controller.createAction("index")
+      .setDescription("Get the server status:" +
+        "<ul>" +
+        "<li>UP</li>" +
+        "<li>DOWN (generally for database connection failures)</li>" +
+        "<li>SETUP (if the server must be upgraded)</li>" +
+        "<li>MIGRATION_RUNNING (the upgrade process is currently running)</li>" +
+        "</ul>")
+      .setSince("2.10")
+      .setHandler(RailsHandler.INSTANCE)
+      .setResponseExample(Resources.getResource(this.getClass(), "example-index.json"));
+
+    RailsHandler.addFormatParam(action);
+  }
+
   private void defineSystemAction(NewController controller) {
-    controller.createAction("system")
+    NewAction action = controller.createAction("system")
       .setDescription("Get the system properties, server info (Java, OS), database configuration, JVM statistics and installed plugins. Requires Administer System permission")
       .setSince("2.10")
       .setHandler(RailsHandler.INSTANCE)
       .setResponseExample(Resources.getResource(this.getClass(), "example-system.json"));
+
+    RailsHandler.addFormatParam(action);
   }
 
   private void defineSetupAction(NewController controller) {
-    controller.createAction("setup")
+    NewAction action = controller.createAction("setup")
       .setDescription("Upgrade the SonarQube database")
       .setSince("2.10")
       .setPost(true)
       .setHandler(RailsHandler.INSTANCE)
       .setResponseExample(Resources.getResource(this.getClass(), "example-setup.json"));
+
+    action.createParam("format")
+      .setDescription("Response format")
+      .setPossibleValues("json", "csv", "text");
   }
 
 }
index 2b34d05453f320894591ee96301006ac25c6c32f..1baaccc40c3c7fa6886a193ffe5edb2cfca96d04 100644 (file)
@@ -35,6 +35,7 @@ public class ProfilesWs implements WebService {
       .setDescription("Former quality profiles web service");
 
     defineListAction(controller);
+    defineIndexAction(controller);
     defineBackupAction(controller);
     defineRestoreAction(controller);
     defineDestroyAction(controller);
@@ -57,6 +58,24 @@ public class ProfilesWs implements WebService {
     action.createParam("project")
       .setDescription("Project key or id")
       .setExampleValue("org.codehaus.sonar:sonar");
+    RailsHandler.addJsonOnlyFormatParam(action);
+  }
+
+  private void defineIndexAction(NewController controller) {
+    WebService.NewAction action = controller.createAction("index")
+      .setDescription("Get a profile")
+      .setSince("3.3")
+      .setHandler(RailsHandler.INSTANCE)
+      .setResponseExample(Resources.getResource(this.getClass(), "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")
+      .setExampleValue("Sonar way");
+    RailsHandler.addFormatParam(action);
   }
 
   private void defineBackupAction(NewController controller) {
@@ -73,6 +92,7 @@ public class ProfilesWs implements WebService {
     action.createParam("name")
       .setDescription("Profile name. If not set, the default profile for the selected language is used")
       .setExampleValue("Sonar way");
+    RailsHandler.addFormatParam(action);
   }
 
   private void defineRestoreAction(NewController controller) {
@@ -85,6 +105,7 @@ public class ProfilesWs implements WebService {
     action.createParam("backup")
       .setRequired(true)
       .setDescription("Path to the file containing the backup (HTML format)");
+    RailsHandler.addJsonOnlyFormatParam(action);
   }
 
   private void defineDestroyAction(NewController controller) {
index 87e20b42fb59315620d9dc6c446776f5968f9abc..4f442b3ca06f234e40665b86ad14e7c8b848f617 100644 (file)
@@ -50,6 +50,7 @@ public class TestsWs implements WebService {
       .setRequired(true)
       .setDescription("id or key of the test resource")
       .setExampleValue("org.codehaus.sonar.plugins:sonar-cpd-plugin:src/test/java/org/sonar/plugins/cpd/SonarBridgeEngineTest.java");
+    RailsHandler.addJsonOnlyFormatParam(action);
   }
 
   private void defineTestableAction(NewController controller) {
@@ -64,6 +65,7 @@ public class TestsWs implements WebService {
       .setRequired(true)
       .setDescription("id or key of the resource")
       .setExampleValue("org.codehaus.sonar.plugins:sonar-cpd-plugin:src/main/java/org/sonar/plugins/cpd/SonarBridgeEngine.java");
+    RailsHandler.addJsonOnlyFormatParam(action);
   }
 
 }
index b777f6a73cbc45b40590cd3305fe5175ae42d5b4..ca1d02df2ff6159d7ce7e92381d24a12a82a9c7c 100644 (file)
@@ -38,11 +38,12 @@ public class UpdateCenterWs implements WebService {
   }
 
   private void defineInstalledPluginsAction(NewController controller) {
-    controller.createAction("installed_plugins")
+    NewAction action = controller.createAction("installed_plugins")
       .setDescription("Get the list of all the plugins installed on the SonarQube instance")
       .setSince("2.10")
       .setHandler(RailsHandler.INSTANCE)
       .setResponseExample(Resources.getResource(this.getClass(), "example-installed_plugins.json"));
+    RailsHandler.addFormatParam(action);
   }
 
 }
index 531c64664503bd4f968e53069b019e7dc189a5bd..f2785f2c2682b4b2fc0957e21f0b5029f68ed375 100644 (file)
@@ -55,6 +55,8 @@ public class UsersWs implements WebService {
     action.createParam("logins")
       .setDescription("Comma-separated list of user logins")
       .setExampleValue("admin,sbrandhof");
+
+    RailsHandler.addFormatParam(action);
   }
 
   private void defineCreateAction(NewController controller) {
@@ -86,6 +88,8 @@ public class UsersWs implements WebService {
     action.createParam("email")
       .setDescription("User email")
       .setExampleValue("myname@email.com");
+
+    RailsHandler.addFormatParam(action);
   }
 
   private void defineUpdateAction(NewController controller) {
@@ -107,6 +111,8 @@ public class UsersWs implements WebService {
     action.createParam("email")
       .setDescription("User email")
       .setExampleValue("mynewname@email.com");
+
+    RailsHandler.addFormatParam(action);
   }
 
   private void defineDeactivateAction(NewController controller) {
@@ -120,6 +126,8 @@ public class UsersWs implements WebService {
       .setDescription("User login")
       .setRequired(true)
       .setExampleValue("myuser");
+
+    RailsHandler.addFormatParam(action);
   }
 
 }
diff --git a/sonar-server/src/main/resources/org/sonar/server/component/ws/projects-example-create.json b/sonar-server/src/main/resources/org/sonar/server/component/ws/projects-example-create.json
new file mode 100644 (file)
index 0000000..043c4bb
--- /dev/null
@@ -0,0 +1,8 @@
+{
+  "id": "30057",
+  "k": "org.jenkins-ci.plugins:sonar",
+  "nm": "Jenkins Sonar Plugin",
+  "sc": "PRJ",
+  "qu": "TRK"
+}
+
diff --git a/sonar-server/src/main/resources/org/sonar/server/issue/ws/example-changelog.json b/sonar-server/src/main/resources/org/sonar/server/issue/ws/example-changelog.json
new file mode 100644 (file)
index 0000000..44c15e4
--- /dev/null
@@ -0,0 +1,14 @@
+{
+  "changelog": [
+    {
+      "creationDate": "2014-03-04T23:03:44+0100",
+      "diffs": [
+        {
+          "key": "technicalDebt",
+          "newValue": "2min"
+        }
+      ]
+    }
+  ]
+
+}
diff --git a/sonar-server/src/main/resources/org/sonar/server/platform/ws/example-index.json b/sonar-server/src/main/resources/org/sonar/server/platform/ws/example-index.json
new file mode 100644 (file)
index 0000000..2465118
--- /dev/null
@@ -0,0 +1,5 @@
+{
+  "id": "20140507170538",
+  "version": "4.3",
+  "status": "UP"
+}
diff --git a/sonar-server/src/main/resources/org/sonar/server/qualityprofile/ws/example-index.json b/sonar-server/src/main/resources/org/sonar/server/qualityprofile/ws/example-index.json
new file mode 100644 (file)
index 0000000..b80303d
--- /dev/null
@@ -0,0 +1,41 @@
+[
+  {
+    "name": "Sonar way",
+    "language": "java",
+    "default": true,
+    "rules": [
+      {
+        "key": "DuplicatedBlocks",
+        "repo": "common-java",
+        "severity": "MAJOR"
+      },
+      {
+        "key": "InsufficientBranchCoverage",
+        "repo": "common-java",
+        "severity": "MAJOR",
+        "params": [
+          {
+            "key": "minimumBranchCoverageRatio",
+            "value": "65.0"
+          }
+        ]
+      },
+      {
+        "key": "S00105",
+        "repo": "squid",
+        "severity": "MINOR"
+      },
+      {
+        "key": "MethodCyclomaticComplexity",
+        "repo": "squid",
+        "severity": "MAJOR",
+        "params": [
+          {
+            "key": "max",
+            "value": "10"
+          }
+        ]
+      }
+    ]
+  }
+]
index d131b88e706bdc3c1dfd5a13f78a412622770695..e4d33fb790b7dff576c5815d0f53c7df7188b387 100644 (file)
@@ -42,6 +42,6 @@ public class AuthenticationWsTest {
     assertThat(validate).isNotNull();
     assertThat(validate.handler()).isInstanceOf(RailsHandler.class);
     assertThat(validate.responseExampleAsString()).isNotEmpty();
-    assertThat(validate.params()).isEmpty();
+    assertThat(validate.params()).hasSize(1);
   }
 }
index d7b235704a9f98876af9a1d818993770c1f6ff35..b1fe015bc65f02dba89a88bac41131dccd95cda3 100644 (file)
@@ -54,7 +54,7 @@ public class ComponentsWsTest {
     assertThat(action.isPost()).isFalse();
     assertThat(action.handler()).isInstanceOf(RailsHandler.class);
     assertThat(action.responseExampleAsString()).isNotEmpty();
-    assertThat(action.params()).hasSize(1);
+    assertThat(action.params()).hasSize(2);
   }
 
 }
index c1c69800e1f50ebbac2bee48757c77bfaa79b46c..9a978d15338da716c3bb2356927e3789f18dd014 100644 (file)
@@ -52,7 +52,7 @@ public class ProjectsWsTest {
     assertThat(action).isNotNull();
     assertThat(action.handler()).isInstanceOf(RailsHandler.class);
     assertThat(action.responseExampleAsString()).isNotEmpty();
-    assertThat(action.params()).hasSize(7);
+    assertThat(action.params()).hasSize(8);
   }
 
   @Test
@@ -60,7 +60,8 @@ public class ProjectsWsTest {
     WebService.Action action = controller.action("create");
     assertThat(action).isNotNull();
     assertThat(action.handler()).isInstanceOf(RailsHandler.class);
-    assertThat(action.params()).hasSize(2);
+    assertThat(action.responseExampleAsString()).isNotEmpty();
+    assertThat(action.params()).hasSize(3);
   }
 
   @Test
index 71eb9571db3c56cec668d731037113b539d529e7..497a9fa5fcf2fa309a673cdb93355a931bdbae1b 100644 (file)
@@ -52,7 +52,7 @@ public class ResourcesWsTest {
     assertThat(action).isNotNull();
     assertThat(action.handler()).isInstanceOf(RailsHandler.class);
     assertThat(action.responseExampleAsString()).isNotEmpty();
-    assertThat(action.params()).hasSize(10);
+    assertThat(action.params()).hasSize(11);
   }
 
   @Test
@@ -62,7 +62,7 @@ public class ResourcesWsTest {
     assertThat(action.handler()).isInstanceOf(RailsHandler.class);
     assertThat(action.isInternal()).isTrue();
     assertThat(action.responseExampleAsString()).isNotEmpty();
-    assertThat(action.params()).hasSize(7);
+    assertThat(action.params()).hasSize(8);
   }
 
 }
index 7d0677e13ecf86a0b55059e4a7a56fb41817a1f1..f01abb4ca51a7be1ce25ecd664d2515c0465534a 100644 (file)
@@ -47,7 +47,7 @@ public class ActionPlanWsTest {
     assertThat(action).isNotNull();
     assertThat(action.handler()).isInstanceOf(RailsHandler.class);
     assertThat(action.responseExampleAsString()).isNotEmpty();
-    assertThat(action.params()).hasSize(1);
+    assertThat(action.params()).hasSize(2);
   }
 
   @Test
@@ -57,7 +57,7 @@ public class ActionPlanWsTest {
     WebService.Action action = controller.action("create");
     assertThat(action).isNotNull();
     assertThat(action.handler()).isInstanceOf(RailsHandler.class);
-    assertThat(action.params()).hasSize(4);
+    assertThat(action.params()).hasSize(5);
   }
 
   @Test
@@ -67,7 +67,7 @@ public class ActionPlanWsTest {
     WebService.Action action = controller.action("delete");
     assertThat(action).isNotNull();
     assertThat(action.handler()).isInstanceOf(RailsHandler.class);
-    assertThat(action.params()).hasSize(1);
+    assertThat(action.params()).hasSize(2);
   }
 
   @Test
@@ -77,7 +77,7 @@ public class ActionPlanWsTest {
     WebService.Action action = controller.action("update");
     assertThat(action).isNotNull();
     assertThat(action.handler()).isInstanceOf(RailsHandler.class);
-    assertThat(action.params()).hasSize(4);
+    assertThat(action.params()).hasSize(5);
   }
 
   @Test
@@ -87,7 +87,7 @@ public class ActionPlanWsTest {
     WebService.Action action = controller.action("open");
     assertThat(action).isNotNull();
     assertThat(action.handler()).isInstanceOf(RailsHandler.class);
-    assertThat(action.params()).hasSize(1);
+    assertThat(action.params()).hasSize(2);
   }
 
   @Test
@@ -97,6 +97,6 @@ public class ActionPlanWsTest {
     WebService.Action action = controller.action("close");
     assertThat(action).isNotNull();
     assertThat(action.handler()).isInstanceOf(RailsHandler.class);
-    assertThat(action.params()).hasSize(1);
+    assertThat(action.params()).hasSize(2);
   }
 }
index c797715cc8515affcdee130af3a8f9cef7a303ae..6c01dae5efb25cc0c1a0b963121cdfc4f768f39f 100644 (file)
@@ -54,7 +54,7 @@ public class IssuesWsTest {
     assertThat(controller).isNotNull();
     assertThat(controller.description()).isNotEmpty();
     assertThat(controller.since()).isEqualTo("3.6");
-    assertThat(controller.actions()).hasSize(12);
+    assertThat(controller.actions()).hasSize(14);
   }
 
   @Test
@@ -89,7 +89,18 @@ public class IssuesWsTest {
     assertThat(show.isInternal()).isFalse();
     assertThat(show.handler()).isInstanceOf(RailsHandler.class);
     assertThat(show.responseExampleAsString()).isNotEmpty();
-    assertThat(show.params()).hasSize(17);
+    assertThat(show.params()).hasSize(18);
+  }
+
+  @Test
+  public void define_changelog_action() throws Exception {
+    WebService.Controller controller = tester.controller("api/issues");
+
+    WebService.Action action = controller.action("changelog");
+    assertThat(action).isNotNull();
+    assertThat(action.handler()).isNotNull();
+    assertThat(action.responseExampleAsString()).isNotEmpty();
+    assertThat(action.params()).hasSize(2);
   }
 
   @Test
@@ -103,7 +114,7 @@ public class IssuesWsTest {
     assertThat(action.isPost()).isTrue();
     assertThat(action.isInternal()).isFalse();
     assertThat(action.handler()).isInstanceOf(RailsHandler.class);
-    assertThat(action.params()).hasSize(2);
+    assertThat(action.params()).hasSize(3);
   }
 
   @Test
@@ -117,7 +128,7 @@ public class IssuesWsTest {
     assertThat(action.isPost()).isTrue();
     assertThat(action.isInternal()).isFalse();
     assertThat(action.handler()).isInstanceOf(RailsHandler.class);
-    assertThat(action.params()).hasSize(2);
+    assertThat(action.params()).hasSize(3);
   }
 
   @Test
@@ -145,7 +156,7 @@ public class IssuesWsTest {
     assertThat(action.isPost()).isTrue();
     assertThat(action.isInternal()).isFalse();
     assertThat(action.handler()).isInstanceOf(RailsHandler.class);
-    assertThat(action.params()).hasSize(2);
+    assertThat(action.params()).hasSize(3);
   }
 
   @Test
@@ -159,7 +170,7 @@ public class IssuesWsTest {
     assertThat(action.isPost()).isTrue();
     assertThat(action.isInternal()).isFalse();
     assertThat(action.handler()).isInstanceOf(RailsHandler.class);
-    assertThat(action.params()).hasSize(2);
+    assertThat(action.params()).hasSize(3);
   }
 
   @Test
@@ -173,7 +184,7 @@ public class IssuesWsTest {
     assertThat(action.isPost()).isTrue();
     assertThat(action.isInternal()).isFalse();
     assertThat(action.handler()).isInstanceOf(RailsHandler.class);
-    assertThat(action.params()).hasSize(2);
+    assertThat(action.params()).hasSize(3);
   }
 
   @Test
@@ -187,7 +198,7 @@ public class IssuesWsTest {
     assertThat(action.isPost()).isTrue();
     assertThat(action.isInternal()).isFalse();
     assertThat(action.handler()).isInstanceOf(RailsHandler.class);
-    assertThat(action.params()).hasSize(2);
+    assertThat(action.params()).hasSize(3);
   }
 
   @Test
@@ -215,7 +226,20 @@ public class IssuesWsTest {
     assertThat(action.since()).isEqualTo("3.6");
     assertThat(action.isPost()).isTrue();
     assertThat(action.isInternal()).isFalse();
-    assertThat(action.params()).hasSize(5);
+    assertThat(action.params()).hasSize(6);
+  }
+
+  @Test
+  public void define_do_action_action() throws Exception {
+    WebService.Controller controller = tester.controller("api/issues");
+
+    WebService.Action action = controller.action("do_action");
+    assertThat(action).isNotNull();
+    assertThat(action.handler()).isNotNull();
+    assertThat(action.since()).isEqualTo("3.6");
+    assertThat(action.isPost()).isTrue();
+    assertThat(action.isInternal()).isFalse();
+    assertThat(action.params()).hasSize(3);
   }
 
   @Test
@@ -229,7 +253,7 @@ public class IssuesWsTest {
     assertThat(action.isPost()).isTrue();
     assertThat(action.isInternal()).isFalse();
     assertThat(action.handler()).isInstanceOf(RailsHandler.class);
-    assertThat(action.params()).hasSize(8);
+    assertThat(action.params()).hasSize(9);
   }
 
 }
index 2b8b1df091d5647e65cd296ba86b08f7946e0c10..25c29b65132c9148013bf252add14e98668ab1a7 100644 (file)
@@ -52,7 +52,7 @@ public class TimeMachineWsTest {
     assertThat(action).isNotNull();
     assertThat(action.handler()).isInstanceOf(RailsHandler.class);
     assertThat(action.responseExampleAsString()).isNotEmpty();
-    assertThat(action.params()).hasSize(4);
+    assertThat(action.params()).hasSize(5);
   }
 
 }
index fc2fde4fb5a72d543fdc904dd56b326a5a9ea020..b7c057dcf5b8ffe6ab626fd5389c45960c0a1948 100644 (file)
@@ -53,7 +53,7 @@ public class PermissionsWsTest {
     WebService.Action action = controller.action("add");
     assertThat(action).isNotNull();
     assertThat(action.handler()).isInstanceOf(RailsHandler.INSTANCE.getClass());
-    assertThat(action.params()).hasSize(4);
+    assertThat(action.params()).hasSize(5);
 
     WebService.Param permission = action.param("permission");
     assertThat(permission).isNotNull();
@@ -67,6 +67,6 @@ public class PermissionsWsTest {
     WebService.Action action = controller.action("remove");
     assertThat(action).isNotNull();
     assertThat(action.handler()).isInstanceOf(RailsHandler.INSTANCE.getClass());
-    assertThat(action.params()).hasSize(4);
+    assertThat(action.params()).hasSize(5);
   }
 }
index 6042f2aed651814a5efbc6de86bdc722fb7df99f..0fe35a51a2b3a99cbb943a2fd24a232330ad9e1b 100644 (file)
@@ -43,7 +43,18 @@ public class ServerWsTest {
     assertThat(controller).isNotNull();
     assertThat(controller.since()).isEqualTo("2.10");
     assertThat(controller.description()).isNotEmpty();
-    assertThat(controller.actions()).hasSize(2);
+    assertThat(controller.actions()).hasSize(3);
+  }
+
+  @Test
+  public void define_index_action() throws Exception {
+    WebService.Controller controller = tester.controller("api/server");
+
+    WebService.Action action = controller.action("index");
+    assertThat(action).isNotNull();
+    assertThat(action.handler()).isInstanceOf(RailsHandler.class);
+    assertThat(action.responseExampleAsString()).isNotEmpty();
+    assertThat(action.params()).hasSize(1);
   }
 
   @Test
@@ -54,7 +65,7 @@ public class ServerWsTest {
     assertThat(action).isNotNull();
     assertThat(action.handler()).isInstanceOf(RailsHandler.class);
     assertThat(action.responseExampleAsString()).isNotEmpty();
-    assertThat(action.params()).isEmpty();
+    assertThat(action.params()).hasSize(1);
   }
 
   @Test
@@ -65,6 +76,6 @@ public class ServerWsTest {
     assertThat(action).isNotNull();
     assertThat(action.handler()).isInstanceOf(RailsHandler.class);
     assertThat(action.responseExampleAsString()).isNotEmpty();
-    assertThat(action.params()).isEmpty();
+    assertThat(action.params()).hasSize(1);
   }
 }
index 34bb4606c5b53be2ce12f87e9e3cdc877d772d39..90ed92a3398d83afd822634e990110ec2bd96f90 100644 (file)
@@ -46,7 +46,7 @@ public class ProfilesWsTest {
     assertThat(controller).isNotNull();
     assertThat(controller.path()).isEqualTo("api/profiles");
     assertThat(controller.description()).isNotEmpty();
-    assertThat(controller.actions()).hasSize(5);
+    assertThat(controller.actions()).hasSize(6);
   }
 
   @Test
@@ -57,7 +57,18 @@ public class ProfilesWsTest {
     assertThat(restoreProfiles).isNotNull();
     assertThat(restoreProfiles.handler()).isInstanceOf(RailsHandler.class);
     assertThat(restoreProfiles.responseExampleAsString()).isNotEmpty();
-    assertThat(restoreProfiles.params()).hasSize(2);
+    assertThat(restoreProfiles.params()).hasSize(3);
+  }
+
+  @Test
+  public void define_index_action() throws Exception {
+    WebService.Controller controller = tester.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
@@ -67,7 +78,7 @@ public class ProfilesWsTest {
     WebService.Action restoreProfiles = controller.action("backup");
     assertThat(restoreProfiles).isNotNull();
     assertThat(restoreProfiles.handler()).isInstanceOf(RailsHandler.class);
-    assertThat(restoreProfiles.params()).hasSize(2);
+    assertThat(restoreProfiles.params()).hasSize(3);
   }
 
   @Test
@@ -77,7 +88,7 @@ public class ProfilesWsTest {
     WebService.Action restoreProfiles = controller.action("restore");
     assertThat(restoreProfiles).isNotNull();
     assertThat(restoreProfiles.handler()).isInstanceOf(RailsHandler.class);
-    assertThat(restoreProfiles.params()).hasSize(1);
+    assertThat(restoreProfiles.params()).hasSize(2);
   }
 
   @Test
index ed6cd6cf82d51c133e7912ca3d86090ba42f1820..b0475fdec8e3d7c2c223f9e0d2a2e94950ef66bd 100644 (file)
@@ -54,7 +54,7 @@ public class TestsWsTest {
     assertThat(action.isPost()).isFalse();
     assertThat(action.handler()).isInstanceOf(RailsHandler.class);
     assertThat(action.responseExampleAsString()).isNotEmpty();
-    assertThat(action.params()).hasSize(1);
+    assertThat(action.params()).hasSize(2);
   }
 
   @Test
@@ -65,7 +65,7 @@ public class TestsWsTest {
     assertThat(action.isPost()).isFalse();
     assertThat(action.handler()).isInstanceOf(RailsHandler.class);
     assertThat(action.responseExampleAsString()).isNotEmpty();
-    assertThat(action.params()).hasSize(1);
+    assertThat(action.params()).hasSize(2);
   }
 
 }
index ad6dd204ca75fdd535397d75b8a14ac0c268ce1e..913a14308c826fd0dd551eade6cf5e7f30d7e6e7 100644 (file)
@@ -54,7 +54,7 @@ public class UpdateCenterWsTest {
     assertThat(action).isNotNull();
     assertThat(action.handler()).isInstanceOf(RailsHandler.class);
     assertThat(action.responseExampleAsString()).isNotEmpty();
-    assertThat(action.params()).isEmpty();
+    assertThat(action.params()).hasSize(1);
   }
 
 }
index c9372f4e48c753203b2aa2d3b0f48e3752f36e7c..56c88b139662889cdfb9a9cbd6c77c0a8e69b63c 100644 (file)
@@ -53,7 +53,7 @@ public class UsersWsTest {
     assertThat(action.isPost()).isFalse();
     assertThat(action.handler()).isInstanceOf(RailsHandler.class);
     assertThat(action.responseExampleAsString()).isNotEmpty();
-    assertThat(action.params()).hasSize(2);
+    assertThat(action.params()).hasSize(3);
   }
 
   @Test
@@ -62,7 +62,7 @@ public class UsersWsTest {
     assertThat(action).isNotNull();
     assertThat(action.isPost()).isTrue();
     assertThat(action.handler()).isInstanceOf(RailsHandler.class);
-    assertThat(action.params()).hasSize(5);
+    assertThat(action.params()).hasSize(6);
   }
 
   @Test
@@ -71,7 +71,7 @@ public class UsersWsTest {
     assertThat(action).isNotNull();
     assertThat(action.isPost()).isTrue();
     assertThat(action.handler()).isInstanceOf(RailsHandler.class);
-    assertThat(action.params()).hasSize(3);
+    assertThat(action.params()).hasSize(4);
   }
 
   @Test
@@ -80,7 +80,7 @@ public class UsersWsTest {
     assertThat(action).isNotNull();
     assertThat(action.isPost()).isTrue();
     assertThat(action.handler()).isInstanceOf(RailsHandler.class);
-    assertThat(action.params()).hasSize(1);
+    assertThat(action.params()).hasSize(2);
   }
 
 }