analytics-java-library icon indicating copy to clipboard operation
analytics-java-library copied to clipboard

Problem converting String response to ReportResponse in AnalyticsClient.java

Open virginiatong517 opened this issue 7 years ago • 1 comments

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 avatar Mar 15 '17 22:03 virginiatong517

@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?

trekawek avatar Oct 18 '17 10:10 trekawek