@Override
public CompiledViewDefinition buildObject(FudgeDeserializer deserializer, FudgeMsg message) {
VersionCorrection versionCorrection = deserializer.fieldValueToObject(VersionCorrection.class, message.getByName(VERSION_CORRECTION_FIELD));
String compilationId = message.getString(COMPILATION_IDENTIFIER_FIELD);
ViewDefinition viewDefinition = deserializer.fieldValueToObject(ViewDefinition.class, message.getByName(VIEW_DEFINITION_FIELD));
FudgeField portfolioField = message.getByName(PORTFOLIO_FIELD);
Portfolio portfolio = portfolioField != null ? deserializer.fieldValueToObject(Portfolio.class, portfolioField) : null;
// Deserialise each instance specifically into the required type
Collection<CompiledViewCalculationConfiguration> compiledCalculationConfigurations = new ArrayList<CompiledViewCalculationConfiguration>();
List<FudgeField> calcConfigFields = message.getAllByName(COMPILED_CALCULATION_CONFIGURATIONS_FIELD);
for (FudgeField field : calcConfigFields) {
compiledCalculationConfigurations.add(deserializer.fieldValueToObject(CompiledViewCalculationConfiguration.class, field));
}
FudgeField earliestValidityField = message.getByName(EARLIEST_VALIDITY_FIELD);
Instant earliestValidity = earliestValidityField != null ? deserializer.fieldValueToObject(Instant.class, earliestValidityField) : null;
FudgeField latestValidityField = message.getByName(LATEST_VALIDITY_FIELD);
Instant latestValidity = latestValidityField != null ? deserializer.fieldValueToObject(Instant.class, latestValidityField) : null;
return new CompiledViewDefinitionImpl(versionCorrection, compilationId, viewDefinition, portfolio, compiledCalculationConfigurations, earliestValidity, latestValidity);
}