/** * Copyright (C) 2014 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.analytics.financial.provider.calculator.discounting; import com.opengamma.analytics.financial.instrument.index.IborIndex; import com.opengamma.analytics.financial.instrument.index.IndexON; import com.opengamma.analytics.financial.interestrate.payments.derivative.DepositIndexCoupon; import com.opengamma.analytics.financial.interestrate.payments.derivative.IborInterpolatedStubCompoundingCoupon; import com.opengamma.analytics.financial.interestrate.payments.derivative.InterpolatedStubCoupon; import com.opengamma.analytics.financial.interestrate.payments.provider.ForwardRateProvider; import com.opengamma.analytics.financial.interestrate.payments.provider.IborCompoundingInterpolationStubForwardRateProvider; import com.opengamma.analytics.financial.interestrate.payments.provider.IborInterpolatedStubForwardRateProvider; /** * Visitor for ibor-like interpolated stub coupons that return an instance of a ForwardRateProvider. */ public final class IborInterpolatedStubForwardRateProviderVisitor implements InterpolatedStubCouponVisitor<ForwardRateProvider<IborIndex>> { private static final IborInterpolatedStubForwardRateProviderVisitor INSTANCE = new IborInterpolatedStubForwardRateProviderVisitor(); private IborInterpolatedStubForwardRateProviderVisitor() { } public static IborInterpolatedStubForwardRateProviderVisitor getInstance() { return INSTANCE; } @Override public ForwardRateProvider<IborIndex> visitIborCompoundingInterpolatedStub(IborInterpolatedStubCompoundingCoupon coupon) { return new IborCompoundingInterpolationStubForwardRateProvider(coupon); } @Override public ForwardRateProvider<IborIndex> visitIborInterpolatedStub(InterpolatedStubCoupon<DepositIndexCoupon<IborIndex>, IborIndex> coupon) { return new IborInterpolatedStubForwardRateProvider(coupon); } @Override public ForwardRateProvider<IborIndex> visitOvernightInterpolatedStub(InterpolatedStubCoupon<DepositIndexCoupon<IndexON>, IndexON> coupon) { throw new UnsupportedOperationException(getClass().getSimpleName() + " does not support this operation."); } }