On 10/18/11 10:38 AM, "Doug Cutting" <[email protected]> wrote:
>On 10/18/2011 10:09 AM, Scott Carey wrote: >> On 10/18/11 9:47 AM, "Doug Cutting" <[email protected]> wrote: >>> To amend this, you can use Avro's @Nullable annotation: >> >> The problem is that this does not provide the ability to evolve schemas >>if >> you add a field >> since you would need @Default or something similar, as well: >> @Nullable >> @Default(null) > >I don't think this is required. The default value for a union is the >default value for its first branch. A "null" schema needs no default. >So the schema ["null", "string"] needs to specify no default value while >the schema ["string", "null"] does. Thus the best practice for nullable >values is to place the null first in the union. This is what is done by >the @Nullable annotation. > >Perhaps we should clarify this in the Specification? We might state >that a "null" schema implicitly has a default value of null since that's >the only value its ever permitted to have anyway. Good to know. So, any ideas what is causing the original User's problem? @Nullable is in use with Reflect (does not work), Specific works (with default values but not without -- it appears to have "null" first but not confirmed). I suspect there is something else going on. > >> Does reflect have any concept of default values? > >No. We could add an @Default annotation, I suppose. But I don't think >this is needed for nullable stuff. > >Doug
