Avro should support the Apache Maven Shade plugin class relocation feature
--------------------------------------------------------------------------

                 Key: AVRO-941
                 URL: https://issues.apache.org/jira/browse/AVRO-941
             Project: Avro
          Issue Type: Improvement
          Components: java
    Affects Versions: 1.5.4
            Reporter: Matt Massie


The Apache shade plugin allows maven builds to create an uber jar that contains 
dependencies in the project.  In addition, the shade plugin allows you to 
relocate dependencies into a private namespace to prevent class conflicts on 
shared class paths.  Avro does not support relocation.

All generated Avro objects contain a string field named SCHEMA$ which serves as 
the authority for the class namespace.  When the shade plugin updates the byte 
code to relocate the class, it doesn't alter the SCHEMA$ string.  This break 
Avro use of reflection since the namespace in SCHEMA$ points to an incorrect 
location.

I spoke with Doug about the issue and he was kind enough to provide a quick 
hack in order to fix this issue.  The hack is to check for mismatches between 
the byte code and the SCHEMA$ and, when they don't match, to defer to the byte 
code.  I'll attach Doug's patch to this Jira.  

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to