From ddc3390f81c0e00eba677a24b28f3e46c5b45a50 Mon Sep 17 00:00:00 2001 From: Julien Lancelot Date: Mon, 12 May 2014 17:44:03 +0200 Subject: [PATCH] SONAR-5287 Improve "/api/sources/show" --- .../org/sonar/server/source/ws/ScmWriter.java | 8 +++++--- .../org/sonar/server/source/ws/ShowAction.java | 2 +- .../sonar/server/source/ws/scm-example-show.json | 10 +++++----- .../sonar/server/source/ws/ScmWriterTest.java | 16 ++++++++-------- 4 files changed, 19 insertions(+), 17 deletions(-) diff --git a/sonar-server/src/main/java/org/sonar/server/source/ws/ScmWriter.java b/sonar-server/src/main/java/org/sonar/server/source/ws/ScmWriter.java index d00b837c365..38137894c00 100644 --- a/sonar-server/src/main/java/org/sonar/server/source/ws/ScmWriter.java +++ b/sonar-server/src/main/java/org/sonar/server/source/ws/ScmWriter.java @@ -25,6 +25,7 @@ import org.sonar.api.utils.DateUtils; import org.sonar.api.utils.text.JsonWriter; import javax.annotation.Nullable; + import java.util.Collections; import java.util.List; @@ -33,7 +34,7 @@ import static com.google.common.collect.Lists.newArrayList; public class ScmWriter implements ServerComponent { void write(@Nullable String authorsData, @Nullable String datesDate, int from, int to, boolean group, JsonWriter json) { - json.name("scm").beginObject(); + json.name("scm").beginArray(); if (authorsData != null) { List authors = splitLine(authorsData); List dates = splitLine(datesDate); @@ -51,7 +52,8 @@ public class ScmWriter implements ServerComponent { String formattedDate = DateUtils.formatDate(DateUtils.parseDateTime(date)); if (line >= from && line <= to) { if (!started || !group || !isSameCommit(date, previousDate, author, previousAuthor)) { - json.name(Integer.toString(line)).beginArray(); + json.beginArray(); + json.value(line); json.value(author); json.value(formattedDate); json.endArray(); @@ -62,7 +64,7 @@ public class ScmWriter implements ServerComponent { previousDate = date; } } - json.endObject(); + json.endArray(); } private List splitLine(@Nullable String line) { diff --git a/sonar-server/src/main/java/org/sonar/server/source/ws/ShowAction.java b/sonar-server/src/main/java/org/sonar/server/source/ws/ShowAction.java index 7b54a4cbc8b..cd2f7d44255 100644 --- a/sonar-server/src/main/java/org/sonar/server/source/ws/ShowAction.java +++ b/sonar-server/src/main/java/org/sonar/server/source/ws/ShowAction.java @@ -41,7 +41,7 @@ public class ShowAction implements RequestHandler { void define(WebService.NewController controller) { WebService.NewAction action = controller.createAction("show") - .setDescription("Get source code. Parameter 'output' with value 'raw' is missing before being marked as a public WS") + .setDescription("Get source code") .setSince("4.4") .setResponseExample(Resources.getResource(getClass(), "show-example-show.json")) .setHandler(this); diff --git a/sonar-server/src/main/resources/org/sonar/server/source/ws/scm-example-show.json b/sonar-server/src/main/resources/org/sonar/server/source/ws/scm-example-show.json index 54e9187c2cc..513f3e4a17f 100644 --- a/sonar-server/src/main/resources/org/sonar/server/source/ws/scm-example-show.json +++ b/sonar-server/src/main/resources/org/sonar/server/source/ws/scm-example-show.json @@ -1,7 +1,7 @@ { - "scm": { - "1": ["julien", "2013-03-13"], - "2": ["julien", "2013-03-13"], - "3": ["simon", "2014-01-01"] - } + "scm": [ + [1, "julien", "2013-03-13"], + [2, "julien", "2013-03-14"], + [3, "simon", "2014-01-01"] + ] } diff --git a/sonar-server/src/test/java/org/sonar/server/source/ws/ScmWriterTest.java b/sonar-server/src/test/java/org/sonar/server/source/ws/ScmWriterTest.java index 38180128243..62ce9715788 100644 --- a/sonar-server/src/test/java/org/sonar/server/source/ws/ScmWriterTest.java +++ b/sonar-server/src/test/java/org/sonar/server/source/ws/ScmWriterTest.java @@ -34,7 +34,7 @@ public class ScmWriterTest { public void write_authors_and_dates() throws Exception { // same commit on lines 1 and 2 test("1=julien;2=julien;3=simon;", "1=2013-03-13T16:22:31+0100;2=2013-03-13T16:22:31+0100;3=2014-01-01T16:22:31+0100;", 1, Integer.MAX_VALUE, false, - "{\"scm\": {\"1\": [\"julien\", \"2013-03-13\"], \"2\": [\"julien\", \"2013-03-13\"], \"3\": [\"simon\", \"2014-01-01\"]}}"); + "{\"scm\": [[1, \"julien\", \"2013-03-13\"], [2, \"julien\", \"2013-03-13\"], [3, \"simon\", \"2014-01-01\"]]}"); } @Test @@ -42,9 +42,9 @@ public class ScmWriterTest { String authors = "1=julien;2=simon;"; String dates = "1=2013-03-13T16:22:31+0100;2=2014-01-01T16:22:31+0100;"; - test(authors, dates, 2, 200, false, "{\"scm\": {\"2\": [\"simon\", \"2014-01-01\"]}}"); - test(authors, dates, 3, 5, false, "{\"scm\": {}}"); - test(authors, dates, -2, 1, false, "{\"scm\": {\"1\": [\"julien\", \"2013-03-13\"]}}"); + test(authors, dates, 2, 200, false, "{\"scm\": [[2, \"simon\", \"2014-01-01\"]]}"); + test(authors, dates, 3, 5, false, "{\"scm\": []}"); + test(authors, dates, -2, 1, false, "{\"scm\": [[1, \"julien\", \"2013-03-13\"]]}"); } @Test @@ -54,13 +54,13 @@ public class ScmWriterTest { String dates = "1=2013-03-13T16:22:31+0100;2=2013-03-13T16:22:31+0100;3=2013-03-14T16:22:31+0100;4=2014-01-01T16:22:31+0100"; test(authors, dates, 1, Integer.MAX_VALUE, true, - "{\"scm\": {\"1\": [\"julien\", \"2013-03-13\"], \"3\": [\"julien\", \"2013-03-14\"], \"4\": [\"simon\", \"2014-01-01\"]}}"); + "{\"scm\": [[1, \"julien\", \"2013-03-13\"], [3, \"julien\", \"2013-03-14\"], [4, \"simon\", \"2014-01-01\"]]}"); test(authors, dates, 2, 4, true, - "{\"scm\": {\"2\": [\"julien\", \"2013-03-13\"], \"3\": [\"julien\", \"2013-03-14\"], \"4\": [\"simon\", \"2014-01-01\"]}}"); + "{\"scm\": [[2, \"julien\", \"2013-03-13\"], [3, \"julien\", \"2013-03-14\"], [4, \"simon\", \"2014-01-01\"]]}"); - test(authors, dates, 1, 2, true, "{\"scm\": {\"1\": [\"julien\", \"2013-03-13\"]}}"); - test(authors, dates, 10, 20, true, "{\"scm\": {}}"); + test(authors, dates, 1, 2, true, "{\"scm\": [[1, \"julien\", \"2013-03-13\"]]}"); + test(authors, dates, 10, 20, true, "{\"scm\": []}"); } -- 2.39.5