in gobblin-core/src/main/java/org/apache/gobblin/converter/avro/JsonElementConversionWithAvroSchemaFactory.java [246:302]
Object convertField(JsonElement value) {
for(JsonElementConverter converter: converters)
{
try {
switch (converter.getTargetType()) {
case STRING: {
if (value.isJsonPrimitive() && value.getAsJsonPrimitive().isString()) {
return converter.convert(value);
}
break;
}
case FIXED:
case BYTES:
case INT:
case LONG:
case FLOAT:
case DOUBLE: {
if (value.isJsonPrimitive() && value.getAsJsonPrimitive().isNumber()) {
return converter.convert(value);
}
break;
}
case BOOLEAN:{
if (value.isJsonPrimitive() && value.getAsJsonPrimitive().isBoolean()) {
return converter.convert(value);
}
break;
}
case ARRAY:{
if (value.isJsonArray()) {
return converter.convert(value);
}
break;
}
case MAP:
case ENUM:
case RECORD:{
if (value.isJsonObject()) {
return converter.convert(value);
}
break;
}
case NULL:{
if(value.isJsonNull()) {
return converter.convert(value);
}
break;
}
case UNION:
return new UnsupportedDateTypeException("does not support union type in union");
default:
return converter.convert(value);
}
} catch (Exception e){}
}
throw new RuntimeException(String.format("Cannot convert %s to avro using schema %s", value.getAsString(), schemaNode.toString()));
}