From: Simon Brandhof Date: Tue, 12 Jun 2018 10:52:27 +0000 (+0200) Subject: SONAR-10881 Log flooding when a WS param is not an integer as expected X-Git-Tag: 7.5~983 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=11b5185acd1215b4eec4243caab19e4c14004e89;p=sonarqube.git SONAR-10881 Log flooding when a WS param is not an integer as expected --- diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/server/ws/internal/ValidatingRequest.java b/sonar-plugin-api/src/main/java/org/sonar/api/server/ws/internal/ValidatingRequest.java index 3a97c67b92e..88f4b6f24bf 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/server/ws/internal/ValidatingRequest.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/server/ws/internal/ValidatingRequest.java @@ -216,7 +216,7 @@ public abstract class ValidatingRequest extends Request { try { return Integer.parseInt(value); } catch (NumberFormatException exception) { - throw new IllegalStateException(format("'%s' value '%s' cannot be parsed as an integer", key, value), exception); + throw new IllegalArgumentException(format("'%s' value '%s' cannot be parsed as an integer", key, value), exception); } } diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/server/ws/RequestTest.java b/sonar-plugin-api/src/test/java/org/sonar/api/server/ws/RequestTest.java index d8d9562ce87..9dade321f4d 100644 --- a/sonar-plugin-api/src/test/java/org/sonar/api/server/ws/RequestTest.java +++ b/sonar-plugin-api/src/test/java/org/sonar/api/server/ws/RequestTest.java @@ -60,7 +60,7 @@ public class RequestTest { @Rule public ExpectedException expectedException = ExpectedException.none(); - FakeRequest underTest = new FakeRequest(); + private FakeRequest underTest = new FakeRequest(); @Before public void before() { @@ -144,6 +144,17 @@ public class RequestTest { underTest.setParam(param, "11").param(param); } + @Test + public void paramAsInt_throws_IAE_if_maximum_defined_and_value_not_a_number() { + String param = "maximum_value_param"; + defineParameterTestAction(newParam -> newParam.setMaximumValue(10), param); + + expectedException.expect(IllegalArgumentException.class); + expectedException.expectMessage("'maximum_value_param' value 'foo' cannot be parsed as an integer"); + + underTest.setParam(param, "foo").paramAsInt(param); + } + @Test public void required_param_as_strings() { underTest.setParam("a_required_string", "foo,bar"); @@ -214,7 +225,7 @@ public class RequestTest { } @Test - public void param_as_int() { + public void paramAsInt() { assertThat(underTest.setParam("a_number", "123").paramAsInt("a_number")).isEqualTo(123); assertThat(underTest.setParam("a_number", "123").paramAsInt("a_number", 42)).isEqualTo(123); assertThat(underTest.setParam("a_number", null).paramAsInt("a_number", 42)).isEqualTo(123); @@ -609,7 +620,7 @@ public class RequestTest { } @Test - public void param_as_part() throws Exception { + public void param_as_part() { InputStream inputStream = mock(InputStream.class); underTest.setPart("key", inputStream, "filename"); @@ -621,7 +632,7 @@ public class RequestTest { } @Test - public void mandatory_param_as_part() throws Exception { + public void mandatory_param_as_part() { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("The 'required_param' parameter is missing"); diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/server/ws/internal/SimpleGetRequestTest.java b/sonar-plugin-api/src/test/java/org/sonar/api/server/ws/internal/SimpleGetRequestTest.java index 3aa51ed7be1..46974bd8201 100644 --- a/sonar-plugin-api/src/test/java/org/sonar/api/server/ws/internal/SimpleGetRequestTest.java +++ b/sonar-plugin-api/src/test/java/org/sonar/api/server/ws/internal/SimpleGetRequestTest.java @@ -50,7 +50,7 @@ public class SimpleGetRequestTest { } @Test - public void get_part() throws Exception { + public void get_part() { InputStream inputStream = mock(InputStream.class); underTest.setPart("key", inputStream, "filename");