[
https://issues.apache.org/jira/browse/AVRO-1703?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15287402#comment-15287402
]
Ryan Blue commented on AVRO-1703:
---------------------------------
Thanks, Trent. I haven't been following this one. What is the problem with how
the specific records work? I'm not sure that specific is the right place to
inject scala code because there are already interfaces that could be used. I've
implemented object models for jython and jruby before and didn't use specific
at all. I used the IndexedRecord interface instead, which seems to fit nicely
with the idea of using Scala case classes.
> Specific record should not only be determined by presence of SCHEMA$ field
> --------------------------------------------------------------------------
>
> Key: AVRO-1703
> URL: https://issues.apache.org/jira/browse/AVRO-1703
> Project: Avro
> Issue Type: Improvement
> Reporter: Marius Soutier
> Labels: starter
>
> I want to use Avro from Scala, i.e. generate case classes from an Avro
> schema. So far this is working fine except for one thing - fields in Scala
> classes are always private. This doesn't work with Avro SpecificRecords (at
> least when inferring the schema from the class) and results in the following
> exception:
> org.apache.avro.AvroRuntimeException: java.lang.IllegalAccessException: Class
> org.apache.avro.specific.SpecificData can not access a member of class
> <my.Class> with modifiers "private"
> The exception is thrown from the following line in
> org.apache.avro.specific.SpecificData:
> schema = (Schema)(c.getDeclaredField("SCHEMA$").get(null));
> My suggestion would be to additionally check for a method called `getSchema`
> and read the schema from that method.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)