in parquet-avro/src/main/java/org/apache/parquet/avro/AvroWriteSupport.java [289:321]
private <D> Object convert(Schema schema, LogicalType logicalType, Conversion<D> conversion, Object datum) {
if (conversion == null) {
return datum;
}
Class<D> fromClass = conversion.getConvertedType();
switch (schema.getType()) {
case RECORD:
return conversion.toRecord(fromClass.cast(datum), schema, logicalType);
case ENUM:
return conversion.toEnumSymbol(fromClass.cast(datum), schema, logicalType);
case ARRAY:
return conversion.toArray(fromClass.cast(datum), schema, logicalType);
case MAP:
return conversion.toMap(fromClass.cast(datum), schema, logicalType);
case FIXED:
return conversion.toFixed(fromClass.cast(datum), schema, logicalType);
case STRING:
return conversion.toCharSequence(fromClass.cast(datum), schema, logicalType);
case BYTES:
return conversion.toBytes(fromClass.cast(datum), schema, logicalType);
case INT:
return conversion.toInt(fromClass.cast(datum), schema, logicalType);
case LONG:
return conversion.toLong(fromClass.cast(datum), schema, logicalType);
case FLOAT:
return conversion.toFloat(fromClass.cast(datum), schema, logicalType);
case DOUBLE:
return conversion.toDouble(fromClass.cast(datum), schema, logicalType);
case BOOLEAN:
return conversion.toBoolean(fromClass.cast(datum), schema, logicalType);
}
return datum;
}