package co.smartreceipts.android.apis.gson; import android.support.annotation.NonNull; import com.google.common.base.Preconditions; import com.google.gson.JsonDeserializationContext; import com.google.gson.JsonElement; import com.google.gson.JsonParseException; import java.lang.reflect.Type; import co.smartreceipts.android.model.Column; import co.smartreceipts.android.model.ColumnDefinitions; import co.smartreceipts.android.model.Receipt; import co.smartreceipts.android.model.factory.ColumnBuilderFactory; public class ColumnGsonAdpater implements GsonAdapter<Column<Receipt>> { private final ColumnDefinitions<Receipt> mReceiptColumnDefinitions; public ColumnGsonAdpater(@NonNull ColumnDefinitions<Receipt> receiptColumnDefinitions) { mReceiptColumnDefinitions = Preconditions.checkNotNull(receiptColumnDefinitions); } @Override public Column<Receipt> deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { final String name = json.getAsString(); return new ColumnBuilderFactory<>(mReceiptColumnDefinitions).setColumnName(name).build(); } }