Sharmarke Aden created AVRO-1245: ------------------------------------ Summary: Add Merging Functionality to Generated Builders Key: AVRO-1245 URL: https://issues.apache.org/jira/browse/AVRO-1245 Project: Avro Issue Type: Bug Components: java Affects Versions: 1.7.3 Environment: Linux Mint 32-bit, Java 7, Avro 1.7.3 Reporter: Sharmarke Aden
Suppose I have a record with the following schema and default values: {code} { "type": "record", "namespace": "test", "name": "User", "fields": [ { "name": "user", "type": ["null", "string"], "default": null }, { "name": "privacy", "type": [ { "type": "enum", "name": "Privacy", "namespace": "test", "symbols": ["Public", "Private"] }, "null" ], "default": "Private" } ] } {code} Now suppose I have a record supplied to me by a third party whose privacy field value is null. Currently if you call "Builder.newBuilder(thirdPartyRecord)" it simply creates a new record with same values as the source record (privacy is null in the newly created builder). It's very important that the privacy value be set and so ideally I would like to perform a merge to mitigate any issues with default values being absent in the source record. I would like to propose that a new enhancement be added to the Builder to support merging of a source record to a new record. Perhaps something like this: {code} // recordWithoutDefaults record passed in. User.Builder builder = User.newBuilder(); //ignore null values in the source record if the schema has a default //value for the field boolean ignoreNull = true; //ignore empty string values in the source record for string field //types with default field values boolean ignoreEmptyString = true; //while this is simple and useful in my use-case perhaps there's a //better/refined way of supporting veracious merging models builder.merge(recordWithoutDefaults, ignoreNull, ignoreEmptyString); {code} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira