diff --git a/src/main/java/com/suse/saltstack/netapi/parser/JsonParser.java b/src/main/java/com/suse/saltstack/netapi/parser/JsonParser.java index e092598de..8fb9d8f90 100644 --- a/src/main/java/com/suse/saltstack/netapi/parser/JsonParser.java +++ b/src/main/java/com/suse/saltstack/netapi/parser/JsonParser.java @@ -135,6 +135,7 @@ public Date read(JsonReader jsonReader) throws IOException { */ private class OptionalTypeAdapterFactory implements TypeAdapterFactory { + @Override @SuppressWarnings("unchecked") public TypeAdapter create(Gson gson, TypeToken typeToken) { Type type = typeToken.getType(); @@ -151,6 +152,7 @@ public TypeAdapter create(Gson gson, TypeToken typeToken) { private TypeAdapter> optionalAdapter(TypeAdapter innerAdapter) { return new TypeAdapter>() { + @Override public Optional read(JsonReader in) throws IOException { if (in.peek() == JsonToken.NULL) { in.nextNull(); @@ -161,12 +163,12 @@ public Optional read(JsonReader in) throws IOException { } } + @Override public void write(JsonWriter out, Optional optional) throws IOException { innerAdapter.write(out, optional.orElse(null)); } }; } - } /** diff --git a/src/test/java/com/suse/saltstack/netapi/parser/JsonParserTest.java b/src/test/java/com/suse/saltstack/netapi/parser/JsonParserTest.java index a4b50f848..5ed9fd860 100644 --- a/src/test/java/com/suse/saltstack/netapi/parser/JsonParserTest.java +++ b/src/test/java/com/suse/saltstack/netapi/parser/JsonParserTest.java @@ -206,7 +206,6 @@ public void testSaltStackJobsWithKwargsParser() throws Exception { assertEquals("lucid", job.getUser()); } - @Test public void testOptionalParser() { InputStream is = this.getClass() @@ -227,6 +226,19 @@ public void testOptionalParser() { assertEquals(expected, result.maybeInts); } + @Test + public void testOptionalSingleValue() { + JsonParser> parser = + new JsonParser<>(new TypeToken>(){}); + InputStream nullValue = this.getClass() + .getResourceAsStream("/single_null_value.json"); + assertFalse(parser.parse(nullValue).isPresent()); + + InputStream intValue = this.getClass() + .getResourceAsStream("/single_int_value.json"); + assertEquals(new Integer(123), parser.parse(intValue).get()); + } + @Test public void testSaltStackJobsWithArgsAsKwargsParser() throws Exception { InputStream is = this.getClass() diff --git a/src/test/java/com/suse/saltstack/netapi/parser/OptionalTest.java b/src/test/java/com/suse/saltstack/netapi/parser/OptionalTest.java index bf5b18047..94ba7d9a3 100644 --- a/src/test/java/com/suse/saltstack/netapi/parser/OptionalTest.java +++ b/src/test/java/com/suse/saltstack/netapi/parser/OptionalTest.java @@ -12,5 +12,4 @@ public class OptionalTest { public Optional valueString = Optional.empty(); public Optional absentString = Optional.empty(); public List> maybeInts; - } diff --git a/src/test/resources/single_int_value.json b/src/test/resources/single_int_value.json new file mode 100644 index 000000000..d800886d9 --- /dev/null +++ b/src/test/resources/single_int_value.json @@ -0,0 +1 @@ +123 \ No newline at end of file diff --git a/src/test/resources/single_null_value.json b/src/test/resources/single_null_value.json new file mode 100644 index 000000000..ec747fa47 --- /dev/null +++ b/src/test/resources/single_null_value.json @@ -0,0 +1 @@ +null \ No newline at end of file