github graphql-java/graphql-java v14.0
Version 14.0

latest releases: v22.0, v21.5, v20.9...
4 years ago

Overview

This is a big release after more than 6 months without a new major version. It consists of over 70 PRs which is mainly smaller bugfixes and improvements from all over the place.

The "biggest" feature in terms of work was the new SchemaTransformer and FieldVisibilitySchemaTransformation: it allows you to transform a GraphQLSchema and more specifically to remove one or more fields from a GraphQLSchema. While implementing this we refactored the GraphQLType hierarchy. If you are doing advanced GraphQLSchema processing you might be affected by it.

The most impactful changes for normal users are probably:

  • The ID scalar was changed to serialize all objects (#1693)
  • There is a new java.util.Locale available on the DataFetcherEnvironment set when you start executing a query (#1576)
  • Support of all unicode characters (#1603)
  • add getArgumentOrDefault to DataFetcherEnvironment (#1659)
  • Correctly support additional optional arguments in fields defined by interfaces (#1694)
  • add hook to allow for custom value unboxing (#1684)

But the impact really depends on your specific use, so please have a look at the complete list below.

List of all Features and Bugfixes

#1576: New java.util.Locale on DataFetcherEnvironment

#1589: Bugfix: Non-null input object fields with default values should be valid

#1589: Allow "special" names like true or fragment to be used as names

#1585: Introduce privacy safe logger prefix

#1601 and #1602: Improve Lexer errors

#1603: Allow full range of unicode characters

#1607: Add unique fragment names validation

#1609: Schema printing now prints description by default

#1610: Improved schema diff

#1637: Bugfix: SchemaPrinter print directive arguments only when there is a value

#1638: Bugfix: QueryTraverser can visit fields when the scalar value is an AST object

#1643: Parse a inputStream of schema definitions

#1645: Capture extend ast definitions in the GraphQLSchema

#1648: Fix if strategy is updated during instrumenting execution context

#1651: Upgrade DataLoader and fix lazy date loader support

#1659: add getArgumentOrDefault to DataFetcherEnvironment

#1668: Enhanced execution input (and hence data loader registry) is now captured before use

#1676: Will not override error classification extensions if they are already present

#1684: add hook to allow for custom value unboxing

#1685: local context is now null by default on top level fields

#1689: add support for extend schema notation

#1691: Add negative cache for PropertyDataFetcher

#1692: Improve Introspection performance

#1693: ID scalar now serialize all objects via String.valueOf

#1694: Bugfix: Correctly support additional optional arguments in fields defined by interfaces

#1702: Add FieldVisibilitySchemaTransformation which allows you to remove specific fields from a schema

#1720: Bugfix: QueryTraverser: fix NPE for directive arguments

#1721: Fine grained directive filtering in printing

#1722: Bugfix: description of directives arguments are captured correctly from SDL

#1723: Bugfix: capture directive definition when building a GraphQLSchema from SDL

#1725: Allows the messages from a scalar validation to be sent back to the user

#1735: Bugfix: comments on interface arguments cause wrong error for schema validation

#1737: Improve PropertyDataFetcher: search private getter up the class hierarchy

Breaking changes

#1685: We changed the default behaviour for the local context property: It is now null by default on top
level fields.

#1605 and other: We refined the type system for GraphQLSchema objects (classes implementing GraphQLType) and introduced a general SchemaTransformer class which lets you transform a GraphQLSchema object.

#1734: The SDL PostProcessor hook was renamed from SchemaTransformer to SchemaGeneratorPostProcessing to make the purpose more clear but also to make the name SchemaTransformer available.

Details

All PRs merged for 14.0:
https://github.com/graphql-java/graphql-java/pulls?utf8=%E2%9C%93&q=is%3Apr+milestone%3A14.0+

All PRs with breaking changes:
https://github.com/graphql-java/graphql-java/pulls?utf8=%E2%9C%93&q=is%3Apr+milestone%3A14.0+label%3A%22breaking+change%22

Don't miss a new graphql-java release

NewReleases is sending notifications on new releases.