You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avro.apache.org by "Scott Carey (Commented) (JIRA)" <ji...@apache.org> on 2012/02/07 04:21:07 UTC

[jira] [Commented] (AVRO-1007) Insufficient validation in generated specific record builder implementations

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

Scott Carey commented on AVRO-1007:
-----------------------------------

This looks good.  Do we want to make this sort of change in 1.6.x?  Users who have relied upon the builder API to create objects that are invalid and later set them to be valid will break.  However, I don't think there are very many users of the builder API yet and we could better javadoc the behavior of build() to indicate the conditions that it will succeed and fail.
                
> Insufficient validation in generated specific record builder implementations
> ----------------------------------------------------------------------------
>
>                 Key: AVRO-1007
>                 URL: https://issues.apache.org/jira/browse/AVRO-1007
>             Project: Avro
>          Issue Type: Bug
>    Affects Versions: 1.6.1
>            Reporter: James Baldassari
>            Assignee: James Baldassari
>              Labels: java
>         Attachments: AVRO-1007-v2.patch, AVRO-1007.patch
>
>
> The are two main problems with the generated build() method in specific record builders:
> * For non-primitive types, if there is no default value and the user does not set the value, build() will execute successfully without throwing an exception
> ** Instead, an AvroRuntimeException should be thrown with an exception message indicating the name of the required field that was not set
> * For primitive types, if there is no default value and the user does not set the value, an AvroRuntimeException is thrown with the 'cause' set to a NullPointerException, which is not very helpful
> ** The NPE comes from attempting to set the primitive field to the result of defaultValue(), which is null

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