Package com.fasterxml.jackson.datatype.guava.ser

Source Code of com.fasterxml.jackson.datatype.guava.ser.GuavaOptionalSerializer

package com.fasterxml.jackson.datatype.guava.ser;

import java.io.IOException;

import com.fasterxml.jackson.core.JsonGenerationException;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper;
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
import com.google.common.base.Optional;

public final class GuavaOptionalSerializer extends StdSerializer<Optional<?>>
{
    public GuavaOptionalSerializer(JavaType type) {
        super(type);
    }

    // implemented since 2.3
    @Override
    public boolean isEmpty(Optional<?> value) {
        return (value == null) || !value.isPresent();
    }

    @Override
    public void serialize(Optional<?> value, JsonGenerator jgen, SerializerProvider provider)
            throws IOException, JsonGenerationException {
        if(value.isPresent()){
            provider.defaultSerializeValue(value.get(), jgen);
        } else{
            provider.defaultSerializeNull(jgen);
        }
    }
   
    @Override
    public void serializeWithType(Optional<?> value,
                                  JsonGenerator jgen,
                                  SerializerProvider provider,
                                  TypeSerializer typeSer) throws IOException, JsonProcessingException {
        serialize(value, jgen, provider);
    }

    @Override
    public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType typeHint) throws JsonMappingException {
        JavaType typeParameter = typeHint.containedType(0);
        if (typeParameter != null) {
            visitor.getProvider().findValueSerializer(typeParameter, null).acceptJsonFormatVisitor(visitor, typeParameter);
            return;
        }
        super.acceptJsonFormatVisitor(visitor, typeHint);
    }
}
TOP

Related Classes of com.fasterxml.jackson.datatype.guava.ser.GuavaOptionalSerializer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.