/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.financial.analytics.curve.rest; import java.net.URI; import org.threeten.bp.Instant; import org.threeten.bp.LocalDate; import com.opengamma.financial.analytics.curve.AbstractCurveDefinition; import com.opengamma.financial.analytics.curve.AbstractCurveSpecification; import com.opengamma.financial.analytics.curve.CurveDefinition; import com.opengamma.financial.analytics.curve.CurveSpecification; import com.opengamma.financial.analytics.curve.credit.CurveSpecificationBuilder; import com.opengamma.util.ArgumentChecker; import com.opengamma.util.rest.AbstractRemoteClient; /** * Provides access to a remote {@link CurveSpecificationBuilder}. */ public class RemoteCurveSpecificationBuilder extends AbstractRemoteClient implements CurveSpecificationBuilder { /** * Creates an instance. * * @param baseUri the base target URI for all RESTful web services, not null */ public RemoteCurveSpecificationBuilder(final URI baseUri) { super(baseUri); } @Override public CurveSpecification buildCurve(final Instant valuationTime, final LocalDate curveDate, final CurveDefinition curveDefinition) { ArgumentChecker.notNull(valuationTime, "valuationTime"); ArgumentChecker.notNull(curveDate, "curveDate"); ArgumentChecker.notNull(curveDefinition, "curveDefinition"); final URI uri = DataCurveSpecificationBuilderResource.uriBuildCurve(getBaseUri(), valuationTime, curveDate); return accessRemote(uri).post(CurveSpecification.class, curveDefinition); } @Override public AbstractCurveSpecification buildSpecification(final Instant valuationTime, final LocalDate curveDate, final AbstractCurveDefinition curveDefinition) { ArgumentChecker.notNull(valuationTime, "valuationTime"); ArgumentChecker.notNull(curveDate, "curveDate"); ArgumentChecker.notNull(curveDefinition, "curveDefinition"); final URI uri = DataCurveSpecificationBuilderResource.uriBuildCurve(getBaseUri(), valuationTime, curveDate); return accessRemote(uri).post(AbstractCurveSpecification.class, curveDefinition); } }