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