From 89b1627cdbec3cf31cdfd2eee7f0aca160f70e05 Mon Sep 17 00:00:00 2001 From: peterdeme Date: Tue, 22 Mar 2022 19:02:07 +0100 Subject: [PATCH] fix: handle empty data --- src/main/java/io/getstream/core/models/Data.java | 3 +++ .../io/getstream/core/utils/SerializationTest.java | 12 ++++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/main/java/io/getstream/core/models/Data.java b/src/main/java/io/getstream/core/models/Data.java index b76ebbd5..65fb5e28 100644 --- a/src/main/java/io/getstream/core/models/Data.java +++ b/src/main/java/io/getstream/core/models/Data.java @@ -51,6 +51,9 @@ public Data from(T data) { public Data from(Map map) { checkNotNull(data, "Can't extract data from null"); + if (map == null || map.isEmpty()) { + return this; + } for (Map.Entry entry : map.entrySet()) { set(entry.getKey(), entry.getValue()); diff --git a/src/test/java/io/getstream/core/utils/SerializationTest.java b/src/test/java/io/getstream/core/utils/SerializationTest.java index 0e1bb351..30ec4e35 100644 --- a/src/test/java/io/getstream/core/utils/SerializationTest.java +++ b/src/test/java/io/getstream/core/utils/SerializationTest.java @@ -2,6 +2,7 @@ import static io.getstream.core.utils.Serialization.*; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; import com.fasterxml.jackson.core.type.TypeReference; import com.google.common.collect.ImmutableMap; @@ -13,6 +14,7 @@ import io.getstream.core.models.CollectionData; import io.getstream.core.models.EnrichedActivity; import io.getstream.core.models.FeedID; +import io.getstream.core.models.Reaction; import java.io.ByteArrayInputStream; import java.nio.charset.Charset; import java.text.SimpleDateFormat; @@ -209,6 +211,16 @@ public void emptyMapDeserialization() throws Exception { fromJSON(new ByteArrayInputStream(activity.getBytes(Charset.forName("UTF-8"))), type); } + @Test + public void emptyDataDeserialization() throws Exception { + String reaction = "{ \"data\": {} }"; + TypeReference type = new TypeReference() {}; + + Reaction result = + fromJSON(new ByteArrayInputStream(reaction.getBytes(Charset.forName("UTF-8"))), type); + assertNotNull(result); + } + @Test public void creatorAndAnySetterDeserialization() throws Exception { String data = "{\"id\":\"id-thing\",\"value\":1,\"extra\":{\"test\":\"test\"}}";