Skip to content

Commit

Permalink
Change code to use writeStartObject(Object value) where applicable,…
Browse files Browse the repository at this point in the history
… to streamline setting of current value
  • Loading branch information
cowtowncoder committed Mar 22, 2016
1 parent 596c6dd commit b1c03c3
Show file tree
Hide file tree
Showing 7 changed files with 30 additions and 29 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,11 @@
import java.util.Collection;

import com.fasterxml.jackson.annotation.JsonTypeInfo;

import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.annotation.NoClass;
import com.fasterxml.jackson.databind.cfg.MapperConfig;
import com.fasterxml.jackson.databind.jsontype.NamedType;
import com.fasterxml.jackson.databind.jsontype.TypeDeserializer;
import com.fasterxml.jackson.databind.jsontype.TypeIdResolver;
import com.fasterxml.jackson.databind.jsontype.TypeResolverBuilder;
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
import com.fasterxml.jackson.databind.type.TypeFactory;
import com.fasterxml.jackson.databind.jsontype.*;

/**
* Default {@link TypeResolverBuilder} implementation.
Expand Down Expand Up @@ -109,7 +105,7 @@ public TypeDeserializer buildTypeDeserializer(DeserializationConfig config,
if (_defaultImpl == null) {
defaultImpl = null;
} else {
// 20-Mar-2016, tatu: It is important to go specialization go through
// 20-Mar-2016, tatu: It is important to do specialization go through
// TypeFactory to ensure proper resolution; with 2.7 and before, direct
// call to JavaType was used, but that can not work reliably with 2.7
// 20-Mar-2016, tatu: Can finally add a check for type compatibility BUT
Expand Down
24 changes: 12 additions & 12 deletions src/main/java/com/fasterxml/jackson/databind/node/ObjectNode.java
Original file line number Diff line number Diff line change
Expand Up @@ -279,33 +279,33 @@ public List<JsonNode> findParents(String fieldName, List<JsonNode> foundSoFar)
* all of its descendants using specified JSON generator.
*/
@Override
public void serialize(JsonGenerator jg, SerializerProvider provider)
throws IOException, JsonProcessingException
public void serialize(JsonGenerator g, SerializerProvider provider)
throws IOException
{
jg.writeStartObject();
g.writeStartObject(this);
for (Map.Entry<String, JsonNode> en : _children.entrySet()) {
jg.writeFieldName(en.getKey());
g.writeFieldName(en.getKey());
/* 17-Feb-2009, tatu: Can we trust that all nodes will always
* extend BaseJsonNode? Or if not, at least implement
* JsonSerializable? Let's start with former, change if
* we must.
*/
((BaseJsonNode) en.getValue()).serialize(jg, provider);
((BaseJsonNode) en.getValue()).serialize(g, provider);
}
jg.writeEndObject();
g.writeEndObject();
}

@Override
public void serializeWithType(JsonGenerator jg, SerializerProvider provider,
public void serializeWithType(JsonGenerator g, SerializerProvider provider,
TypeSerializer typeSer)
throws IOException, JsonProcessingException
throws IOException
{
typeSer.writeTypePrefixForObject(this, jg);
typeSer.writeTypePrefixForObject(this, g);
for (Map.Entry<String, JsonNode> en : _children.entrySet()) {
jg.writeFieldName(en.getKey());
((BaseJsonNode) en.getValue()).serialize(jg, provider);
g.writeFieldName(en.getKey());
((BaseJsonNode) en.getValue()).serialize(g, provider);
}
typeSer.writeTypeSuffixForObject(this, jg);
typeSer.writeTypeSuffixForObject(this, g);
}

/*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -148,9 +148,7 @@ public final void serialize(Object bean, JsonGenerator gen, SerializerProvider p
_serializeWithObjectId(bean, gen, provider, true);
return;
}
gen.writeStartObject();
// [databind#631]: Assign current value, to be accessible by custom serializers
gen.setCurrentValue(bean);
gen.writeStartObject(bean);
if (_propertyFilterId != null) {
serializeFieldsFiltered(bean, gen, provider);
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -187,9 +187,7 @@ public boolean isEmpty(SerializerProvider prov, Entry<?, ?> value) {
public void serialize(Map.Entry<?, ?> value, JsonGenerator gen, SerializerProvider provider)
throws IOException
{
gen.writeStartObject();
// [databind#631]: Assign current value, to be accessible by custom serializers
gen.setCurrentValue(value);
gen.writeStartObject(value);
if (_valueSerializer != null) {
serializeUsing(value, gen, provider, _valueSerializer);
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -591,7 +591,7 @@ protected final void _serializeWithObjectId(Object bean, JsonGenerator gen, Seri
return;
}
if (startEndObject) {
gen.writeStartObject();
gen.writeStartObject(bean);
}
objectId.writeAsField(gen, provider, w);
if (_propertyFilterId != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -492,9 +492,7 @@ public JsonSerializer<?> getKeySerializer() {
public void serialize(Map<?,?> value, JsonGenerator gen, SerializerProvider provider)
throws IOException
{
gen.writeStartObject();
// [databind#631]: Assign current value, to be accessible by custom serializers
gen.setCurrentValue(value);
gen.writeStartObject(value);
if (!value.isEmpty()) {
Object suppressableValue = _suppressableValue;
if (suppressableValue == JsonInclude.Include.ALWAYS) {
Expand Down
11 changes: 11 additions & 0 deletions src/main/java/com/fasterxml/jackson/databind/util/TokenBuffer.java
Original file line number Diff line number Diff line change
Expand Up @@ -643,6 +643,17 @@ public final void writeStartObject() throws IOException
_writeContext = _writeContext.createChildObjectContext();
}

@Override // since 2.8
public void writeStartObject(Object forValue) throws IOException
{
_append(JsonToken.START_OBJECT);
JsonWriteContext ctxt = _writeContext.createChildObjectContext();
_writeContext = ctxt;
if (forValue != null) {
ctxt.setCurrentValue(forValue);
}
}

@Override
public final void writeEndObject() throws IOException
{
Expand Down

0 comments on commit b1c03c3

Please sign in to comment.