You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avro.apache.org by "Vincenz Priesnitz (JIRA)" <ji...@apache.org> on 2013/05/10 17:25:14 UTC

[jira] [Created] (AVRO-1328) Java: Additional Annotations for reflection

Vincenz Priesnitz created AVRO-1328:
---------------------------------------

             Summary: Java: Additional Annotations for reflection
                 Key: AVRO-1328
                 URL: https://issues.apache.org/jira/browse/AVRO-1328
             Project: Avro
          Issue Type: New Feature
          Components: java
            Reporter: Vincenz Priesnitz
            Priority: Minor


I added three java annotations to the reflect package: @AvroIgnore, @AvroName and @AvroMetadata.

Fields with the @AvroIgnore annotation will be treated as if they had a transient modifier, i.e. they will not be written to or rad from avro files. 

Java fields with the @AvroName("alt_name") annotation will be renamed in the induced schema.
When reading an avro file into a new class via reflection, the reflection reader will also look for fields in the schema with the avro name. 
For example, schema 'example' could be read into the class 'exampleClass'.

{code}
class exampleClass {
   @Avroname("foo")
   int bar;  
}
{code}
{code}
{
  "type" : "record",
  "name" : "example",
  "fields" : [ {"name" : "foo", "type" : "int" } ]
}
{code}

The @AvroMetadata(key="KEY", value="VALUE") annotation allows you to put an arbitrary key : value pair at every node in the schema.
{code}
@AvroMetadata(key="classKey", value="classValue")
class exampleClass {

   @AvroMetadata(key="fieldKey", value="fieldValue")
   int foo;  
   
}
{code}
{code}
{
  "type" : "record",
  "name" : "example",
  "fields" : [ {"name" : "foo", "type" : "int", "fieldKey" : "fieldValue" } ];
  "classKey" : "classValue"
}
{code}


I also extended the @Stringable annotation to java fields. 
This way one can turn objects to strings where the fnnotation cannot be added to the class itself. 


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira