Skip to content

Latest commit

 

History

History
230 lines (184 loc) · 15.9 KB

CHANGELOG.md

File metadata and controls

230 lines (184 loc) · 15.9 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog.

[unreleased]

Added

  • Enhance RootContextInjector #508
  • Separate the configuration API from GraphQLSchemaGenerator #507

Changed

  • [Breaking] Upgraded to graphql-java v22.1

Fixed

  • [Breaking] @GraphQLIgnore'd elements can still cause conflicts #486

[0.12.4] - 2024-01-07

Changed

  • [Breaking] Upgraded to graphql-java v21.3

Added

  • [Breaking] Jakarta annotations and validation groups support #472

Fixed

  • JacksonValueMapper ignores annotations on private fields #469

[0.12.3] - 2023-06-18

Added

  • Support arguments in batch loaders #464
  • Enable ResolverInterceptors to optionally run after output conversion #463
  • Enable easier exclusion of static members #460

Fixed

  • Restored public accessibility of ResolvedField #455
  • Restored Java 8 support #457
  • Subscription methods returning a non-null Publisher are now mapped correctly #458

[0.12.2] - 2023-04-15

Added

  • Support record-like accessors #453
  • The name is no longer mandatory on @GraphQLArgument #311

Changed

  • Upgraded to graphql-java v20.2 #437
  • ComplexityAnalyzer greatly simplified and made public #450
  • Replaced JavaScriptEvaluator as the default ComplexityFunction with a simpler implementation #452
  • Deprecated inline unions (io.leangen.graphql.annotations.@GraphQLUnion) for removal

Fixed

  • @GraphQLId deserialization to Integer #444

[0.12.1] - 2022-12-18

Changed

  • [Breaking] Upgraded to graphql-java v20.0 #437

[0.12.0] - 2022-11-28

Changed

  • [Breaking] Upgraded to graphql-java v19.2 #433
  • [Breaking] Replace batching strategy with DataLoader #432
  • [Breaking] Remove custom TypeResolutionEnvironment (replaced with constructor-injected GlobalEnvironment)
  • [Breaking] Remove implicit mapping directives #435
  • Fixed

  • Applied directives are now correctly defined in the schema (and will be present in the SDL)

[0.11.2] - 2021-03-21

Added

  • Make it easy to customize how Executables are created #383

Changed

  • Improve GraphQLSchemaGenerator API and JavaDoc #384

Fixed

  • Support for @JsonTypeInfo #353
  • [Breaking] Bring MapToListTypeAdapter in line with the other adapters #382

[0.11.1] - 2021-02-09

Changed

  • Upgraded to graphql-java v16.2

Fixed

  • Complexity analysis broken with multiple named fragments #379

[0.11.0] - 2021-01-31

Added

  • Add GraphQLErrors to the response via ResolutionEnvironment #346

Changed

  • [Breaking] Upgraded to graphql-java v16.1 #373
  • [Breaking] Distinguish between no default value and null default value #374

[0.10.1] - 2019-12-30

Added

  • Easy hierarchical names for nested types: DefaultTypeInfoGenerator#withHierarchicalNames #310
  • Reintroduce fieldOrder and add inputFieldOrder #279
  • Make it easier to apply a ResolverBuilder to specific types only #277
  • Make it easy to filter interfaces in InterfaceMappingStrategy #299
  • Support DataFetcherResult even when not declared #318
  • Add reason field to @GraphQLIgnore annotation

Changed

  • Relax the mapping rules for abstract inputs (makes it easy to use e.g. Immutables and AutoValue) #293 #245
  • Don't scan for implementations of concrete input types by default #332
  • Collect transitive interfaces for object types #282
  • Relax name collision detection: only consider io.leangen annotations #232
  • Upgraded to graphql-java v13

Fixed

  • [Breaking] Filtering of fields/methods/parameters now happens before type resolution #298
  • Complexity calculation for multi-root queries #313
  • ResolverInterceptors must see real underlying exceptions #314
  • @GraphQLIgnore should affect auto discovery only if applied directly #288

[0.10.0] - 2019-05-24

Added

  • Take annotations on private fields into account (Lombok compatibility) #160
  • Optimize converter performance #250
  • Use the _mappedInputField directive to attach meta data to input fields #216
  • Generator should support accepting a bean supplier (makes prototype/dependent scoped beans easier to use) #254
  • Ability to register additional Java types (used as additional interface implementations or possible union types) #208
  • Support for OffsetTime #260

Changed

  • [Breaking] Upgraded to graphql-java v12 #252
  • [Breaking] Field sorting no longer possible (due to graphql-java v12 upgrade)
  • Jackson and ClassGraph versions upgraded #226 #227
  • Small improvements a663162
  • JavaDeprecationMappingConfig accessible from GeneratorConfiguration 4aa8c5f 7a34178
  • [Breaking] java.sql.Timestamp scalar (de)serializes to/from UTC timezone and not local time #251

Fixed

  • Generate valid names for array types #217
  • Generate GraphQL type names for generic Java types correctly #255
  • Resolve type references discovered in subscriptions and mutations #238
  • Duplicate possible types in unions cause TypeMappingException and not IndexOutOfBoundsException #256
  • Adding custom directives can cause NullPointerException or IllegalStateException #258

