Skip to content

Commit ee34c8a

Browse files
authored
Changes wrt databind/3043 (SerializerProvider -> SerializationContext) (#686)
1 parent f24411f commit ee34c8a

11 files changed

+58
-58
lines changed

src/main/java/tools/jackson/dataformat/xml/XmlMapper.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -375,7 +375,7 @@ public XmlMapper(XmlFactory xmlFactory)
375375
/*
376376
// Need to override serializer provider (due to root name handling);
377377
// deserializer provider fine as is
378-
super(xmlFactory, new XmlSerializerProvider(xmlFactory, new XmlRootNameLookup()), null);
378+
super(xmlFactory, new XmlSerializationContext(xmlFactory, new XmlRootNameLookup()), null);
379379
_xmlModule = module;
380380
// but all the rest is done via Module interface!
381381
if (module != null) {
@@ -441,7 +441,7 @@ public FromXmlParser createParser(XMLStreamReader r) throws IOException {
441441
* for given Stax {@link XMLStreamWriter}.
442442
*/
443443
public ToXmlGenerator createGenerator(XMLStreamWriter w) throws IOException {
444-
SerializationContextExt prov = _serializerProvider(serializationConfig());
444+
SerializationContextExt prov = _serializationContext(serializationConfig());
445445
return tokenStreamFactory().createGenerator(prov, w);
446446
}
447447

@@ -491,7 +491,7 @@ public void writeValue(XMLStreamWriter w, Object value) throws IOException
491491
if (config.isEnabled(SerializationFeature.CLOSE_CLOSEABLE) && (value instanceof Closeable)) {
492492
_writeCloseableValue(g, value, config);
493493
} else {
494-
_serializerProvider(config).serializeValue(g, value);
494+
_serializationContext(config).serializeValue(g, value);
495495
if (config.isEnabled(SerializationFeature.FLUSH_AFTER_WRITE_VALUE)) {
496496
g.flush();
497497
}

src/main/java/tools/jackson/dataformat/xml/ser/UnwrappingXmlBeanSerializer.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -127,17 +127,17 @@ protected BeanSerializerBase asArraySerializer() {
127127
* {@link BeanPropertyWriter} instances.
128128
*/
129129
@Override
130-
public final void serialize(Object bean, JsonGenerator jgen, SerializerProvider provider)
130+
public final void serialize(Object bean, JsonGenerator g, SerializationContext ctxt)
131131
throws JacksonException
132132
{
133133
if (_objectIdWriter != null) {
134-
_serializeWithObjectId(bean, jgen, provider, false);
134+
_serializeWithObjectId(bean, g, ctxt, false);
135135
return;
136136
}
137137
if (_propertyFilterId != null) {
138-
_serializePropertiesFiltered(bean, jgen, provider, _propertyFilterId);
138+
_serializePropertiesFiltered(bean, g, ctxt, _propertyFilterId);
139139
} else {
140-
_serializeProperties(bean, jgen, provider);
140+
_serializeProperties(bean, g, ctxt);
141141
}
142142
}
143143

src/main/java/tools/jackson/dataformat/xml/ser/XmlBeanPropertyWriter.java

+6-6
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ private QName _qname(PropertyName n)
7676
* and as necessary.
7777
*/
7878
@Override
79-
public void serializeAsProperty(Object bean, JsonGenerator g, SerializerProvider prov)
79+
public void serializeAsProperty(Object bean, JsonGenerator g, SerializationContext ctxt)
8080
throws Exception
8181
{
8282
Object value = get(bean);
@@ -113,13 +113,13 @@ public void serializeAsProperty(Object bean, JsonGenerator g, SerializerProvider
113113
PropertySerializerMap map = _dynamicSerializers;
114114
ser = map.serializerFor(cls);
115115
if (ser == null) {
116-
ser = _findAndAddDynamic(map, cls, prov);
116+
ser = _findAndAddDynamic(map, cls, ctxt);
117117
}
118118
}
119119
// and then see if we must suppress certain values (default, empty)
120120
if (_suppressableValue != null) {
121121
if (MARKER_FOR_EMPTY == _suppressableValue) {
122-
if (ser.isEmpty(prov, value)) {
122+
if (ser.isEmpty(ctxt, value)) {
123123
return;
124124
}
125125
} else if (_suppressableValue.equals(value)) {
@@ -129,7 +129,7 @@ public void serializeAsProperty(Object bean, JsonGenerator g, SerializerProvider
129129
// For non-nulls: simple check for direct cycles
130130
if (value == bean) {
131131
// NOTE: method signature here change 2.3->2.4
132-
if (_handleSelfReference(bean, g, prov, ser)) {
132+
if (_handleSelfReference(bean, g, ctxt, ser)) {
133133
return;
134134
}
135135
}
@@ -142,9 +142,9 @@ public void serializeAsProperty(Object bean, JsonGenerator g, SerializerProvider
142142
}
143143
g.writeName(_name);
144144
if (_typeSerializer == null) {
145-
ser.serialize(value, g, prov);
145+
ser.serialize(value, g, ctxt);
146146
} else {
147-
ser.serializeWithType(value, g, prov, _typeSerializer);
147+
ser.serializeWithType(value, g, ctxt, _typeSerializer);
148148
}
149149
if (xmlGen != null) {
150150
xmlGen.finishWrappedValue(_wrapperQName, _wrappedQName);

src/main/java/tools/jackson/dataformat/xml/ser/XmlBeanSerializer.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import tools.jackson.core.JsonGenerator;
77

88
import tools.jackson.databind.ValueSerializer;
9-
import tools.jackson.databind.SerializerProvider;
9+
import tools.jackson.databind.SerializationContext;
1010
import tools.jackson.databind.ser.BeanPropertyWriter;
1111
import tools.jackson.databind.ser.BeanSerializer;
1212
import tools.jackson.databind.ser.bean.BeanAsArraySerializer;
@@ -116,18 +116,18 @@ protected BeanSerializerBase asArraySerializer()
116116
* {@link BeanPropertyWriter} instances.
117117
*/
118118
@Override
119-
public void serialize(Object bean, JsonGenerator g, SerializerProvider provider)
119+
public void serialize(Object bean, JsonGenerator g, SerializationContext ctxt)
120120
throws JacksonException
121121
{
122122
if (_objectIdWriter != null) {
123-
_serializeWithObjectId(bean, g, provider, true);
123+
_serializeWithObjectId(bean, g, ctxt, true);
124124
return;
125125
}
126126
g.writeStartObject();
127127
if (_propertyFilterId != null) {
128-
_serializePropertiesFiltered(bean, g, provider, _propertyFilterId);
128+
_serializePropertiesFiltered(bean, g, ctxt, _propertyFilterId);
129129
} else {
130-
_serializeProperties(bean, g, provider);
130+
_serializeProperties(bean, g, ctxt);
131131
}
132132
g.writeEndObject();
133133
}

src/main/java/tools/jackson/dataformat/xml/ser/XmlBeanSerializerBase.java

+24-24
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import tools.jackson.core.*;
1111

1212
import tools.jackson.databind.DatabindException;
13-
import tools.jackson.databind.SerializerProvider;
13+
import tools.jackson.databind.SerializationContext;
1414
import tools.jackson.databind.jsontype.TypeSerializer;
1515
import tools.jackson.databind.ser.BeanPropertyWriter;
1616
import tools.jackson.databind.ser.PropertyFilter;
@@ -163,17 +163,17 @@ protected XmlBeanSerializerBase(XmlBeanSerializerBase src,
163163
* elements.
164164
*/
165165
@Override
166-
protected void _serializeProperties(Object bean, JsonGenerator gen0, SerializerProvider provider)
166+
protected void _serializeProperties(Object bean, JsonGenerator gen0, SerializationContext ctxt)
167167
throws JacksonException
168168
{
169169
// 19-Aug-2013, tatu: During 'convertValue()', need to skip
170170
if (!(gen0 instanceof ToXmlGenerator)) {
171-
super._serializeProperties(bean, gen0, provider);
171+
super._serializeProperties(bean, gen0, ctxt);
172172
return;
173173
}
174174
final ToXmlGenerator xgen = (ToXmlGenerator) gen0;
175175
final BeanPropertyWriter[] props;
176-
if (_filteredProps != null && provider.getActiveView() != null) {
176+
if (_filteredProps != null && ctxt.getActiveView() != null) {
177177
props = _filteredProps;
178178
} else {
179179
props = _props;
@@ -205,10 +205,10 @@ protected void _serializeProperties(Object bean, JsonGenerator gen0, SerializerP
205205
if (prop != null) { // can have nulls in filtered list
206206
if ((cdata != null) && cdata.get(i)) {
207207
xgen.setNextIsCData(true);
208-
prop.serializeAsProperty(bean, xgen, provider);
208+
prop.serializeAsProperty(bean, xgen, ctxt);
209209
xgen.setNextIsCData(false);
210210
} else {
211-
prop.serializeAsProperty(bean, xgen, provider);
211+
prop.serializeAsProperty(bean, xgen, ctxt);
212212
}
213213
}
214214
// Reset to avoid next value being written as unwrapped,
@@ -221,11 +221,11 @@ protected void _serializeProperties(Object bean, JsonGenerator gen0, SerializerP
221221
// For [#117]: not a clean fix, but with @JsonTypeInfo, we'll end up
222222
// with accidental attributes otherwise
223223
xgen.setNextIsAttribute(false);
224-
_anyGetterWriter.getAndSerialize(bean, xgen, provider);
224+
_anyGetterWriter.getAndSerialize(bean, xgen, ctxt);
225225
}
226226
} catch (Exception e) {
227227
String name = (i == props.length) ? "[anySetter]" : props[i].getName();
228-
wrapAndThrow(provider, e, bean, name);
228+
wrapAndThrow(ctxt, e, bean, name);
229229
} catch (StackOverflowError e) { // Bit tricky, can't do more calls as stack is full; so:
230230
final String name = (i == props.length) ? "[anySetter]" : props[i].getName();
231231
throw DatabindException.from(gen0, "Infinite recursion (StackOverflowError)")
@@ -235,27 +235,27 @@ protected void _serializeProperties(Object bean, JsonGenerator gen0, SerializerP
235235

236236
@Override
237237
protected void _serializePropertiesFiltered(Object bean, JsonGenerator gen0,
238-
SerializerProvider provider, Object filterId)
238+
SerializationContext ctxt, Object filterId)
239239
throws JacksonException
240240
{
241241
// 19-Aug-2013, tatu: During 'convertValue()', need to skip
242242
if (!(gen0 instanceof ToXmlGenerator)) {
243-
super._serializePropertiesFiltered(bean, gen0, provider, filterId);
243+
super._serializePropertiesFiltered(bean, gen0, ctxt, filterId);
244244
return;
245245
}
246246

247247
final ToXmlGenerator xgen = (ToXmlGenerator) gen0;
248248

249249
final BeanPropertyWriter[] props;
250-
if (_filteredProps != null && provider.getActiveView() != null) {
250+
if (_filteredProps != null && ctxt.getActiveView() != null) {
251251
props = _filteredProps;
252252
} else {
253253
props = _props;
254254
}
255-
final PropertyFilter filter = findPropertyFilter(provider, _propertyFilterId, bean);
255+
final PropertyFilter filter = findPropertyFilter(ctxt, _propertyFilterId, bean);
256256
// better also allow missing filter actually..
257257
if (filter == null) {
258-
_serializeProperties(bean, gen0, provider);
258+
_serializeProperties(bean, gen0, ctxt);
259259
return;
260260
}
261261

@@ -285,10 +285,10 @@ protected void _serializePropertiesFiltered(Object bean, JsonGenerator gen0,
285285
if (prop != null) { // can have nulls in filtered list
286286
if ((cdata != null) && cdata.get(i)) {
287287
xgen.setNextIsCData(true);
288-
filter.serializeAsProperty(bean, xgen, provider, prop);
288+
filter.serializeAsProperty(bean, xgen, ctxt, prop);
289289
xgen.setNextIsCData(false);
290290
} else {
291-
filter.serializeAsProperty(bean, xgen, provider, prop);
291+
filter.serializeAsProperty(bean, xgen, ctxt, prop);
292292
}
293293
}
294294
// Reset to avoid next value being written as unwrapped,
@@ -302,11 +302,11 @@ protected void _serializePropertiesFiltered(Object bean, JsonGenerator gen0,
302302
// with accidental attributes otherwise
303303
xgen.setNextIsAttribute(false);
304304
// 24-Jul-2019, tatu: Fixed for [dataformat-xml#351]
305-
_anyGetterWriter.getAndFilter(bean, xgen, provider, filter);
305+
_anyGetterWriter.getAndFilter(bean, xgen, ctxt, filter);
306306
}
307307
} catch (Exception e) {
308308
String name = (i == props.length) ? "[anySetter]" : props[i].getName();
309-
wrapAndThrow(provider, e, bean, name);
309+
wrapAndThrow(ctxt, e, bean, name);
310310
} catch (StackOverflowError e) {
311311
final String name = (i == props.length) ? "[anySetter]" : props[i].getName();
312312
throw DatabindException.from(gen0, "Infinite recursion (StackOverflowError)", e)
@@ -315,43 +315,43 @@ protected void _serializePropertiesFiltered(Object bean, JsonGenerator gen0,
315315
}
316316

317317
@Override
318-
public void serializeWithType(Object bean, JsonGenerator gen, SerializerProvider provider,
318+
public void serializeWithType(Object bean, JsonGenerator gen, SerializationContext ctxt,
319319
TypeSerializer typeSer)
320320
throws JacksonException
321321
{
322322
if (_objectIdWriter != null) {
323-
_serializeWithObjectId(bean, gen, provider, typeSer);
323+
_serializeWithObjectId(bean, gen, ctxt, typeSer);
324324
return;
325325
}
326326
// Ok: let's serialize type id as attribute, but if (and only if!)
327327
// we are using AS_PROPERTY
328328
if (typeSer.getTypeInclusion() == JsonTypeInfo.As.PROPERTY) {
329329
ToXmlGenerator xgen = (ToXmlGenerator)gen;
330330
xgen.setNextIsAttribute(true);
331-
super.serializeWithType(bean, gen, provider, typeSer);
331+
super.serializeWithType(bean, gen, ctxt, typeSer);
332332
if (_attributeCount == 0) { // if no attributes, need to reset
333333
xgen.setNextIsAttribute(false);
334334
}
335335
} else {
336-
super.serializeWithType(bean, gen, provider, typeSer);
336+
super.serializeWithType(bean, gen, ctxt, typeSer);
337337
}
338338
}
339339

340340
@Override
341-
protected void _serializeObjectId(Object bean, JsonGenerator gen, SerializerProvider provider,
341+
protected void _serializeObjectId(Object bean, JsonGenerator gen, SerializationContext ctxt,
342342
TypeSerializer typeSer, WritableObjectId objectId)
343343
throws JacksonException
344344
{
345345
// Ok: let's serialize type id as attribute, but if (and only if!) we are using AS_PROPERTY
346346
if (typeSer.getTypeInclusion() == JsonTypeInfo.As.PROPERTY) {
347347
ToXmlGenerator xgen = (ToXmlGenerator)gen;
348348
xgen.setNextIsAttribute(true);
349-
super._serializeObjectId(bean, gen, provider, typeSer, objectId);
349+
super._serializeObjectId(bean, gen, ctxt, typeSer, objectId);
350350
if (_attributeCount == 0) { // if no attributes, need to reset
351351
xgen.setNextIsAttribute(false);
352352
}
353353
} else {
354-
super._serializeObjectId(bean, gen, provider, typeSer, objectId);
354+
super._serializeObjectId(bean, gen, ctxt, typeSer, objectId);
355355
}
356356
}
357357

src/main/java/tools/jackson/dataformat/xml/ser/XmlSerializerProvider.java renamed to src/main/java/tools/jackson/dataformat/xml/ser/XmlSerializationContext.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,14 @@
2222

2323
/**
2424
* We need to override some parts of
25-
* {@link tools.jackson.databind.SerializerProvider}
25+
* {@link tools.jackson.databind.SerializationContext}
2626
* implementation to handle oddities of XML output, like "extra" root element.
2727
*/
28-
public class XmlSerializerProvider extends SerializationContextExt
28+
public class XmlSerializationContext extends SerializationContextExt
2929
{
3030
protected final XmlRootNameLookup _rootNameLookup;
3131

32-
public XmlSerializerProvider(TokenStreamFactory streamFactory,
32+
public XmlSerializationContext(TokenStreamFactory streamFactory,
3333
SerializationConfig config, GeneratorSettings genSettings,
3434
SerializerFactory f, SerializerCache cache,
3535
XmlRootNameLookup rootLookup)
@@ -182,7 +182,7 @@ public void serializePolymorphic(JsonGenerator gen, Object value, JavaType rootT
182182
_startRootArray(xgen, rootName);
183183
}
184184
}
185-
// 21-May-2020: See comments in `jackson-databind/DefaultSerializerProvider`
185+
// 21-May-2020: See comments in `jackson-databind/DefaultSerializationContext`
186186
if (valueSer == null) {
187187
if ((rootType != null) && rootType.isContainerType()) {
188188
valueSer = handleRootContextualization(findValueSerializer(rootType));

src/main/java/tools/jackson/dataformat/xml/ser/XmlSerializationContexts.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import tools.jackson.dataformat.xml.util.XmlRootNameLookup;
1212

1313
/**
14-
* Factory implementation we need to provide custom {@link SerializerProvider}
14+
* Factory implementation we need to provide custom {@link SerializationContext}
1515
* variants.
1616
*
1717
* @since 3.0
@@ -49,7 +49,7 @@ public SerializationContexts forMapper(Object mapper,
4949
@Override
5050
public SerializationContextExt createContext(SerializationConfig config,
5151
GeneratorSettings genSettings) {
52-
return new XmlSerializerProvider(_streamFactory,
52+
return new XmlSerializationContext(_streamFactory,
5353
config, genSettings, _serializerFactory, _cache,
5454
_rootNameLookup);
5555
}

src/test/java/tools/jackson/dataformat/xml/ser/CustomSerializerTest.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package tools.jackson.dataformat.xml.ser;
22

33
import tools.jackson.core.JsonGenerator;
4-
import tools.jackson.databind.SerializerProvider;
4+
import tools.jackson.databind.SerializationContext;
55
import tools.jackson.databind.module.SimpleModule;
66
import tools.jackson.databind.ser.std.StdScalarSerializer;
77
import tools.jackson.dataformat.xml.XmlMapper;
@@ -14,9 +14,9 @@ static class CustomSerializer extends StdScalarSerializer<String>
1414
public CustomSerializer() { super(String.class); }
1515

1616
@Override
17-
public void serialize(String value, JsonGenerator jgen,
18-
SerializerProvider provider) {
19-
jgen.writeString("custom:"+value);
17+
public void serialize(String value, JsonGenerator g,
18+
SerializationContext provider) {
19+
g.writeString("custom:"+value);
2020
}
2121
}
2222

src/test/java/tools/jackson/dataformat/xml/ser/JsonAppend578Test.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ protected MyVirtualPropertyWriter(BeanPropertyDefinition propDef, Annotations co
3838
}
3939

4040
@Override
41-
protected Object value(Object bean, JsonGenerator g, SerializerProvider prov) {
41+
protected Object value(Object bean, JsonGenerator g, SerializationContext ctxt) {
4242
return "bar";
4343
}
4444

src/test/java/tools/jackson/dataformat/xml/ser/TestSerializationWithFilter.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import tools.jackson.core.JsonGenerator;
77

8-
import tools.jackson.databind.SerializerProvider;
8+
import tools.jackson.databind.SerializationContext;
99
import tools.jackson.databind.ser.FilterProvider;
1010
import tools.jackson.databind.ser.PropertyFilter;
1111
import tools.jackson.databind.ser.PropertyWriter;
@@ -41,16 +41,16 @@ public void testPullRequest616() throws Exception
4141

4242
PropertyFilter filter = new SimpleBeanPropertyFilter() {
4343
@Override
44-
public void serializeAsProperty(Object pojo, JsonGenerator jgen,
45-
SerializerProvider provider, PropertyWriter writer)
44+
public void serializeAsProperty(Object pojo, JsonGenerator g,
45+
SerializationContext ctxt, PropertyWriter writer)
4646
throws Exception
4747
{
4848
if (include(writer) && writer.getName().equals("a")) {
4949
int a = ((Item) pojo).a;
5050
if (a <= 0)
5151
return;
5252
}
53-
super.serializeAsProperty(pojo, jgen, provider, writer);
53+
super.serializeAsProperty(pojo, g, ctxt, writer);
5454
}
5555
};
5656
FilterProvider filterProvider = new SimpleFilterProvider().addFilter("filter", filter);

0 commit comments

Comments
 (0)