avro-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Doug Cutting (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (AVRO-1261) Honor schema defaults with the Constructor in addition to the builders.
Date Wed, 27 Feb 2013 19:59:13 GMT

    [ https://issues.apache.org/jira/browse/AVRO-1261?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13588693#comment-13588693
] 

Doug Cutting commented on AVRO-1261:
------------------------------------

The no-arg constructor is also used to create instances when reading.  Setting field defaults
in this case may harm performance, especially when new copies of mutable default values are
allocated each time.  Similarly, setting field values to defaults when writing may harm performance
when the application overwrites the default.  In general, there are cases where it's probably
fastest to create instances without defaults set.  Currently the no-arg constructor serves
this purpose and the Builder API supports the case where defaults are desired.

Perhaps we could better document this?  The generated no-arg constructor might include javadoc
cautioning that no default values are set and that the builder should be used if they're desired?
                
> Honor schema defaults with the Constructor in addition to the builders.
> -----------------------------------------------------------------------
>
>                 Key: AVRO-1261
>                 URL: https://issues.apache.org/jira/browse/AVRO-1261
>             Project: Avro
>          Issue Type: Bug
>          Components: java
>    Affects Versions: 1.7.4
>            Reporter: Christopher Conner
>            Priority: Minor
>
> As I understand it, currently if you want to utilize defaults in a schema, ie:
> { 
> "namespace": "com.chris.test", 
> "type": "record", 
> "name": "CHRISTEST", 
> "doc": "Chris Test", 
> "fields": [ 
> {"name": "firstname", "type": "string", "default": "Chris"}, 
> {"name": "lastname", "type": "string", "default": "Conner"}, 
> {"name": "username", "type": "string", "default": "cconner"}
> ] 
> }
> Then I have to use the builders to create my objects.  IE:
> public class ChrisAvroTest {
> public static void main(String[] args) throws Exception {
> CHRISTEST person = CHRISTEST.newBuilder() 
> .build(); 
> System.out.println("person:" + person);
> } 
> }
> Is my understanding correct?  Is it possible to make it so the default constructor as
well?

--
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

Mime
View raw message