[
https://issues.apache.org/jira/browse/THRIFT-735?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12846044#action_12846044
]
David Reiss commented on THRIFT-735:
------------------------------------
Sorry, I totally missed your 3:14 comment.
> We already have this annotation - it's called "required".
I disagree. That's an annotation on the field, not the type. There is no way
to say that a list member is required, for example. Basically, I think the
decision of whether an enum or union is valid should only affect the enum or
union itself. It should not leak up into the containing context.
I think it's definitely important to distinguish between "unset" and "set, but
I couldn't understand it". It's the difference between "someone sent me bad
data" and "Someone sent me new data that I don't know about".
> Required field checking is broken when the field type is a Union struct
> -----------------------------------------------------------------------
>
> Key: THRIFT-735
> URL: https://issues.apache.org/jira/browse/THRIFT-735
> Project: Thrift
> Issue Type: Bug
> Components: Compiler (Java), Library (Java)
> Affects Versions: 0.2
> Reporter: Bryan Duxbury
> Assignee: Bryan Duxbury
> Fix For: 0.3
>
> Attachments: thrift-735.patch
>
>
> The validate() method on generated structs verifies that required fields are
> set after validation. However, if the type of the field is a Union struct,
> then just checking that the field isn't null is not a valid check. The value
> may be a non-null union, but have an unset field. (We encountered this when
> deserializing a type that had a union for a field, and the union's set value
> was an enum value that had been removed from the definition, making it a
> skip.)
> In order to perform the correct validation, if the value is a Union, then we
> must also check that the set field and value are non-null.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.