@Override public AtomicColumnType fromJsonNode(JsonNode json) { if (json.isObject() && json.has("value")) { return null; } BaseType baseType = BaseType.fromJson(json, "key"); if (baseType != null) { AtomicColumnType atomicColumnType = new AtomicColumnType(baseType); JsonNode node = null; if ((node = json.get("min")) != null) { atomicColumnType.setMin(node.asLong()); } if ((node = json.get("max")) != null) { if (node.isNumber()) { atomicColumnType.setMax(node.asLong()); } else if ("unlimited".equals(node.asText())) { atomicColumnType.setMax(Long.MAX_VALUE); } } return atomicColumnType; } return null; }
@Override public KeyValuedColumnType fromJsonNode(JsonNode json) { if (json.isValueNode() || !json.has("value")) { return null; } BaseType keyType = BaseType.fromJson(json, "key"); BaseType valueType = BaseType.fromJson(json, "value"); KeyValuedColumnType keyValueColumnType = new KeyValuedColumnType(keyType, valueType); JsonNode node = null; if ((node = json.get("min")) != null) { keyValueColumnType.setMin(node.asLong()); } if ((node = json.get("max")) != null) { if (node.isLong()) { keyValueColumnType.setMax(node.asLong()); } else if (node.isTextual() && "unlimited".equals(node.asText())) { keyValueColumnType.setMax(Long.MAX_VALUE); } } return keyValueColumnType; }