@Override public void callback(List<String> path, DataSchema schema) { if (schema.getType() != DataSchema.Type.RECORD) { return; } RecordDataSchema recordSchema = (RecordDataSchema) schema; for (RecordDataSchema.Field field : recordSchema.getFields()) { Object defaultData = field.getDefault(); if (defaultData != null) { path.add(DataSchemaConstants.DEFAULT_KEY); Object newDefault = translateField(pathList(path), defaultData, field); path.remove(path.size() - 1); field.setDefault(newDefault); } } }
if (defaultValue != null) result.setDefault(parseJsonValue(defaultValue));
field.setDefault(fixed);
field.setDefault(fieldMap.get(DEFAULT_KEY)); if (doc != null)
field.setDefault(defaultValue.get(member.getUnionMemberKey()));
JsonValueContext defaultValue = fieldDefault.jsonValue(); if (defaultValue != null) { result.setDefault(parseJsonValue(defaultValue));
/** * Helper method to set an override for the field's schema and default value. * * @param field Reference to the field whose schema and default value is being overridden * @param modifiedSchema The override schema to use for the specified field * @param modifiedDefaultValue The override default value to use for the specified field */ private void overrideUnionFieldSchemaAndDefault(RecordDataSchema.Field field, DataSchema modifiedSchema, Object modifiedDefaultValue) { // Stash the field's original type and default value, so that we can use this for reverting them back after // the schema translation is complete. This is because we don't want the input schema to have any modifications // when the control goes back to the caller. FieldOverride fieldSchemaOverride = new FieldOverride(field.getType(), field.getDefault()); _schemaOverrides.put(field, fieldSchemaOverride); field.setType(modifiedSchema); field.setDefault(modifiedDefaultValue); }
@Override protected void encodeField(RecordDataSchema.Field field) throws IOException { super.encodeField(field); // Reset the field's type and default if there is an override FieldOverride schemaOverride = _fieldOverridesProvider.getSchemaOverride(field); if (schemaOverride != null) { field.setType(schemaOverride.getSchema()); field.setDefault(schemaOverride.getValue()); } }