From ca207b2e0684ef0f733bd802e3d05f2e2c4b9c77 Mon Sep 17 00:00:00 2001 From: Jesse Wilson Date: Sat, 16 Nov 2019 22:04:57 -0500 Subject: [PATCH] =?UTF-8?q?Revert=20"Don't=20allow=20toJson()=20serializat?= =?UTF-8?q?ion=20on=20polymorphic=20defau=E2=80=A6=20(#1025)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 6323a0b7c82b84c2e9128341533a1399c072b040. This makes it difficult for a client to take a server-provided value, modify it, and send it back. --- .../PolymorphicJsonAdapterFactory.java | 3 --- .../PolymorphicJsonAdapterFactoryTest.java | 18 ------------------ 2 files changed, 21 deletions(-) diff --git a/adapters/src/main/java/com/squareup/moshi/adapters/PolymorphicJsonAdapterFactory.java b/adapters/src/main/java/com/squareup/moshi/adapters/PolymorphicJsonAdapterFactory.java index 88cb8c5..27527a3 100644 --- a/adapters/src/main/java/com/squareup/moshi/adapters/PolymorphicJsonAdapterFactory.java +++ b/adapters/src/main/java/com/squareup/moshi/adapters/PolymorphicJsonAdapterFactory.java @@ -275,9 +275,6 @@ public final class PolymorphicJsonAdapterFactory implements JsonAdapter.Facto } @Override public void toJson(JsonWriter writer, Object value) throws IOException { - if (defaultValueSet && value == defaultValue) { - throw new IllegalArgumentException("Cannot serialize default value instance: " + value); - } Class type = value.getClass(); int labelIndex = subtypes.indexOf(type); if (labelIndex == -1) { diff --git a/adapters/src/test/java/com/squareup/moshi/adapters/PolymorphicJsonAdapterFactoryTest.java b/adapters/src/test/java/com/squareup/moshi/adapters/PolymorphicJsonAdapterFactoryTest.java index 37a3b1c..ffc479e 100644 --- a/adapters/src/test/java/com/squareup/moshi/adapters/PolymorphicJsonAdapterFactoryTest.java +++ b/adapters/src/test/java/com/squareup/moshi/adapters/PolymorphicJsonAdapterFactoryTest.java @@ -105,24 +105,6 @@ public final class PolymorphicJsonAdapterFactoryTest { assertThat(message).isNull(); } - @Test public void toJsonDefaultValue() { - Error fallbackError = new Error(Collections.emptyMap()); - Moshi moshi = new Moshi.Builder() - .add(PolymorphicJsonAdapterFactory.of(Message.class, "type") - .withSubtype(Success.class, "success") - .withSubtype(Error.class, "error") - .withDefaultValue(fallbackError)) - .build(); - JsonAdapter adapter = moshi.adapter(Message.class); - - try { - String json = adapter.toJson(fallbackError); - fail(); - } catch (IllegalArgumentException e) { - assertThat(e).hasMessageContaining("Cannot serialize default value instance"); - } - } - @Test public void unregisteredSubtype() { Moshi moshi = new Moshi.Builder() .add(PolymorphicJsonAdapterFactory.of(Message.class, "type")