/**
* Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.web.json;
import com.opengamma.core.id.ExternalSchemes;
import com.opengamma.financial.analytics.ircurve.FixedIncomeStrip;
import com.opengamma.financial.analytics.ircurve.StripInstrumentType;
import com.opengamma.financial.analytics.ircurve.YieldCurveDefinition;
import com.opengamma.util.ArgumentChecker;
import com.opengamma.util.i18n.Country;
import com.opengamma.util.money.Currency;
import com.opengamma.util.time.Tenor;
/**
* Custom JSON builder to convert YieldCurveDefinition to JSON object and back again
*/
public final class YieldCurveDefinitionJSONBuilder extends AbstractJSONBuilder<YieldCurveDefinition> {
/**
* Singleton
*/
public static final YieldCurveDefinitionJSONBuilder INSTANCE = new YieldCurveDefinitionJSONBuilder();
/**
* JSON template
*/
private static final String TEMPLATE = createTemplate();
/**
* Restricted constructor
*/
private YieldCurveDefinitionJSONBuilder() {
}
@Override
public YieldCurveDefinition fromJSON(final String json) {
ArgumentChecker.notNull(json, "JSON document");
return fromJSON(YieldCurveDefinition.class, json);
}
@Override
public String toJSON(final YieldCurveDefinition object) {
ArgumentChecker.notNull(object, "yield curve definition");
return fudgeToJson(object);
}
private static String createTemplate() {
return YieldCurveDefinitionJSONBuilder.INSTANCE.toJSON(getDummyYieldCurveDefinition());
}
private static YieldCurveDefinition getDummyYieldCurveDefinition() {
YieldCurveDefinition dummy = new YieldCurveDefinition(Currency.GBP, ExternalSchemes.countryRegionId(Country.US), "", "", "", "", true);
dummy.addStrip(new FixedIncomeStrip(StripInstrumentType.LIBOR, Tenor.DAY, ""));
return dummy;
}
@Override
public String getTemplate() {
return TEMPLATE;
}
}