Tags: graphql-java-generator/graphql-gradle-plugin-project
Tags
All modes (client and server): * Issue #218: Default target folder was based on "target" (on both the Maven and Gradle plugins) * Issue #228: The plugin would throw an error, if an object contains more than one field of ID type Pojo in server mode * Issue #227: the generated code would not compile with the `generatePojo` goal/task in server mode when `generateJacksonAnnotations` is set to `true` Custom templates: * Breaking change due to the #227 issue correction, the custom templates `client_query_mutation_type.vm.java`, `client_subscription_type.vm.java`, `interface_type.vm.java` and `object_type.vm.java` changed. The import for `com.fasterxml.jackson.annotation.JsonProperty` and `com.fasterxml.jackson.databind.annotation.JsonDeserialize` has been added * Each template states its name in a comment in the first line: ```java /** Generated by the '${templateName}' default template from graphql-java-generator */ ``` * You can use the `templateName` place holder to change the header to something like 'Generated by the ${templateName} custom template'
Server mode: * The new `generateBatchMappingDataFetchers` plugin parameters is in __beta version__ in this release. It allows to generate data fetchers with the <code>@BatchMapping</code> annotation (instead of the `@SchemaMapping` one). This allows to manage the N+1 select problem: so this allows much better performances, by highly diminishing the number of executed requests * The new `batchMappingDataFetcherReturnType` allows to control the return type of these data fetchers * Please note that the behaviour for this parameter may change a little for GraphQL schema that use field parameters. * For GraphQL schemas that don't use field parameters, its behaviour can be considered as stable * Issues #214 and #215: the new `ignoredSpringMappings` plugin parameter allows to ignore a list of type and field mappings (or all mappings, when this parameter is set to the star character, "*"). * An ignored type mapping prevent the generation of its `DataFetcherDelegate`, and its entity Spring Controller. The [Spring Controller](https://docs.spring.io/spring-graphql/reference/controllers.html) must be 'manually' implemented. * An ignored field mapping prevent the generation of the method for this field in the `DataFetcherDelegate`, and its entity Spring Controller. A [Spring Controller](https://docs.spring.io/spring-graphql/reference/controllers.html) must be 'manually' implemented for this field. * Issue #217: compilation error when a field first letter is in uppercase. Internal API: * The `DataFetcher.completableFuture` has been renamed to `DataFetcher.withDataLoader`. This impacts these templates: `object_content.vm.java`, `server_EntityController.vm.java` and `server_GraphQLDataFetchersDelegate.vm.java`
Client mode: * Issue #213: The GraphQL custom scalars are wired according to spring-graphql needs. This fixes bean error at startup, in some specific cases All modes (client and server): * Issue #213: The GraphQL custom scalars which names in the provided schema is different that the GraphQL type name in the provided GraphQL scalar implementation would throw an error at execution. Internal: * The `server_GraphQLWiring.vm.java` custom template has been renamed to `GraphQLWiring.vm.java`, as this template is now used for both the client and the server mode.
Gradle: * issue #21: dependencies for spring framework6 are enforced for graphql-gradle-plugin3 All modes (client and server): * Issue #113: base the code generation on a json schema (from an introspection query), instead of regular graphqls GraphQL schema files. This is done with the help of this new plugin parameter: `jsonGraphqlSchemaFilename` * Issue #208: the plugin is now marked as thread safe (no more warning when using maven parallel builds)
Gradle: * Upgrade of gradle wrapper to 8.6 * Issue #14: The plugin is now compatible with Gradle configuration cache * __Possible breaking change:__ The path given to the task properties must now all be relatives to the root of their project (without a leading slash), eg : "build/generated/mytarget" (not "/build/generated/mytarget" or "$builDir/generated/mytarget")) * (Pojo goals) No more need to add the generated source folder to the sourceSets.main.java.srcDirs. It is automatically added to the java source folders. All modes: * Remove a bad java import, which could cause compilation error when just generating POJO Server mode: * Add of the `generateDataFetcherForEveryFieldsWithArguments` plugin param. This parameter allows to generate data fetchers for every field that has input argument, and add them in the generated POJOs. This allows a better compatibility with spring-graphql, and an easy access to the field's parameters. * Issue #209: error with subscription that returns enum, when the implementation returns a Publisher that is not a Flux
Dependencies upgrade: * Spring boot to 2.7.18 and 3.2.1 * Upgrade of plexus-utils to the 3.0.24 (to get rid of CVE vulnerabilities) Client and server modes: * Issues #205 and #207: The JSON and Object custom scalars are now properly managed Client mode: * When executing full requests, the `query` keyword was mandatory, whereas it is optional in the GraphQL specs.
Client and server modes: * Correction of issue #202: the generated code would not compile, if a GraphQL interface or type has a `class` attribute (due to the final `getClass` method). The generated method is `get_Class()`
Client mode: * Issue 199: the generated code would not compile if the GraphQL schema is too big * Issue #195: the _data_ part is now parsed even when there are errors. If an error occurs during the request execution (for instance the GraphQL server returns errors in its response), then the plugin tries to parse the _data _ part of the response. The parsed _data_ is attached to the thrown `GraphQLRequestExecutionException` or `GraphQLRequestExecutionUncheckedException`, along with the full response. They can be retrieved with the `getData()` and `getResponse()` methods. * Issue #200: * A missing break would prevent Custom Scalars of type Boolean to be deserialized (could not read the server response) * Alias on fields that are a Custom scalars could not be deserialized when using the deprecated ResponseType
Client and server modes: * Correction of issues #184 and #198: error with custom scalars, when the custom scalar's class is not in the plugin's classpath Client mode: * Issue 199: the generated code would not compile if the GraphQL schema is too big
Client and server modes: * Correction of issues #184 and #198: error with custom scalar, when the custom scalar's class is not in the plugin's classpath Client mode: * Add of the reactive executors and GraphQL repositories: * Queries and mutations return Mono * Subscriptions return Flux Gradle plugin: * Correction of the issues #13 and #18: The plugin is running all tasks instead of running only the configured tasks
PreviousNext