I have a simple return class that either accepts an exception or one of our business objects. If the REST web service method throws an exception, it catches it and sets an exception in the response. If not, it sets the return value in the response and serializes it.
In my case, I get an InvocationTargetError that wraps one of our utility exceptions. I installed this in my exception from my return class and got the following stack trace:
java.lang.StackOverflowError com.google.gson.reflect.TypeToken.hashCode(TypeToken.java:280) java.util.HashMap.get(HashMap.java:300) java.util.Collections$SynchronizedMap.get(Collections.java:1975) com.google.gson.Gson.getAdapter(Gson.java:337) com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:55) com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:89) com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:195) com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:68) com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:89) com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:195) com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:68) com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:89) com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:195) and so on...
Does anyone have any ideas? This seems like a bug in Gson 2.2.2.
source share