RefRefMapIterableSerializer.java

package tools.jackson.datatype.eclipsecollections.ser.map;

import java.util.Set;
import java.util.function.BiConsumer;

import tools.jackson.databind.*;
import tools.jackson.databind.jsontype.TypeSerializer;
import tools.jackson.databind.ser.std.StdContainerSerializer;
import tools.jackson.datatype.primitive_collections_base.ser.map.RefRefMapSerializer;

import org.eclipse.collections.api.map.MapIterable;

/**
 * @author yawkat
 */
public final class RefRefMapIterableSerializer extends RefRefMapSerializer<MapIterable<?, ?>>
{
    public RefRefMapIterableSerializer(
            JavaType type,
            ValueSerializer<Object> keySerializer, TypeSerializer vts, ValueSerializer<Object> valueSerializer,
            Set<String> ignoredEntries
    ) {
        super(type, MapIterable.class, keySerializer, vts, valueSerializer, ignoredEntries);
    }

    protected RefRefMapIterableSerializer(
            RefRefMapIterableSerializer src, BeanProperty property,
            ValueSerializer<?> keySerializer, TypeSerializer vts, ValueSerializer<?> valueSerializer,
            Set<String> ignoredEntries
    ) {
        super(src, property, keySerializer, vts, valueSerializer, ignoredEntries);
    }

    @Override
    protected RefRefMapIterableSerializer withResolved(
            BeanProperty property,
            ValueSerializer<?> keySer, TypeSerializer vts, ValueSerializer<?> valueSer,
            Set<String> ignored
    ) {
        return new RefRefMapIterableSerializer(this, property, keySer, vts, valueSer, ignored);
    }

    @Override
    protected StdContainerSerializer<?> _withValueTypeSerializer(TypeSerializer typeSer) {
        return new RefRefMapIterableSerializer(this, _property, _keySerializer,
                                       typeSer, _valueSerializer, _ignoredEntries);
    }

    @Override
    public boolean hasSingleElement(MapIterable<?, ?> map) {
        return map.size() == 1;
    }

    @Override
    public boolean isEmpty(SerializationContext ctxt, MapIterable<?, ?> value) {
        return value.isEmpty();
    }

    @Override
    protected void forEachKeyValue(MapIterable<?, ?> value, BiConsumer<Object, Object> action) {
        value.forEachKeyValue(action::accept);
    }
}