package com.fasterxml.jackson.databind.jsontype.impl;

import com.fasterxml.jackson.annotation.JsonTypeInfo.As;

import com.fasterxml.jackson.databind.BeanProperty;
import com.fasterxml.jackson.databind.jsontype.TypeIdResolver;

Type serializer that preferably embeds type information as an additional JSON Object property, if possible (when resulting serialization would use JSON Object). If this is not possible (for JSON Arrays, scalars), uses a JSON Array wrapper (similar to how As.WRAPPER_ARRAY always works) as a fallback.
/** * Type serializer that preferably embeds type information as an additional * JSON Object property, if possible (when resulting serialization would * use JSON Object). If this is not possible (for JSON Arrays, scalars), * uses a JSON Array wrapper (similar to how * {@link As#WRAPPER_ARRAY} always works) as a fallback. */
public class AsPropertyTypeSerializer extends AsArrayTypeSerializer { protected final String _typePropertyName; public AsPropertyTypeSerializer(TypeIdResolver idRes, BeanProperty property, String propName) { super(idRes, property); _typePropertyName = propName; } @Override public AsPropertyTypeSerializer forProperty(BeanProperty prop) { return (_property == prop) ? this : new AsPropertyTypeSerializer(this._idResolver, prop, this._typePropertyName); } @Override public String getPropertyName() { return _typePropertyName; } @Override public As getTypeInclusion() { return As.PROPERTY; } }