Terry Moschou created AVRO-3947:
-----------------------------------

             Summary: GenericData resolveUnion throws AvroRuntimeException on 
LogicalType subclassing
                 Key: AVRO-3947
                 URL: https://issues.apache.org/jira/browse/AVRO-3947
             Project: Apache Avro
          Issue Type: Bug
          Components: java
    Affects Versions: 1.12.0
            Reporter: Terry Moschou


The current implementation of LogicalType Conversions in 
{{GenericData.resolveUnion(schema, datum)}} fails with {{AvroRuntimeException}} 
when the datum used is any instance of the type used by the converter. This is 
due to {{Class<?>}} being used as the key of map in 
{{{}GenericData.conversionsByClass{}}}, where as a better implementation would 
be to iterate over the applicable logical type converters, for each schema in 
the union and test if {{conversion.getConvertedType().isInstance(datum)}}
Practical examples of logical type subclassing we are using:
 * {{"ip-address"}} logical type string converter to/from 
{{java.net.InetAddress}} (with Inet4Address, Inet6Address as subclasses)
 * {{"json"}} logical type string conversion to/from Jackson's JsonNode (with 
ObjectNode, ArrayNode, etc as subclasses)

 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to