TreeBasedTableDeserializer.java

package com.fasterxml.jackson.datatype.guava.deser.table;

import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.KeyDeserializer;
import com.fasterxml.jackson.databind.deser.NullValueProvider;
import com.fasterxml.jackson.databind.jsontype.TypeDeserializer;
import com.fasterxml.jackson.databind.type.MapLikeType;
import com.google.common.collect.TreeBasedTable;

/**
 * Provides deserialization for the Guava TreeBasedTable class.
 *
 * @author Abhishekkr3003
 */
public class TreeBasedTableDeserializer
    extends MutableTableDeserializer<TreeBasedTable<Object, Object, Object>> {
    private static final long serialVersionUID = 1L;
    
    public TreeBasedTableDeserializer(MapLikeType type) {
        super(type);
    }
    
    public TreeBasedTableDeserializer(MapLikeType type, KeyDeserializer rowDeserializer,
        KeyDeserializer columnDeserializer, TypeDeserializer elementTypeDeserializer,
        JsonDeserializer<?> elementDeserializer, NullValueProvider nvp) {
        super(type, rowDeserializer, columnDeserializer, elementTypeDeserializer,
            elementDeserializer, nvp
        );
    }
    
    @SuppressWarnings("unchecked")
    @Override
    protected TreeBasedTable<Object, Object, Object> createTable() {
        TreeBasedTable<?, ?, ?> naturalOrder = TreeBasedTable.create();
        return (TreeBasedTable<Object, Object, Object>) naturalOrder;
    }
    
    @Override
    protected JsonDeserializer<?> _createContextual(MapLikeType type,
        KeyDeserializer rowDeserializer,
        KeyDeserializer columnDeserializer, TypeDeserializer typeDeserializer,
        JsonDeserializer<?> elementDeserializer, NullValueProvider nvp) {
        return new TreeBasedTableDeserializer(
            type, rowDeserializer, columnDeserializer, typeDeserializer, elementDeserializer, nvp);
    }
}