[ https://issues.apache.org/jira/browse/GOBBLIN-2158?focusedWorklogId=935116&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-935116 ]
ASF GitHub Bot logged work on GOBBLIN-2158: ------------------------------------------- Author: ASF GitHub Bot Created on: 18/Sep/24 05:17 Start Date: 18/Sep/24 05:17 Worklog Time Spent: 10m Work Description: pratapaditya04 commented on code in PR #4057: URL: https://github.com/apache/gobblin/pull/4057#discussion_r1764399946 ########## 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(CustomToNumberPolicy.INTEGER_OR_LONG_OR_DOUBLE) + .registerTypeAdapterFactory(new GsonInterfaceAdapter(clazz)) + .create(); return gson; } + + public enum CustomToNumberPolicy implements ToNumberStrategy { + INTEGER_OR_LONG_OR_DOUBLE { + @Override + public Number readNumber(JsonReader in) throws IOException { + String value = in.nextString(); + try { + return Integer.parseInt(value); + } catch (NumberFormatException var3) { + try { + return Long.parseLong(value); + } catch (NumberFormatException var2) { + try { + Double d = Double.valueOf(value); + if ((d.isInfinite() || d.isNaN()) && !in.isLenient()) { + throw new MalformedJsonException("JSON forbids NaN and infinities: " + d + "; at path " + in.getPath()); Review Comment: nit: prefer using String.format to improve readability and performance, as String concatenation using + can create multiple intermediate String objects, which impacts performance/ For ex sample replacement : `throw new JsonParseException(String.format("Cannot parse %s; at path %s", value, in.getPath()), var1);` Issue Time Tracking ------------------- Worklog Id: (was: 935116) Time Spent: 50m (was: 40m) > 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: 50m > 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)