Skip to content

Commit 5d2b253

Browse files
committed
Merge branch '2.5'
Conflicts: release-notes/CREDITS
2 parents fefcfa1 + 4312a24 commit 5d2b253

File tree

5 files changed

+28
-25
lines changed

5 files changed

+28
-25
lines changed

release-notes/CREDITS

+4-1
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,10 @@ Kamil Benedykciński (Kamil-Benedykcinski@github)
261261
in `JsonMappingException`
262262
(2.5.4)
263263

264+
Chi Kim (chikim79@github)
265+
* Reported #878: serializeWithType on BeanSerializer does not setCurrentValue
266+
(2.5.5 / 2.6.1)
267+
264268
Charles Allen (drcrallen@github):
265269
* Reported #696: Copy constructor does not preserve `_injectableValues`
266270
(2.6.0)
@@ -299,4 +303,3 @@ Lars Pfannenschmidt (larsp@github)
299303
Stephen A. Goss (thezerobit@github)
300304
* Contributed #828: Respect DeserializationFeatures.WRAP_EXCEPTIONS in CollectionDeserializer
301305
(2.6.0)
302-

release-notes/VERSION

+2
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,8 @@ Project: jackson-databind
9090
#844: Using JsonCreator still causes invalid path references in JsonMappingException
9191
(reported by Ian B)
9292
#852: Accept scientific number notation for quoted numbers too
93+
#878: serializeWithType on BeanSerializer does not setCurrentValue
94+
(reported by Chi K, chikim79@github)
9395

9496
2.5.4 (09-Jun-2015)
9597

src/main/java/com/fasterxml/jackson/databind/ser/BeanSerializer.java

