I created https://issues.apache.org/jira/browse/AVRO-1299 and posted a patch to let SpecificRecordBase implement GenericRecord. As I think about it, it seems to me that SpecificRecordBuilderBase should also implement GenericRecord.
C. On Mon, Apr 15, 2013 at 9:39 PM, Christophe Taton <[email protected]>wrote: > On Mon, Apr 15, 2013 at 9:19 PM, Scott Carey <[email protected]>wrote: > >> I would like to figure out how to make SpecificRecord and GenericRecord >> immutable in the longer term (or as an option with the code generation >> and/or builder). The builder is the first step, but setters are the >> enemy. Is there a way to do this that does not introduce new mutators for >> all SpecificRecords? >> > > That's fair. Getters only would work for what I need, assuming setters > will eventually come through builders. > > And Immutable records would be great! > > C. > > On 4/15/13 3:43 PM, "Doug Cutting" <[email protected]> wrote: >> >> >On Mon, Apr 15, 2013 at 2:21 PM, Christophe Taton <[email protected]> >> >wrote: >> >> If you think it's a meaningful addition, I'm happy to make the change. >> > >> >The two methods I wrote above could be added to SpecificRecordBase and >> >it could then be declared to implement GenericRecord. >> > >> >I think GenericRecordBuilder could be used to build specific records >> >with a few additional changes: >> > - change the type of the 'record' field from GenericData.Record to >> >GenericRecord. >> > - replace the call to 'new GenericData.Record()' to >> >'(GenericRecord)data().newRecord(null, schema())' >> > - add a constructor that accepts a GenericData instance, instead of >> >calling GenericData.get(). >> > >> >Then you could use new GenericRecordBuilder(SpecificData.get(), >> >schema) to create specific records. >> > >> >Doug >> >> >> >
