-
Notifications
You must be signed in to change notification settings - Fork 110
Closed
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.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels