Skip to content

Commit 968d981

Browse files
authored
Fix for failing Guava Optional test (#136)
1 parent efe3caa commit 968d981

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

guava/src/main/java/com/fasterxml/jackson/datatype/guava/ser/GuavaBeanSerializerModifier.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
package com.fasterxml.jackson.datatype.guava.ser;
22

3+
import com.fasterxml.jackson.databind.AnnotationIntrospector;
34
import com.fasterxml.jackson.databind.BeanDescription;
45
import com.fasterxml.jackson.databind.SerializationConfig;
6+
import com.fasterxml.jackson.databind.introspect.AnnotatedMember;
57
import com.fasterxml.jackson.databind.ser.BeanPropertyWriter;
68
import com.fasterxml.jackson.databind.ser.BeanSerializerModifier;
9+
import com.fasterxml.jackson.databind.ser.impl.UnwrappingBeanPropertyWriter;
10+
import com.fasterxml.jackson.databind.util.NameTransformer;
711
import com.google.common.base.Optional;
812

913
import java.io.Serializable;
@@ -25,7 +29,15 @@ public List<BeanPropertyWriter> changeProperties(SerializationConfig config,
2529
for (int i = 0; i < beanProperties.size(); ++i) {
2630
final BeanPropertyWriter writer = beanProperties.get(i);
2731
if (Optional.class.isAssignableFrom(writer.getType().getRawClass())) {
28-
beanProperties.set(i, new GuavaOptionalBeanPropertyWriter(writer));
32+
// Since 2.17: Added to preserve UnwrappingBeanProperty name transformer.
33+
if (writer instanceof UnwrappingBeanPropertyWriter) {
34+
final AnnotatedMember member = writer.getMember();
35+
final AnnotationIntrospector intr = config.getAnnotationIntrospector();
36+
final NameTransformer unwrapper = intr.findUnwrappingNameTransformer(member);
37+
beanProperties.set(i, new GuavaUnwrappingOptionalBeanPropertyWriter(writer, unwrapper));
38+
} else {
39+
beanProperties.set(i, new GuavaOptionalBeanPropertyWriter(writer));
40+
}
2941
}
3042
}
3143
return beanProperties;

0 commit comments

Comments
 (0)