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

io.prestosql.jdbc.$internal.jackson.datatype.guava.ser.GuavaOptionalSerializer Maven / Gradle / Ivy

The newest version!
package io.prestosql.jdbc.$internal.jackson.datatype.guava.ser;

import io.prestosql.jdbc.$internal.jackson.databind.*;

import io.prestosql.jdbc.$internal.jackson.databind.jsontype.TypeSerializer;
import io.prestosql.jdbc.$internal.jackson.databind.ser.std.ReferenceTypeSerializer;
import io.prestosql.jdbc.$internal.jackson.databind.type.ReferenceType;
import io.prestosql.jdbc.$internal.jackson.databind.util.NameTransformer;
import io.prestosql.jdbc.$internal.guava.base.Optional;

public class GuavaOptionalSerializer
    extends ReferenceTypeSerializer> // since 2.9
{
    private static final long serialVersionUID = 1L;

    /*
    /**********************************************************
    /* Life-cycle
    /**********************************************************
     */

    public GuavaOptionalSerializer(ReferenceType fullType, boolean staticTyping,
            TypeSerializer vts, JsonSerializer ser)
    {
        super(fullType, staticTyping, vts, ser);
    }

    public GuavaOptionalSerializer(GuavaOptionalSerializer base, BeanProperty property,
            TypeSerializer vts, JsonSerializer valueSer, NameTransformer unwrapper,
            Object suppressableValue, boolean suppressNulls)
    {
        super(base, property, vts, valueSer, unwrapper,
                suppressableValue, suppressNulls);
    }


    @Override
    protected ReferenceTypeSerializer> withResolved(BeanProperty prop,
            TypeSerializer vts, JsonSerializer valueSer,
            NameTransformer unwrapper)
    {
        if ((_property == prop)
                && (_valueTypeSerializer == vts) && (_valueSerializer == valueSer)
                && (_unwrapper == unwrapper)) {
            return this;
        }
        return new GuavaOptionalSerializer(this, prop, vts, valueSer, unwrapper,
                _suppressableValue, _suppressNulls);
    }

    @Override
    public ReferenceTypeSerializer> withContentInclusion(Object suppressableValue,
            boolean suppressNulls)
    {
        return new GuavaOptionalSerializer(this, _property, _valueTypeSerializer,
                _valueSerializer, _unwrapper,
                suppressableValue, suppressNulls);
    }
    
    /*
    /**********************************************************
    /* Abstract method impls
    /**********************************************************
     */

    @Override
    protected boolean _isValuePresent(Optional value) {
        return value.isPresent();
    }

    @Override
    protected Object _getReferenced(Optional value) {
        return value.get();
    }

    @Override
    protected Object _getReferencedIfPresent(Optional value) {
        return value.isPresent() ? value.get() : null;
    }    
}