I've had some issues using builders in the past: building a new object
which has required fields in the schema (the type is not a union with null)
but that field doesn't specify a default value.

I realize the above is a corner case, but the schemas I've been given are
poorly designed, so I had to work around it.

When a default value is not specified and a field is optional, will a
builder for a brand new object set the value to null in the Java object?
On Feb 19, 2014 5:44 PM, "Lewis John Mcgibbney" <lewis.mcgibb...@gmail.com>
wrote:

> +1 we do this in Gora.
> Please note that there are some overheads with using the builders...
> "namely Avro objects can be created either by invoking a constructor
> directly or by using a builder. Unlike constructors, builders will
> automatically set any default values specified in the schema. Additionally,
> builders validate the data as it set, whereas objects constructed directly
> will not cause an error until the object is serialized. However, using
> constructors directly generally offers better performance, as builders
> create a copy of the datastructure before it is written."
>
> Please see
> http://avro.apache.org/docs/current/gettingstartedjava.html#Creating+Users
>
> hth
> Lewis
>
>
> On Wed, Feb 19, 2014 at 5:39 PM, Christophe Taton <ta...@wibidata.com>wrote:
>
>> Hi,
>> I'd suggest using the record builders to construct your records: record
>> builders will initialize fields with their default values if you don't set
>> them.
>>  C.
>>
>>
>> On Wed, Feb 19, 2014 at 9:07 AM, Gary Steelman <gary.steelma...@gmail.com
>> > wrote:
>>
>>> Hey Wai,
>>>
>>> Good question. I've had that problem recently too. My solution has been
>>> to set the missing field to a known default value in my code before I try
>>> to serialize an object. That is, if some integer is required by the schema,
>>> I do a check on my object.
>>>
>>> if (myObject.value == null) {myObject.value = -1;}
>>>
>>> But then you have to do this for all fields in the schema which aren't
>>> optional. And that's kind of a pain. It'd be kind of nice if the writer
>>> also used the default value from the schema for writing.
>>>
>>> Thanks,
>>> Gary
>>> On Feb 19, 2014 10:42 AM, "Wai Yip Tung" <w...@tungwaiyip.info> wrote:
>>>
>>>> In the schema we can define a "default" value. It is used as default
>>>> when reading. If the field is missing from the data when we write, it
>>>> results in an error. Is there a counterpart of "default" in writing so that
>>>> if the field is missing, the writer just fill in the default value?
>>>>
>>>> Wai Yip
>>>>
>>>
>>
>
>
> --
> *Lewis*
>

Reply via email to