[ 
https://issues.apache.org/jira/browse/AVRO-1759?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

ASF GitHub Bot updated AVRO-1759:
---------------------------------
    Labels: pull-request-available  (was: )

> Avro Schema Generator to handle polymorphic types
> -------------------------------------------------
>
>                 Key: AVRO-1759
>                 URL: https://issues.apache.org/jira/browse/AVRO-1759
>             Project: Apache Avro
>          Issue Type: Improvement
>          Components: java
>    Affects Versions: 1.9.0
>            Reporter: Qiangqiang Shi
>            Priority: Major
>              Labels: pull-request-available
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> Inheritance and polymorphism are widely used in Java projects and libraries. 
> It'll make people's life easier if Avro could detect classes' hierarchy and 
> generate Avro schema according to the hierarchy. 
> for example, for the following class:
> {code:java}
> public class TestReflectPolymorphismData {
> {
> public static class SuperclassA1 {
>     private String SuperclassA1;
>   }
>   public static class SubclassA1 extends SuperclassA1 {
>     private String SubclassA1;
>   }
>   public static class SubclassA2 extends SuperclassA1 {
>     private String SubclassA2;
>   }
> public static class SuperB1 {
>     private SubclassA1 SubclassA1;
>     private List<SubclassA2> SubclassA2List;
>     private Map<String, SuperclassA1> stringSuperclassA1Map;
>     private Map<Integer, SuperclassA1> integerSuperclassA1Map;
>   }
> }
> }
> {code}
> Avro should be able to generate a schema like the following one automatically 
> for class SuperB1 :
> {"type":"record","name":"SuperB1","namespace":"org.apache.avro.reflect.TestReflectPolymorphismData$","fields":[{"name":"SubclassA1","type":{"type":"record","name":"SuperclassA1","fields":[{"name":"SuperclassA1","type":"string"},{"name":"SuperclassA1Subclasses","type":["null",{"type":"record","name":"SubclassA1","fields":[{"name":"SubclassA1","type":"string"}]},{"type":"record","name":"SubclassA2","fields":[{"name":"SubclassA2","type":"string"}]}]}]}},{"name":"SubclassA2List","type":{"type":"array","items":"SuperclassA1","java-class":"java.util.List"}},{"name":"stringSuperclassA1Map","type":{"type":"map","values":"SuperclassA1"}},{"name":"integerSuperclassA1Map","type":{"type":"array","items":{"type":"record","name":"Pair34255fab6d3d79ff","namespace":"org.apache.avro.reflect","fields":[{"name":"key","type":"int"},{"name":"value","type":"org.apache.avro.reflect.TestReflectPolymorphismData$.SuperclassA1"}]},"java-class":"java.util.Map"}}]}



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

Reply via email to