[ https://issues.apache.org/jira/browse/GOBBLIN-2158?focusedWorklogId=935083&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-935083 ]
ASF GitHub Bot logged work on GOBBLIN-2158: ------------------------------------------- Author: ASF GitHub Bot Created on: 17/Sep/24 17:32 Start Date: 17/Sep/24 17:32 Worklog Time Spent: 10m Work Description: khandelwal-prateek commented on code in PR #4057: URL: https://github.com/apache/gobblin/pull/4057#discussion_r1763611920 ########## gobblin-api/src/test/java/org/apache/gobblin/util/io/GsonInterfaceAdapterTest.java: ########## @@ -43,4 +44,21 @@ public void test() { } + @Test + public void testObjectToIntegerDeserialize() { + Gson gson = new GsonBuilder().create(); + Integer test = 5; Review Comment: please add test for other scenarios i.e. long, floating point numbers and invalid string ########## gobblin-api/src/main/java/org/apache/gobblin/util/io/GsonInterfaceAdapter.java: ########## @@ -189,7 +192,38 @@ private <S> S readValue(JsonObject jsonObject, TypeToken<S> defaultTypeToken) th } public static <T> Gson getGson(Class<T> clazz) { - Gson gson = new GsonBuilder().registerTypeAdapterFactory(new GsonInterfaceAdapter(clazz)).create(); + Gson gson = new GsonBuilder() + .setObjectToNumberStrategy(INTEGERNUMBERPOLICY.INTEGER_OR_LONG_OR_DOUBLE) + .registerTypeAdapterFactory(new GsonInterfaceAdapter(clazz)) + .create(); return gson; } + + public enum INTEGERNUMBERPOLICY implements ToNumberStrategy { Review Comment: enums are named in camel case.. can rename enum to something like `CustomNumberStrategy / NumberHandlingPolicy` ########## gobblin-api/src/test/java/org/apache/gobblin/util/io/GsonInterfaceAdapterTest.java: ########## @@ -43,4 +44,21 @@ public void test() { } + @Test + public void testObjectToIntegerDeserialize() { + Gson gson = new GsonBuilder().create(); + Integer test = 5; + String ser = gson.toJson(test); + Object deser = gson.fromJson(ser, Object.class); + Assert.assertNotEquals(test, deser); Review Comment: we can also assert on the type of object returned(double) by default gson deserializer Issue Time Tracking ------------------- Worklog Id: (was: 935083) Time Spent: 20m (was: 10m) > Upgrade GSON version to 2.8.9 > ----------------------------- > > Key: GOBBLIN-2158 > URL: https://issues.apache.org/jira/browse/GOBBLIN-2158 > Project: Apache Gobblin > Issue Type: Task > Reporter: Vivek Rai > Priority: Major > Time Spent: 20m > Remaining Estimate: 0h > > Upgrade GSON version to 2.8.9 and add a custom ObjectToIntegerDeserialize > policy to avoid getting integer converted to double or long while deserialize. -- This message was sent by Atlassian Jira (v8.20.10#820010)