All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.cassite.f.MListDeserializer Maven / Gradle / Ivy

package net.cassite.f;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.deser.ContextualDeserializer;
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;

import java.io.IOException;

public class MListDeserializer extends StdDeserializer> implements ContextualDeserializer {
    private JsonDeserializer contentDeser;

    @SuppressWarnings("unused")
    public MListDeserializer() {
        super(MList.class);
    }

    private MListDeserializer(JavaType collectionType, JsonDeserializer contentDeser) {
        super(collectionType);
        this.contentDeser = contentDeser;
    }

    @Override
    public JsonDeserializer createContextual(DeserializationContext ctxt, BeanProperty property) throws JsonMappingException {
        // property == null || property.getType().isCollectionLikeType();
        JavaType contentType = ctxt.getContextualType().getContentType();
        return new MListDeserializer<>(ctxt.getContextualType(), ctxt.findContextualValueDeserializer(contentType, property));
    }

    @Override
    public MList deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
        // contentDeser != null;
        // p.currentToken() == JsonToken.START_ARRAY;
        MList ls = MList.modifiable();
        for (JsonToken t = p.nextToken(); t != JsonToken.END_ARRAY; t = p.nextToken()) {
            E value = contentDeser.deserialize(p, ctxt);
            ls.add(value);
        }
        return ls.immutable();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy