Prior to this commit, the `GraphQlHttpHandler` implementations would use
the JSON codecs configured in the web Framework (MVC or WebFlux) for
reading and writing GraphQL payloads as JSON documents.
This can cause issues in cases the application configures the JSON codec
in a way that makes it incompatible with the expected GraphQL documents.
For example, not serializing empty values and arrays.
This commit adds new constructors in `GraphQlHttpHandler`
implementations that can get a custom JSON codec for GraphQL payloads.
Closes gh-860
Prior to this commit, the "event:complete" event would have no "data:"
field when completing the stream of data. This can cause problems with
browsers, as the `EventSource` callback might not get called without it.
This commit ensures that an empty data field is present in all cases.
Fixes gh-940
This is a temporary workaround to fix off-by-1 misalignment with
Spring Data, which uses 1-based offset values. Once the changes
in Spring Data become clear, we'll also adjust accordingly.
Closes gh-925
The presence of either "after" or "first" leads to forward pagination.
Else if either "before" or "last" leads to backward pagination.
Fall back on forward if none are provided at all.
In addition, a small adjustment to backward pagination. If a count
is not provided, use 1 rather than 0, to advance to previous item.
Closes gh-929
Rather than only checking for the presence of a property, also call
checkField on it. If it is a scalar then recursion stop anyway, but in the
unlikely event that it isn't, there are more fields to check.
Closes gh-934
Rather than passing a DataFetcher into checkField, determine the return type
externally and pass it in. That makes the method more generally useful, and
independent of how the associated type is determined, e.g. whether from a
DataFetcher return type or a corresponding Java property.
See gh-934