-
Notifications
You must be signed in to change notification settings - Fork 367
Description
Library Version
2.0.0-RC10
Describe the bug
As noted in #518, the behaviour of convertValue appears to have changed in Jackson 2.10 so that it no longer short-circuits when the input value is already of a suitable type.
For my use case, this causes an issue when a function on my TopLevelObject takes a list of non-primitive types e.g.
fun foo(ids: List<UUID>)
I have registered UUID as a scalar type using SchemaGeneratorHooks and defined a suitable Coercing for it.
With Jackson 2.9.X, this works as expected.
With Jackson 2.10.X, when I try to query this function, I get an exception like:
java.lang.ClassCastException: class java.lang.String cannot be cast to class java.util.UUID (java.lang.String and java.util.UUID are in module java.base of loader 'bootstrap')
I believe this is due to the usage of convertValue in FunctionDataFetcher.convertParameterValue. In Jackson 2.10.X the list will always go through a serialization/deserialization step, losing the type information.
To Reproduce
See above.
Expected behavior
Expect the List<UUID> to be forwarded as-is to my function.
Thanks for any help :-)