Skip to content

Commit dc09248

Browse files
committed
Fix #2519
1 parent 293f736 commit dc09248

4 files changed

Lines changed: 19 additions & 28 deletions

File tree

release-notes/CREDITS-2.x

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -990,3 +990,8 @@ Johan Haleby (johanhaleby@github)
990990
* Reported #2513: BigDecimalAsStringSerializer in NumberSerializer throws IllegalStateException
991991
in 2.10
992992
(2.10.1)
993+
994+
Richard Wise (Woodz@github)
995+
* Reported #2519: Serializing `BigDecimal` values inside containers ignores shape override
996+
(2.10.1)
997+

release-notes/VERSION-2.x

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ Project: jackson-databind
1818
(contributed by Marc M)
1919
#2513: BigDecimalAsStringSerializer in NumberSerializer throws IllegalStateException in 2.10
2020
(reported by Johan H)
21+
#2519: Serializing `BigDecimal` values inside containers ignores shape override
22+
(reported by Richard W)
2123

2224
2.10.0 (26-Sep-2019)
2325

src/main/java/com/fasterxml/jackson/databind/introspect/ConcreteBeanPropertyBase.java

Lines changed: 11 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,6 @@ public abstract class ConcreteBeanPropertyBase
2929
*/
3030
protected final PropertyMetadata _metadata;
3131

32-
/**
33-
* Lazily accessed value for per-property format override definition.
34-
*
35-
* @since 2.8
36-
*/
37-
protected transient JsonFormat.Value _propertyFormat;
38-
3932
/**
4033
* @since 2.9
4134
*/
@@ -47,7 +40,6 @@ protected ConcreteBeanPropertyBase(PropertyMetadata md) {
4740

4841
protected ConcreteBeanPropertyBase(ConcreteBeanPropertyBase src) {
4942
_metadata = src._metadata;
50-
_propertyFormat = src._propertyFormat;
5143
}
5244

5345
@Override
@@ -78,27 +70,19 @@ public final JsonFormat.Value findFormatOverrides(AnnotationIntrospector intr) {
7870
@Override
7971
public JsonFormat.Value findPropertyFormat(MapperConfig<?> config, Class<?> baseType)
8072
{
81-
// 15-Apr-2016, tatu: Let's calculate lazily, retain; assumption being however that
82-
// baseType is always the same
83-
JsonFormat.Value v = _propertyFormat;
84-
if (v == null) {
85-
JsonFormat.Value v1 = config.getDefaultPropertyFormat(baseType);
86-
JsonFormat.Value v2 = null;
87-
AnnotationIntrospector intr = config.getAnnotationIntrospector();
88-
if (intr != null) {
89-
AnnotatedMember member = getMember();
90-
if (member != null) {
91-
v2 = intr.findFormat(member);
92-
}
93-
}
94-
if (v1 == null) {
95-
v = (v2 == null) ? EMPTY_FORMAT : v2;
96-
} else {
97-
v = (v2 == null) ? v1 : v1.withOverrides(v2);
73+
JsonFormat.Value v1 = config.getDefaultPropertyFormat(baseType);
74+
JsonFormat.Value v2 = null;
75+
AnnotationIntrospector intr = config.getAnnotationIntrospector();
76+
if (intr != null) {
77+
AnnotatedMember member = getMember();
78+
if (member != null) {
79+
v2 = intr.findFormat(member);
9880
}
99-
_propertyFormat = v;
10081
}
101-
return v;
82+
if (v1 == null) {
83+
return (v2 == null) ? EMPTY_FORMAT : v2;
84+
}
85+
return (v2 == null) ? v1 : v1.withOverrides(v2);
10286
}
10387

10488
@Override

src/test/java/com/fasterxml/jackson/failing/BigDecimalAsString2519Test.java renamed to src/test/java/com/fasterxml/jackson/databind/ser/jdk/BigDecimalAsString2519Test.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.fasterxml.jackson.failing;
1+
package com.fasterxml.jackson.databind.ser.jdk;
22

33
import java.math.BigDecimal;
44
import java.util.*;

0 commit comments

Comments
 (0)