-
Notifications
You must be signed in to change notification settings - Fork 109
Open
Description
DGS Codegen currently generates some jackson-databind 2 specific annotations: JsonDeserialize, JsonPOJOBuilder
Spring projects now configure Jackson 3 by default. This leads to deserialization exceptions, since Jackson 3 ignores these annotations:
org.springframework.graphql.client.GraphQlClientException: Cannot read field 'update'
at org.springframework.graphql.client.DefaultClientResponseField.toEntity(DefaultClientResponseField.java:119) ~[spring-graphql-2.0.0.jar:2.0.0]
...
Caused by: org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class kotlin.jvm.functions.Function0]
at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.readJavaType(AbstractJacksonHttpMessageConverter.java:363) ~[spring-web-7.0.1.jar:7.0.1]
...
Caused by: tools.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `kotlin.jvm.functions.Function0` (no Creators, like default constructor, exist): abstract types either need to be mapped to concrete types, have custom deserializer, or contain additional type information
at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); byte offset: #54] (through reference chain: ...UpdateResult["updatedCount"])
at tools.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:70) ~[jackson-databind-3.0.2.jar:3.0.2]
at tools.jackson.databind.DeserializationContext.reportBadDefinition(DeserializationContext.java:1958) ~[jackson-databind-3.0.2.jar:3.0.2]
at tools.jackson.databind.DatabindContext.reportBadDefinition(DatabindContext.java:448) ~[jackson-databind-3.0.2.jar:3.0.2]
at tools.jackson.databind.DeserializationContext.handleMissingInstantiator(DeserializationContext.java:1488) ~[jackson-databind-3.0.2.jar:3.0.2]
at tools.jackson.databind.deser.AbstractDeserializer.deserialize(AbstractDeserializer.java:254) ~[jackson-databind-3.0.2.jar:3.0.2]
at tools.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:552) ~[jackson-databind-3.0.2.jar:3.0.2]
at tools.jackson.databind.deser.bean.BeanDeserializer._deserializeWithErrorWrapping(BeanDeserializer.java:746) ~[jackson-databind-3.0.2.jar:3.0.2]
at tools.jackson.databind.deser.bean.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:592) ~[jackson-databind-3.0.2.jar:3.0.2]
at tools.jackson.databind.deser.bean.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1417) ~[jackson-databind-3.0.2.jar:3.0.2]
at tools.jackson.databind.deser.bean.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:480) ~[jackson-databind-3.0.2.jar:3.0.2]
at tools.jackson.databind.deser.bean.BeanDeserializer.deserialize(BeanDeserializer.java:200) ~[jackson-databind-3.0.2.jar:3.0.2]
at tools.jackson.databind.deser.DeserializationContextExt.readRootValue(DeserializationContextExt.java:265) ~[jackson-databind-3.0.2.jar:3.0.2]
at tools.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:1646) ~[jackson-databind-3.0.2.jar:3.0.2]
at tools.jackson.databind.ObjectReader.readValue(ObjectReader.java:1171) ~[jackson-databind-3.0.2.jar:3.0.2]
at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.readJavaType(AbstractJacksonHttpMessageConverter.java:355) ~[spring-web-7.0.1.jar:7.0.1]
... 22 common frames omitted
In this case, I'm using the Kotlin closure syntax. (generateKotlinNullableClasses, generateKotlinClosureProjections) I'm not sure if the issue is limited to those settings.
surecloud-jleite, nokok, hwwi, johnwi58 and thibaud-socrate
Metadata
Metadata
Assignees
Labels
No labels