+1
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ public final void serialize(Object bean, JsonGenerator gen, SerializerProvider p
144144
throws IOException
145145
{
146146
if (_objectIdWriter != null) {
147+
gen.setCurrentValue(bean); // [databind#631]
147148
_serializeWithObjectId(bean, gen, provider, true);
148149
return;
149150
}

src/main/java/com/fasterxml/jackson/databind/ser/impl/UnwrappingBeanSerializer.java

+12-12
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.fasterxml.jackson.databind.ser.impl;
22

3-
import com.fasterxml.jackson.core.JsonGenerationException;
43
import com.fasterxml.jackson.core.JsonGenerator;
4+
55
import com.fasterxml.jackson.databind.*;
66
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
77
import com.fasterxml.jackson.databind.ser.BeanPropertyWriter;
@@ -106,37 +106,37 @@ protected BeanSerializerBase asArraySerializer() {
106106
* {@link BeanPropertyWriter} instances.
107107
*/
108108
@Override
109-
public final void serialize(Object bean, JsonGenerator jgen, SerializerProvider provider)
110-
throws IOException, JsonGenerationException
109+
public final void serialize(Object bean, JsonGenerator gen, SerializerProvider provider) throws IOException
111110
{
111+
gen.setCurrentValue(bean); // [databind#631]
112112
if (_objectIdWriter != null) {
113-
_serializeWithObjectId(bean, jgen, provider, false);
113+
_serializeWithObjectId(bean, gen, provider, false);
114114
return;
115115
}
116116
if (_propertyFilterId != null) {
117-
serializeFieldsFiltered(bean, jgen, provider);
117+
serializeFieldsFiltered(bean, gen, provider);
118118
} else {
119-
serializeFields(bean, jgen, provider);
119+
serializeFields(bean, gen, provider);
120120
}
121121
}
122122

123123
@Override
124-
public void serializeWithType(Object bean, JsonGenerator jgen, SerializerProvider provider, TypeSerializer typeSer)
125-
throws IOException, JsonGenerationException
124+
public void serializeWithType(Object bean, JsonGenerator gen, SerializerProvider provider,
125+
TypeSerializer typeSer) throws IOException
126126
{
127127
if (provider.isEnabled(SerializationFeature.FAIL_ON_UNWRAPPED_TYPE_IDENTIFIERS)) {
128128
throw new JsonMappingException("Unwrapped property requires use of type information: can not serialize without disabling `SerializationFeature.FAIL_ON_UNWRAPPED_TYPE_IDENTIFIERS`");
129129
}
130130

131+
gen.setCurrentValue(bean); // [databind#631]
131132
if (_objectIdWriter != null) {
132-
_serializeWithObjectId(bean, jgen, provider, typeSer);
133+
_serializeWithObjectId(bean, gen, provider, typeSer);
133134
return;
134135
}
135-
136136
if (_propertyFilterId != null) {
137-
serializeFieldsFiltered(bean, jgen, provider);
137+
serializeFieldsFiltered(bean, gen, provider);
138138
} else {
139-
serializeFields(bean, jgen, provider);
139+
serializeFields(bean, gen, provider);
140140
}
141141
}
142142

src/main/java/com/fasterxml/jackson/databind/ser/std/BeanSerializerBase.java

+9-12
Original file line numberDiff line numberDiff line change
@@ -548,6 +548,7 @@ public void serializeWithType(Object bean, JsonGenerator gen,
548548
throws IOException
549549
{
550550
if (_objectIdWriter != null) {
551+
gen.setCurrentValue(bean); // [databind#631]
551552
_serializeWithObjectId(bean, gen, provider, typeSer);
552553
return;
553554
}
@@ -558,6 +559,7 @@ public void serializeWithType(Object bean, JsonGenerator gen,
558559
} else {
559560
typeSer.writeCustomTypePrefixForObject(bean, gen, typeStr);
560561
}
562+
gen.setCurrentValue(bean); // [databind#631]
561563
if (_propertyFilterId != null) {
562564
serializeFieldsFiltered(bean, gen, provider);
563565
} else {
@@ -570,10 +572,8 @@ public void serializeWithType(Object bean, JsonGenerator gen,
570572
}
571573
}
572574

573-
protected final void _serializeWithObjectId(Object bean,
574-
JsonGenerator gen, SerializerProvider provider,
575-
boolean startEndObject)
576-
throws IOException, JsonGenerationException
575+
protected final void _serializeWithObjectId(Object bean, JsonGenerator gen, SerializerProvider provider,
576+
boolean startEndObject) throws IOException
577577
{
578578
final ObjectIdWriter w = _objectIdWriter;
579579
WritableObjectId objectId = provider.findObjectId(bean, w.generator);
@@ -601,10 +601,8 @@ protected final void _serializeWithObjectId(Object bean,
601601
}
602602
}
603603

604-
protected final void _serializeWithObjectId(Object bean,
605-
JsonGenerator gen, SerializerProvider provider,
606-
TypeSerializer typeSer)
607-
throws IOException, JsonGenerationException
604+
protected final void _serializeWithObjectId(Object bean, JsonGenerator gen, SerializerProvider provider,
605+
TypeSerializer typeSer) throws IOException
608606
{
609607
final ObjectIdWriter w = _objectIdWriter;
610608
WritableObjectId objectId = provider.findObjectId(bean, w.generator);
@@ -622,10 +620,9 @@ protected final void _serializeWithObjectId(Object bean,
622620
_serializeObjectId(bean, gen, provider, typeSer, objectId);
623621
}
624622

625-
protected void _serializeObjectId(Object bean,
626-
JsonGenerator gen,SerializerProvider provider,
627-
TypeSerializer typeSer, WritableObjectId objectId)
628-
throws IOException, JsonProcessingException, JsonGenerationException {
623+
protected void _serializeObjectId(Object bean, JsonGenerator gen,SerializerProvider provider,
624+
TypeSerializer typeSer, WritableObjectId objectId) throws IOException
625+
{
629626
final ObjectIdWriter w = _objectIdWriter;
630627
String typeStr = (_typeId == null) ? null :_customTypeId(bean);
631628
if (typeStr == null) {

0 commit comments

Comments
 (0)