[
https://issues.apache.org/jira/browse/AVRO-1847?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15327644#comment-15327644
]
Sean Busbey commented on AVRO-1847:
-----------------------------------
{code}
+
+ public static <T> Object convertToRawType(Schema schema, LogicalType
logicalType,
+ Conversion<T> conversion, Object
datum) {
+ if (conversion == null) {
+ return datum;
+ }
+ Class<T> 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;
+ }
{code}
There should be a try/catch block for ClassCastException here.
> IDL compiler uses ByteBuffer for decimal type even if logical type is
> supported
> --------------------------------------------------------------------------------
>
> Key: AVRO-1847
> URL: https://issues.apache.org/jira/browse/AVRO-1847
> Project: Avro
> Issue Type: Bug
> Components: java
> Affects Versions: 1.8.0
> Reporter: Yibing Shi
> Attachments: AVRO-1847.1.patch, AVRO-1847.2.patch, AVRO-1847.3.patch,
> AVRO-1847.4.patch
>
>
> Version 1.8.0 has added the support of logical types. A conversion class
> (Conversions.DecimalConversion) has also been added for decimal type.
> However, the IDL compiler still uses ByteBuffer for decimal types, which is
> not the same behaviour as data, time or timestamp type (added in AVRO-1684).
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)