grails / gorm-graphql

An automatic GraphQL schema generator for GORM
Apache License 2.0
80 stars 23 forks source link

Update dependency com.graphql-java:graphql-java to v230521 - autoclosed #98

Closed renovate[bot] closed 7 months ago

renovate[bot] commented 1 year ago

Mend Renovate

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
com.graphql-java:graphql-java 17.3 -> 230521-nf-execution age adoption passing confidence

Release Notes

graphql-java/graphql-java ### [`v20.2`](https://togithub.com/graphql-java/graphql-java/releases/tag/v20.2): 20.2 This is a security bugfix release containing [#​3148](https://togithub.com/graphql-java/graphql-java/issues/3148), which adds a limit to the number of characters used in an operation. There are no breaking changes in this release. #### What's Changed - Diffing fixes 2 by [@​gnawf](https://togithub.com/gnawf) in [https://github.com/graphql-java/graphql-java/pull/3146](https://togithub.com/graphql-java/graphql-java/pull/3146) - Fix argument added to new type by [@​gnawf](https://togithub.com/gnawf) in [https://github.com/graphql-java/graphql-java/pull/3150](https://togithub.com/graphql-java/graphql-java/pull/3150) - Show test failures in builds by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/3151](https://togithub.com/graphql-java/graphql-java/pull/3151) - Fix applied argument deleted on field by [@​gnawf](https://togithub.com/gnawf) in [https://github.com/graphql-java/graphql-java/pull/3154](https://togithub.com/graphql-java/graphql-java/pull/3154) - Have a limit on how many characters are presented to the Parser by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/3148](https://togithub.com/graphql-java/graphql-java/pull/3148) **Full Changelog**: https://github.com/graphql-java/graphql-java/compare/v20.1...v20.2 ### [`v20.1`](https://togithub.com/graphql-java/graphql-java/releases/tag/v20.1): 20.1 [Compare Source](https://togithub.com/graphql-java/graphql-java/compare/v20.0...v20.1) This is a feature and bugfix release. There are **no breaking changes** in this release. This release continues to use Java 8. Thanks to everyone in the community for helping us with this release. Thanks for your PRs, issues, and discussions! #### Security fix This release includes a security fix [#​3112](https://togithub.com/graphql-java/graphql-java/issues/3112) which adds a limit to the depth of grammar rules, to prevent stack overflow. #### Highlights [#​3095](https://togithub.com/graphql-java/graphql-java/issues/3095) improves resiliency to class loader problems with `LambdaMetafactory`. [#​3049](https://togithub.com/graphql-java/graphql-java/issues/3049) adds an extensions builder and merger. #### Release policy We have formalised our release schedule to give the community a better idea of when to expect releases, what will be contained within them, and when important fixes will be backported. See the full details at https://www.graphql-java.com/blog/release-policy #### What's Changed - docs: update badges for v20 release by [@​setchy](https://togithub.com/setchy) in [https://github.com/graphql-java/graphql-java/pull/3047](https://togithub.com/graphql-java/graphql-java/pull/3047) - Update FieldValidationInstrumentation.java by [@​kfwerf](https://togithub.com/kfwerf) in [https://github.com/graphql-java/graphql-java/pull/3066](https://togithub.com/graphql-java/graphql-java/pull/3066) - Update vulnerability reporting instructions by [@​dondonz](https://togithub.com/dondonz) in [https://github.com/graphql-java/graphql-java/pull/3070](https://togithub.com/graphql-java/graphql-java/pull/3070) - Fix extend schema directives ANTLR rule by [@​dondonz](https://togithub.com/dondonz) in [https://github.com/graphql-java/graphql-java/pull/3071](https://togithub.com/graphql-java/graphql-java/pull/3071) - Allow users to disable MultiSourceReader trackData through ParserOptions by [@​AntaresS](https://togithub.com/AntaresS) in [https://github.com/graphql-java/graphql-java/pull/3062](https://togithub.com/graphql-java/graphql-java/pull/3062) - Add missing getter and fix name consistency by [@​gnawf](https://togithub.com/gnawf) in [https://github.com/graphql-java/graphql-java/pull/3073](https://togithub.com/graphql-java/graphql-java/pull/3073) - use toolchain to specify the java version by [@​andimarek](https://togithub.com/andimarek) in [https://github.com/graphql-java/graphql-java/pull/3075](https://togithub.com/graphql-java/graphql-java/pull/3075) - Fix isNameChanged by [@​gnawf](https://togithub.com/gnawf) in [https://github.com/graphql-java/graphql-java/pull/3076](https://togithub.com/graphql-java/graphql-java/pull/3076) - Update instrumentation example in documentation by [@​dondonz](https://togithub.com/dondonz) in [https://github.com/graphql-java/graphql-java/pull/3078](https://togithub.com/graphql-java/graphql-java/pull/3078) - Reuse ExecutionStrategyInstrumentationContext.NOOP in DataLoaderDispatcherInstrumentation by [@​dfa1](https://togithub.com/dfa1) in [https://github.com/graphql-java/graphql-java/pull/3068](https://togithub.com/graphql-java/graphql-java/pull/3068) - Add missing this keyword for readability by [@​cookieMr](https://togithub.com/cookieMr) in [https://github.com/graphql-java/graphql-java/pull/3067](https://togithub.com/graphql-java/graphql-java/pull/3067) - defaulting the deprecated methods in Coercing by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/3063](https://togithub.com/graphql-java/graphql-java/pull/3063) - Add missing detail by [@​gnawf](https://togithub.com/gnawf) in [https://github.com/graphql-java/graphql-java/pull/3079](https://togithub.com/graphql-java/graphql-java/pull/3079) - Updating the JavaDoc http links by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/3083](https://togithub.com/graphql-java/graphql-java/pull/3083) - An Extensions Builder by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/3049](https://togithub.com/graphql-java/graphql-java/pull/3049) - Use ImmutableList.builderWithExpectedSize in ImmutableKit.mapAndDropNulls too by [@​dfa1](https://togithub.com/dfa1) in [https://github.com/graphql-java/graphql-java/pull/3081](https://togithub.com/graphql-java/graphql-java/pull/3081) - Resolve TypeReferences in schema applied directives by [@​kaqqao](https://togithub.com/kaqqao) in [https://github.com/graphql-java/graphql-java/pull/3054](https://togithub.com/graphql-java/graphql-java/pull/3054) - Remove sun.misc.\* from MANIFEST.MF by [@​dondonz](https://togithub.com/dondonz) in [https://github.com/graphql-java/graphql-java/pull/3091](https://togithub.com/graphql-java/graphql-java/pull/3091) - Replace javax nullable annotations with JetBrains equivalent by [@​dondonz](https://togithub.com/dondonz) in [https://github.com/graphql-java/graphql-java/pull/3093](https://togithub.com/graphql-java/graphql-java/pull/3093) - Ensured that the MANIFEST.MF files is the first entry in the JAR File by [@​schaefa](https://togithub.com/schaefa) in [https://github.com/graphql-java/graphql-java/pull/3097](https://togithub.com/graphql-java/graphql-java/pull/3097) - Fix type change and directive deletion problems in schema diffing by [@​gnawf](https://togithub.com/gnawf) in [https://github.com/graphql-java/graphql-java/pull/3102](https://togithub.com/graphql-java/graphql-java/pull/3102) - Handle enum value rename by [@​gnawf](https://togithub.com/gnawf) in [https://github.com/graphql-java/graphql-java/pull/3103](https://togithub.com/graphql-java/graphql-java/pull/3103) - Bugfix: do not use default operation name types if not included in schema definition block by [@​dondonz](https://togithub.com/dondonz) in [https://github.com/graphql-java/graphql-java/pull/3088](https://togithub.com/graphql-java/graphql-java/pull/3088) - Adding ExtensionsBuilder in the graphql context by default by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/3085](https://togithub.com/graphql-java/graphql-java/pull/3085) - Meta Lambda failures - make the code more resilient to class loader challenges by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/3095](https://togithub.com/graphql-java/graphql-java/pull/3095) - Gracefully returning null in cases of UnresolvedTypeException by [@​ahmadizm](https://togithub.com/ahmadizm) in [https://github.com/graphql-java/graphql-java/pull/3122](https://togithub.com/graphql-java/graphql-java/pull/3122) - Add dependabot configuration by [@​yeikel](https://togithub.com/yeikel) in [https://github.com/graphql-java/graphql-java/pull/3115](https://togithub.com/graphql-java/graphql-java/pull/3115) - Bump org.jetbrains:annotations from 23.0.0 to 24.0.1 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/graphql-java/graphql-java/pull/3125](https://togithub.com/graphql-java/graphql-java/pull/3125) - Remove unused dependencies by [@​dondonz](https://togithub.com/dondonz) in [https://github.com/graphql-java/graphql-java/pull/3132](https://togithub.com/graphql-java/graphql-java/pull/3132) - Bump actions/checkout from 1 to 3 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/graphql-java/graphql-java/pull/3126](https://togithub.com/graphql-java/graphql-java/pull/3126) - Bump google-github-actions/auth from 0.4.0 to 1.0.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/graphql-java/graphql-java/pull/3129](https://togithub.com/graphql-java/graphql-java/pull/3129) - Bump org.codehaus.groovy:groovy from 3.0.9 to 3.0.16 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/graphql-java/graphql-java/pull/3131](https://togithub.com/graphql-java/graphql-java/pull/3131) - Add manual stop on schema diffing algorithm by [@​gnawf](https://togithub.com/gnawf) in [https://github.com/graphql-java/graphql-java/pull/3119](https://togithub.com/graphql-java/graphql-java/pull/3119) - Preventing stack overflow exceptions via limiting the depth of the parser rules by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/3112](https://togithub.com/graphql-java/graphql-java/pull/3112) - UniqueObjectFieldName validation rule ([#​1806](https://togithub.com/graphql-java/graphql-java/issues/1806)) by [@​ashatch](https://togithub.com/ashatch) in [https://github.com/graphql-java/graphql-java/pull/3094](https://togithub.com/graphql-java/graphql-java/pull/3094) #### New Contributors - [@​kfwerf](https://togithub.com/kfwerf) made their first contribution in [https://github.com/graphql-java/graphql-java/pull/3066](https://togithub.com/graphql-java/graphql-java/pull/3066) - [@​AntaresS](https://togithub.com/AntaresS) made their first contribution in [https://github.com/graphql-java/graphql-java/pull/3062](https://togithub.com/graphql-java/graphql-java/pull/3062) - [@​ahmadizm](https://togithub.com/ahmadizm) made their first contribution in [https://github.com/graphql-java/graphql-java/pull/3122](https://togithub.com/graphql-java/graphql-java/pull/3122) - [@​yeikel](https://togithub.com/yeikel) made their first contribution in [https://github.com/graphql-java/graphql-java/pull/3115](https://togithub.com/graphql-java/graphql-java/pull/3115) - [@​dependabot](https://togithub.com/dependabot) made their first contribution in [https://github.com/graphql-java/graphql-java/pull/3125](https://togithub.com/graphql-java/graphql-java/pull/3125) - [@​ashatch](https://togithub.com/ashatch) made their first contribution in [https://github.com/graphql-java/graphql-java/pull/3094](https://togithub.com/graphql-java/graphql-java/pull/3094) **Full Changelog**: https://github.com/graphql-java/graphql-java/compare/v20.0...v20.1 ### [`v20.0`](https://togithub.com/graphql-java/graphql-java/releases/tag/v20.0): 20.0 We are pleased to announce the release of graphql-java 20.0. Special thanks to each of the 200+ contributors over the years, who have made this milestone possible. ### Breaking changes #### Aligning `parseValue` coercion with JS reference implementation We have made changes to String, Boolean, Float, and Int `parseValue` coercion, to be consistent with the reference JS implementation. The key change is `parseValue` is now stricter on accepted inputs. - String `parseValue` now requires input is of type `String`. For example, a Number input `123` or a Boolean input `true` will no longer be accepted. - Boolean `parseValue` now requires input is of type `Boolean`. For example, a String input `"true"` will no longer be accepted. - Float `parseValue` now requires input is of type `Number`. For example, a String input `"3.14"` will no longer be accepted. - Int `parseValue` now requires input is of type `Number`. For example, a String input `"42"` will no longer be accepted. String `parseValue` changes: [https://github.com/graphql-java/graphql-java/pull/3030](https://togithub.com/graphql-java/graphql-java/pull/3030) Boolean, Float, and Int `parseValue` changes: [https://github.com/graphql-java/graphql-java/pull/3042](https://togithub.com/graphql-java/graphql-java/pull/3042) JS reference implementation: https://github.com/graphql/graphql-js/blob/main/src/type/scalars.ts ### Notable Changes #### Record Like Property Fetching Support We have now added the ability to find properties via "Record like" naming. We call it "Record like" based on Java 14 `record` classes but in fact any class with a method named directly as the graphql field is named will work. If you had this graphql object type declared ```graphql type Person { name : String address : String } ``` then this Java `record` would be supported for fetching values via the method names `name()` and `address()` ```java public record Person (String name, String address) ``` and equally a non record class like this would also work ```java public class Person { public String name() { return "Harry Potter"; } public String address() { return "4 Privet Drive, Little Whinging"; } } ``` We still have Java Bean (aka POJO) getter naming support like `public String getName()` however now the "record like" `name()` method will be used in preference and then the `getName()` methods will be used if that's not present. This means there is a new behavior if you had weird POJOs likes this ```java public class WeirdPerson { public String name() { return "Harry Potter"; } public String getName() { return "Tom Riddle"; } } ``` A property fetch for `name` will now return `Harry Potter` and not `Tom Riddle` as it previously would have. This is a **behavioral breaking change** but on balance we think this behavior is the most correct going forward. [https://github.com/graphql-java/graphql-java/pull/2994](https://togithub.com/graphql-java/graphql-java/pull/2994) #### Improved Data Fetching The `PropertyDataFetcher` class is the most common data fetcher used in graphql-java. It uses Java reflection to get field values from objects based on field name. This was logically the following ```java Method method = findMethod(fieldname); method.invoke(object); ``` with the method lookup cached for performance reasons. However there is mechanism in the JVM that provides even faster object reflective access. See https://wttech.blog/blog/2020/method-handles-and-lambda-metafactory/ https://www.optaplanner.org/blog/2018/01/09/JavaReflectionButMuchFaster.html `java.lang.invoke.LambdaMetafactory#metafactory` is an arcane mechanism that can be used to create virtual method lambdas that give fast access to call object methods. It turns out to be significantly faster that Java reflection and only marginally slower that directly invoking a method. If you use `PropertyDataFetcher` a lot (and chances are you do) then this should give improved performance. The raw benchmarks are as follows Java 8 Benchmark Mode Cnt Score Error Units GetterAccessBenchmark.measureDirectAccess thrpt 15 81199548.105 ± 2717206.756 ops/s 0% slower (baseline) GetterAccessBenchmark.measureLambdaAccess thrpt 15 79622345.446 ± 1183553.379 ops/s 2% slower GetterAccessBenchmark.measureReflectionAccess thrpt 15 46102664.133 ± 4091595.318 ops/s 50% slower Java 17 Benchmark Mode Cnt Score Error Units GetterAccessBenchmark.measureDirectAccess thrpt 15 458411420.717 ± 34329506.990 ops/s 0% GetterAccessBenchmark.measureLambdaAccess thrpt 15 334158880.091 ± 10666070.698 ops/s 27% slower GetterAccessBenchmark.measureReflectionAccess thrpt 15 63181868.566 ± 3887367.970 ops/s 86% slower It's worth noting that while the headline numbers here look impressive, the property fetching represents a smaller portion of what happens during graphql engine execution. It probably won't be enough to keep Elon Musk happy but all performance improvements help and at scale they help the most. #### Lightweight Data Fetchers A `DataFetcher` gets invoked with a calling environment context object called `graphql.schema.DataFetchingEnvironment`. This is quite a rich object that contains all sorts of useful information. However simple (aka trivial) data fetchers like `PropertyDataFetcher` they don't need access to such a rich object. They just need the source object, the field name and the field type To marginally help performance, we have introduced a `graphql.schema.LightDataFetcher` for this use case ```java public interface LightDataFetcher extends TrivialDataFetcher { T get(GraphQLFieldDefinition fieldDefinition, Object sourceObject, Supplier environmentSupplier) throws Exception; } ``` `PropertyDataFetcher` implements this and hence this lowers the object allocation at scale (which reduces memory pressure) and will make the system marginally faster to fetch data. [https://github.com/graphql-java/graphql-java/pull/2953](https://togithub.com/graphql-java/graphql-java/pull/2953) #### Performance Improvements by avoid object allocations We are always trying to wring out the most performance we can in graphql-java and so we reviewed our object allocations and found places where we can make savings. These won't make dramatic performance savings but at scale all these things add up, reducing memory pressure and improving throughput marginally. [https://github.com/graphql-java/graphql-java/pull/2981](https://togithub.com/graphql-java/graphql-java/pull/2981) [https://github.com/graphql-java/graphql-java/pull/2980](https://togithub.com/graphql-java/graphql-java/pull/2980) [https://github.com/graphql-java/graphql-java/pull/2979](https://togithub.com/graphql-java/graphql-java/pull/2979) #### Locale is now available in Coercing and Parsing The `graphql.schema.Coercing` interface used by scalars can now receive a `Locale` object that indicates the calling `Locale`. The same is true for the parsing code via `graphql.parser.ParserEnvironment#getLocale` A custom scalar implementation could use the locale to decide how to coerce values. [https://github.com/graphql-java/graphql-java/pull/2912](https://togithub.com/graphql-java/graphql-java/pull/2912) [https://github.com/graphql-java/graphql-java/pull/2921](https://togithub.com/graphql-java/graphql-java/pull/2921) #### Easier ways to build common objects We have added extra builders on the `GraphQLError`, `ErrorClassification` and `ExecutionResult` interfaces that make it easier to build instances of these common classes. [https://github.com/graphql-java/graphql-java/pull/2939](https://togithub.com/graphql-java/graphql-java/pull/2939) [https://github.com/graphql-java/graphql-java/pull/3011](https://togithub.com/graphql-java/graphql-java/pull/3011) #### The deprecated NextGen engine has been removed The NextGen engine was an experimental feature that explored what it might take to build a new graphql engine. In many ways it was a success as it taught us a bunch of about graph algorithms and what works and what does not. While it had some value, on balance it was not going to become production ready and so we deprecated it a while back and it has finally been removed. [https://github.com/graphql-java/graphql-java/pull/2923](https://togithub.com/graphql-java/graphql-java/pull/2923) #### What's Changed - docs: update latest release badge to 19 by [@​setchy](https://togithub.com/setchy) in [https://github.com/graphql-java/graphql-java/pull/2918](https://togithub.com/graphql-java/graphql-java/pull/2918) - Fix printing directives when they contain something like a formatting… by [@​jmartisk](https://togithub.com/jmartisk) in [https://github.com/graphql-java/graphql-java/pull/2920](https://togithub.com/graphql-java/graphql-java/pull/2920) - Implement pretty printer by [@​felipe-gdr](https://togithub.com/felipe-gdr) in [https://github.com/graphql-java/graphql-java/pull/2894](https://togithub.com/graphql-java/graphql-java/pull/2894) - Fix snapshot badge by [@​dondonz](https://togithub.com/dondonz) in [https://github.com/graphql-java/graphql-java/pull/2924](https://togithub.com/graphql-java/graphql-java/pull/2924) - Remove [@​fetch](https://togithub.com/fetch) and nextgen engine by [@​dondonz](https://togithub.com/dondonz) in [https://github.com/graphql-java/graphql-java/pull/2923](https://togithub.com/graphql-java/graphql-java/pull/2923) - Fix up field visibility doco example by [@​dondonz](https://togithub.com/dondonz) in [https://github.com/graphql-java/graphql-java/pull/2927](https://togithub.com/graphql-java/graphql-java/pull/2927) - We can rename scalar types by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/2928](https://togithub.com/graphql-java/graphql-java/pull/2928) - Add deprecation date to all deprecated methods and fields by [@​dondonz](https://togithub.com/dondonz) in [https://github.com/graphql-java/graphql-java/pull/2929](https://togithub.com/graphql-java/graphql-java/pull/2929) - Fix field visibility bug with enum with enum args by [@​felipe-gdr](https://togithub.com/felipe-gdr) in [https://github.com/graphql-java/graphql-java/pull/2926](https://togithub.com/graphql-java/graphql-java/pull/2926) - Adding Locale to Coercing and hence ValueResolver by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/2912](https://togithub.com/graphql-java/graphql-java/pull/2912) - Removes the deprecated execute methods from GraphQL by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/2932](https://togithub.com/graphql-java/graphql-java/pull/2932) - Removing deprecated methods from tests - part 1 by [@​dondonz](https://togithub.com/dondonz) in [https://github.com/graphql-java/graphql-java/pull/2930](https://togithub.com/graphql-java/graphql-java/pull/2930) - Reproduction of renaming scalars and applied directives bug by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/2934](https://togithub.com/graphql-java/graphql-java/pull/2934) - Remove redundant NaN check, already handled in GraphqlFloatCoercing by [@​dondonz](https://togithub.com/dondonz) in [https://github.com/graphql-java/graphql-java/pull/2936](https://togithub.com/graphql-java/graphql-java/pull/2936) - Diff counts are the same by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/2935](https://togithub.com/graphql-java/graphql-java/pull/2935) - Change Instrumentation production implementations to use non deprecated methods by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/2931](https://togithub.com/graphql-java/graphql-java/pull/2931) - Make parseValue nullable and update Coercing javadoc by [@​dondonz](https://togithub.com/dondonz) in [https://github.com/graphql-java/graphql-java/pull/2938](https://togithub.com/graphql-java/graphql-java/pull/2938) - Cleaning up tests with deprecated usage: Part 2 by [@​dondonz](https://togithub.com/dondonz) in [https://github.com/graphql-java/graphql-java/pull/2941](https://togithub.com/graphql-java/graphql-java/pull/2941) - Deprecation test cleanup: GraphQLFieldDefinition datafetcher builder by [@​dondonz](https://togithub.com/dondonz) in [https://github.com/graphql-java/graphql-java/pull/2942](https://togithub.com/graphql-java/graphql-java/pull/2942) - Fix [@​skip](https://togithub.com/skip) definition is added twice to the GraphQLSchema when defined in sdl by [@​tinnou](https://togithub.com/tinnou) in [https://github.com/graphql-java/graphql-java/pull/2940](https://togithub.com/graphql-java/graphql-java/pull/2940) - Added new builder to ExecutionResult by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/2939](https://togithub.com/graphql-java/graphql-java/pull/2939) - Test cleanup: typeResolver builder on unions and interfaces, applied directive tests, and more by [@​dondonz](https://togithub.com/dondonz) in [https://github.com/graphql-java/graphql-java/pull/2954](https://togithub.com/graphql-java/graphql-java/pull/2954) - Update GraphQL Instrospection Spec Link by [@​cookieMr](https://togithub.com/cookieMr) in [https://github.com/graphql-java/graphql-java/pull/2977](https://togithub.com/graphql-java/graphql-java/pull/2977) - Deprecation cleanout - programmatic schemas by [@​dondonz](https://togithub.com/dondonz) in [https://github.com/graphql-java/graphql-java/pull/2974](https://togithub.com/graphql-java/graphql-java/pull/2974) - Avoid allocating a type resolve env if the type is already an object type by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/2980](https://togithub.com/graphql-java/graphql-java/pull/2980) - Avoids allocating a copy of the field names set inside the ES by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/2981](https://togithub.com/graphql-java/graphql-java/pull/2981) - Patch SchemaDiff to apply respective nullability change validation for input vs. output types by [@​bspeth](https://togithub.com/bspeth) in [https://github.com/graphql-java/graphql-java/pull/2971](https://togithub.com/graphql-java/graphql-java/pull/2971) - Adding Locale to Parser by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/2921](https://togithub.com/graphql-java/graphql-java/pull/2921) - Added workflow and gcp JS client library script with package json by [@​DiegoManzanarezx](https://togithub.com/DiegoManzanarezx) in [https://github.com/graphql-java/graphql-java/pull/2889](https://togithub.com/graphql-java/graphql-java/pull/2889) - Add missing equals/hashcode methods to relay classes by [@​pgr0ss](https://togithub.com/pgr0ss) in [https://github.com/graphql-java/graphql-java/pull/2988](https://togithub.com/graphql-java/graphql-java/pull/2988) - Float coercion tidy up by [@​dondonz](https://togithub.com/dondonz) in [https://github.com/graphql-java/graphql-java/pull/2982](https://togithub.com/graphql-java/graphql-java/pull/2982) - Only run GCP tests on main graphql-java repo (skip on forks). by [@​folone](https://togithub.com/folone) in [https://github.com/graphql-java/graphql-java/pull/2997](https://togithub.com/graphql-java/graphql-java/pull/2997) - Parameterized introspection queries by [@​MayCXC](https://togithub.com/MayCXC) in [https://github.com/graphql-java/graphql-java/pull/2993](https://togithub.com/graphql-java/graphql-java/pull/2993) - Update aQute builder version by [@​dondonz](https://togithub.com/dondonz) in [https://github.com/graphql-java/graphql-java/pull/3002](https://togithub.com/graphql-java/graphql-java/pull/3002) - Avoid an allocation of a chained context in the most common case by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/2979](https://togithub.com/graphql-java/graphql-java/pull/2979) - Polishing by [@​dfa1](https://togithub.com/dfa1) in [https://github.com/graphql-java/graphql-java/pull/3001](https://togithub.com/graphql-java/graphql-java/pull/3001) - Document the new IntrospectionQueryBuilder and tweaked it a little by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/3003](https://togithub.com/graphql-java/graphql-java/pull/3003) - LambdaMetafactory support for property fetches by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/2985](https://togithub.com/graphql-java/graphql-java/pull/2985) - SchemaGeneratorPostProcessing should be deprecated by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/2999](https://togithub.com/graphql-java/graphql-java/pull/2999) - Fixes in TwitterBenchmark by [@​dfa1](https://togithub.com/dfa1) in [https://github.com/graphql-java/graphql-java/pull/3006](https://togithub.com/graphql-java/graphql-java/pull/3006) - Bugfix for SDL check if an Interface is implemented correctly by [@​andimarek](https://togithub.com/andimarek) in [https://github.com/graphql-java/graphql-java/pull/3014](https://togithub.com/graphql-java/graphql-java/pull/3014) - Adds an error builder on GraphQLError by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/3011](https://togithub.com/graphql-java/graphql-java/pull/3011) - TypeResolutionEnvironment#getLocalContext seems accidentally non-public by [@​kaqqao](https://togithub.com/kaqqao) in [https://github.com/graphql-java/graphql-java/pull/3021](https://togithub.com/graphql-java/graphql-java/pull/3021) - centralizing resource loading in BenchmarkUtils by [@​dfa1](https://togithub.com/dfa1) in [https://github.com/graphql-java/graphql-java/pull/3022](https://togithub.com/graphql-java/graphql-java/pull/3022) - Helper for getting fields based on object type name by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/3016](https://togithub.com/graphql-java/graphql-java/pull/3016) - Avoiding some duplicated work in Async by [@​dfa1](https://togithub.com/dfa1) in [https://github.com/graphql-java/graphql-java/pull/3023](https://togithub.com/graphql-java/graphql-java/pull/3023) - Record like property access support by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/2994](https://togithub.com/graphql-java/graphql-java/pull/2994) - Lightweight data fetchers by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/2953](https://togithub.com/graphql-java/graphql-java/pull/2953) - Update ValidationError#toString to print the extentions field by [@​federicorispo](https://togithub.com/federicorispo) in [https://github.com/graphql-java/graphql-java/pull/3024](https://togithub.com/graphql-java/graphql-java/pull/3024) - Minor fixes by [@​dfa1](https://togithub.com/dfa1) in [https://github.com/graphql-java/graphql-java/pull/3029](https://togithub.com/graphql-java/graphql-java/pull/3029) - This makes sure every introspection type actually has a concrete data fetcher by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/3004](https://togithub.com/graphql-java/graphql-java/pull/3004) - Make String parseValue coercion consistent with JS implementation & Gradle JCenter fix by [@​dondonz](https://togithub.com/dondonz) in [https://github.com/graphql-java/graphql-java/pull/3030](https://togithub.com/graphql-java/graphql-java/pull/3030) - Adding new schema diffing capability (First step) by [@​andimarek](https://togithub.com/andimarek) in [https://github.com/graphql-java/graphql-java/pull/2983](https://togithub.com/graphql-java/graphql-java/pull/2983) - chore: Remove unused imports and local variables by [@​federicorispo](https://togithub.com/federicorispo) in [https://github.com/graphql-java/graphql-java/pull/3034](https://togithub.com/graphql-java/graphql-java/pull/3034) - Testing I18n lookup by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/3036](https://togithub.com/graphql-java/graphql-java/pull/3036) - Consider union containers when checking if type is referenced by [@​felipe-gdr](https://togithub.com/felipe-gdr) in [https://github.com/graphql-java/graphql-java/pull/3037](https://togithub.com/graphql-java/graphql-java/pull/3037) - master fix - use class loader on i18n by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/3039](https://togithub.com/graphql-java/graphql-java/pull/3039) #### New Contributors - [@​cookieMr](https://togithub.com/cookieMr) made their first contribution in [https://github.com/graphql-java/graphql-java/pull/2977](https://togithub.com/graphql-java/graphql-java/pull/2977) - [@​bspeth](https://togithub.com/bspeth) made their first contribution in [https://github.com/graphql-java/graphql-java/pull/2971](https://togithub.com/graphql-java/graphql-java/pull/2971) - [@​DiegoManzanarezx](https://togithub.com/DiegoManzanarezx) made their first contribution in [https://github.com/graphql-java/graphql-java/pull/2889](https://togithub.com/graphql-java/graphql-java/pull/2889) - [@​pgr0ss](https://togithub.com/pgr0ss) made their first contribution in [https://github.com/graphql-java/graphql-java/pull/2988](https://togithub.com/graphql-java/graphql-java/pull/2988) - [@​MayCXC](https://togithub.com/MayCXC) made their first contribution in [https://github.com/graphql-java/graphql-java/pull/2993](https://togithub.com/graphql-java/graphql-java/pull/2993) - [@​federicorispo](https://togithub.com/federicorispo) made their first contribution in [https://github.com/graphql-java/graphql-java/pull/3024](https://togithub.com/graphql-java/graphql-java/pull/3024) **Full Changelog**: https://github.com/graphql-java/graphql-java/compare/v19.1...v20.0 ### [`v19.5`](https://togithub.com/graphql-java/graphql-java/releases/tag/v19.5): 19.5 This is a security bugfix release containing only one PR: [#​3158](https://togithub.com/graphql-java/graphql-java/issues/3158) This adds a limit to the number of characters used in an operation. Full details can be found here: [#​3148](https://togithub.com/graphql-java/graphql-java/issues/3148) #### What's Changed - This is the backport of the max characters in a parse to the 19.x branch by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/3158](https://togithub.com/graphql-java/graphql-java/pull/3158) **Full Changelog**: https://github.com/graphql-java/graphql-java/compare/v19.4...v19.5 ### [`v19.4`](https://togithub.com/graphql-java/graphql-java/releases/tag/v19.4): 19.4 This is a security bugfix release containing PR [#​3133](https://togithub.com/graphql-java/graphql-java/issues/3133). This adds a limit to the depth of grammar rules, to prevent stack overflow. See the full details on the original PR: [#​3112](https://togithub.com/graphql-java/graphql-java/issues/3112). This release also includes backported fixes to ensure `MANIFEST.MF` is the first entry in the JAR file and removes `sun.misc` from `Import-Package` header. See the full details on the original PRs: [#​3091](https://togithub.com/graphql-java/graphql-java/issues/3091) and [#​3097](https://togithub.com/graphql-java/graphql-java/issues/3097). #### What's Changed - Backported the fix to remove sun.misc by [@​schaefa](https://togithub.com/schaefa) in [https://github.com/graphql-java/graphql-java/pull/3099](https://togithub.com/graphql-java/graphql-java/pull/3099) - Backported [#​3112](https://togithub.com/graphql-java/graphql-java/issues/3112) into 19.x branch by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/3133](https://togithub.com/graphql-java/graphql-java/pull/3133) **Full Changelog**: https://github.com/graphql-java/graphql-java/compare/v19.3...v19.4 ### [`v19.3`](https://togithub.com/graphql-java/graphql-java/releases/tag/v19.3): 19.3 The 19.3 bug fix release has been created #### What's Changed - 19.x fix - use class loader on i18n by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/3038](https://togithub.com/graphql-java/graphql-java/pull/3038) **Full Changelog**: https://github.com/graphql-java/graphql-java/compare/v19.2...v19.3 ### [`v19.2`](https://togithub.com/graphql-java/graphql-java/releases/tag/v19.2): 19.2 The 19.2 bug fix release has been created #### What's Changed - Stable fix for [#​2934](https://togithub.com/graphql-java/graphql-java/issues/2934) by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/2943](https://togithub.com/graphql-java/graphql-java/pull/2943) - Stable port of Fix field visibility bug with enum with enum args ([#​2926](https://togithub.com/graphql-java/graphql-java/issues/2926)) by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/2944](https://togithub.com/graphql-java/graphql-java/pull/2944) - Stable port of Fix printing directives when they contain something li… by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/2945](https://togithub.com/graphql-java/graphql-java/pull/2945) - Stable port of Diff counts are the same by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/2946](https://togithub.com/graphql-java/graphql-java/pull/2946) - Stable port of [#​2940](https://togithub.com/graphql-java/graphql-java/issues/2940) by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/2947](https://togithub.com/graphql-java/graphql-java/pull/2947) **Full Changelog**: https://github.com/graphql-java/graphql-java/compare/v19.1...v19.2 ### [`v19.1`](https://togithub.com/graphql-java/graphql-java/releases/tag/v19.1): 19.1 This bug fix release was made to address a specific `NullPointerException` problem if consumers are explicitly setting the `ExecutionInput` to null See [https://github.com/graphql-java/graphql-java/pull/2908](https://togithub.com/graphql-java/graphql-java/pull/2908) for the code details. The other fixes are included because they are... well... fixes and where ready at the time. #### What's Changed - Defaults Locale when calling validation by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/2908](https://togithub.com/graphql-java/graphql-java/pull/2908) - Handles isDeprecated not being present in the json by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/2910](https://togithub.com/graphql-java/graphql-java/pull/2910) - Fix typo in description of skip directive by [@​acanda](https://togithub.com/acanda) in [https://github.com/graphql-java/graphql-java/pull/2915](https://togithub.com/graphql-java/graphql-java/pull/2915) - Xuorig Fix PR - Edge case with GraphQLTypeReference and Schema Transforms by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/2906](https://togithub.com/graphql-java/graphql-java/pull/2906) - Reduce calculation for fragments in ExecutableNormalizedOperation by [@​dondonz](https://togithub.com/dondonz) in [https://github.com/graphql-java/graphql-java/pull/2911](https://togithub.com/graphql-java/graphql-java/pull/2911) #### New Contributors - [@​acanda](https://togithub.com/acanda) made their first contribution in [https://github.com/graphql-java/graphql-java/pull/2915](https://togithub.com/graphql-java/graphql-java/pull/2915) **Full Changelog**: https://github.com/graphql-java/graphql-java/compare/v19.0...v19.1 ### [`v19.0`](https://togithub.com/graphql-java/graphql-java/releases/tag/v19.0): 19.0 This is release 19.0 of GraphQL Java. It contains one breaking change. It contains one security related bugfix hardening GraphQL Java more against malicious requests: [#​2892](https://togithub.com/graphql-java/graphql-java/issues/2892) GraphQL Java now shades Antlr runtime to prevent any further dependency conflicts. Antlr is used internally for parsing and validating of GraphQL requests and SDL. [#​2854](https://togithub.com/graphql-java/graphql-java/issues/2854) It includes some performance improvements ([#​2786](https://togithub.com/graphql-java/graphql-java/issues/2786), [#​2769](https://togithub.com/graphql-java/graphql-java/issues/2769), [#​2839](https://togithub.com/graphql-java/graphql-java/issues/2839)) and several bugfixes and general improvements. ### Breaking change [#​2769](https://togithub.com/graphql-java/graphql-java/issues/2769) is an improvement to reduce object allocation. It can contain a breaking change if you would implement your own ChainedInstrumentation. ### Change in behaviour [#​2878](https://togithub.com/graphql-java/graphql-java/issues/2878) introduces i18n for validation error messages, and by default will set locale to the JVM default locale [#​2799](https://togithub.com/graphql-java/graphql-java/issues/2799) changes the behaviour of the AST printer to use the shortest form available for query operation if possible. While semantically this is not a change, it might affect you. ### Bugfixes [#​2892](https://togithub.com/graphql-java/graphql-java/issues/2892) Security bugfix to prevent DOS attacks [#​2818](https://togithub.com/graphql-java/graphql-java/issues/2818) Fix silent thread leak for chained instrumentation [#​2825](https://togithub.com/graphql-java/graphql-java/issues/2825) Fixup Introspection input field deprecation filterting [#​2842](https://togithub.com/graphql-java/graphql-java/issues/2842) fix runtime exception for deep async queries [#​2856](https://togithub.com/graphql-java/graphql-java/issues/2856) SchemaPrinter description bugfix ### Improvements [#​2786](https://togithub.com/graphql-java/graphql-java/issues/2786) performance improvements for validation [#​2854](https://togithub.com/graphql-java/graphql-java/issues/2854) Shade Antlr Runtime [#​2896](https://togithub.com/graphql-java/graphql-java/issues/2896) Update DataLoader to 3.2.0 [#​2878](https://togithub.com/graphql-java/graphql-java/issues/2878) i18n for validation error messages [#​2881](https://togithub.com/graphql-java/graphql-java/issues/2881) Improve SchemaPrinter [#​2872](https://togithub.com/graphql-java/graphql-java/issues/2872) Improve AST compact printing [#​2846](https://togithub.com/graphql-java/graphql-java/issues/2846) Subscription root field valiation ### All changes all PRs: https://github.com/graphql-java/graphql-java/milestone/38?closed=1 ### [`v18.5`](https://togithub.com/graphql-java/graphql-java/releases/tag/v18.5): 18.5 This is a security bugfix release containing only one PR: [#​3159](https://togithub.com/graphql-java/graphql-java/issues/3159) This adds a limit to the number of characters used in an operation. Full details can be found here: [#​3148](https://togithub.com/graphql-java/graphql-java/issues/3148) #### What's Changed - Backport max characters to 18.x by [@​dondonz](https://togithub.com/dondonz) in [https://github.com/graphql-java/graphql-java/pull/3159](https://togithub.com/graphql-java/graphql-java/pull/3159) **Full Changelog**: https://github.com/graphql-java/graphql-java/compare/v18.4...v18.5 ### [`v18.4`](https://togithub.com/graphql-java/graphql-java/releases/tag/v18.4): 18.4 This is a security bugfix release containing only one PR: [#​3144](https://togithub.com/graphql-java/graphql-java/issues/3144) This adds a limit to the depth of grammar rules, to prevent stack overflow. Full details can be found here: [#​3112](https://togithub.com/graphql-java/graphql-java/issues/3112) #### What's Changed - Add backport of rule depth rule to 18.x by [@​dondonz](https://togithub.com/dondonz) in [https://github.com/graphql-java/graphql-java/pull/3144](https://togithub.com/graphql-java/graphql-java/pull/3144) **Full Changelog**: https://github.com/graphql-java/graphql-java/compare/v18.3...v18.4 ### [`v18.3`](https://togithub.com/graphql-java/graphql-java/releases/tag/v18.3): 18.3 This is a security bugfix release containing only one PR: [https://github.com/graphql-java/graphql-java/pull/2897](https://togithub.com/graphql-java/graphql-java/pull/2897) GraphQL Java has a max token limit per request preventing DOS attacks. But in some circumstances it was not enough to prevent malicious requests. This release fixes this problem. All details can be found here: [https://github.com/graphql-java/graphql-java/pull/2892](https://togithub.com/graphql-java/graphql-java/pull/2892) ### [`v18.2`](https://togithub.com/graphql-java/graphql-java/releases/tag/v18.2): 18.2 This bug fix release fixes the double variable coercion problem identified in [#​2819](https://togithub.com/graphql-java/graphql-java/issues/2819), and introduces `RawVariables` and `CoercedVariables` to indicate whether variables have been coerced. Note: This is a bug fix release. Only changes to fix [#​2819](https://togithub.com/graphql-java/graphql-java/issues/2819) have been cherry picked in this release. Other merged changes will be released separately as v19. #### What's Changed - Cherry pick raw and coerced variable refactor for 18.x branch by [@​dondonz](https://togithub.com/dondonz) in [https://github.com/graphql-java/graphql-java/pull/2861](https://togithub.com/graphql-java/graphql-java/pull/2861) - Cherry pick double variable coercion fix by [@​dondonz](https://togithub.com/dondonz) in [https://github.com/graphql-java/graphql-java/pull/2867](https://togithub.com/graphql-java/graphql-java/pull/2867) - Bugfix cherry pick: RawVariables and CoercedVariables are public API ([#​2868](https://togithub.com/graphql-java/graphql-java/issues/2868)) by [@​dondonz](https://togithub.com/dondonz) in [https://github.com/graphql-java/graphql-java/pull/2870](https://togithub.com/graphql-java/graphql-java/pull/2870) **Full Changelog**: https://github.com/graphql-java/graphql-java/compare/v18.1...v18.2 ### [`v18.1`](https://togithub.com/graphql-java/graphql-java/releases/tag/v18.1): 18.1 This bug fix release contains an important fix [https://github.com/graphql-java/graphql-java/pull/2773](https://togithub.com/graphql-java/graphql-java/pull/2773) The latest 18.0 version of graphql-java changed the way raw values are resolved to canonical values. However this revealed a bug in MaxQueryXXX instrumentation where invalid values (null being present for non nullable input values) caused an exception rather than generating a graphql error. This is not a behavior we intended. The bug is only present if you use `graphql.analysis.MaxQueryDepthInstrumentation` and `graphql.analysis.MaxQueryDepthInstrumentation` #### What's Changed - Make public static fields immutable in ScalarInfo by [@​kilink](https://togithub.com/kilink) in [https://github.com/graphql-java/graphql-java/pull/2770](https://togithub.com/graphql-java/graphql-java/pull/2770) - Improve NonNullableValueCoercedAsNullException message by [@​dondonz](https://togithub.com/dondonz) in [https://github.com/graphql-java/graphql-java/pull/2774](https://togithub.com/graphql-java/graphql-java/pull/2774) - Make public static fields immutable in DirectiveInfo by [@​kilink](https://togithub.com/kilink) in [https://github.com/graphql-java/graphql-java/pull/2781](https://togithub.com/graphql-java/graphql-java/pull/2781) - Replace usage of Stack with Deque / ArrayDeque by [@​kilink](https://togithub.com/kilink) in [https://github.com/graphql-java/graphql-java/pull/2780](https://togithub.com/graphql-java/graphql-java/pull/2780) - Fix argument / format string mismatches by [@​kilink](https://togithub.com/kilink) in [https://github.com/graphql-java/graphql-java/pull/2779](https://togithub.com/graphql-java/graphql-java/pull/2779) - Fixing the missing description for enum values for introspection to schema conversion by [@​ashpak-shaikh](https://togithub.com/ashpak-shaikh) in [https://github.com/graphql-java/graphql-java/pull/2778](https://togithub.com/graphql-java/graphql-java/pull/2778) - Fix `TypeRuntimeWiring.enumValues()` error message by [@​martinbonnin](https://togithub.com/martinbonnin) in [https://github.com/graphql-java/graphql-java/pull/2782](https://togithub.com/graphql-java/graphql-java/pull/2782) - GraphQL Specification link updated by [@​firatkucuk](https://togithub.com/firatkucuk) in [https://github.com/graphql-java/graphql-java/pull/2785](https://togithub.com/graphql-java/graphql-java/pull/2785) - Variable document compilation now handles enums properly AND also null input values by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/2784](https://togithub.com/graphql-java/graphql-java/pull/2784) - Add ParserOption to ignore single-line comments by [@​jord1e](https://togithub.com/jord1e) in [https://github.com/graphql-java/graphql-java/pull/2788](https://togithub.com/graphql-java/graphql-java/pull/2788) - Add missing annotations in DelegatingDataFetchingEnvironment by [@​kilink](https://togithub.com/kilink) in [https://github.com/graphql-java/graphql-java/pull/2797](https://togithub.com/graphql-java/graphql-java/pull/2797) - Fix instances of incorrectly sized Maps and Sets by [@​kilink](https://togithub.com/kilink) in [https://github.com/graphql-java/graphql-java/pull/2798](https://togithub.com/graphql-java/graphql-java/pull/2798) - Use jetbrains annotations by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/2801](https://togithub.com/graphql-java/graphql-java/pull/2801) - Make some inner classes static by [@​kilink](https://togithub.com/kilink) in [https://github.com/graphql-java/graphql-java/pull/2804](https://togithub.com/graphql-java/graphql-java/pull/2804) - Fix `AstPrinter` to print field descriptions by [@​david-castaneda](https://togithub.com/david-castaneda) in [https://github.com/graphql-java/graphql-java/pull/2808](https://togithub.com/graphql-java/graphql-java/pull/2808) - Make some static fields final by [@​kilink](https://togithub.com/kilink) in [https://github.com/graphql-java/graphql-java/pull/2803](https://togithub.com/graphql-java/graphql-java/pull/2803) - Max query depth called later in beginExecuteOperation by [@​bbakerman](https://togithub.com/bbakerman) in [https://github.com/graphql-java/graphql-java/pull/2773](https://togithub.com/graphql-java/graphql-java/pull/2773) #### New Contributors - [@​kilink](https://togithub.com/kilink) made their first contribution in [https://github.com/graphql-java/graphql-java/pull/2770](https://togithub.com/graphql-java/graphql-java/pull/2770) - [@​ashpak-shaikh](https://togithub.com/ashpak-shaikh) made their first contribution in [https://github.com/graphql-java/graphql-java/pull/2778](https://togithub.com/graphql-java/graphql-java/pull/2778) - [@​martinbonnin](https://togithub.com/martinbonnin) made their first contribution in [https://github.com/graphql-java/graphql-java/pull/2782](https://togithub.com/graphql-java/graphql-java/pull/2782) - [@​firatkucuk](https://togithub.com/firatkucuk) made their first contribution in [https://github.com/graphql-java/graphql-java/pull/2785](https://togithub.com/graphql-java/graphql-java/pull/2785) - [@​david-castaneda](https://togithub.com/david-castaneda) made their first contribution in [https://github.com/graphql-java/graphql-java/pull/2808](https://togithub.com/graphql-java/graphql-java/pull/2808) **Full Changelog**: https://github.com/graphql-java/graphql-java/compare/v18.0...v18.1 ### [`v18.0`](https://togithub.com/graphql-java/graphql-java/releases/tag/v18.0): 18.0 We are happy to announce v18.0 of graphql-java https://github.com/graphql-java/graphql-java/pulls?q=is%3Apr+milestone%3A18.0+is%3Aclosed ### Applied Directives Graphql directives have two modes. They can be *defined* in a schema ```graphql directive @​example on FIELD_DEFINITION | ARGUMENT_DEFINITION ``` and they can be *applied* to schema elements and query elements ```graphql type Query { field(arg : String! ) @​example ``` So we have a directive definition and cases where that directive is applied to an element. However when the `graphql.schema.GraphQLDirective` and `graphql.schema.GraphQLArgument` classes was created, we modelled this badly. These classes should really represent a directive definition in schema only but we reused them to also be the representation of a directive and value arguments *applied* to another schema or query element. This modelling is wrong. You can tell because we have javadoc comments like this in `graphql.schema.GraphQLArgument` saying a certain property is only applicable in certain call contexts. ```java /** * This is only used for applied directives, that is when this argument is on a {@​link GraphQLDirective} applied to a schema or query element * * @​return an input value with state for an applied directive * * @​deprecated use {@​link GraphQLAppliedDirectiveArgument} instead */ @​Deprecated public @​NotNull InputValueWithState getArgumentValue() { return value; } ``` So we have decided to fix this bad class modelling in version 18. We have introduced new classes - `graphql.schema.GraphQLAppliedDirective` - `graphql.schema.GraphQLAppliedDirectiveArgument` which represent an *applied* directive on a schema element and - `graphql.execution.directives.QueryAppliedDirective` - `graphql.execution.directives.QueryAppliedDirectiveArgument` which represent an *applied* directive on a query element For backwards compatibility reasons, the old `graphql.schema.GraphQLDirective` objects are still created for `applied` elements however the methods have all been deprecated and like for like `getAppliedXXX` methods have been introduced. You should migrate your code way from getting *applied* directives from the old methods and use the new more correctly modelled classes. This backwards compatibility will be removed in a future version. Because of this backwards compatibility, there are a few gotchas to look out for. For example visitors will be called twice for the same *applied* element, eg one for the old style `GraphQLDirective` object and one for the new `GraphQLAppliedDirective` object. You should choose the new classes only as part of code migration. This should only affect code that does schema and query traversal (which is an advanced use case) and hence most consumers of graphql-java will not be affected. There is one breaking change here. `graphql.introspection.IntrospectionWithDirectivesSupport` and its predicate argument `graphql.introspection.IntrospectionWithDirectivesSupport.DirectivePredicateEnvironment` have been changed to provide a directive name and not the *applied*`GraphQLDirective` directly. Again we think very few people will be affected by this breaking change. [https://github.com/graphql-java/graphql-java/pull/2186](https://togithub.com/graphql-java/graphql-java/pull/2186) ### Dramatic performance improvement on Validation rules The team at Twitter contributed a changed to the `RulesVisitor` that is used to validate a query against the set of validation rules. For large queries this could be a performance drag. > This changes it to roughly linear complexity and shows a 5000% speedup when validating our large queries. [https://github.com/graphql-java/graphql-java/pull/2563](https://togithub.com/graphql-java/graphql-java/pull/2563) ### Skipping validation rules In extreme cases, a server may choose to skip certain validation rules. We don't recommend it, because results may become unpredictable and we won't support fixing issues caused by deactivated rules. However it is now possible and may help trade validation for performance. ```groovy Predicate> predicate = new Predicate>() { @​Override boolean test(Class aClass) { if (aClass == NoUnusedFragments.class) { return false } return true } } ExecutionInput.newExecutionInput(query) .graphQLContext(["graphql.ParseAndValidate.Predicate": predicate]) .build() ``` [https://github.com/graphql-java/graphql-java/pull/2598](https://togithub.com/graphql-java/graphql-java/pull/2598) ### DataLoader has been upgrade The java data loader version has been upgrade to `3

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.



This PR has been generated by Mend Renovate. View repository job log here.

renovate[bot] commented 1 year ago

Edited/Blocked Notification

Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.

You can manually request rebase by checking the rebase/retry box above.

Warning: custom changes will be lost.