Adobe-Marketing-Cloud / analytics-java-library

A Java client library for Analytics APIs
Apache License 2.0
15 stars 16 forks source link

Problem converting String response to ReportResponse in AnalyticsClient.java #17

Open virginiatong517 opened 7 years ago

virginiatong517 commented 7 years ago

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.

trekawek commented 6 years ago

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