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

Sachin Goyal updated AVRO-1571:
-------------------------------
    Description: 
The below code cannot be serialized by Avro.
{code}
class Leaf <P, Q> {
  P p;
  Q q;
}

class Root {
  Middle1 m1;
  Middle2 m2;
  Middle3<Integer> m3;
}

class Middle1 {
  Leaf <Integer, Long> foo;
}

class Middle2 {
  Leaf <String, String> foo;
}

class Middle3 <P> {
  Leaf <P, P> foo;
}

{code}

This is because when generating the schema, only the current class is used to 
generate the schema.
The parent class' context is missing in ReflectData#createSchema() functions 
where the actual type-information is actually present.

Please see the attached test too for a simpler case.

  was:
The below code cannot be serialized by Avro.
{code}
class ParameterTypes {
  Master1 m1;
  Master2 m2;
  Master3<Integer> m3;
}

class Foo <P, Q> {
  P p;
  Q q;
}

class Master1 {
  Foo <Integer, Long> foo;
}

class Master2 {
  Foo <String, String> foo;
}

class Master3 <P> {
  Foo <P, P> foo;
}
{code}

This is because when generating the schema, only the current class is used to 
generate the schema. The parent class' context is missing in 
ReflectData#createSchema() functions where the actual type-information is 
present.


> Support parameterized types in Avro
> -----------------------------------
>
>                 Key: AVRO-1571
>                 URL: https://issues.apache.org/jira/browse/AVRO-1571
>             Project: Avro
>          Issue Type: Bug
>    Affects Versions: 1.7.6, 1.7.7, 1.8.1
>            Reporter: Sachin Goyal
>         Attachments: ParameterizedTypesTest.java
>
>
> The below code cannot be serialized by Avro.
> {code}
> class Leaf <P, Q> {
>   P p;
>   Q q;
> }
> class Root {
>   Middle1 m1;
>   Middle2 m2;
>   Middle3<Integer> m3;
> }
> class Middle1 {
>   Leaf <Integer, Long> foo;
> }
> class Middle2 {
>   Leaf <String, String> foo;
> }
> class Middle3 <P> {
>   Leaf <P, P> foo;
> }
> {code}
> This is because when generating the schema, only the current class is used to 
> generate the schema.
> The parent class' context is missing in ReflectData#createSchema() functions 
> where the actual type-information is actually present.
> Please see the attached test too for a simpler case.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to