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

Kevin Oliver commented on AVRO-350:
-----------------------------------

Actually, thinking about this a bit more. isSet() seems like a bit of a 
misnomer, as really we are trying to distinguish between a field existing in 
the schema or not. Perhaps, hasField(String name) instead?

Also, there is already the equivalent of isSet(String name) publicly exposed 
via GenericRecord.getSchema().getFields().get(name) != null. Adding hasField 
would just be a convenience method here, do we even need it? 

I'm leaning towards restoring the pre AVRO-278 behavior of returning null when 
asking for a field that doesn't exist, and adding comments to get(String name) 
that explain how null can mean two things:

{code}
  /** 
   * Return the value of a field given its name. 
   * @return null if the given field does not exist in the schema.
   *    You can differentiate between a stored null and not existing in the 
schema
   *    by introspecting the record's schema.
   */
  Object get(String key);
{code}

> NPE on GenericData.Record.get(String) for a field that doesn't exist
> --------------------------------------------------------------------
>
>                 Key: AVRO-350
>                 URL: https://issues.apache.org/jira/browse/AVRO-350
>             Project: Avro
>          Issue Type: Sub-task
>          Components: java
>    Affects Versions: 1.3.0
>            Reporter: Kevin Oliver
>         Attachments: AVRO-350.patch
>
>
> After the change in AVRO-278 to use arrays, GenericData.Record.get() gives an 
> NPE if you ask for a field that doesn't exist in the schema. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to