Skip to content

Commit ce7d1c9

Browse files
committed
Fix #1711
1 parent 9c4a7e5 commit ce7d1c9

File tree

3 files changed

+17
-680
lines changed

3 files changed

+17
-680
lines changed

release-notes/VERSION

+3-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ Project: jackson-databind
33
=== Releases ===
44
------------------------------------------------------------------------
55

6-
2.8.9.1 (not yet released)
6+
2.8.10 (not yet released)
77

88
#1657: `StdDateFormat` deserializes dates with no tz/offset as UTC instead of
99
configured timezone
@@ -12,6 +12,8 @@ Project: jackson-databind
1212
with a recursive value type
1313
(reported by Kevin G)
1414
#1679: `StackOverflowError` in Dynamic `StdKeySerializer`
15+
#1711: Delegating creator fails to work for binary data (`byte[]`) with
16+
binary formats (CBOR, Smile)
1517

1618
2.8.9 (12-Jun-2017)
1719

src/main/java/com/fasterxml/jackson/databind/deser/BeanDeserializerBase.java

+14-3
Original file line numberDiff line numberDiff line change
@@ -1266,9 +1266,8 @@ public Object deserializeFromString(JsonParser p, DeserializationContext ctxt) t
12661266
if (_objectIdReader != null) {
12671267
return deserializeFromObjectId(p, ctxt);
12681268
}
1269-
/* Bit complicated if we have delegating creator; may need to use it,
1270-
* or might not...
1271-
*/
1269+
// Bit complicated if we have delegating creator; may need to use it,
1270+
// or might not...
12721271
JsonDeserializer<Object> delegateDeser = _delegateDeserializer();
12731272
if (delegateDeser != null) {
12741273
if (!_valueInstantiator.canCreateFromString()) {
@@ -1379,6 +1378,18 @@ public Object deserializeFromEmbedded(JsonParser p, DeserializationContext ctxt)
13791378
if (_objectIdReader != null) {
13801379
return deserializeFromObjectId(p, ctxt);
13811380
}
1381+
// 26-Jul-2017, tatu: as per [databind#1711] need to support delegating case too
1382+
JsonDeserializer<Object> delegateDeser = _delegateDeserializer();
1383+
if (delegateDeser != null) {
1384+
if (!_valueInstantiator.canCreateFromString()) {
1385+
Object bean = _valueInstantiator.createUsingDelegate(ctxt,
1386+
delegateDeser.deserialize(p, ctxt));
1387+
if (_injectables != null) {
1388+
injectValues(ctxt, bean);
1389+
}
1390+
return bean;
1391+
}
1392+
}
13821393

13831394
// TODO: maybe add support for ValueInstantiator, embedded?
13841395

0 commit comments

Comments
 (0)