analytics-java-library
analytics-java-library copied to clipboard
Problem converting String response to ReportResponse in AnalyticsClient.java
I am calling the ReportMethod GET and passing in the ReportMetric 'averageTimeSpentOnPage'
When inside the callMethod(String method, Object data, Type resultType) of AnalyticsClient.java, I see that in line 31:
final String response = callMethod(method, request);
this is returning fine and contains
{"name":"somename","url":"","counts":["INF"]}
as part of the data. "counts"
is expected to be a number or decimal, but in this case is a string "INF".
In line 32:
return GSON.fromJson(response, resultType);
this throws an error when trying to parse the String "INF" into a Double. The error that I am getting is this:
java.lang.NumberFormatException: For input string: "INF"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
at java.lang.Double.parseDouble(Double.java:538)
at com.google.gson.stream.JsonReader.nextDouble(JsonReader.java:904)
at com.google.gson.Gson$3.read(Gson.java:256)
at com.google.gson.Gson$3.read(Gson.java:250)
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:40)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:81)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:60)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:93)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:172)
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:40)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:81)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:60)
at com.google.gson.Gson$FutureTypeAdapter.read(Gson.java:885)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:93)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:172)
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:40)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:81)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:60)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:93)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:172)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:93)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:172)
at com.google.gson.Gson.fromJson(Gson.java:803)
at com.google.gson.Gson.fromJson(Gson.java:768)
at com.google.gson.Gson.fromJson(Gson.java:717)
at com.adobe.granite.analytics.client.AnalyticsClient.callMethod(AnalyticsClient.java:32)
at com.adobe.granite.analytics.client.methods.ReportMethods.get(ReportMethods.java:27)
... Would it be possible to fix this? I can also try to make the fix myself and then create a pull request.
@virginiatong517, hello after 7 months ;) I'm really sorry for not responding earlier, I've messed up my notification settings for this repository. If you're still interesting in helping with the issue, a PR is welcome. I'd start with trying to upgrade the GSON to the most recent version (2.8.2) - maybe it'll help?