hadoop-common-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Doug Cutting (JIRA)" <j...@apache.org>
Subject [jira] Updated: (HADOOP-6486) fix common classes to work with Avro 1.3 reflection
Date Thu, 04 Mar 2010 19:47:27 GMT

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

Doug Cutting updated HADOOP-6486:
---------------------------------

    Status: Open  (was: Patch Available)

> Why is EnumSetWritable now a collection?

Type erasure.  Avro reflect knows how to infer a schema for any Collection<Foo>, but
not for an arbitrary Wrapper<Foo>.  Consider, for example, the following code:

{code}
...
private static class Wrapper<T> {
T wrapped;
}
private Wrapper<String> wrapper;
...
{code}

Java reflection does not make it easy for one to infer a schema for 'wrapper'.  The reflected
type of that field is a ParametrizedType: Wrapper.class parameterized by String.class.  So
one might then, to finding the schema for Wrapper.class, pass down String.class as a parameter,
use Class#getTypeParameters() to bind T to String.class, then, when T is referenced in the
type of the field "wrapped", lookup that binding.  I worry about scope issues, since the name
T is scoped lexically, while walking the class structure is not, but perhaps that's not an
issue.  So perhaps Avro reflect could correctly determine a schema for "wrapper", but, at
present, it does not.

Also, representing EnumSetWritable as an array of enum values rather than a one-field-class
that wraps an array of enum values seems like a better schema.

> fix common classes to work with Avro 1.3 reflection
> ---------------------------------------------------
>
>                 Key: HADOOP-6486
>                 URL: https://issues.apache.org/jira/browse/HADOOP-6486
>             Project: Hadoop Common
>          Issue Type: Improvement
>          Components: ipc
>            Reporter: Doug Cutting
>            Assignee: Doug Cutting
>             Fix For: 0.22.0
>
>         Attachments: HADOOP-6486.patch, HADOOP-6486.patch, HADOOP-6486.patch, HADOOP-6486.patch,
HADOOP-6486.patch, HADOOP-6486.patch, HADOOP-6486.patch
>
>
> A few minor changes are required to get some common classes to work correctly with Avro
1.3 reflection.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message