diff options
author | Julien Lancelot <julien.lancelot@sonarsource.com> | 2017-06-14 12:46:57 +0200 |
---|---|---|
committer | Julien Lancelot <julien.lancelot@sonarsource.com> | 2017-06-14 14:43:10 +0200 |
commit | 8b35108c4852be1e995d897bdafbeb846d06fa65 (patch) | |
tree | 1ad4380adfe54a12c1ffa110e748155cedc9f5d8 /server | |
parent | b1984e97578c194302e40377e0b67b82df85c513 (diff) | |
download | sonarqube-8b35108c4852be1e995d897bdafbeb846d06fa65.tar.gz sonarqube-8b35108c4852be1e995d897bdafbeb846d06fa65.zip |
SONAR-9423 Remove protobuf message when failing to write ws response
When the protobuf message is corrupted, trying to return it will fail and will hide the real cause of the issue
Diffstat (limited to 'server')
-rw-r--r-- | server/sonar-server/src/main/java/org/sonar/server/ws/WsUtils.java | 16 | ||||
-rw-r--r-- | server/sonar-server/src/test/java/org/sonar/server/ws/WsUtilsTest.java | 4 |
2 files changed, 10 insertions, 10 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/ws/WsUtils.java b/server/sonar-server/src/main/java/org/sonar/server/ws/WsUtils.java index e0daec42ac1..4f9ee4b1c4b 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/ws/WsUtils.java +++ b/server/sonar-server/src/main/java/org/sonar/server/ws/WsUtils.java @@ -23,7 +23,6 @@ import com.google.common.base.Optional; import com.google.protobuf.Message; import java.io.OutputStream; import java.io.OutputStreamWriter; -import java.nio.charset.StandardCharsets; import java.util.List; import javax.annotation.Nullable; import org.apache.commons.io.IOUtils; @@ -33,10 +32,11 @@ import org.sonar.api.utils.text.JsonWriter; import org.sonar.core.util.ProtobufJsonFormat; import org.sonar.server.exceptions.BadRequestException; import org.sonar.server.exceptions.NotFoundException; -import org.sonarqube.ws.MediaTypes; -import org.sonarqube.ws.MessageFormatter; import static java.lang.String.format; +import static java.nio.charset.StandardCharsets.UTF_8; +import static org.sonarqube.ws.MediaTypes.JSON; +import static org.sonarqube.ws.MediaTypes.PROTOBUF; public class WsUtils { @@ -47,17 +47,17 @@ public class WsUtils { public static void writeProtobuf(Message msg, Request request, Response response) { OutputStream output = response.stream().output(); try { - if (request.getMediaType().equals(MediaTypes.PROTOBUF)) { - response.stream().setMediaType(MediaTypes.PROTOBUF); + if (request.getMediaType().equals(PROTOBUF)) { + response.stream().setMediaType(PROTOBUF); msg.writeTo(output); } else { - response.stream().setMediaType(MediaTypes.JSON); - try (JsonWriter writer = JsonWriter.of(new OutputStreamWriter(output, StandardCharsets.UTF_8))) { + response.stream().setMediaType(JSON); + try (JsonWriter writer = JsonWriter.of(new OutputStreamWriter(output, UTF_8))) { ProtobufJsonFormat.write(msg, writer); } } } catch (Exception e) { - throw new IllegalStateException(format("Error while writing protobuf message %s", MessageFormatter.print(msg)), e); + throw new IllegalStateException("Error while writing protobuf message", e); } finally { IOUtils.closeQuietly(output); } diff --git a/server/sonar-server/src/test/java/org/sonar/server/ws/WsUtilsTest.java b/server/sonar-server/src/test/java/org/sonar/server/ws/WsUtilsTest.java index 3a70d1d23e5..dc4bbf02452 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/ws/WsUtilsTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/ws/WsUtilsTest.java @@ -69,7 +69,7 @@ public class WsUtilsTest { } @Test - public void log_message_when_error_writing_message() throws IOException { + public void rethrow_error_as_ISE_when_error_writing_message() throws IOException { TestRequest request = new TestRequest(); request.setMediaType(MediaTypes.PROTOBUF); @@ -77,7 +77,7 @@ public class WsUtilsTest { expectedException.expect(IllegalStateException.class); expectedException.expectCause(hasType(NullPointerException.class)); - expectedException.expectMessage("Error while writing protobuf message org.sonarqube.ws.WsPermissions.Permission[name: \"permission-name\"]"); + expectedException.expectMessage("Error while writing protobuf message"); // provoke NullPointerException WsUtils.writeProtobuf(message, null, new DumbResponse()); } |