diff options
author | Simon Brandhof <simon.brandhof@sonarsource.com> | 2014-10-27 17:50:43 +0100 |
---|---|---|
committer | Simon Brandhof <simon.brandhof@sonarsource.com> | 2014-10-27 18:11:29 +0100 |
commit | f50f101dc48599e953a0fb4589c0e6ef2ea1dc6e (patch) | |
tree | cc08de8cd4799be64f597fe3f393894f05adab5c /sonar-plugin-api | |
parent | 2c669a702b79dc58a16c3c7b304ea0469b20147f (diff) | |
download | sonarqube-f50f101dc48599e953a0fb4589c0e6ef2ea1dc6e.tar.gz sonarqube-f50f101dc48599e953a0fb4589c0e6ef2ea1dc6e.zip |
SONAR-5792 Web services should support the values "yes" and "no" on boolean parameters
Diffstat (limited to 'sonar-plugin-api')
3 files changed, 24 insertions, 6 deletions
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/server/ws/Request.java b/sonar-plugin-api/src/main/java/org/sonar/api/server/ws/Request.java index 0344d8b91d3..86f2e56f406 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/server/ws/Request.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/server/ws/Request.java @@ -60,7 +60,7 @@ public abstract class Request { */ public boolean mandatoryParamAsBoolean(String key) { String s = mandatoryParam(key); - return Boolean.parseBoolean(s); + return parseBoolean(key, s); } /** @@ -122,8 +122,8 @@ public abstract class Request { */ @Deprecated public boolean paramAsBoolean(String key, boolean defaultValue) { - String s = param(key); - return s == null ? defaultValue : Boolean.parseBoolean(s); + String value = param(key); + return value == null ? defaultValue : parseBoolean(key, value); } /** @@ -149,8 +149,8 @@ public abstract class Request { @CheckForNull public Boolean paramAsBoolean(String key) { - String s = param(key); - return s == null ? null : Boolean.parseBoolean(s); + String value = param(key); + return value == null ? null : parseBoolean(key, value); } @CheckForNull @@ -210,4 +210,14 @@ public abstract class Request { } return null; } + + private static boolean parseBoolean(String key, String value) { + if ("true".equals(value) || "yes".equals(value)) { + return true; + } + if ("false".equals(value) || "no".equals(value)) { + return false; + } + throw new IllegalArgumentException(String.format("Property %s is not a boolean value: %s", key, value)); + } } diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/server/ws/WebService.java b/sonar-plugin-api/src/main/java/org/sonar/api/server/ws/WebService.java index d08e0fdc923..5b56ef5fef7 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/server/ws/WebService.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/server/ws/WebService.java @@ -494,7 +494,7 @@ public interface WebService extends ServerExtension { * @since 4.4 */ public NewParam setBooleanPossibleValues() { - return setPossibleValues("true", "false"); + return setPossibleValues("true", "false", "yes", "no"); } /** 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 752b0f819ea..db4559a14e9 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 @@ -173,7 +173,15 @@ public class RequestTest { @Test public void param_as_boolean() throws Exception { assertThat(request.setParam("a_boolean", "true").paramAsBoolean("a_boolean")).isTrue(); + assertThat(request.setParam("a_boolean", "yes").paramAsBoolean("a_boolean")).isTrue(); assertThat(request.setParam("a_boolean", "false").paramAsBoolean("a_boolean")).isFalse(); + assertThat(request.setParam("a_boolean", "no").paramAsBoolean("a_boolean")).isFalse(); + try { + request.setParam("a_boolean", "oui").paramAsBoolean("a_boolean"); + fail(); + } catch (IllegalArgumentException e) { + assertThat(e).hasMessage("Property a_boolean is not a boolean value: oui"); + } } @Test |