All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pdd.pop.ext.fasterxml.jackson.databind.util.StdConverter Maven / Gradle / Ivy

There is a newer version: 1.10.85
Show newest version
package com.pdd.pop.ext.fasterxml.jackson.databind.util;

import com.pdd.pop.ext.fasterxml.jackson.databind.JavaType;
import com.pdd.pop.ext.fasterxml.jackson.databind.type.TypeFactory;

/**
 * Standard implementation of {@link Converter} that supports explicit
 * type access, instead of relying type detection of generic type
 * parameters. 
 * 
 * @since 2.2
 */
public abstract class StdConverter
    implements Converter
{
    /*
    /**********************************************************
    /* Partial Converter API implementation
    /**********************************************************
     */

    @Override
    public abstract OUT convert(IN value);

    @Override
    public JavaType getInputType(TypeFactory typeFactory) {
        return _findConverterType(typeFactory).containedType(0);
    }

    @Override
    public JavaType getOutputType(TypeFactory typeFactory) {
        return _findConverterType(typeFactory).containedType(1);
    }

    protected JavaType _findConverterType(TypeFactory tf) {
        JavaType thisType = tf.constructType(getClass());
        JavaType convType = thisType.findSuperType(Converter.class);
        if (convType == null || convType.containedTypeCount() < 2) {
            throw new IllegalStateException("Cannot find OUT type parameter for Converter of type "+getClass().getName());
        }
        return convType;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy