Repository navigation
Behaviour changes
- Generic superclasses (#825, fixes #460 and #218): type variables are now resolved against the most specific class. Methods inherited from a generic superclass keep their resolved type arguments, so two subclasses that bind them differently (e.g.
Page<A>andPage<B>) can no longer share one GraphQL type. Schema parsing fails with "Two different classes used for type" in that case. - Plain futures (#839, fixes #203): a resolver that returns a
Futuregraphql-java can't wait on (anything that isn't aCompletionStage, e.g. aFutureTaskor RxJava'stoFuture()) now fails the field with an error that says what to return instead. Before, the future itself reached graphql-java as the field value. - Generic wrapper results (#836, fixes #371): a generic wrapper transformer that returns
nullnow resolves the field tonullinstead of falling back to the wrapper object. - Suspend resolvers (#831, fixes #419): they now start undispatched and run on the calling thread until their first suspension, so DataLoader loads are queued before graphql-java dispatches them.
- Directive wirings (#830, #834): several wirings on the same element now chain, each one starting from the previous one's output. Applied directives now include arguments that have a default value in the directive definition.
Deprecations
- Passing a
CoroutineScopeas the context object is deprecated and logs a warning. Put it in theGraphQLContextunder theCoroutineScopeclass key instead. Support for the context object will be removed in the next major release. getDirective(),getDirectives()andgetDirective(name)onSchemaDirectiveWiringEnvironmentImplare deprecated in favour ofgetAppliedDirective(),getAppliedDirectives()andgetAppliedDirective(name).
What's Changed
- Version Release by @github-actions[bot] in #827
- Allow list fields on map-backed types by @oryan-block in #829
- Speed up resolver method lookup for large schemas by @oryan-block in #837
- Fix suspend resolvers hanging when awaiting a data loader by @oryan-block in #831
- Prefer getters over fluent setters for input field types by @oryan-block in #833
- Fix suspend resolver context and Kotlin extension resolvers by @oryan-block in #835
- Push the release tag and draft a GitHub release from the release workflow by @oryan-block in #828
- Apply raw and star-projected resolvers to parameterized data classes by @oryan-block in #832
- Honour null generic wrapper results by @oryan-block in #836
- Fix snapshot deploy 401 on Maven 3.10 by @oryan-block in #840
- Reject futures that graphql-java can't wait on by @oryan-block in #839
- Fix directive wirings discarding earlier changes to the same element by @oryan-block in #830
- Fill in directive argument defaults when not supplied by @oryan-block in #834
- Resolve type variables through generic superclasses by @oryan-block in #825
- Drop unused declaring type and rename GenericType to GenericTypeResolver by @oryan-block in #845
- Discover unions and interfaces used only by interface fields by @oryan-block in #844
Full Changelog: v14.1.0...v14.2.0