ret.setDataPoints(dataPoints);
ret.setDataIds(dataIds);
ret.setRelativeStrikes(relativeStrikes);
ret.setOtherData(otherData);
final FudgeMsg strikesMsg = message.getMessage(STRIKES_FIELD_NAME);
if (strikesMsg != null) {
final Map<Pair<Tenor, Tenor>, Double> strikes = Maps.newHashMap();
for (final FudgeField strikeField : strikesMsg) {
final FudgeMsg strikeMsg = (FudgeMsg) strikeField.getValue();
final Tenor swapTenor = deserializer.fieldValueToObject(Tenor.class, strikeMsg.getByName(SWAP_TENOR_FIELD_NAME));
final Tenor optionExpiry = deserializer.fieldValueToObject(Tenor.class, strikeMsg.getByName(OPTION_EXPIRY_FIELD_NAME));
final Double strike = deserializer.fieldValueToObject(Double.class, strikeMsg.getByName(STRIKE_FIELD_NAME));
strikes.put(Pair.of(swapTenor, optionExpiry), strike);
}
ret.setATMStrikes(strikes);
}
final FudgeMsg atmVolatilitiesMsg = message.getMessage(ATM_VOLS_FIELD_NAME);
if (atmVolatilitiesMsg != null) {
final Map<Pair<Tenor, Tenor>, Double> atmVols = Maps.newHashMap();
for (final FudgeField atmVolField : atmVolatilitiesMsg) {
final FudgeMsg atmVolatilityMsg = (FudgeMsg) atmVolField.getValue();
final Tenor swapTenor = deserializer.fieldValueToObject(Tenor.class, atmVolatilityMsg.getByName(SWAP_TENOR_FIELD_NAME));
final Tenor optionExpiry = deserializer.fieldValueToObject(Tenor.class, atmVolatilityMsg.getByName(OPTION_EXPIRY_FIELD_NAME));
final Double atmVol = deserializer.fieldValueToObject(Double.class, atmVolatilityMsg.getByName(ATM_VOLS_FIELD_NAME));
atmVols.put(Pair.of(swapTenor, optionExpiry), atmVol);
}
ret.setATMVolatilities(atmVols);
}
return ret;