JsonFormatVisitorWrapper.java

package tools.jackson.databind.jsonFormatVisitors;

import tools.jackson.databind.JavaType;
import tools.jackson.databind.SerializationContext;

/**
 * Interface for visitor callbacks, when type in question can be any of
 * legal JSON types.
 *<p>
 * In most cases it will make more sense to extend {@link JsonFormatVisitorWrapper.Base}
 * instead of directly implementing this interface.
 */
public interface JsonFormatVisitorWrapper extends JsonFormatVisitorWithSerializationContext
{
    /**
     * @param type Declared type of visited property (or List element) in Java
     */
    public JsonObjectFormatVisitor expectObjectFormat(JavaType type);

    /**
     * @param type Declared type of visited property (or List element) in Java
     */
    public JsonArrayFormatVisitor expectArrayFormat(JavaType type);

    /**
     * @param type Declared type of visited property (or List element) in Java
     */
    public JsonStringFormatVisitor expectStringFormat(JavaType type);

    /**
     * @param type Declared type of visited property (or List element) in Java
     */
    public JsonNumberFormatVisitor expectNumberFormat(JavaType type);

    /**
     * @param type Declared type of visited property (or List element) in Java
     */
    public JsonIntegerFormatVisitor expectIntegerFormat(JavaType type);

    /**
     * @param type Declared type of visited property (or List element) in Java
     */
    public JsonBooleanFormatVisitor expectBooleanFormat(JavaType type);

    /**
     * @param type Declared type of visited property (or List element) in Java
     */
    public JsonNullFormatVisitor expectNullFormat(JavaType type);

    /**
     * @param type Declared type of visited property (or List element) in Java
     */
    public JsonAnyFormatVisitor expectAnyFormat(JavaType type);

    /**
     * Method called when type is of Java {@link java.util.Map} type, and will
     * be serialized as a JSON Object.
     *
     * @since 2.2
     */
    public JsonMapFormatVisitor expectMapFormat(JavaType type);

    /**
     * Empty "no-op" implementation of {@link JsonFormatVisitorWrapper}, suitable for
     * sub-classing. Does implement {@link #setContext(SerializationContext)} and
     * {@link #getContext()} as expected; other methods simply return null
     * and do nothing.
     *
     * @since 2.5
     */
    public static class Base implements JsonFormatVisitorWrapper {
        protected SerializationContext _context;

        public Base() { }

        public Base(SerializationContext p) {
            _context = p;
        }

        @Override
        public SerializationContext getContext() {
            return _context;
        }

        @Override
        public void setContext(SerializationContext p) {
            _context = p;
        }

        @Override
        public JsonObjectFormatVisitor expectObjectFormat(JavaType type) {
            return null;
        }

        @Override
        public JsonArrayFormatVisitor expectArrayFormat(JavaType type) {
            return null;
        }

        @Override
        public JsonStringFormatVisitor expectStringFormat(JavaType type) {
            return null;
        }

        @Override
        public JsonNumberFormatVisitor expectNumberFormat(JavaType type) {
            return null;
        }

        @Override
        public JsonIntegerFormatVisitor expectIntegerFormat(JavaType type) {
            return null;
        }

        @Override
        public JsonBooleanFormatVisitor expectBooleanFormat(JavaType type) {
            return null;
        }

        @Override
        public JsonNullFormatVisitor expectNullFormat(JavaType type) {
            return null;
        }

        @Override
        public JsonAnyFormatVisitor expectAnyFormat(JavaType type) {
            return null;
        }

        @Override
        public JsonMapFormatVisitor expectMapFormat(JavaType type) {
            return null;
        }
   }
}