From f3ec4a78c9d05494c8a035efc8967144090416ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20P=C3=B6hler=20=28JPo=29?= Date: Mon, 29 Mar 2021 13:23:56 +0200 Subject: [PATCH] FIX: setting json values to null was throwing a NPE when persisting --- .../server/type/ScalarTypeJsonList.java | 3 -- .../server/type/ScalarTypeJsonSet.java | 3 -- .../org/tests/json/TestJsonNullValues.java | 42 +++++++++++++++++++ 3 files changed, 42 insertions(+), 6 deletions(-) create mode 100644 ebean-core/src/test/java/org/tests/json/TestJsonNullValues.java diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeJsonList.java b/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeJsonList.java index 699c7ad0f..d3c700443 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeJsonList.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeJsonList.java @@ -122,9 +122,6 @@ class ScalarTypeJsonList { @Override public final String formatValue(List value) { - if (value.isEmpty()) { - return "[]"; - } try { return EJson.write(value); } catch (IOException e) { diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeJsonSet.java b/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeJsonSet.java index 86a39443e..50cc7f0b3 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeJsonSet.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeJsonSet.java @@ -122,9 +122,6 @@ final class ScalarTypeJsonSet { @Override public final String formatValue(Set value) { - if (value.isEmpty()) { - return "[]"; - } try { return EJson.write(value); } catch (IOException e) { diff --git a/ebean-core/src/test/java/org/tests/json/TestJsonNullValues.java b/ebean-core/src/test/java/org/tests/json/TestJsonNullValues.java new file mode 100644 index 000000000..533116fd1 --- /dev/null +++ b/ebean-core/src/test/java/org/tests/json/TestJsonNullValues.java @@ -0,0 +1,42 @@ +package org.tests.json; + +import io.ebean.BaseTestCase; +import io.ebean.DB; +import org.junit.Test; +import org.tests.model.json.EBasicOldValue; + +import static org.assertj.core.api.Assertions.assertThat; + +public class TestJsonNullValues extends BaseTestCase { + + @Test + public void testSetToNull() { + EBasicOldValue bean = new EBasicOldValue(); + DB.save(bean); + bean = DB.find(EBasicOldValue.class, bean.getId()); + + bean.setStringList(null); + bean.setStringSet(null); + bean.setObjectMap(null); + bean.setLongList(null); + bean.setLongSet(null); + bean.setLongMap(null); + bean.setIntList(null); + bean.setIntSet(null); + bean.setIntMap(null); + + DB.save(bean); + bean = DB.find(EBasicOldValue.class, bean.getId()); + + assertThat(bean.getStringList()).isEmpty(); + assertThat(bean.getStringSet()).isEmpty(); + assertThat(bean.getObjectMap()).isEmpty(); + assertThat(bean.getLongList()).isEmpty(); + assertThat(bean.getLongSet()).isEmpty(); + assertThat(bean.getLongMap()).isEmpty(); + assertThat(bean.getIntList()).isEmpty(); + assertThat(bean.getIntSet()).isEmpty(); + assertThat(bean.getIntMap()).isEmpty(); + } + +}