[0.9.9] - 2018-12-13

Added

  • Introduced full support for both schema and client directives #200
  • Introduced SchemaTransformer to enable modifying field and argument definitions
  • Introduced ResolverInterceptor that can perform arbitrary logic around the invocation of the underlying method/field #180 #92
  • Added a way to get all deserialized arguments ResolutionEnvironment #174
  • ArgumentInjectorParams#isPresent to distinguish between the explicitly provided null input value vs no value provided #197

Changed

  • Upgraded to graphql-java 11.0
  • Significantly improved the performance of converter selection #194
  • Optional arguments will be injected with Optional.empty if null is explicitly provided, and null is no value was given #197
  • All exceptions thrown during field resolution now bubble up unchanged (no longer wrapped in RuntimeException)
  • Try loading implementation classes using the parent class' loader first #177
  • Renamed withTypeAliasGroup to withTypeSynonymGroup

Fixed

  • Fixed interface type resolution logic #168
  • Arguments with default values will no longer be mapped as non-null #163
  • javax.annotation.Nonnull works again #165
  • Fixed parsing of object/json scalar literals that contain variables

[0.9.8] - 2018-08-19

Added

  • Underlying AnnotatedType now accessible from the produced GraphQLType #139
  • Underlying Operation now accessible from the produced GraphQLFieldDefinition #139
  • String interpolation support (i18n / l10n) #162
  • Jackson & Gson types (e.g. ObjectNode, JsonObject etc) are now fully supported out-of-the-box. #122
  • Ability to use Connections (Page) in non spec-compliant queries #152
  • DefaultValueProvider can now declare a constructor accepting GlobalEnvironment
  • It is now possible to explicitly treat chosen types as equal for the purposes of name collision detection #124 #157
  • Ability to register multiple InputFieldBuilders #147
  • Now using ClassGraph for implementation type auto discovery, bringing huge improvements in stability and performance #126 #161
  • Input object fields can now have default values #131
  • Existing Gson instance can now be used for configuration #132
  • Ability to customize deprecation reason without annotations #133
  • Ability to provide custom logic for implementation type auto discovery #135
  • Support for Iterable
  • Support for java.sql.Date/Time/Timestamp #136

Changed

  • [Breaking] TypeMapper interface changed to better support recursive use-cases #155
  • Java primitives are now non-nullable by default #156
  • [Breaking] InputFieldDiscoveryStrategy renamed to InputFieldBuilder #147
  • [Breaking] InputFieldBuilder#getInputFields now receives InputFieldBuilderParams
  • [Breaking] ResolverBuilder interface changed : ResolverBuilder#buildQueryResolvers/buildMutationResolvers/buildSubscriptionResolvers now receive ResolverBuilderParams
  • [Breaking] ResolverArgumentBuilder interface changed: ResolverArgumentBuilder#buildResolverArguments now receives ArgumentBuilderParams
  • [Breaking] ArgumentInjector interface changed : ArgumentInjector#getArgumentValue now receives ArgumentInjectorParams #158
  • [Breaking] ArgumentInjector#supports now receives the related Parameter in addition to its AnnotatedType
  • [Breaking] OperationNameGenerator interface changed : OperationNameGenerator#generateQueryName/generateMutationName/generateSubscriptionName now receive OperationNameGeneratorParams
  • [Breaking] All provided OperationNameGenerators redesigned for reusability: the new DefaultOperationNameGenerator should be applicable to most usages
  • MapToListTypeAdapter now produces non-nullable entries #145
  • [Breaking] GsonValueMapperFactory.Configurer interface changed: GsonValueMapperFactory.Configurer#configure now receives ConfigurerParams
  • [Breaking] JacksonValueMapperFactory.Configurer interface changed: JacksonValueMapperFactory.Configurer#configure now receives ConfigurerParams
  • [Breaking] Abstract input types with a single concrete implementation no longer have a type discriminator field
  • All dependencies upgraded, most notably graphql-java in now on 9.2
  • Generator methods (withXXX) have more intuitive behavior #123
  • Default deprecation reason changed to "Deprecated" for better GraphiQL compatibility

Deprecated

  • ClassUtils#findImplementations is superseded by ClassFinder #135

Removed

  • BeanOperationNameGenerator removed. Superseded by PropertyOperationNameGenerator.
  • MethodOperationNameGenerator removed. Superseded by MemberOperationNameGenerator.
  • ReturnTypeOperationNameGenerator removed, as it served no purpose.
  • DelegatingOperationNameGenerator removed. Superseded by DefaultOperationNameGenerator.

Fixed

  • Fixed ScalarMap deserialization error. ObjectScalarAdapter is no longer an OutputConverter. #106 #112
  • Fixed type name collision going unnoticed when an input and an output type share a name #151
  • Fixed generic type discovery for static inner classes
  • Fixed double-quoting of IDs #134
  • Fixed numerous problems in implementation auto discovery with fat JARs, new class format etc #111 #121 #150