From 9befff8111b7a10bb980a2141809b7eebc8488ee Mon Sep 17 00:00:00 2001 From: mukham12 Date: Fri, 15 Dec 2023 21:20:32 -0500 Subject: [PATCH 1/3] Fix for failing Guava Optional test --- .../guava/ser/GuavaBeanSerializerModifier.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/guava/src/main/java/com/fasterxml/jackson/datatype/guava/ser/GuavaBeanSerializerModifier.java b/guava/src/main/java/com/fasterxml/jackson/datatype/guava/ser/GuavaBeanSerializerModifier.java index 90250566..c4f1a4f6 100644 --- a/guava/src/main/java/com/fasterxml/jackson/datatype/guava/ser/GuavaBeanSerializerModifier.java +++ b/guava/src/main/java/com/fasterxml/jackson/datatype/guava/ser/GuavaBeanSerializerModifier.java @@ -1,9 +1,13 @@ package com.fasterxml.jackson.datatype.guava.ser; +import com.fasterxml.jackson.databind.AnnotationIntrospector; import com.fasterxml.jackson.databind.BeanDescription; import com.fasterxml.jackson.databind.SerializationConfig; +import com.fasterxml.jackson.databind.introspect.AnnotatedMember; import com.fasterxml.jackson.databind.ser.BeanPropertyWriter; import com.fasterxml.jackson.databind.ser.BeanSerializerModifier; +import com.fasterxml.jackson.databind.ser.impl.UnwrappingBeanPropertyWriter; +import com.fasterxml.jackson.databind.util.NameTransformer; import com.google.common.base.Optional; import java.io.Serializable; @@ -24,7 +28,12 @@ public List changeProperties(SerializationConfig config, { for (int i = 0; i < beanProperties.size(); ++i) { final BeanPropertyWriter writer = beanProperties.get(i); - if (Optional.class.isAssignableFrom(writer.getType().getRawClass())) { + if (writer instanceof UnwrappingBeanPropertyWriter) { + final AnnotatedMember member = writer.getMember(); + final AnnotationIntrospector intr = config.getAnnotationIntrospector(); + final NameTransformer unwrapper = intr.findUnwrappingNameTransformer(member); + beanProperties.set(i, new GuavaUnwrappingOptionalBeanPropertyWriter(writer, unwrapper)); + } else if (Optional.class.isAssignableFrom(writer.getType().getRawClass())) { beanProperties.set(i, new GuavaOptionalBeanPropertyWriter(writer)); } } From 0d3ec7208305ab59658d1e36d7d65d4565dfbfd7 Mon Sep 17 00:00:00 2001 From: Muhammad Khalikov <55890311+mukham12@users.noreply.github.com> Date: Fri, 15 Dec 2023 21:41:55 -0500 Subject: [PATCH 2/3] Update guava/src/main/java/com/fasterxml/jackson/datatype/guava/ser/GuavaBeanSerializerModifier.java Co-authored-by: Kim, Joo Hyuk --- .../jackson/datatype/guava/ser/GuavaBeanSerializerModifier.java | 1 + 1 file changed, 1 insertion(+) diff --git a/guava/src/main/java/com/fasterxml/jackson/datatype/guava/ser/GuavaBeanSerializerModifier.java b/guava/src/main/java/com/fasterxml/jackson/datatype/guava/ser/GuavaBeanSerializerModifier.java index c4f1a4f6..e4c524e8 100644 --- a/guava/src/main/java/com/fasterxml/jackson/datatype/guava/ser/GuavaBeanSerializerModifier.java +++ b/guava/src/main/java/com/fasterxml/jackson/datatype/guava/ser/GuavaBeanSerializerModifier.java @@ -28,6 +28,7 @@ public List changeProperties(SerializationConfig config, { for (int i = 0; i < beanProperties.size(); ++i) { final BeanPropertyWriter writer = beanProperties.get(i); + // [databind#0000] Since 2.17 : problem to solve + reason for matching Unwrapping....Writer if (writer instanceof UnwrappingBeanPropertyWriter) { final AnnotatedMember member = writer.getMember(); final AnnotationIntrospector intr = config.getAnnotationIntrospector(); From a36316b4d99109b0631506e0b964ab8929f985af Mon Sep 17 00:00:00 2001 From: Muhammad Khalikov <55890311+mukham12@users.noreply.github.com> Date: Sun, 17 Dec 2023 21:05:08 -0500 Subject: [PATCH 3/3] Update GuavaBeanSerializerModifier to only apply recent changes to Optional --- .../guava/ser/GuavaBeanSerializerModifier.java | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/guava/src/main/java/com/fasterxml/jackson/datatype/guava/ser/GuavaBeanSerializerModifier.java b/guava/src/main/java/com/fasterxml/jackson/datatype/guava/ser/GuavaBeanSerializerModifier.java index e4c524e8..19f5180d 100644 --- a/guava/src/main/java/com/fasterxml/jackson/datatype/guava/ser/GuavaBeanSerializerModifier.java +++ b/guava/src/main/java/com/fasterxml/jackson/datatype/guava/ser/GuavaBeanSerializerModifier.java @@ -28,14 +28,16 @@ public List changeProperties(SerializationConfig config, { for (int i = 0; i < beanProperties.size(); ++i) { final BeanPropertyWriter writer = beanProperties.get(i); - // [databind#0000] Since 2.17 : problem to solve + reason for matching Unwrapping....Writer - if (writer instanceof UnwrappingBeanPropertyWriter) { - final AnnotatedMember member = writer.getMember(); - final AnnotationIntrospector intr = config.getAnnotationIntrospector(); - final NameTransformer unwrapper = intr.findUnwrappingNameTransformer(member); - beanProperties.set(i, new GuavaUnwrappingOptionalBeanPropertyWriter(writer, unwrapper)); - } else if (Optional.class.isAssignableFrom(writer.getType().getRawClass())) { - beanProperties.set(i, new GuavaOptionalBeanPropertyWriter(writer)); + if (Optional.class.isAssignableFrom(writer.getType().getRawClass())) { + // Since 2.17: Added to preserve UnwrappingBeanProperty name transformer. + if (writer instanceof UnwrappingBeanPropertyWriter) { + final AnnotatedMember member = writer.getMember(); + final AnnotationIntrospector intr = config.getAnnotationIntrospector(); + final NameTransformer unwrapper = intr.findUnwrappingNameTransformer(member); + beanProperties.set(i, new GuavaUnwrappingOptionalBeanPropertyWriter(writer, unwrapper)); + } else { + beanProperties.set(i, new GuavaOptionalBeanPropertyWriter(writer)); + } } } return beanProperties;