diff options
author | Tatu Saloranta <tatu.saloranta@iki.fi> | 2017-06-28 16:31:24 -0700 |
---|---|---|
committer | Tatu Saloranta <tatu.saloranta@iki.fi> | 2017-06-28 16:31:24 -0700 |
commit | 3e9594b772851cde26515a07178d19a5ee47281f (patch) | |
tree | 6cc568ffbc6d859990a63c18d7e9723c6a9f3c40 /src/main/java/com/fasterxml/jackson/databind/ser/std/BeanSerializerBase.java | |
parent | 727d4f7a5278f69204d3e0810a5fad6652c7e2e7 (diff) | |
download | jackson-databind-3e9594b772851cde26515a07178d19a5ee47281f.tar.gz |
more work, convert as-array type id cases
Diffstat (limited to 'src/main/java/com/fasterxml/jackson/databind/ser/std/BeanSerializerBase.java')
-rw-r--r-- | src/main/java/com/fasterxml/jackson/databind/ser/std/BeanSerializerBase.java | 58 |
1 files changed, 22 insertions, 36 deletions
diff --git a/src/main/java/com/fasterxml/jackson/databind/ser/std/BeanSerializerBase.java b/src/main/java/com/fasterxml/jackson/databind/ser/std/BeanSerializerBase.java index 7bfe4b21c..e7ba76a02 100644 --- a/src/main/java/com/fasterxml/jackson/databind/ser/std/BeanSerializerBase.java +++ b/src/main/java/com/fasterxml/jackson/databind/ser/std/BeanSerializerBase.java @@ -595,21 +595,7 @@ public abstract class BeanSerializerBase return; } - WritableTypeId typeIdDef; - if (_typeId == null) { - typeIdDef = new WritableTypeId(bean, JsonToken.START_OBJECT); - } else { - typeIdDef = new WritableTypeId(bean, JsonToken.START_OBJECT, - _customTypeId(bean)); - } - /* - String typeStr = (_typeId == null) ? null : _customTypeId(bean); - if (typeStr == null) { - typeSer.writeTypePrefixForObject(bean, gen); - } else { - typeSer.writeCustomTypePrefixForObject(bean, gen, typeStr); - } - */ + WritableTypeId typeIdDef = _typeIdDef(bean); gen.setCurrentValue(bean); // [databind#631] typeSer.writeTypePrefix(gen, typeIdDef); @@ -618,15 +604,7 @@ public abstract class BeanSerializerBase } else { serializeFields(bean, gen, provider); } - typeSer.writeTypeSuffix(gen, typeIdDef); - /* - if (typeStr == null) { - typeSer.writeTypeSuffixForObject(bean, gen); - } else { - typeSer.writeCustomTypeSuffixForObject(bean, gen, typeStr); - } - */ } protected final void _serializeWithObjectId(Object bean, JsonGenerator gen, SerializerProvider provider, @@ -673,7 +651,6 @@ public abstract class BeanSerializerBase w.serializer.serialize(id, gen, provider); return; } - _serializeObjectId(bean, gen, provider, typeSer, objectId); } @@ -681,25 +658,34 @@ public abstract class BeanSerializerBase TypeSerializer typeSer, WritableObjectId objectId) throws IOException { final ObjectIdWriter w = _objectIdWriter; - String typeStr = (_typeId == null) ? null :_customTypeId(bean); - if (typeStr == null) { - typeSer.writeTypePrefixForObject(bean, gen); - } else { - typeSer.writeCustomTypePrefixForObject(bean, gen, typeStr); - } + WritableTypeId typeIdDef = _typeIdDef(bean); + + typeSer.writeTypePrefix(gen, typeIdDef); objectId.writeAsField(gen, provider, w); if (_propertyFilterId != null) { serializeFieldsFiltered(bean, gen, provider); } else { serializeFields(bean, gen, provider); } - if (typeStr == null) { - typeSer.writeTypeSuffixForObject(bean, gen); - } else { - typeSer.writeCustomTypeSuffixForObject(bean, gen, typeStr); + typeSer.writeTypeSuffix(gen, typeIdDef); + } + + /** + * @since 2.9 + */ + protected final WritableTypeId _typeIdDef(Object bean) { + if (_typeId == null) { + return new WritableTypeId(bean, JsonToken.START_OBJECT); } + Object typeId = _typeId.getValue(bean); + if (typeId == null) { + // 28-Jun-2017, tatu: Is this really needed? Unchanged from 2.8 but... + typeId = ""; + } + return new WritableTypeId(bean, JsonToken.START_OBJECT, typeId); } - + + @Deprecated // since 2.9 protected final String _customTypeId(Object bean) { final Object typeId = _typeId.getValue(bean); @@ -708,7 +694,7 @@ public abstract class BeanSerializerBase } return (typeId instanceof String) ? (String) typeId : typeId.toString(); } - + /* /********************************************************** /* Field serialization methods |