ImmutableDoubleArraySerializer.java

package tools.jackson.datatype.guava.ser.primitives;

import tools.jackson.core.JsonGenerator;
import tools.jackson.databind.SerializationContext;
import tools.jackson.databind.SerializationFeature;
import tools.jackson.databind.ser.std.StdSerializer;
import com.google.common.primitives.ImmutableDoubleArray;

public final class ImmutableDoubleArraySerializer
    extends StdSerializer<ImmutableDoubleArray>
{
    public ImmutableDoubleArraySerializer() {
        super(ImmutableDoubleArray.class);
    }

    @Override
    public boolean isEmpty(SerializationContext ctxt, ImmutableDoubleArray value) {
        return value == null || value.isEmpty();
    }

    @Override
    public void serialize(ImmutableDoubleArray value, JsonGenerator generator,
            SerializationContext ctxt)
    {
        int len = value.length();
        if (len == 1 && ctxt.isEnabled(SerializationFeature.WRITE_SINGLE_ELEM_ARRAYS_UNWRAPPED)) {
            generator.writeNumber(value.get(0));
        } else {
            generator.writeStartArray(value, len);
            for (int i = 0; i < len; i++) {
                generator.writeNumber(value.get(i));
            }
            generator.writeEndArray();
        }
    }
}