diff --git a/gson/src/main/java/com/google/gson/internal/bind/JsonTreeWriter.java b/gson/src/main/java/com/google/gson/internal/bind/JsonTreeWriter.java index e28fbfeb34..80aebd9e2e 100644 --- a/gson/src/main/java/com/google/gson/internal/bind/JsonTreeWriter.java +++ b/gson/src/main/java/com/google/gson/internal/bind/JsonTreeWriter.java @@ -152,6 +152,10 @@ private void put(JsonElement value) { return this; } + @Override public JsonWriter jsonValue(String value) throws IOException { + throw new UnsupportedOperationException(); + } + @Override public JsonWriter nullValue() throws IOException { put(JsonNull.INSTANCE); return this; diff --git a/gson/src/main/java/com/google/gson/stream/JsonWriter.java b/gson/src/main/java/com/google/gson/stream/JsonWriter.java index 1cc408cdb1..0ed7196ce2 100644 --- a/gson/src/main/java/com/google/gson/stream/JsonWriter.java +++ b/gson/src/main/java/com/google/gson/stream/JsonWriter.java @@ -426,10 +426,13 @@ public JsonWriter value(String value) throws IOException { /** * Writes {@code value} directly to the writer without quoting or - * escaping. + * escaping. This might not be supported by all implementations, if + * not supported an {@code UnsupportedOperationException} is thrown. * * @param value the literal string value, or null to encode a null literal. * @return this writer. + * @throws UnsupportedOperationException if this writer does not support + * writing raw JSON values. */ public JsonWriter jsonValue(String value) throws IOException { if (value == null) { diff --git a/gson/src/test/java/com/google/gson/internal/bind/JsonTreeWriterTest.java b/gson/src/test/java/com/google/gson/internal/bind/JsonTreeWriterTest.java index 3167be1319..0207b1674a 100644 --- a/gson/src/test/java/com/google/gson/internal/bind/JsonTreeWriterTest.java +++ b/gson/src/test/java/com/google/gson/internal/bind/JsonTreeWriterTest.java @@ -233,4 +233,14 @@ public void testStrictBoxedNansAndInfinities() throws IOException { } catch (IllegalArgumentException expected) { } } + + public void testJsonValue() throws IOException { + JsonTreeWriter writer = new JsonTreeWriter(); + writer.beginArray(); + try { + writer.jsonValue("test"); + fail(); + } catch (UnsupportedOperationException expected) { + } + } }