}
@Override
@SuppressWarnings("unchecked")
public Record read(DataInput dataInput) throws RepositoryException, InterruptedException {
Record record = new RecordImpl();
dataInput.readByte(); // Ignore, there is currently only one encoding : 1
int length = dataInput.readVInt();
byte[] recordTypeId = dataInput.readBytes(length);
Long recordTypeVersion = dataInput.readLong();
RecordType recordType = typeManager.getRecordTypeById(new SchemaIdImpl(recordTypeId), recordTypeVersion);
record.setRecordType(recordType.getName(), recordTypeVersion);
Map<SchemaId, QName> idToQNameMapping = new HashMap<SchemaId, QName>();
List<FieldType> fieldTypes = getSortedFieldTypes(recordType);
for (FieldType fieldType : fieldTypes) {
byte readByte = dataInput.readByte();
if (DEFINED == readByte) {
Object value = fieldType.getValueType().read(dataInput);
record.setField(fieldType.getName(), value);
idToQNameMapping.put(fieldType.getId(), fieldType.getName());
}
}
Map<Scope, SchemaId> recordTypeIds = new EnumMap<Scope, SchemaId>(Scope.class);