From 008dcd97794317f200949b52fa1b5a6dd5fbb04d Mon Sep 17 00:00:00 2001 From: Julien Lancelot Date: Fri, 9 May 2014 09:30:43 +0200 Subject: [PATCH] SONAR-5111 Add missing format parameters --- .../org/sonar/api/server/ws/RailsHandler.java | 20 ++++++ .../authentication/ws/AuthenticationWs.java | 10 ++- .../server/component/ws/ComponentsWs.java | 2 + .../sonar/server/component/ws/ProjectsWs.java | 7 +- .../server/component/ws/ResourcesWs.java | 8 ++- .../server/issue/actionplan/ActionPlanWs.java | 69 +++++++++++++------ .../org/sonar/server/issue/ws/IssuesWs.java | 46 ++++++++++++- .../server/measure/ws/TimeMachineWs.java | 4 ++ .../server/permission/ws/PermissionsWs.java | 2 + .../sonar/server/platform/ws/ServerWs.java | 27 +++++++- .../server/qualityprofile/ws/ProfilesWs.java | 21 ++++++ .../org/sonar/server/test/ws/TestsWs.java | 2 + .../updatecenter/ws/UpdateCenterWs.java | 3 +- .../org/sonar/server/user/ws/UsersWs.java | 8 +++ .../component/ws/projects-example-create.json | 8 +++ .../server/issue/ws/example-changelog.json | 14 ++++ .../server/platform/ws/example-index.json | 5 ++ .../qualityprofile/ws/example-index.json | 41 +++++++++++ .../ws/AuthenticationWsTest.java | 2 +- .../server/component/ws/ComponentsWsTest.java | 2 +- .../server/component/ws/ProjectsWsTest.java | 5 +- .../server/component/ws/ResourcesWsTest.java | 4 +- .../issue/actionplan/ActionPlanWsTest.java | 12 ++-- .../sonar/server/issue/ws/IssuesWsTest.java | 44 +++++++++--- .../server/measure/ws/TimeMachineWsTest.java | 2 +- .../permission/ws/PermissionsWsTest.java | 4 +- .../server/platform/ws/ServerWsTest.java | 17 ++++- .../qualityprofile/ws/ProfilesWsTest.java | 19 +++-- .../org/sonar/server/test/ws/TestsWsTest.java | 4 +- .../updatecenter/ws/UpdateCenterWsTest.java | 2 +- .../org/sonar/server/user/ws/UsersWsTest.java | 8 +-- 31 files changed, 353 insertions(+), 69 deletions(-) create mode 100644 sonar-server/src/main/resources/org/sonar/server/component/ws/projects-example-create.json create mode 100644 sonar-server/src/main/resources/org/sonar/server/issue/ws/example-changelog.json create mode 100644 sonar-server/src/main/resources/org/sonar/server/platform/ws/example-index.json create mode 100644 sonar-server/src/main/resources/org/sonar/server/qualityprofile/ws/example-index.json diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/server/ws/RailsHandler.java b/sonar-plugin-api/src/main/java/org/sonar/api/server/ws/RailsHandler.java index 87f798b5250..9b0342574d6 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/server/ws/RailsHandler.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/server/ws/RailsHandler.java @@ -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:" + + "" + + "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"); + } + } diff --git a/sonar-server/src/main/java/org/sonar/server/authentication/ws/AuthenticationWs.java b/sonar-server/src/main/java/org/sonar/server/authentication/ws/AuthenticationWs.java index 6de8f943005..d928302540d 100644 --- a/sonar-server/src/main/java/org/sonar/server/authentication/ws/AuthenticationWs.java +++ b/sonar-server/src/main/java/org/sonar/server/authentication/ws/AuthenticationWs.java @@ -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); } } diff --git a/sonar-server/src/main/java/org/sonar/server/component/ws/ComponentsWs.java b/sonar-server/src/main/java/org/sonar/server/component/ws/ComponentsWs.java index e8e03caf642..0dc9390e5b5 100644 --- a/sonar-server/src/main/java/org/sonar/server/component/ws/ComponentsWs.java +++ b/sonar-server/src/main/java/org/sonar/server/component/ws/ComponentsWs.java @@ -49,6 +49,8 @@ public class ComponentsWs implements WebService { .setRequired(true) .setDescription("Substring of project key (minimum 2 characters)") .setExampleValue("sonar"); + + RailsHandler.addJsonOnlyFormatParam(action); } } diff --git a/sonar-server/src/main/java/org/sonar/server/component/ws/ProjectsWs.java b/sonar-server/src/main/java/org/sonar/server/component/ws/ProjectsWs.java index 532fe26033a..5bb14174d3e 100644 --- a/sonar-server/src/main/java/org/sonar/server/component/ws/ProjectsWs.java +++ b/sonar-server/src/main/java/org/sonar/server/component/ws/ProjectsWs.java @@ -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) { diff --git a/sonar-server/src/main/java/org/sonar/server/component/ws/ResourcesWs.java b/sonar-server/src/main/java/org/sonar/server/component/ws/ResourcesWs.java index e7c2552b865..6431124137f 100644 --- a/sonar-server/src/main/java/org/sonar/server/component/ws/ResourcesWs.java +++ b/sonar-server/src/main/java/org/sonar/server/component/ws/ResourcesWs.java @@ -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); } } diff --git a/sonar-server/src/main/java/org/sonar/server/issue/actionplan/ActionPlanWs.java b/sonar-server/src/main/java/org/sonar/server/issue/actionplan/ActionPlanWs.java index e8cd57aeac4..c9b8a51d959 100644 --- a/sonar-server/src/main/java/org/sonar/server/issue/actionplan/ActionPlanWs.java +++ b/sonar-server/src/main/java/org/sonar/server/issue/actionplan/ActionPlanWs.java @@ -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); + } } diff --git a/sonar-server/src/main/java/org/sonar/server/issue/ws/IssuesWs.java b/sonar-server/src/main/java/org/sonar/server/issue/ws/IssuesWs.java index c1b19f522c9..7ee8710c8b2 100644 --- a/sonar-server/src/main/java/org/sonar/server/issue/ws/IssuesWs.java +++ b/sonar-server/src/main/java/org/sonar/server/issue/ws/IssuesWs.java @@ -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); } } diff --git a/sonar-server/src/main/java/org/sonar/server/measure/ws/TimeMachineWs.java b/sonar-server/src/main/java/org/sonar/server/measure/ws/TimeMachineWs.java index 153ad047268..ef6b1e2d7c5 100644 --- a/sonar-server/src/main/java/org/sonar/server/measure/ws/TimeMachineWs.java +++ b/sonar-server/src/main/java/org/sonar/server/measure/ws/TimeMachineWs.java @@ -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"); } } diff --git a/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionsWs.java b/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionsWs.java index 28460946e65..4ad77024acf 100644 --- a/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionsWs.java +++ b/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionsWs.java @@ -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); } } diff --git a/sonar-server/src/main/java/org/sonar/server/platform/ws/ServerWs.java b/sonar-server/src/main/java/org/sonar/server/platform/ws/ServerWs.java index 7a51f554748..b6e8ddf66f3 100644 --- a/sonar-server/src/main/java/org/sonar/server/platform/ws/ServerWs.java +++ b/sonar-server/src/main/java/org/sonar/server/platform/ws/ServerWs.java @@ -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:" + + "") + .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"); } } diff --git a/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ProfilesWs.java b/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ProfilesWs.java index 2b34d05453f..1baaccc40c3 100644 --- a/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ProfilesWs.java +++ b/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ProfilesWs.java @@ -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) { diff --git a/sonar-server/src/main/java/org/sonar/server/test/ws/TestsWs.java b/sonar-server/src/main/java/org/sonar/server/test/ws/TestsWs.java index 87e20b42fb5..4f442b3ca06 100644 --- a/sonar-server/src/main/java/org/sonar/server/test/ws/TestsWs.java +++ b/sonar-server/src/main/java/org/sonar/server/test/ws/TestsWs.java @@ -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); } } diff --git a/sonar-server/src/main/java/org/sonar/server/updatecenter/ws/UpdateCenterWs.java b/sonar-server/src/main/java/org/sonar/server/updatecenter/ws/UpdateCenterWs.java index b777f6a73cb..ca1d02df2ff 100644 --- a/sonar-server/src/main/java/org/sonar/server/updatecenter/ws/UpdateCenterWs.java +++ b/sonar-server/src/main/java/org/sonar/server/updatecenter/ws/UpdateCenterWs.java @@ -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); } } diff --git a/sonar-server/src/main/java/org/sonar/server/user/ws/UsersWs.java b/sonar-server/src/main/java/org/sonar/server/user/ws/UsersWs.java index 531c6466450..f2785f2c268 100644 --- a/sonar-server/src/main/java/org/sonar/server/user/ws/UsersWs.java +++ b/sonar-server/src/main/java/org/sonar/server/user/ws/UsersWs.java @@ -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 index 00000000000..043c4bb391d --- /dev/null +++ b/sonar-server/src/main/resources/org/sonar/server/component/ws/projects-example-create.json @@ -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 index 00000000000..44c15e49fb6 --- /dev/null +++ b/sonar-server/src/main/resources/org/sonar/server/issue/ws/example-changelog.json @@ -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 index 00000000000..24651183e08 --- /dev/null +++ b/sonar-server/src/main/resources/org/sonar/server/platform/ws/example-index.json @@ -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 index 00000000000..b80303d34e6 --- /dev/null +++ b/sonar-server/src/main/resources/org/sonar/server/qualityprofile/ws/example-index.json @@ -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" + } + ] + } + ] + } +] diff --git a/sonar-server/src/test/java/org/sonar/server/authentication/ws/AuthenticationWsTest.java b/sonar-server/src/test/java/org/sonar/server/authentication/ws/AuthenticationWsTest.java index d131b88e706..e4d33fb790b 100644 --- a/sonar-server/src/test/java/org/sonar/server/authentication/ws/AuthenticationWsTest.java +++ b/sonar-server/src/test/java/org/sonar/server/authentication/ws/AuthenticationWsTest.java @@ -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); } } diff --git a/sonar-server/src/test/java/org/sonar/server/component/ws/ComponentsWsTest.java b/sonar-server/src/test/java/org/sonar/server/component/ws/ComponentsWsTest.java index d7b235704a9..b1fe015bc65 100644 --- a/sonar-server/src/test/java/org/sonar/server/component/ws/ComponentsWsTest.java +++ b/sonar-server/src/test/java/org/sonar/server/component/ws/ComponentsWsTest.java @@ -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); } } diff --git a/sonar-server/src/test/java/org/sonar/server/component/ws/ProjectsWsTest.java b/sonar-server/src/test/java/org/sonar/server/component/ws/ProjectsWsTest.java index c1c69800e1f..9a978d15338 100644 --- a/sonar-server/src/test/java/org/sonar/server/component/ws/ProjectsWsTest.java +++ b/sonar-server/src/test/java/org/sonar/server/component/ws/ProjectsWsTest.java @@ -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 diff --git a/sonar-server/src/test/java/org/sonar/server/component/ws/ResourcesWsTest.java b/sonar-server/src/test/java/org/sonar/server/component/ws/ResourcesWsTest.java index 71eb9571db3..497a9fa5fcf 100644 --- a/sonar-server/src/test/java/org/sonar/server/component/ws/ResourcesWsTest.java +++ b/sonar-server/src/test/java/org/sonar/server/component/ws/ResourcesWsTest.java @@ -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); } } diff --git a/sonar-server/src/test/java/org/sonar/server/issue/actionplan/ActionPlanWsTest.java b/sonar-server/src/test/java/org/sonar/server/issue/actionplan/ActionPlanWsTest.java index 7d0677e13ec..f01abb4ca51 100644 --- a/sonar-server/src/test/java/org/sonar/server/issue/actionplan/ActionPlanWsTest.java +++ b/sonar-server/src/test/java/org/sonar/server/issue/actionplan/ActionPlanWsTest.java @@ -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); } } diff --git a/sonar-server/src/test/java/org/sonar/server/issue/ws/IssuesWsTest.java b/sonar-server/src/test/java/org/sonar/server/issue/ws/IssuesWsTest.java index c797715cc85..6c01dae5efb 100644 --- a/sonar-server/src/test/java/org/sonar/server/issue/ws/IssuesWsTest.java +++ b/sonar-server/src/test/java/org/sonar/server/issue/ws/IssuesWsTest.java @@ -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); } } diff --git a/sonar-server/src/test/java/org/sonar/server/measure/ws/TimeMachineWsTest.java b/sonar-server/src/test/java/org/sonar/server/measure/ws/TimeMachineWsTest.java index 2b8b1df091d..25c29b65132 100644 --- a/sonar-server/src/test/java/org/sonar/server/measure/ws/TimeMachineWsTest.java +++ b/sonar-server/src/test/java/org/sonar/server/measure/ws/TimeMachineWsTest.java @@ -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); } } diff --git a/sonar-server/src/test/java/org/sonar/server/permission/ws/PermissionsWsTest.java b/sonar-server/src/test/java/org/sonar/server/permission/ws/PermissionsWsTest.java index fc2fde4fb5a..b7c057dcf5b 100644 --- a/sonar-server/src/test/java/org/sonar/server/permission/ws/PermissionsWsTest.java +++ b/sonar-server/src/test/java/org/sonar/server/permission/ws/PermissionsWsTest.java @@ -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); } } diff --git a/sonar-server/src/test/java/org/sonar/server/platform/ws/ServerWsTest.java b/sonar-server/src/test/java/org/sonar/server/platform/ws/ServerWsTest.java index 6042f2aed65..0fe35a51a2b 100644 --- a/sonar-server/src/test/java/org/sonar/server/platform/ws/ServerWsTest.java +++ b/sonar-server/src/test/java/org/sonar/server/platform/ws/ServerWsTest.java @@ -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); } } diff --git a/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ProfilesWsTest.java b/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ProfilesWsTest.java index 34bb4606c5b..90ed92a3398 100644 --- a/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ProfilesWsTest.java +++ b/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ProfilesWsTest.java @@ -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 diff --git a/sonar-server/src/test/java/org/sonar/server/test/ws/TestsWsTest.java b/sonar-server/src/test/java/org/sonar/server/test/ws/TestsWsTest.java index ed6cd6cf82d..b0475fdec8e 100644 --- a/sonar-server/src/test/java/org/sonar/server/test/ws/TestsWsTest.java +++ b/sonar-server/src/test/java/org/sonar/server/test/ws/TestsWsTest.java @@ -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); } } diff --git a/sonar-server/src/test/java/org/sonar/server/updatecenter/ws/UpdateCenterWsTest.java b/sonar-server/src/test/java/org/sonar/server/updatecenter/ws/UpdateCenterWsTest.java index ad6dd204ca7..913a14308c8 100644 --- a/sonar-server/src/test/java/org/sonar/server/updatecenter/ws/UpdateCenterWsTest.java +++ b/sonar-server/src/test/java/org/sonar/server/updatecenter/ws/UpdateCenterWsTest.java @@ -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); } } diff --git a/sonar-server/src/test/java/org/sonar/server/user/ws/UsersWsTest.java b/sonar-server/src/test/java/org/sonar/server/user/ws/UsersWsTest.java index c9372f4e48c..56c88b13966 100644 --- a/sonar-server/src/test/java/org/sonar/server/user/ws/UsersWsTest.java +++ b/sonar-server/src/test/java/org/sonar/server/user/ws/UsersWsTest.java @@ -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); } } -- 2.39.5