Skip to content

Latest commit

 

History

History
135 lines (120 loc) · 11.9 KB

CHANGELOG.md

File metadata and controls

135 lines (120 loc) · 11.9 KB

Changelog

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

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.

[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