/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.financial.analytics.ircurve.rest; import java.net.URI; import com.opengamma.DataNotFoundException; import com.opengamma.core.change.ChangeManager; import com.opengamma.core.change.DummyChangeManager; import com.opengamma.financial.analytics.ircurve.InterpolatedYieldCurveDefinitionSource; import com.opengamma.financial.analytics.ircurve.YieldCurveDefinition; import com.opengamma.id.VersionCorrection; import com.opengamma.util.ArgumentChecker; import com.opengamma.util.money.Currency; import com.opengamma.util.rest.AbstractRemoteClient; import com.opengamma.util.rest.UniformInterfaceException404NotFound; /** * Provides access to a remote {@link InterpolatedYieldCurveDefinitionSource}. */ public class RemoteInterpolatedYieldCurveDefinitionSource extends AbstractRemoteClient implements InterpolatedYieldCurveDefinitionSource { private ChangeManager _changeManager; /** * Creates an instance. * * @param baseUri the base target URI for all RESTful web services, not null */ public RemoteInterpolatedYieldCurveDefinitionSource(final URI baseUri) { this(baseUri, DummyChangeManager.INSTANCE); } /** * Creates an instance. * * @param baseUri the base target URI for all RESTful web services, not null * @param changeManager the change manager to use for this source, not null */ public RemoteInterpolatedYieldCurveDefinitionSource(final URI baseUri, final ChangeManager changeManager) { super(baseUri); ArgumentChecker.notNull(changeManager, "changeManager"); _changeManager = changeManager; } //------------------------------------------------------------------------- @Override public YieldCurveDefinition getDefinition(Currency currency, String name) { ArgumentChecker.notNull(currency, "currency"); ArgumentChecker.notNull(name, "name"); try { URI uri = DataInterpolatedYieldCurveDefinitionSourceResource.uriSearchSingle(getBaseUri(), currency, name, null); return accessRemote(uri).get(YieldCurveDefinition.class); } catch (DataNotFoundException ex) { return null; } catch (UniformInterfaceException404NotFound ex) { return null; } } @Override public YieldCurveDefinition getDefinition(Currency currency, String name, VersionCorrection versionCorrection) { ArgumentChecker.notNull(currency, "currency"); ArgumentChecker.notNull(name, "name"); try { URI uri = DataInterpolatedYieldCurveDefinitionSourceResource.uriSearchSingle(getBaseUri(), currency, name, versionCorrection.getVersionAsOf()); return accessRemote(uri).get(YieldCurveDefinition.class); } catch (DataNotFoundException ex) { return null; } catch (UniformInterfaceException404NotFound ex) { return null; } } @Override public ChangeManager changeManager() { return _changeManager; } }