com.fasterxml.jackson.databind.ser.PropertyWriter Maven / Gradle / Ivy
Show all versions of swagger-all Show documentation
package com.fasterxml.jackson.databind.ser;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonObjectFormatVisitor;
import com.fasterxml.jackson.databind.node.ObjectNode;
/**
* Base class for writers used to output property values (name-value pairs)
* as key/value pairs via streaming API. This is the most generic abstraction
* implemented by both POJO and {@link java.util.Map} serializers, and invoked
* by filtering functionality.
*
* @since 2.3
*/
public abstract class PropertyWriter
{
/*
/**********************************************************
/* Metadata access
/**********************************************************
*/
public abstract String getName();
public abstract PropertyName getFullName();
/*
/**********************************************************
/* Serialization methods, regular output
/**********************************************************
*/
/**
* The main serialization method called by filter when property is to be written normally.
*/
public abstract void serializeAsField(Object pojo, JsonGenerator jgen, SerializerProvider prov)
throws Exception;
/**
* Serialization method that filter needs to call in cases where property is to be
* filtered, but the underlying data format requires a placeholder of some kind.
* This is usually the case for tabular (positional) data formats such as CSV.
*/
public abstract void serializeAsOmittedField(Object pojo, JsonGenerator jgen, SerializerProvider prov)
throws Exception;
/*
/**********************************************************
/* Serialization methods, explicit positional/tabular formats
/**********************************************************
*/
/**
* Serialization method called when output is to be done as an array,
* that is, not using property names. This is needed when serializing
* container ({@link java.util.Collection}, array) types,
* or POJOs using tabular
("as array") output format.
*
* Note that this mode of operation is independent of underlying
* data format; so it is typically NOT called for fully tabular formats such as CSV,
* where logical output is still as form of POJOs.
*/
public abstract void serializeAsElement(Object pojo, JsonGenerator jgen, SerializerProvider prov)
throws Exception;
/**
* Serialization method called when doing tabular (positional) output from databind,
* but then value is to be omitted. This requires output of a placeholder value
* of some sort; often similar to {@link #serializeAsOmittedField}.
*/
public abstract void serializeAsPlaceholder(Object pojo, JsonGenerator jgen, SerializerProvider prov)
throws Exception;
/*
/**********************************************************
/* Schema-related
/**********************************************************
*/
/**
* Traversal method used for things like JSON Schema generation, or
* POJO introspection.
*/
public abstract void depositSchemaProperty(JsonObjectFormatVisitor objectVisitor)
throws JsonMappingException;
/**
* Legacy method called for JSON Schema generation; should not be called by new code
*
* @deprecated Since 2.2
*/
@Deprecated
public abstract void depositSchemaProperty(ObjectNode propertiesNode, SerializerProvider provider)
throws JsonMappingException;
}