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

Thiruvalluvan M. G. commented on AVRO-905:
------------------------------------------

Looks good to me. +1

Instead of using "\n", should we use platform's line separator (System property 
line.separator) ? One can argue either way. The outgoing code used println(), 
which was inserting platform specific line separator so using it now also looks 
appropriate. On the other hand, since the produced avro content should be 
platform independent, we should not use platform's line separator. I'm fine 
with either.
                
> make default separator in jsonEncoder to be "\n" instead of " "
> ---------------------------------------------------------------
>
>                 Key: AVRO-905
>                 URL: https://issues.apache.org/jira/browse/AVRO-905
>             Project: Avro
>          Issue Type: Improvement
>            Reporter: Yang Yang
>            Assignee: Doug Cutting
>            Priority: Minor
>             Fix For: 1.6.0
>
>         Attachments: AVRO-905.patch, AVRO-905.patch, AVRO-905.patch
>
>
> from mailing list:
> if I do
> writer = new SpecificDatumWriter<SpecificRecord>(schema);
> encoder = EncoderFactory.get().jsonEncoder(schema, ostream);
> writer.write(my_specific_record, encoder);
> writer.write(my_specific_record.encoder);
> it adds a space " " between the 2 records, I guess for separation.
> is it possible to remove that? or changing that to "\n" is much better
> Doug said:
> ......
> or you could pass a JsonGenerator to EncoderFactory#jsonEncoder a
> MinimalPrettyPrinter whose rootValueSeparator is set to "\n".
> http://jackson.codehaus.org/1.8.4/javadoc/org/codehaus/jackson/util/MinimalPrettyPrinter.html
> +++ lang/java/avro/src/main/java/org/apache/avro/io/JsonEncoder.java
> (working copy)
> @@ -31,6 +31,7 @@
>  import org.codehaus.jackson.JsonEncoding;
>  import org.codehaus.jackson.JsonFactory;
>  import org.codehaus.jackson.JsonGenerator;
> +import org.codehaus.jackson.util.MinimalPrettyPrinter;
>  /** An {@link Encoder} for Avro's JSON data encoding.
>  * </p>
> @@ -67,11 +68,17 @@
>     }
>   }
> +  // by default, one object per line
>   private static JsonGenerator getJsonGenerator(OutputStream out)
>       throws IOException {
>     if (null == out)
>       throw new NullPointerException("OutputStream cannot be null");
> -    return new JsonFactory().createJsonGenerator(out, JsonEncoding.UTF8);
> +    JsonGenerator g
> +      = new JsonFactory().createJsonGenerator(out, JsonEncoding.UTF8);
> +    MinimalPrettyPrinter pp = new MinimalPrettyPrinter();
> +    pp.setRootValueSeparator("\n");
> +    g.setPrettyPrinter(pp);
> +    return g;
>   }

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

        

Reply via email to