aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJulien Lancelot <julien.lancelot@sonarsource.com>2014-04-28 11:42:19 +0200
committerJulien Lancelot <julien.lancelot@sonarsource.com>2014-04-28 11:42:19 +0200
commitd1e0a1fff65166ceaed631ebbaeb1c3d8a3c485b (patch)
tree393557d74360cdf42df379865e2373b6569ce33a
parent9f514af85b87f8196528ec1c666072784cced38e (diff)
downloadsonarqube-d1e0a1fff65166ceaed631ebbaeb1c3d8a3c485b.tar.gz
sonarqube-d1e0a1fff65166ceaed631ebbaeb1c3d8a3c485b.zip
Manage l10n message on ServerException
-rw-r--r--sonar-server/src/main/java/org/sonar/server/ws/WebServiceEngine.java11
-rw-r--r--sonar-server/src/test/java/org/sonar/server/ws/WebServiceEngineTest.java21
2 files changed, 26 insertions, 6 deletions
diff --git a/sonar-server/src/main/java/org/sonar/server/ws/WebServiceEngine.java b/sonar-server/src/main/java/org/sonar/server/ws/WebServiceEngine.java
index 1a16244bcc8..2faf1cf4127 100644
--- a/sonar-server/src/main/java/org/sonar/server/ws/WebServiceEngine.java
+++ b/sonar-server/src/main/java/org/sonar/server/ws/WebServiceEngine.java
@@ -90,9 +90,7 @@ public class WebServiceEngine implements ServerComponent, Startable {
} catch (BadRequestException e) {
sendError(e, response);
} catch (ServerException e) {
- // TODO support ServerException l10n messages
- sendError(e.httpCode(), e.getMessage(), response);
-
+ sendError(e.httpCode(), message(e.getMessage(), e.l10nKey(), e.l10nParams()), response);
} catch (Exception e) {
// TODO implement Request.toString()
LoggerFactory.getLogger(getClass()).error("Fail to process request " + request, e);
@@ -121,8 +119,9 @@ public class WebServiceEngine implements ServerComponent, Startable {
private void sendError(BadRequestException e, ServletResponse response) {
Collection<String> messages = Lists.newArrayList();
- if (e.getMessage()!= null || e.l10nKey() != null) {
- messages.add(message(e.getMessage(), e.l10nKey(), e.l10nParams()));
+ String exceptionMessage = message(e.getMessage(), e.l10nKey(), e.l10nParams());
+ if (exceptionMessage != null) {
+ messages.add(exceptionMessage);
}
for (Message message : e.errors()) {
messages.add(message(message.text(), message.l10nKey(), message.l10nParams()));
@@ -139,7 +138,7 @@ public class WebServiceEngine implements ServerComponent, Startable {
}
}
- private void sendError(int status, String message, ServletResponse response) {
+ private void sendError(int status, @Nullable String message, ServletResponse response) {
sendErrors(response, status, message);
}
diff --git a/sonar-server/src/test/java/org/sonar/server/ws/WebServiceEngineTest.java b/sonar-server/src/test/java/org/sonar/server/ws/WebServiceEngineTest.java
index e65e6d0fc47..3a7aa81ede7 100644
--- a/sonar-server/src/test/java/org/sonar/server/ws/WebServiceEngineTest.java
+++ b/sonar-server/src/test/java/org/sonar/server/ws/WebServiceEngineTest.java
@@ -31,6 +31,7 @@ import org.sonar.api.server.ws.Response;
import org.sonar.api.server.ws.WebService;
import org.sonar.server.exceptions.BadRequestException;
import org.sonar.server.exceptions.BadRequestException.Message;
+import org.sonar.server.exceptions.ServerException;
import org.sonar.server.plugins.MimeTypes;
import javax.annotation.CheckForNull;
@@ -246,6 +247,19 @@ public class WebServiceEngineTest {
assertThat(response.stream().mediaType()).isEqualTo(MimeTypes.JSON);
}
+ @Test
+ public void server_exception_with_i18n_message() throws Exception {
+ InternalRequest request = new SimpleRequest();
+ ServletResponse response = new ServletResponse();
+ when(i18n.message(eq(Locale.getDefault()), eq("not.found"), anyString())).thenReturn("Element is not found");
+
+ engine.execute(request, response, "api/system", "server_exception_with_i18n_message");
+
+ assertThat(response.stream().outputAsString()).isEqualTo("{\"errors\":[{\"msg\":\"Element is not found\"}]}");
+ assertThat(response.stream().httpStatus()).isEqualTo(404);
+ assertThat(response.stream().mediaType()).isEqualTo(MimeTypes.JSON);
+ }
+
static class SystemWebService implements WebService {
@Override
public void define(Context context) {
@@ -309,6 +323,13 @@ public class WebServiceEngineTest {
throw BadRequestException.of(errors);
}
});
+ newController.createAction("server_exception_with_i18n_message")
+ .setHandler(new RequestHandler() {
+ @Override
+ public void handle(Request request, Response response) {
+ throw new ServerException(404, null, "not.found", null);
+ }
+ });
newController.createAction("alive")
.setHandler(new RequestHandler() {
@Override