graphql-java/graphql-java (com.graphql-java:graphql-java)
### [`v21.0`](https://togithub.com/graphql-java/graphql-java/releases/tag/v21.0): 21.0
[Compare Source](https://togithub.com/graphql-java/graphql-java/compare/v20.4...v21.0)
We are pleased to announce the release of graphql-java v21.0. This is a **breaking change** release.
Thanks to everyone in the community who contributed to the release, whether that was code, helping to report issues, or participating in discussions.
And Happy 8th Birthday to graphql-java, who celebrated their birthday last week!
##### Breaking Changes
##### Upgraded to Java 11
graphql-java now requires Java 11 as a minimum version. See [the blog](https://www.graphql-java.com/blog/java-11-required) announcing the change.
For those who need time to upgrade to Java 11, keep in mind we will support graphql-java 20.x (with Java 8) for a short period as per our [release policy](https://www.graphql-java.com/blog/release-policy).
If you are wondering why we are not on a later version, graphql-java has always been conservative on its base JVM version to allow the widest possible set of consumers.
##### Reverted stricter scalar `parseValue` coercion, added monitoring and interceptor callback
[v20.0](https://togithub.com/graphql-java/graphql-java/releases/tag/v20.0) introduced a stricter set of scalar `parseValue` coercions - for example previously an `Integer` would accept a string if it parsed into a number but that was removed and a more strict system was put in place.
While technically more correct, and consistent with the graphql-js reference implementation, in practice this proved problematic for some consumers. So this more stricter `parseValue` coercion was reverted in [v20.3](https://togithub.com/graphql-java/graphql-java/releases/tag/v20.3).
We would like to re-introduce this more strict scalar `parseValue` conversion in the future and to that end we have introduced a `graphql.execution.values.InputInterceptor` callback that allows you to observe what values you are receiving and potentially do special tweaking of those values.
A `graphql.execution.values.legacycoercing.LegacyCoercingInputInterceptor` implementation will convert old less strict values into then more strict values for example.
If you had problems with scalar values we urge you to use the new `InputInterceptor` to learn what less strict values are coming into your systems and fix them up. That way, when a future version re-introduces the more strict (and more correct) coercion then you will be prepared.
##### Static recordLike() methods no longer supported
In v20, the `PropertyDataFetcher` would read property values from `recordLike()` methods on objects even if they were static methods. This caused problems for some users and after considering how to fix it and talking to some our major consumers like the Spring team, we decided to remove this behavior. On balance we think this will lead to a better outcome over the long term.
This is a breaking change for those who might have relied on a static `recordLike()` method being called for a property.
##### Removal of old deprecated methods and classes
The following PRs removed old deprecated methods and class. The changes are breaking ones but these have been deprecated for a long time.
- [https://github.com/graphql-java/graphql-java/pull/3232](https://togithub.com/graphql-java/graphql-java/pull/3232)
- [https://github.com/graphql-java/graphql-java/pull/3231](https://togithub.com/graphql-java/graphql-java/pull/3231)
##### Other small breaking changes
A very minor breaking change is that `graphql.execution.ExecutionStrategy` had a protected method `protected Iterable
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
[ ] If you want to rebase/retry this PR, check this box
This PR has been generated by Mend Renovate. View repository job log here.
This PR contains the following updates:
20.2
->21.0
Release Notes
graphql-java/graphql-java (com.graphql-java:graphql-java)
### [`v21.0`](https://togithub.com/graphql-java/graphql-java/releases/tag/v21.0): 21.0 [Compare Source](https://togithub.com/graphql-java/graphql-java/compare/v20.4...v21.0) We are pleased to announce the release of graphql-java v21.0. This is a **breaking change** release. Thanks to everyone in the community who contributed to the release, whether that was code, helping to report issues, or participating in discussions. And Happy 8th Birthday to graphql-java, who celebrated their birthday last week! ##### Breaking Changes ##### Upgraded to Java 11 graphql-java now requires Java 11 as a minimum version. See [the blog](https://www.graphql-java.com/blog/java-11-required) announcing the change. For those who need time to upgrade to Java 11, keep in mind we will support graphql-java 20.x (with Java 8) for a short period as per our [release policy](https://www.graphql-java.com/blog/release-policy). If you are wondering why we are not on a later version, graphql-java has always been conservative on its base JVM version to allow the widest possible set of consumers. ##### Reverted stricter scalar `parseValue` coercion, added monitoring and interceptor callback [v20.0](https://togithub.com/graphql-java/graphql-java/releases/tag/v20.0) introduced a stricter set of scalar `parseValue` coercions - for example previously an `Integer` would accept a string if it parsed into a number but that was removed and a more strict system was put in place. While technically more correct, and consistent with the graphql-js reference implementation, in practice this proved problematic for some consumers. So this more stricter `parseValue` coercion was reverted in [v20.3](https://togithub.com/graphql-java/graphql-java/releases/tag/v20.3). We would like to re-introduce this more strict scalar `parseValue` conversion in the future and to that end we have introduced a `graphql.execution.values.InputInterceptor` callback that allows you to observe what values you are receiving and potentially do special tweaking of those values. A `graphql.execution.values.legacycoercing.LegacyCoercingInputInterceptor` implementation will convert old less strict values into then more strict values for example. If you had problems with scalar values we urge you to use the new `InputInterceptor` to learn what less strict values are coming into your systems and fix them up. That way, when a future version re-introduces the more strict (and more correct) coercion then you will be prepared. ##### Static recordLike() methods no longer supported In v20, the `PropertyDataFetcher` would read property values from `recordLike()` methods on objects even if they were static methods. This caused problems for some users and after considering how to fix it and talking to some our major consumers like the Spring team, we decided to remove this behavior. On balance we think this will lead to a better outcome over the long term. This is a breaking change for those who might have relied on a static `recordLike()` method being called for a property. ##### Removal of old deprecated methods and classes The following PRs removed old deprecated methods and class. The changes are breaking ones but these have been deprecated for a long time. - [https://github.com/graphql-java/graphql-java/pull/3232](https://togithub.com/graphql-java/graphql-java/pull/3232) - [https://github.com/graphql-java/graphql-java/pull/3231](https://togithub.com/graphql-java/graphql-java/pull/3231) ##### Other small breaking changes A very minor breaking change is that `graphql.execution.ExecutionStrategy` had a protected method `protected IterableConfiguration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate. View repository job log here.