From 73a6a017be7ebed87718e0270940ca24dd8b7753 Mon Sep 17 00:00:00 2001 From: jwijgerd Date: Tue, 6 Jan 2015 18:01:16 +0100 Subject: [PATCH] fix for issue #48 fix for issue #48 - reverted pom change of the annotations module version --- .../ser/OptimizedBeanPropertyWriter.java | 3 ++- .../bug48/TestJsonSerializeAnnotationBug.java | 22 ++++++++++++++++ .../bug48/TestObjectWithJsonSerialize.java | 26 +++++++++++++++++++ 3 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 src/test/java/com/fasterxml/jackson/module/afterburner/bug48/TestJsonSerializeAnnotationBug.java create mode 100644 src/test/java/com/fasterxml/jackson/module/afterburner/bug48/TestObjectWithJsonSerialize.java diff --git a/src/main/java/com/fasterxml/jackson/module/afterburner/ser/OptimizedBeanPropertyWriter.java b/src/main/java/com/fasterxml/jackson/module/afterburner/ser/OptimizedBeanPropertyWriter.java index 2b5f359..1f47318 100644 --- a/src/main/java/com/fasterxml/jackson/module/afterburner/ser/OptimizedBeanPropertyWriter.java +++ b/src/main/java/com/fasterxml/jackson/module/afterburner/ser/OptimizedBeanPropertyWriter.java @@ -38,7 +38,8 @@ protected OptimizedBeanPropertyWriter(BeanPropertyWriter src, { super(src); this.fallbackWriter = unwrapFallbackWriter(src); - _serializer = ser; // from base class + // either use the passed on serializer or the original one + _serializer = (ser != null) ? ser : src.getSerializer(); _propertyAccessor = propertyAccessor; _propertyIndex = propertyIndex; _fastName = src.getSerializedName(); diff --git a/src/test/java/com/fasterxml/jackson/module/afterburner/bug48/TestJsonSerializeAnnotationBug.java b/src/test/java/com/fasterxml/jackson/module/afterburner/bug48/TestJsonSerializeAnnotationBug.java new file mode 100644 index 0000000..8aa837e --- /dev/null +++ b/src/test/java/com/fasterxml/jackson/module/afterburner/bug48/TestJsonSerializeAnnotationBug.java @@ -0,0 +1,22 @@ +package com.fasterxml.jackson.module.afterburner.bug48; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.module.afterburner.AfterburnerModule; +import com.fasterxml.jackson.module.afterburner.AfterburnerTestBase; + +import java.math.BigDecimal; + +/** + * @author Joost van de Wijgerd + */ +public class TestJsonSerializeAnnotationBug extends AfterburnerTestBase { + public void testAfterburnerModule() throws JsonProcessingException { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.registerModule(new AfterburnerModule()); + + String value = objectMapper.writeValueAsString(new TestObjectWithJsonSerialize(new BigDecimal("870.04"))); + + + } +} diff --git a/src/test/java/com/fasterxml/jackson/module/afterburner/bug48/TestObjectWithJsonSerialize.java b/src/test/java/com/fasterxml/jackson/module/afterburner/bug48/TestObjectWithJsonSerialize.java new file mode 100644 index 0000000..f51f97e --- /dev/null +++ b/src/test/java/com/fasterxml/jackson/module/afterburner/bug48/TestObjectWithJsonSerialize.java @@ -0,0 +1,26 @@ +package com.fasterxml.jackson.module.afterburner.bug48; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; + +import java.math.BigDecimal; + +/** + * @author Joost van de Wijgerd + */ +public final class TestObjectWithJsonSerialize { + @JsonSerialize(using = ToStringSerializer.class) + private final BigDecimal amount; + + @JsonCreator + public TestObjectWithJsonSerialize(@JsonProperty("amount") BigDecimal amount) { + this.amount = amount; + } + + @JsonSerialize(using = ToStringSerializer.class) @JsonProperty("amount") + public BigDecimal getAmount() { + return amount; + } +}