v14.0
版本发布时间: 2020-01-17 11:53:54
graphql-java/graphql-java最新发布版本:v22.3(2024-09-05 11:15:52)
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 theDataFetcherEnvironment
set when you start executing a query (#1576) - Support of all unicode characters (#1603)
- add
getArgumentOrDefault
toDataFetcherEnvironment
(#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