Skip to content

Releases: leangen/graphql-spqr

graphql-spqr-v0.9.9

13 Dec 16:42
Compare
Choose a tag to compare

[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

graphql-spqr-v0.9.8

25 Nov 23:32
Compare
Choose a tag to compare

[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