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)