field.setType(nonNullMembers.get(0).getType());
/** * 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()); } }
/** * Constructor. * * @param type of the field. */ public Field(DataSchema type) { setType(type); }