Skip to content

Commit eade0e2

Browse files
committed
Update release notes wrt FasterXML#3177
1 parent a05e2cb commit eade0e2

File tree

5 files changed

+25
-26
lines changed

5 files changed

+25
-26
lines changed

release-notes/CREDITS-2.x

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1351,6 +1351,10 @@ Morten Andersen-Gott (magott@github)
13511351
* Contributed #3174: DOM `Node` serialization omits the default namespace declaration
13521352
(2.13.0)
13531353

1354+
Klaas Sellschaft (klaasdellschaft@github)
1355+
* Contributed #3177: Support `suppressed` property when deserializing `Throwable`
1356+
(2.13.0)
1357+
13541358
Nick Benoit (nick-benoit14@github)
13551359
* Proposed #3193: Add `MapperFeature.APPLY_DEFAULT_VALUES`, initially for Scala module
13561360
(2.13.0)

release-notes/VERSION-2.x

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ Project: jackson-databind
4949
(contributed by Tarekk Mohamed A)
5050
#3174: DOM `Node` serialization omits the default namespace declaration
5151
(contributed by Morten A-G)
52+
#3177: Support `suppressed` property when deserializing `Throwable`
53+
(contributed by Klaas D)
5254
#3193: Add `MapperFeature.APPLY_DEFAULT_VALUES`, initially for Scala module
5355
(suggested by Nick B)
5456
- Fix to avoid problem with `BigDecimalNode`, scale of `Integer.MIN_VALUE` (see

src/main/java/com/fasterxml/jackson/databind/MapperFeature.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -573,9 +573,9 @@ public enum MapperFeature implements ConfigFeature
573573

574574
/**
575575
* Feature that determines whether {@link ObjectReader} applies default values
576-
* defined in class defintions in cases where the input data omits the relevant values.
576+
* defined in class definitions in cases where the input data omits the relevant values.
577577
*<p>
578-
* Not all modules will respect this feature. Initially, only jackson-module-scala
578+
* Not all modules will respect this feature. Initially, only {@code jackson-module-scala}
579579
* will respect this feature but other modules will add support over time.
580580
*<p>
581581
* Feature is enabled by default.

src/main/java/com/fasterxml/jackson/databind/deser/std/ThrowableDeserializer.java

Lines changed: 16 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ public class ThrowableDeserializer
2222
protected final static String PROP_NAME_SUPPRESSED = "suppressed";
2323

2424
/*
25-
/************************************************************
26-
/* Construction
27-
/************************************************************
25+
/**********************************************************************
26+
/* Life-cycle
27+
/**********************************************************************
2828
*/
2929

3030
public ThrowableDeserializer(BeanDeserializer baseDeserializer) {
@@ -45,17 +45,16 @@ public JsonDeserializer<Object> unwrappingDeserializer(NameTransformer unwrapper
4545
if (getClass() != ThrowableDeserializer.class) {
4646
return this;
4747
}
48-
/* main thing really is to just enforce ignoring of unknown
49-
* properties; since there may be multiple unwrapped values
50-
* and properties for all may be interleaved...
51-
*/
48+
// main thing really is to just enforce ignoring of unknown
49+
// properties; since there may be multiple unwrapped values
50+
// and properties for all may be interleaved...
5251
return new ThrowableDeserializer(this, unwrapper);
5352
}
5453

5554
/*
56-
/************************************************************
55+
/**********************************************************************
5756
/* Overridden methods
58-
/************************************************************
57+
/**********************************************************************
5958
*/
6059

6160
@Override
@@ -81,7 +80,7 @@ public Object deserializeFromObject(JsonParser p, DeserializationContext ctxt) t
8180
"Throwable needs a default constructor, a single-String-arg constructor; or explicit @JsonCreator");
8281
}
8382

84-
Object throwable = null;
83+
Throwable throwable = null;
8584
Object[] pending = null;
8685
Throwable[] suppressed = null;
8786
int pendingIx = 0;
@@ -107,17 +106,12 @@ public Object deserializeFromObject(JsonParser p, DeserializationContext ctxt) t
107106
}
108107

109108
// Maybe it's "message"?
110-
final boolean isMessage = PROP_NAME_MESSAGE.equals(propName);
111-
if (isMessage) {
109+
if (PROP_NAME_MESSAGE.equals(propName)) {
112110
if (hasStringCreator) {
113-
throwable = _valueInstantiator.createFromString(ctxt, p.getValueAsString());
111+
throwable = (Throwable) _valueInstantiator.createFromString(ctxt, p.getValueAsString());
114112
continue;
115113
}
116-
}
117-
118-
// Maybe it's "suppressed"?
119-
final boolean isSuppressed = PROP_NAME_SUPPRESSED.equals(propName);
120-
if (isSuppressed) {
114+
} else if (PROP_NAME_SUPPRESSED.equals(propName)) { // or "suppressed"?
121115
suppressed = ctxt.readValue(p, Throwable[].class);
122116
continue;
123117
}
@@ -146,9 +140,9 @@ public Object deserializeFromObject(JsonParser p, DeserializationContext ctxt) t
146140
*/
147141
//throw new XxxException("No 'message' property found: could not deserialize "+_beanType);
148142
if (hasStringCreator) {
149-
throwable = _valueInstantiator.createFromString(ctxt, null);
143+
throwable = (Throwable) _valueInstantiator.createFromString(ctxt, null);
150144
} else {
151-
throwable = _valueInstantiator.createUsingDefault(ctxt);
145+
throwable = (Throwable) _valueInstantiator.createUsingDefault(ctxt);
152146
}
153147
}
154148

@@ -161,10 +155,9 @@ public Object deserializeFromObject(JsonParser p, DeserializationContext ctxt) t
161155
}
162156

163157
// any suppressed exceptions?
164-
if (suppressed != null && throwable instanceof Throwable) {
165-
Throwable t = (Throwable) throwable;
158+
if (suppressed != null) {
166159
for (Throwable s : suppressed) {
167-
t.addSuppressed(s);
160+
throwable.addSuppressed(s);
168161
}
169162
}
170163

src/test/java/com/fasterxml/jackson/failing/KevinFail1410Test.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public String toString() {
6868

6969
public void testDupProps() throws Exception
7070
{
71-
ObjectMapper mapper = new ObjectMapper();
71+
ObjectMapper mapper = newJsonMapper();
7272
EnvironmentEvent event = new BackendEvent("foo", "hello", "bar", null);
7373
String ser = mapper
7474
.writerWithDefaultPrettyPrinter()

0 commit comments

Comments
 (0)