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

com.spotify.docker.client.shaded.com.fasterxml.jackson.datatype.guava.GuavaSerializers Maven / Gradle / Ivy

There is a newer version: 8.16.0
Show newest version
package com.fasterxml.jackson.datatype.guava;


import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
import com.fasterxml.jackson.databind.ser.Serializers;
import com.fasterxml.jackson.databind.type.MapLikeType;

import com.fasterxml.jackson.datatype.guava.ser.GuavaOptionalSerializer;
import com.fasterxml.jackson.datatype.guava.ser.MultimapSerializer;

import com.google.common.base.Optional;
import com.google.common.collect.Multimap;

public class GuavaSerializers extends Serializers.Base
{
    @Override
    public JsonSerializer findSerializer(SerializationConfig config, JavaType type, BeanDescription beanDesc) {
        Class raw = type.getRawClass();
        if(Optional.class.isAssignableFrom(raw)){
            return new GuavaOptionalSerializer(type);
        }
        return super.findSerializer(config, type, beanDesc);
    }
    @Override
    public JsonSerializer findMapLikeSerializer(SerializationConfig config,
            MapLikeType type, BeanDescription beanDesc, JsonSerializer keySerializer,
            TypeSerializer elementTypeSerializer, JsonSerializer elementValueSerializer)
    {
        if (Multimap.class.isAssignableFrom(type.getRawClass())) {
            return new MultimapSerializer(config, type, beanDesc, keySerializer,
                    elementTypeSerializer, elementValueSerializer);
        }
        return null;
    }
}