com.groupbyinc.common.jackson.databind.util.Converter Maven / Gradle / Ivy
package com.fasterxml.jackson.databind.util;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.type.TypeFactory;
/**
* Helper interface for things that convert Objects of
* one type to another.
*
* NOTE: implementors are strongly encouraged to extend {@link StdConverter}
* instead of directly implementing {@link Converter}, since that can
* help with default implementation of typically boiler-plate code.
*
* @param Type of values converter takes
* @param Result type from conversion
*
* @see com.fasterxml.jackson.databind.ser.std.StdDelegatingSerializer
* @see com.fasterxml.jackson.databind.deser.std.StdDelegatingDeserializer
*
* @since 2.1
*/
public interface Converter
{
/**
* Main conversion method.
*/
public OUT convert(IN value);
/**
* Method that can be used to find out actual input (source) type; this
* usually can be determined from type parameters, but may need
* to be implemented differently from programmatically defined
* converters (which cannot change static type parameter bindings).
*
* @since 2.2
*/
public JavaType getInputType(TypeFactory typeFactory);
/**
* Method that can be used to find out actual output (target) type; this
* usually can be determined from type parameters, but may need
* to be implemented differently from programmatically defined
* converters (which cannot change static type parameter bindings).
*
* @since 2.2
*/
public JavaType getOutputType(TypeFactory typeFactory);
/*
/**********************************************************
/* Helper class(es)
/**********************************************************
*/
/**
* This marker class is only to be used with annotations, to
* indicate that no converter is to be used.
*
* Specifically, this class is to be used as the marker for
* annotation {@link com.fasterxml.jackson.databind.annotation.JsonSerialize},
* property converter
(and related)
*
* @since 2.2
*/
public abstract static class None
implements Converter