Skip to content

Commit a5513b4

Browse files
committed
Fix the JSON input/output
1 parent 7fcd5e1 commit a5513b4

4 files changed

Lines changed: 25 additions & 17 deletions

File tree

lib/src/main/java/org/sonarsource/scanner/lib/internal/JavaRunner.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -88,11 +88,11 @@ void tryParse(String stdout) {
8888
if (log.message != null) {
8989
sb.append(log.message);
9090
}
91-
if (log.message != null && log.throwable != null) {
91+
if (log.message != null && log.stacktrace != null) {
9292
sb.append("\n");
9393
}
94-
if (log.throwable != null) {
95-
sb.append(log.throwable);
94+
if (log.stacktrace != null) {
95+
sb.append(log.stacktrace);
9696
}
9797
log(log.level, sb.toString());
9898
} catch (Exception e) {
@@ -123,10 +123,10 @@ private static void log(String level, String msg) {
123123
private static class Log {
124124
@SerializedName("level")
125125
private String level;
126-
@SerializedName("formattedMessage")
126+
@SerializedName("message")
127127
private String message;
128-
@SerializedName("throwable")
129-
private String throwable;
128+
@SerializedName("stacktrace")
129+
private String stacktrace;
130130
}
131131

132132
private static class StreamGobbler extends Thread {

lib/src/main/java/org/sonarsource/scanner/lib/internal/ScannerEngineLauncher.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
package org.sonarsource.scanner.lib.internal;
2121

2222
import com.google.gson.Gson;
23+
import com.google.gson.JsonArray;
2324
import com.google.gson.JsonObject;
2425
import java.util.ArrayList;
2526
import java.util.Arrays;
@@ -68,8 +69,15 @@ private static List<String> split(String value) {
6869
}
6970

7071
private static String buildJsonProperties(Map<String, String> properties) {
72+
JsonArray propertiesArray = new JsonArray();
73+
properties.entrySet().stream().sorted(Map.Entry.comparingByKey()).forEach(prop -> {
74+
JsonObject property = new JsonObject();
75+
property.addProperty("key", prop.getKey());
76+
property.addProperty("value", prop.getValue());
77+
propertiesArray.add(property);
78+
});
7179
JsonObject jsonObject = new JsonObject();
72-
jsonObject.add(JSON_FIELD_SCANNER_PROPERTIES, new Gson().toJsonTree(properties));
80+
jsonObject.add(JSON_FIELD_SCANNER_PROPERTIES, propertiesArray);
7381
return new Gson().toJson(jsonObject);
7482
}
7583

lib/src/test/java/org/sonarsource/scanner/lib/internal/JavaRunnerTest.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -69,14 +69,14 @@ void tryParse_shouldParseLogMessages() {
6969

7070
runner.tryParse("{\n" +
7171
" \"level\": \"ERROR\",\n" +
72-
" \"formattedMessage\": \"Some error message\",\n" +
73-
" \"throwable\": \"exception\"\n" +
72+
" \"message\": \"Some error message\",\n" +
73+
" \"stacktrace\": \"exception\"\n" +
7474
"}");
75-
runner.tryParse("{\"level\": \"WARN\", \"formattedMessage\": \"Some warn message\"}");
76-
runner.tryParse("{\"level\": \"DEBUG\", \"formattedMessage\": \"Some debug message\"}");
77-
runner.tryParse("{\"level\": \"TRACE\", \"formattedMessage\": \"Some trace message\"}");
78-
runner.tryParse("{\"level\": \"INFO\", \"formattedMessage\": \"Some info message\"}");
79-
runner.tryParse("{\"level\": \"UNKNOWN-LEVEL\", \"formattedMessage\": \"Some unknown level message\"}");
75+
runner.tryParse("{\"level\": \"WARN\", \"message\": \"Some warn message\"}");
76+
runner.tryParse("{\"level\": \"DEBUG\", \"message\": \"Some debug message\"}");
77+
runner.tryParse("{\"level\": \"TRACE\", \"message\": \"Some trace message\"}");
78+
runner.tryParse("{\"level\": \"INFO\", \"message\": \"Some info message\"}");
79+
runner.tryParse("{\"level\": \"UNKNOWN-LEVEL\", \"message\": \"Some unknown level message\"}");
8080

8181
assertThat(logTester.logs(Level.ERROR)).containsOnly("Some error message\nexception");
8282
assertThat(logTester.logs(Level.WARN)).containsOnly("Some warn message");

lib/src/test/java/org/sonarsource/scanner/lib/internal/ScannerEngineLauncherTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
*/
2020
package org.sonarsource.scanner.lib.internal;
2121

22-
import com.google.gson.Gson;
2322
import java.nio.file.Path;
2423
import java.util.List;
2524
import java.util.Map;
@@ -43,12 +42,13 @@ void execute() {
4342
var scannerEngine = temp.resolve("scanner-engine.jar");
4443
ScannerEngineLauncher launcher = new ScannerEngineLauncher(javaRunner, new CachedFile(scannerEngine, true));
4544

46-
Map<String, String> properties = Map.of(ScannerProperties.SCANNER_JAVA_OPTS, "-Xmx4g -Xms1g",
45+
Map<String, String> properties = Map.of(
46+
ScannerProperties.SCANNER_JAVA_OPTS, "-Xmx4g -Xms1g",
4747
ScannerProperties.HOST_URL, "http://localhost:9000");
4848
launcher.execute(properties);
4949

5050
verify(javaRunner).execute(
5151
List.of("-Xmx4g", "-Xms1g", "-jar", scannerEngine.toAbsolutePath().toString()),
52-
"{\"scannerProperties\":" + new Gson().toJson(properties) + "}");
52+
"{\"scannerProperties\":[{\"key\":\"sonar.host.url\",\"value\":\"http://localhost:9000\"},{\"key\":\"sonar.scanner.javaOpts\",\"value\":\"-Xmx4g -Xms1g\"}]}");
5353
}
5454
}

0 commit comments

Comments
 (0)