diff --git a/acme4j-client/src/main/java/org/shredzone/acme4j/util/JSON.java b/acme4j-client/src/main/java/org/shredzone/acme4j/util/JSON.java index fcdb7f98..0f6acbd7 100644 --- a/acme4j-client/src/main/java/org/shredzone/acme4j/util/JSON.java +++ b/acme4j-client/src/main/java/org/shredzone/acme4j/util/JSON.java @@ -326,6 +326,21 @@ public final class JSON implements Serializable { } } + /** + * Returns the value as boolean. + * + * @return integer value + */ + public boolean asBoolean() { + required(); + + try { + return (Boolean) val; + } catch (ClassCastException ex) { + throw new AcmeProtocolException(path + ": bad boolean " + val, ex); + } + } + /** * Returns the value as {@link URI}. * diff --git a/acme4j-client/src/test/java/org/shredzone/acme4j/util/JSONTest.java b/acme4j-client/src/test/java/org/shredzone/acme4j/util/JSONTest.java index c828ae6c..ad5fb34e 100644 --- a/acme4j-client/src/test/java/org/shredzone/acme4j/util/JSONTest.java +++ b/acme4j-client/src/test/java/org/shredzone/acme4j/util/JSONTest.java @@ -84,7 +84,7 @@ public class JSONTest { JSON json = TestUtils.getJsonAsObject("json"); assertThat(json.keySet(), containsInAnyOrder( - "text", "number", "uri", "url", "date", "array", "collect")); + "text", "number", "boolean", "uri", "url", "date", "array", "collect")); assertThat(json.contains("text"), is(true)); assertThat(json.contains("music"), is(false)); assertThat(json.get("text"), is(notNullValue())); @@ -174,6 +174,7 @@ public class JSONTest { assertThat(json.get("text").asString(), is("lorem ipsum")); assertThat(json.get("number").asInt(), is(123)); + assertThat(json.get("boolean").asBoolean(), is(true)); assertThat(json.get("uri").asURI(), is(URI.create("mailto:foo@example.com"))); assertThat(json.get("url").asURL(), is(new URL("http://example.com"))); assertThat(json.get("date").asInstant(), is(date)); @@ -213,6 +214,13 @@ public class JSONTest { // expected } + try { + json.get("none").asBoolean(); + fail("asBoolean did not fail"); + } catch (AcmeProtocolException ex) { + // expected + } + try { json.get("none").required(); fail("required did not fail");