use of org.apache.gobblin.fork.CopyableSchema in project incubator-gobblin by apache.
the class TestConverter2 method convertRecord.
@Override
public Iterable<CopyableGenericRecord> convertRecord(CopyableSchema schema, String inputRecord, WorkUnitState workUnit) throws DataConversionException {
JsonElement element = GSON.fromJson(inputRecord, JsonElement.class);
Map<String, Object> fields = GSON.fromJson(element, FIELD_ENTRY_TYPE);
try {
Schema avroSchema = schema.copy();
GenericRecord record = new GenericData.Record(avroSchema);
for (Map.Entry<String, Object> entry : fields.entrySet()) {
if (entry.getValue() instanceof Double) {
// Gson reads the integers in the input Json documents as doubles, so we have
// to convert doubles to integers here as the Avro schema specifies integers.
record.put(entry.getKey(), ((Double) entry.getValue()).intValue());
} else {
record.put(entry.getKey(), entry.getValue());
}
}
return new SingleRecordIterable<CopyableGenericRecord>(new CopyableGenericRecord(record));
} catch (CopyNotSupportedException cnse) {
throw new DataConversionException(cnse);
}
}
Aggregations