From 413a4427dfe45302ce50f72872adc59b37a49c9a Mon Sep 17 00:00:00 2001 From: Carter Kozak Date: Thu, 5 Sep 2024 11:19:29 -0400 Subject: [PATCH] Singleton beans use a JsonCreator with mode=PROPERTIES See the discussion here: https://github.com/FasterXML/jackson-databind/issues/4688#issuecomment-2330537868 Ideally we can avoid deserialization failures for existing code, but it's better to align our usage with the maintainers vision either way :-) --- .../java/com/palantir/product/EmptyObjectExample.java | 2 +- .../java/com/palantir/strict/EmptyObjectNotStrict.java | 2 +- .../test/prefix/com/palantir/product/EmptyObjectExample.java | 2 +- .../java/com/palantir/conjure/java/types/BeanGenerator.java | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/conjure-java-core/src/integrationInput/java/com/palantir/product/EmptyObjectExample.java b/conjure-java-core/src/integrationInput/java/com/palantir/product/EmptyObjectExample.java index c9b52ee28..8955b249e 100644 --- a/conjure-java-core/src/integrationInput/java/com/palantir/product/EmptyObjectExample.java +++ b/conjure-java-core/src/integrationInput/java/com/palantir/product/EmptyObjectExample.java @@ -19,7 +19,7 @@ public String toString() { return "EmptyObjectExample{}"; } - @JsonCreator(mode = JsonCreator.Mode.DELEGATING) + @JsonCreator(mode = JsonCreator.Mode.PROPERTIES) public static EmptyObjectExample of() { return INSTANCE; } diff --git a/conjure-java-core/src/integrationInput/java/com/palantir/strict/EmptyObjectNotStrict.java b/conjure-java-core/src/integrationInput/java/com/palantir/strict/EmptyObjectNotStrict.java index c6bb919b6..9bffd3e06 100644 --- a/conjure-java-core/src/integrationInput/java/com/palantir/strict/EmptyObjectNotStrict.java +++ b/conjure-java-core/src/integrationInput/java/com/palantir/strict/EmptyObjectNotStrict.java @@ -21,7 +21,7 @@ public String toString() { return "EmptyObjectNotStrict{}"; } - @JsonCreator(mode = JsonCreator.Mode.DELEGATING) + @JsonCreator(mode = JsonCreator.Mode.PROPERTIES) public static EmptyObjectNotStrict of() { return INSTANCE; } diff --git a/conjure-java-core/src/integrationInput/java/test/prefix/com/palantir/product/EmptyObjectExample.java b/conjure-java-core/src/integrationInput/java/test/prefix/com/palantir/product/EmptyObjectExample.java index 35a0b78a2..2bd254e1b 100644 --- a/conjure-java-core/src/integrationInput/java/test/prefix/com/palantir/product/EmptyObjectExample.java +++ b/conjure-java-core/src/integrationInput/java/test/prefix/com/palantir/product/EmptyObjectExample.java @@ -21,7 +21,7 @@ public String toString() { return "EmptyObjectExample{}"; } - @JsonCreator(mode = JsonCreator.Mode.DELEGATING) + @JsonCreator(mode = JsonCreator.Mode.PROPERTIES) public static EmptyObjectExample of() { return INSTANCE; } diff --git a/conjure-java-core/src/main/java/com/palantir/conjure/java/types/BeanGenerator.java b/conjure-java-core/src/main/java/com/palantir/conjure/java/types/BeanGenerator.java index bcf20d0ed..391e6db9f 100644 --- a/conjure-java-core/src/main/java/com/palantir/conjure/java/types/BeanGenerator.java +++ b/conjure-java-core/src/main/java/com/palantir/conjure/java/types/BeanGenerator.java @@ -405,7 +405,7 @@ private static MethodSpec createStaticFactoryMethodForEmptyBean(ClassName object return MethodSpec.methodBuilder("of") .addModifiers(Modifier.PUBLIC, Modifier.STATIC) .returns(objectClass) - .addAnnotation(ConjureAnnotations.delegatingJsonCreator()) + .addAnnotation(ConjureAnnotations.propertiesJsonCreator()) .addCode("return $L;", SINGLETON_INSTANCE_NAME) .build(); }