/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.core.marketdatasnapshot.impl;
import java.io.Serializable;
import org.fudgemsg.FudgeField;
import org.fudgemsg.FudgeMsg;
import org.fudgemsg.MutableFudgeMsg;
import org.fudgemsg.mapping.FudgeDeserializer;
import org.fudgemsg.mapping.FudgeSerializer;
import org.threeten.bp.Instant;
import com.opengamma.core.marketdatasnapshot.CurveSnapshot;
/**
* Mutable snapshot of curve data.
*/
public class ManageableCurveSnapshot implements CurveSnapshot, Serializable {
/**
* The valuation instant.
*/
private Instant _valuationTime;
/**
* The values.
*/
private ManageableUnstructuredMarketDataSnapshot _values;
/**
* Gets the values.
*
* @return the values
*/
@Override
public ManageableUnstructuredMarketDataSnapshot getValues() {
return _values;
}
/**
* Sets the values.
*
* @param values the values
*/
public void setValues(final ManageableUnstructuredMarketDataSnapshot values) {
_values = values;
}
/**
* Gets the valuation instant.
*
* @return the valuation instant
*/
@Override
public Instant getValuationTime() {
return _valuationTime;
}
/**
* Sets the valuation instant.
*
* @param valuationTime the valuation instant
*/
public void setValuationTime(final Instant valuationTime) {
_valuationTime = valuationTime;
}
public FudgeMsg toFudgeMsg(final FudgeSerializer serializer) {
final MutableFudgeMsg ret = serializer.newMessage();
// TODO: this should not be adding its own class header; the caller should add it based on application knowledge about the receiving end
FudgeSerializer.addClassHeader(ret, ManageableCurveSnapshot.class);
serializer.addToMessage(ret, "values", null, _values);
serializer.addToMessage(ret, "valuationTime", null, _valuationTime);
return ret;
}
public static ManageableCurveSnapshot fromFudgeMsg(final FudgeDeserializer deserializer, final FudgeMsg msg) {
final ManageableCurveSnapshot ret = new ManageableCurveSnapshot();
FudgeField field = msg.getByName("values");
if (field != null) {
ret.setValues(deserializer.fieldValueToObject(ManageableUnstructuredMarketDataSnapshot.class, field));
}
field = msg.getByName("valuationTime");
if (field != null) {
ret.setValuationTime(deserializer.fieldValueToObject(Instant.class, field));
}
return ret;
}
}