[ 
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)

Reply via email to