[ 
https://issues.apache.org/jira/browse/AVRO-1680?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sean Busbey updated AVRO-1680:
------------------------------
    Component/s: doc

> Problems with code snippet in Decoder#readMapStart javadocs
> -----------------------------------------------------------
>
>                 Key: AVRO-1680
>                 URL: https://issues.apache.org/jira/browse/AVRO-1680
>             Project: Avro
>          Issue Type: Improvement
>          Components: doc, java
>    Affects Versions: 1.7.7
>            Reporter: Eugene Kirpichov
>            Priority: Trivial
>              Labels: beginner
>
> https://github.com/apache/avro/blob/trunk/lang/java/avro/src/main/java/org/apache/avro/io/Decoder.java
>  javadocs ( 
> http://avro.apache.org/docs/1.7.7/api/java/org/apache/avro/io/Decoder.html#readMapStart()
>  ) say:
> {code:java}
>     Map m = new HashMap();
>     Record reuse = new Record();
>     for(long i = in.readMapStart(); i != 0; i = in.readMapNext()) {
>       for (long j = 0; j < i; j++) {
>         String key = in.readString();
>         reuse.intField = in.readInt();
>         reuse.boolField = in.readBoolean();
>         m.put(key, reuse);
>       }
>    }
> {code}
> This can be improved in two ways:
> 1) Javadoc ate the generic arguments. This can be fixed by wrapping into 
> \{@code}.
> 2) The mutable record object is being reused; as a result, the map will have 
> the same shared object mapped to every key. I don't think this is likely to 
> be the user's intention, so a new Record should be created on every iteration.
> Actually in 3 ways.
> 3) a much better name for "i" would be "numRecords", because otherwise it 
> seems like "j" and "i" have similar roles (indices over some containers), 
> which they don't - "i" is not an index into any container, only j is. Then 
> "j" can be renamed to "i".



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to