BaseGuavaPrimitivesCollectionDeserializer.java

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

import tools.jackson.core.JacksonException;
import tools.jackson.core.JsonParser;
import tools.jackson.databind.DeserializationContext;
import tools.jackson.datatype.guava.deser.BasePrimitiveCollectionDeserializer;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

public abstract class BaseGuavaPrimitivesCollectionDeserializer<ObjectType, PrimitiveList extends List<ObjectType>, IntermediateCollection extends Collection<ObjectType>>
        extends BasePrimitiveCollectionDeserializer<ObjectType, PrimitiveList, IntermediateCollection> {

    protected BaseGuavaPrimitivesCollectionDeserializer(Class<? extends PrimitiveList> cls, Class<? super ObjectType> itemType) {
        super(cls, itemType);
    }

    @SuppressWarnings("unchecked")
    @Override
    protected IntermediateCollection createIntermediateCollection() {
        return (IntermediateCollection) new ArrayList<ObjectType>();
    }

    @Override
    protected void add(IntermediateCollection intermediateCollection, JsonParser parser, DeserializationContext context) throws JacksonException {
        intermediateCollection.add(asPrimitive(parser, context));
    }

    /**
     * @deprecated Since 3.3 override {@link #asPrimitive(JsonParser, DeserializationContext)} instead
     */
    @Deprecated // since 3.3
    protected abstract ObjectType asPrimitive(JsonParser parser) throws JacksonException;

    /**
     * Reads a single element; by default calls {@link #asPrimitive(JsonParser)}.
     *
     * @since 3.3
     */
    protected ObjectType asPrimitive(JsonParser parser, DeserializationContext context) throws JacksonException {
        return asPrimitive(parser);
    }
}