package com.oath.cyclops.jackson.serializers; import com.fasterxml.jackson.databind.BeanProperty; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.jsontype.TypeSerializer; import com.fasterxml.jackson.databind.ser.std.ReferenceTypeSerializer; import com.fasterxml.jackson.databind.type.ReferenceType; import com.fasterxml.jackson.databind.util.NameTransformer; import cyclops.control.Eval; public class EvalSerializer extends ReferenceTypeSerializer<Eval<?>> { private static final long serialVersionUID = 1L; protected EvalSerializer(ReferenceType fullType, boolean staticTyping, TypeSerializer vts, JsonSerializer<Object> ser) { super(fullType, staticTyping, vts, ser); } protected EvalSerializer(EvalSerializer base, BeanProperty property, TypeSerializer vts, JsonSerializer<?> valueSer, NameTransformer unwrapper, Object suppressableValue, boolean suppressNulls) { super(base, property, vts, valueSer, unwrapper, suppressableValue, suppressNulls); } @Override protected ReferenceTypeSerializer<Eval<?>> withResolved(BeanProperty prop, TypeSerializer vts, JsonSerializer<?> valueSer, NameTransformer unwrapper) { return new EvalSerializer(this, prop, vts, valueSer, unwrapper, _suppressableValue, _suppressNulls); } @Override public ReferenceTypeSerializer<Eval<?>> withContentInclusion(Object suppressableValue, boolean suppressNulls) { return new EvalSerializer(this, _property, _valueTypeSerializer, _valueSerializer, _unwrapper, suppressableValue, suppressNulls); } /* /********************************************************** /* Abstract method impls /********************************************************** */ @Override protected boolean _isValuePresent(Eval<?> value) { return value.isPresent(); } @Override protected Object _getReferenced(Eval<?> value) { return value.orElse(null); } @Override protected Object _getReferencedIfPresent(Eval<?> value) { return value.orElse(null); } }