/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.bbg.loader;
import static com.opengamma.bbg.util.BloombergSecurityUtils.makeAPVLEquityOptionSecurity;
import static com.opengamma.bbg.util.BloombergSecurityUtils.makeCommodityFutureOptionSecurity;
import static com.opengamma.bbg.util.BloombergSecurityUtils.makeEURIBORFutureOptionSecurity;
import static com.opengamma.bbg.util.BloombergSecurityUtils.makeEURODOLLARFutureOptionSecurity;
import static com.opengamma.bbg.util.BloombergSecurityUtils.makeEquityIndexDividendFutureOptionSecurity;
import static com.opengamma.bbg.util.BloombergSecurityUtils.makeEquityIndexFutureOptionSecurity;
import static com.opengamma.bbg.util.BloombergSecurityUtils.makeExpectedAAPLEquitySecurity;
import static com.opengamma.bbg.util.BloombergSecurityUtils.makeFxFutureOptionSecurity;
import static com.opengamma.bbg.util.BloombergSecurityUtils.makeInterestRateFuture;
import static com.opengamma.bbg.util.BloombergSecurityUtils.makeLIBORFutureOptionSecurity;
import static com.opengamma.bbg.util.BloombergSecurityUtils.makeSPXIndexOptionSecurity;
import static com.opengamma.bbg.util.BloombergSecurityUtils.makeUSBondFuture;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertFalse;
import static org.testng.AssertJUnit.assertNotNull;
import static org.testng.AssertJUnit.assertTrue;
import static org.testng.AssertJUnit.fail;
import java.util.Collections;
import java.util.HashSet;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.Factory;
import org.testng.annotations.Test;
import com.opengamma.bbg.referencedata.ReferenceDataProvider;
import com.opengamma.bbg.referencedata.impl.BloombergReferenceDataProvider;
import com.opengamma.bbg.security.BloombergSecurityProvider;
import com.opengamma.bbg.test.BloombergTestUtils;
import com.opengamma.core.security.Security;
import com.opengamma.financial.security.DefaultSecurityLoader;
import com.opengamma.financial.security.FinancialSecurity;
import com.opengamma.financial.security.FinancialSecurityVisitorAdapter;
import com.opengamma.financial.security.bond.CorporateBondSecurity;
import com.opengamma.financial.security.bond.GovernmentBondSecurity;
import com.opengamma.financial.security.bond.MunicipalBondSecurity;
import com.opengamma.financial.security.capfloor.CapFloorCMSSpreadSecurity;
import com.opengamma.financial.security.capfloor.CapFloorSecurity;
import com.opengamma.financial.security.cash.CashSecurity;
import com.opengamma.financial.security.cashflow.CashFlowSecurity;
import com.opengamma.financial.security.deposit.ContinuousZeroDepositSecurity;
import com.opengamma.financial.security.deposit.PeriodicZeroDepositSecurity;
import com.opengamma.financial.security.deposit.SimpleZeroDepositSecurity;
import com.opengamma.financial.security.equity.EquitySecurity;
import com.opengamma.financial.security.equity.EquityVarianceSwapSecurity;
import com.opengamma.financial.security.fra.FRASecurity;
import com.opengamma.financial.security.future.AgricultureFutureSecurity;
import com.opengamma.financial.security.future.BondFutureDeliverable;
import com.opengamma.financial.security.future.BondFutureSecurity;
import com.opengamma.financial.security.future.EnergyFutureSecurity;
import com.opengamma.financial.security.future.EquityFutureSecurity;
import com.opengamma.financial.security.future.EquityIndexDividendFutureSecurity;
import com.opengamma.financial.security.future.FXFutureSecurity;
import com.opengamma.financial.security.future.FutureSecurity;
import com.opengamma.financial.security.future.IndexFutureSecurity;
import com.opengamma.financial.security.future.InterestRateFutureSecurity;
import com.opengamma.financial.security.future.MetalFutureSecurity;
import com.opengamma.financial.security.future.StockFutureSecurity;
import com.opengamma.financial.security.fx.FXForwardSecurity;
import com.opengamma.financial.security.fx.NonDeliverableFXForwardSecurity;
import com.opengamma.financial.security.option.CommodityFutureOptionSecurity;
import com.opengamma.financial.security.option.EquityBarrierOptionSecurity;
import com.opengamma.financial.security.option.EquityIndexDividendFutureOptionSecurity;
import com.opengamma.financial.security.option.EquityIndexFutureOptionSecurity;
import com.opengamma.financial.security.option.EquityIndexOptionSecurity;
import com.opengamma.financial.security.option.EquityOptionSecurity;
import com.opengamma.financial.security.option.FXBarrierOptionSecurity;
import com.opengamma.financial.security.option.FXDigitalOptionSecurity;
import com.opengamma.financial.security.option.FXOptionSecurity;
import com.opengamma.financial.security.option.FxFutureOptionSecurity;
import com.opengamma.financial.security.option.IRFutureOptionSecurity;
import com.opengamma.financial.security.option.NonDeliverableFXDigitalOptionSecurity;
import com.opengamma.financial.security.option.NonDeliverableFXOptionSecurity;
import com.opengamma.financial.security.option.SwaptionSecurity;
import com.opengamma.financial.security.swap.SwapSecurity;
import com.opengamma.financial.timeseries.exchange.DefaultExchangeDataProvider;
import com.opengamma.financial.timeseries.exchange.ExchangeDataProvider;
import com.opengamma.id.ExternalId;
import com.opengamma.id.ExternalIdBundle;
import com.opengamma.id.UniqueId;
import com.opengamma.master.security.SecurityDocument;
import com.opengamma.master.security.SecuritySearchRequest;
import com.opengamma.master.security.SecuritySearchResult;
import com.opengamma.masterdb.security.DbSecurityMaster;
import com.opengamma.masterdb.security.hibernate.HibernateSecurityMasterDetailProvider;
import com.opengamma.masterdb.security.hibernate.HibernateSecurityMasterFiles;
import com.opengamma.util.db.DbConnectorFactoryBean;
import com.opengamma.util.db.HibernateMappingFiles;
import com.opengamma.util.test.AbstractDbTest;
import com.opengamma.util.test.DbTest;
import com.opengamma.util.test.TestGroup;
/**
* Test.
*/
@Test(groups = TestGroup.INTEGRATION, singleThreaded = true)
public class BloombergSecurityLoaderTest extends AbstractDbTest {
private static final Logger s_logger = LoggerFactory.getLogger(BloombergSecurityLoaderTest.class);
private BloombergReferenceDataProvider _bbgProvider;
private DbSecurityMaster _securityMaster;
private DefaultSecurityLoader _securityLoader;
@Factory(dataProvider = "databases", dataProviderClass = DbTest.class)
public BloombergSecurityLoaderTest(String databaseType, String databaseVersion) {
super(databaseType, databaseVersion);
s_logger.info("running testcases for {}", databaseType);
}
//-------------------------------------------------------------------------
@Override
protected Class<?> dbConnectorScope() {
return BloombergSecurityLoaderTest.class;
}
@Override
protected void initDbConnectorFactory(DbConnectorFactoryBean factory) {
factory.setHibernateMappingFiles(new HibernateMappingFiles[] {new HibernateSecurityMasterFiles() });
}
//-------------------------------------------------------------------------
@Override
protected void doSetUpClass() {
_bbgProvider = BloombergTestUtils.getBloombergReferenceDataProvider();
_bbgProvider.start();
ReferenceDataProvider cachingProvider = BloombergTestUtils.getMongoCachingReferenceDataProvider(_bbgProvider);
ExchangeDataProvider exchangeProvider = DefaultExchangeDataProvider.getInstance();
BloombergSecurityProvider secProvider = new BloombergSecurityProvider(cachingProvider, exchangeProvider );
_securityMaster = new DbSecurityMaster(getDbConnector());
_securityMaster.setDetailProvider(new HibernateSecurityMasterDetailProvider());
_securityLoader = new DefaultSecurityLoader(_securityMaster, secProvider);
}
@Override
protected void doTearDownClass() {
if (_bbgProvider != null) {
_bbgProvider.stop();
_bbgProvider = null;
}
_securityMaster = null;
}
//-------------------------------------------------------------------------
private void assertLoadAndSaveSecurity(FinancialSecurity expected) {
//test we can load security from bloomberg
ExternalIdBundle identifierBundle = expected.getExternalIdBundle();
Map<ExternalIdBundle, UniqueId> loadedSecurities = _securityLoader.loadSecurities(Collections.singleton(identifierBundle));
assertNotNull(loadedSecurities);
assertEquals(1, loadedSecurities.size());
UniqueId uid = loadedSecurities.get(identifierBundle);
assertNotNull(uid);
//test we can add and read from secmaster
SecurityDocument securityDocument = _securityMaster.get(uid);
assertNotNull(securityDocument);
final Security fromSecMaster = securityDocument.getSecurity();
assertNotNull(fromSecMaster);
expected.accept(new FinancialSecurityVisitorAdapter<Void>() {
private void assertSecurity() {
fail();
}
@Override
public Void visitCorporateBondSecurity(CorporateBondSecurity security) {
assertSecurity();
return null;
}
@Override
public Void visitGovernmentBondSecurity(GovernmentBondSecurity security) {
assertSecurity();
return null;
}
@Override
public Void visitMunicipalBondSecurity(MunicipalBondSecurity security) {
assertSecurity();
return null;
}
@Override
public Void visitCashSecurity(CashSecurity security) {
assertSecurity();
return null;
}
@Override
public Void visitCashFlowSecurity(CashFlowSecurity security) {
assertSecurity();
return null;
}
@Override
public Void visitEquitySecurity(EquitySecurity security) {
assertTrue(fromSecMaster instanceof EquitySecurity);
EquitySecurity actual = (EquitySecurity) fromSecMaster;
assertEquals(security.getCompanyName(), actual.getCompanyName());
assertEquals(security.getCurrency(), actual.getCurrency());
assertEquals(security.getExchange(), actual.getExchange());
assertEquals(security.getExchangeCode(), actual.getExchangeCode());
assertEquals(security.getGicsCode(), actual.getGicsCode());
assertEquals(security.getExternalIdBundle(), actual.getExternalIdBundle());
assertEquals(security.getName(), actual.getName());
assertEquals(security.getSecurityType(), actual.getSecurityType());
assertEquals(security.getShortName(), actual.getShortName());
assertNotNull(actual.getUniqueId());
return null;
}
@Override
public Void visitFRASecurity(FRASecurity security) {
assertSecurity();
return null;
}
@Override
public Void visitAgricultureFutureSecurity(AgricultureFutureSecurity security) {
return visitFutureSecurity(security);
}
@Override
public Void visitBondFutureSecurity(BondFutureSecurity security) {
return visitFutureSecurity(security);
}
@Override
public Void visitEnergyFutureSecurity(EnergyFutureSecurity security) {
return visitFutureSecurity(security);
}
@Override
public Void visitEquityFutureSecurity(EquityFutureSecurity security) {
return visitFutureSecurity(security);
}
@Override
public Void visitEquityIndexDividendFutureSecurity(EquityIndexDividendFutureSecurity security) {
return visitFutureSecurity(security);
}
@Override
public Void visitFXFutureSecurity(FXFutureSecurity security) {
return visitFutureSecurity(security);
}
@Override
public Void visitIndexFutureSecurity(IndexFutureSecurity security) {
return visitFutureSecurity(security);
}
@Override
public Void visitInterestRateFutureSecurity(InterestRateFutureSecurity security) {
return visitFutureSecurity(security);
}
@Override
public Void visitMetalFutureSecurity(MetalFutureSecurity security) {
return visitFutureSecurity(security);
}
@Override
public Void visitStockFutureSecurity(StockFutureSecurity security) {
return visitFutureSecurity(security);
}
private Void visitFutureSecurity(FutureSecurity security) {
security.accept(new FinancialSecurityVisitorAdapter<Void>() {
@Override
public Void visitAgricultureFutureSecurity(AgricultureFutureSecurity security) {
assertSecurity();
return null;
}
@Override
public Void visitBondFutureSecurity(BondFutureSecurity security) {
assertTrue("Security is instance of: " + fromSecMaster.getClass().getName(), fromSecMaster instanceof BondFutureSecurity);
BondFutureSecurity actual = (BondFutureSecurity) fromSecMaster;
assertEquals(new HashSet<>(security.getBasket()), new HashSet<>(actual.getBasket()));
assertEquals(security.getContractCategory(), actual.getContractCategory());
assertEquals(security.getCurrency(), actual.getCurrency());
assertEquals(security.getExpiry(), actual.getExpiry());
assertEquals(security.getFirstDeliveryDate(), actual.getFirstDeliveryDate());
assertEquals(security.getExternalIdBundle(), actual.getExternalIdBundle());
assertEquals(security.getLastDeliveryDate(), actual.getLastDeliveryDate());
assertEquals(security.getName(), actual.getName());
assertEquals(security.getSecurityType(), actual.getSecurityType());
assertEquals(security.getSettlementExchange(), actual.getSettlementExchange());
assertEquals(security.getTradingExchange(), actual.getTradingExchange());
assertEquals(security.getUnitAmount(), actual.getUnitAmount());
assertNotNull(actual.getUniqueId());
//test underlying is loaded as well
for (BondFutureDeliverable deliverable : security.getBasket()) {
ExternalIdBundle identifiers = deliverable.getIdentifiers();
assertUnderlyingIsLoaded(identifiers);
}
return null;
}
@Override
public Void visitEnergyFutureSecurity(EnergyFutureSecurity security) {
assertSecurity();
return null;
}
@Override
public Void visitEquityFutureSecurity(EquityFutureSecurity security) {
assertSecurity();
return null;
}
@Override
public Void visitEquityIndexDividendFutureSecurity(EquityIndexDividendFutureSecurity security) {
assertSecurity();
return null;
}
@Override
public Void visitFXFutureSecurity(FXFutureSecurity security) {
assertSecurity();
return null;
}
@Override
public Void visitIndexFutureSecurity(IndexFutureSecurity security) {
assertSecurity();
return null;
}
@Override
public Void visitInterestRateFutureSecurity(InterestRateFutureSecurity security) {
assertTrue(fromSecMaster instanceof InterestRateFutureSecurity);
InterestRateFutureSecurity actual = (InterestRateFutureSecurity) fromSecMaster;
assertEquals(security.getCurrency(), actual.getCurrency());
assertEquals(security.getExpiry(), actual.getExpiry());
assertEquals(security.getExternalIdBundle(), actual.getExternalIdBundle());
assertEquals(security.getName(), actual.getName());
assertEquals(security.getSecurityType(), actual.getSecurityType());
assertEquals(security.getSettlementExchange(), actual.getSettlementExchange());
assertEquals(security.getTradingExchange(), actual.getTradingExchange());
assertEquals(security.getUnderlyingId(), actual.getUnderlyingId());
assertEquals(security.getUnitAmount(), actual.getUnitAmount());
assertNotNull(actual.getUniqueId());
return null;
}
@Override
public Void visitMetalFutureSecurity(MetalFutureSecurity security) {
assertSecurity();
return null;
}
@Override
public Void visitStockFutureSecurity(StockFutureSecurity security) {
assertSecurity();
return null;
}
});
return null;
}
@Override
public Void visitSwapSecurity(SwapSecurity security) {
assertSecurity();
return null;
}
@Override
public Void visitEquityIndexOptionSecurity(EquityIndexOptionSecurity security) {
assertTrue(fromSecMaster instanceof EquityIndexOptionSecurity);
EquityIndexOptionSecurity actual = (EquityIndexOptionSecurity) fromSecMaster;
assertEquals(security.getCurrency(), actual.getCurrency());
assertEquals(security.getExchange(), actual.getExchange());
assertEquals(security.getExerciseType(), actual.getExerciseType());
assertEquals(security.getExpiry(), actual.getExpiry());
assertEquals(security.getExternalIdBundle(), actual.getExternalIdBundle());
assertEquals(security.getName(), actual.getName());
assertEquals(security.getOptionType(), actual.getOptionType());
assertEquals(security.getPointValue(), actual.getPointValue());
assertEquals(security.getSecurityType(), actual.getSecurityType());
assertEquals(security.getStrike(), actual.getStrike());
assertEquals(security.getUnderlyingId(), actual.getUnderlyingId());
assertNotNull(actual.getUniqueId());
return null;
}
@Override
public Void visitEquityOptionSecurity(EquityOptionSecurity security) {
assertTrue(fromSecMaster instanceof EquityOptionSecurity);
EquityOptionSecurity actual = (EquityOptionSecurity) fromSecMaster;
assertEquals(security.getCurrency(), actual.getCurrency());
assertEquals(security.getExchange(), actual.getExchange());
assertEquals(security.getExerciseType(), actual.getExerciseType());
assertEquals(security.getExpiry(), actual.getExpiry());
assertEquals(security.getExternalIdBundle(), actual.getExternalIdBundle());
assertEquals(security.getName(), actual.getName());
assertEquals(security.getOptionType(), actual.getOptionType());
assertEquals(security.getPointValue(), actual.getPointValue());
assertEquals(security.getSecurityType(), actual.getSecurityType());
assertEquals(security.getStrike(), actual.getStrike());
assertEquals(security.getUnderlyingId(), actual.getUnderlyingId());
assertNotNull(actual.getUniqueId());
//test underlying is loaded as well
ExternalId underlyingIdentifier = security.getUnderlyingId();
assertUnderlyingIsLoaded(underlyingIdentifier);
return null;
}
@Override
public Void visitEquityBarrierOptionSecurity(EquityBarrierOptionSecurity security) {
assertSecurity();
return null;
}
@Override
public Void visitFXOptionSecurity(FXOptionSecurity security) {
assertSecurity();
return null;
}
@Override
public Void visitNonDeliverableFXOptionSecurity(NonDeliverableFXOptionSecurity security) {
assertSecurity();
return null;
}
@Override
public Void visitSwaptionSecurity(SwaptionSecurity security) {
assertSecurity();
return null;
}
@Override
public Void visitIRFutureOptionSecurity(IRFutureOptionSecurity security) {
assertTrue(fromSecMaster instanceof IRFutureOptionSecurity);
IRFutureOptionSecurity actual = (IRFutureOptionSecurity) fromSecMaster;
assertEquals(security.getCurrency(), actual.getCurrency());
assertEquals(security.getExchange(), actual.getExchange());
assertEquals(security.getExerciseType(), actual.getExerciseType());
assertEquals(security.getExpiry(), actual.getExpiry());
assertEquals(security.isMargined(), actual.isMargined());
assertEquals(security.getOptionType(), actual.getOptionType());
assertEquals(security.getPointValue(), actual.getPointValue());
assertEquals(security.getStrike(), actual.getStrike());
assertEquals(security.getUnderlyingId(), actual.getUnderlyingId());
assertEquals(security.getExternalIdBundle(), actual.getExternalIdBundle());
assertEquals(security.getName(), actual.getName());
assertEquals(security.getSecurityType(), actual.getSecurityType());
assertNotNull(actual.getUniqueId());
//test underlying is loaded as well
ExternalId underlyingIdentifier = security.getUnderlyingId();
assertUnderlyingIsLoaded(underlyingIdentifier);
return null;
}
@Override
public Void visitCommodityFutureOptionSecurity(CommodityFutureOptionSecurity security) {
assertTrue(fromSecMaster instanceof CommodityFutureOptionSecurity);
CommodityFutureOptionSecurity actual = (CommodityFutureOptionSecurity) fromSecMaster;
assertEquals(security.getCurrency(), actual.getCurrency());
assertEquals(security.getTradingExchange(), actual.getTradingExchange());
assertEquals(security.getSettlementExchange(), actual.getSettlementExchange());
assertEquals(security.getExerciseType(), actual.getExerciseType());
assertEquals(security.getExpiry(), actual.getExpiry());
assertEquals(security.getOptionType(), actual.getOptionType());
assertEquals(security.getPointValue(), actual.getPointValue());
assertEquals(security.getStrike(), actual.getStrike());
assertEquals(security.getUnderlyingId(), actual.getUnderlyingId());
assertEquals(security.getExternalIdBundle(), actual.getExternalIdBundle());
assertEquals(security.getName(), actual.getName());
assertEquals(security.getSecurityType(), actual.getSecurityType());
assertNotNull(actual.getUniqueId());
//test underlying is loaded as well
ExternalId underlyingIdentifier = security.getUnderlyingId();
assertUnderlyingIsLoaded(underlyingIdentifier);
return null;
}
@Override
public Void visitFxFutureOptionSecurity(FxFutureOptionSecurity security) {
assertTrue(fromSecMaster instanceof FxFutureOptionSecurity);
FxFutureOptionSecurity actual = (FxFutureOptionSecurity) fromSecMaster;
assertEquals(security.getCurrency(), actual.getCurrency());
assertEquals(security.getTradingExchange(), actual.getTradingExchange());
assertEquals(security.getSettlementExchange(), actual.getSettlementExchange());
assertEquals(security.getExerciseType(), actual.getExerciseType());
assertEquals(security.getExpiry(), actual.getExpiry());
assertEquals(security.getOptionType(), actual.getOptionType());
assertEquals(security.getPointValue(), actual.getPointValue());
assertEquals(security.getStrike(), actual.getStrike());
assertEquals(security.getUnderlyingId(), actual.getUnderlyingId());
assertEquals(security.getExternalIdBundle(), actual.getExternalIdBundle());
assertEquals(security.getName(), actual.getName());
assertEquals(security.getSecurityType(), actual.getSecurityType());
assertNotNull(actual.getUniqueId());
//test underlying is loaded as well
ExternalId underlyingIdentifier = security.getUnderlyingId();
assertUnderlyingIsLoaded(underlyingIdentifier);
return null;
}
@Override
public Void visitEquityIndexDividendFutureOptionSecurity(EquityIndexDividendFutureOptionSecurity security) {
assertTrue(fromSecMaster instanceof EquityIndexDividendFutureOptionSecurity);
EquityIndexDividendFutureOptionSecurity actual = (EquityIndexDividendFutureOptionSecurity) fromSecMaster;
assertEquals(security.getCurrency(), actual.getCurrency());
assertEquals(security.getExchange(), actual.getExchange());
assertEquals(security.getExerciseType(), actual.getExerciseType());
assertEquals(security.getExpiry(), actual.getExpiry());
assertEquals(security.getOptionType(), actual.getOptionType());
assertEquals(security.getPointValue(), actual.getPointValue());
assertEquals(security.getStrike(), actual.getStrike());
assertEquals(security.isMargined(), actual.isMargined());
assertEquals(security.getUnderlyingId(), actual.getUnderlyingId());
assertEquals(security.getExternalIdBundle(), actual.getExternalIdBundle());
assertEquals(security.getName(), actual.getName());
assertEquals(security.getSecurityType(), actual.getSecurityType());
assertNotNull(actual.getUniqueId());
//test underlying is loaded as well
ExternalId underlyingIdentifier = security.getUnderlyingId();
assertUnderlyingIsLoaded(underlyingIdentifier);
return null;
}
@Override
public Void visitEquityIndexFutureOptionSecurity(final EquityIndexFutureOptionSecurity security) {
assertTrue(fromSecMaster instanceof EquityIndexFutureOptionSecurity);
EquityIndexFutureOptionSecurity actual = (EquityIndexFutureOptionSecurity) fromSecMaster;
assertEquals(security.getCurrency(), actual.getCurrency());
assertEquals(security.getExchange(), actual.getExchange());
assertEquals(security.getExerciseType(), actual.getExerciseType());
assertEquals(security.getExpiry(), actual.getExpiry());
assertEquals(security.getOptionType(), actual.getOptionType());
assertEquals(security.getPointValue(), actual.getPointValue());
assertEquals(security.getStrike(), actual.getStrike());
assertEquals(security.isMargined(), actual.isMargined());
assertEquals(security.getUnderlyingId(), actual.getUnderlyingId());
assertEquals(security.getExternalIdBundle(), actual.getExternalIdBundle());
assertEquals(security.getName(), actual.getName());
assertEquals(security.getSecurityType(), actual.getSecurityType());
assertNotNull(actual.getUniqueId());
//test underlying is loaded as well
ExternalId underlyingIdentifier = security.getUnderlyingId();
assertUnderlyingIsLoaded(underlyingIdentifier);
return null;
}
@Override
public Void visitFXBarrierOptionSecurity(FXBarrierOptionSecurity security) {
assertSecurity();
return null;
}
@Override
public Void visitFXForwardSecurity(FXForwardSecurity security) {
assertSecurity();
return null;
}
@Override
public Void visitNonDeliverableFXForwardSecurity(NonDeliverableFXForwardSecurity security) {
assertSecurity();
return null;
}
@Override
public Void visitCapFloorSecurity(CapFloorSecurity security) {
assertSecurity();
return null;
}
@Override
public Void visitCapFloorCMSSpreadSecurity(CapFloorCMSSpreadSecurity security) {
assertSecurity();
return null;
}
@Override
public Void visitEquityVarianceSwapSecurity(EquityVarianceSwapSecurity security) {
assertSecurity();
return null;
}
@Override
public Void visitFXDigitalOptionSecurity(FXDigitalOptionSecurity security) {
assertSecurity();
return null;
}
@Override
public Void visitNonDeliverableFXDigitalOptionSecurity(NonDeliverableFXDigitalOptionSecurity security) {
assertSecurity();
return null;
}
@Override
public Void visitSimpleZeroDepositSecurity(SimpleZeroDepositSecurity security) {
assertSecurity();
return null;
}
@Override
public Void visitPeriodicZeroDepositSecurity(PeriodicZeroDepositSecurity security) {
assertSecurity();
return null;
}
@Override
public Void visitContinuousZeroDepositSecurity(ContinuousZeroDepositSecurity security) {
assertSecurity();
return null;
}
});
}
public void testEquityOptionSecurity() {
assertLoadAndSaveSecurity(makeAPVLEquityOptionSecurity());
}
public void testEquityIndexOptionSecurity() {
assertLoadAndSaveSecurity(makeSPXIndexOptionSecurity());
}
public void testEquityIndexFutureOptionSecurity() {
assertLoadAndSaveSecurity(makeEquityIndexFutureOptionSecurity());
}
public void testEquityIndexDividendFutureOptionSecurity() {
assertLoadAndSaveSecurity(makeEquityIndexDividendFutureOptionSecurity());
}
public void testEquitySecurity() {
assertLoadAndSaveSecurity(makeExpectedAAPLEquitySecurity());
}
public void testInterestRateFutureSecurity() {
assertLoadAndSaveSecurity(makeInterestRateFuture());
}
public void testBondFutureSecurity() {
assertLoadAndSaveSecurity(makeUSBondFuture());
}
public void testIRFutureOptionSecurity() {
assertLoadAndSaveSecurity(makeEURODOLLARFutureOptionSecurity());
assertLoadAndSaveSecurity(makeLIBORFutureOptionSecurity());
assertLoadAndSaveSecurity(makeEURIBORFutureOptionSecurity());
}
public void testCommodityFutureOptionSecurity() {
assertLoadAndSaveSecurity(makeCommodityFutureOptionSecurity());
}
public void testFxFutureOptionSecurity() {
assertLoadAndSaveSecurity(makeFxFutureOptionSecurity());
}
private void assertUnderlyingIsLoaded(final ExternalId underlyingIdentifier) {
assertUnderlyingIsLoaded(ExternalIdBundle.of(underlyingIdentifier));
}
private void assertUnderlyingIsLoaded(ExternalIdBundle identifiers) {
SecuritySearchResult result = _securityMaster.search(new SecuritySearchRequest(identifiers));
assertNotNull(result);
assertFalse(result.getDocuments().isEmpty());
assertNotNull(result.getFirstDocument().getSecurity());
}
}