package com.zendesk.maxwell.schema.columndef; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonDeserializer; import com.fasterxml.jackson.databind.JsonNode; import java.util.*; import java.io.IOException; public class ColumnDefDeserializer extends JsonDeserializer<ColumnDef> { @Override public ColumnDef deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { JsonNode node = jp.getCodec().readTree(jp); String type = node.get("type").asText(); String name = node.get("name").asText(); String charset = node.path("charset").asText(); boolean signed = node.path("signed").asBoolean(false); String[] enumValues = null; JsonNode enumValueNode = node.get("enum-values"); if ( enumValueNode != null ) { ArrayList<String> values = new ArrayList<>(); for ( JsonNode n : enumValueNode ) values.add(n.asText()); enumValues = (String[]) values.toArray(new String[0]); } Long columnLength = null; JsonNode columnLengthNode = node.get("column-length"); if ( columnLengthNode != null ) { columnLength = columnLengthNode.asLong(); } return ColumnDef.build(name, charset, type, 0, signed, enumValues, columnLength); } }