/**
* Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.engine.marketdata;
import com.opengamma.engine.marketdata.resolver.MarketDataProviderResolver;
import com.opengamma.engine.marketdata.spec.CombinedMarketDataSpecification;
import com.opengamma.engine.marketdata.spec.MarketDataSpecification;
import com.opengamma.livedata.UserPrincipal;
import com.opengamma.util.ArgumentChecker;
/**
* A factory for {@link CombinedMarketDataProvider} instances.
*/
public class CombinedMarketDataProviderFactory implements MarketDataProviderFactory {
private MarketDataProviderResolver _underlying;
public CombinedMarketDataProviderFactory() {
}
public CombinedMarketDataProviderFactory(MarketDataProviderResolver underlyingResolver) {
setUnderlying(underlyingResolver);
}
@Override
public MarketDataProvider create(UserPrincipal user, MarketDataSpecification marketDataSpec) {
ArgumentChecker.notNullInjected(_underlying, "underlying");
CombinedMarketDataSpecification combinedMarketDataSpec = (CombinedMarketDataSpecification) marketDataSpec;
MarketDataProvider preferred = getUnderlying().resolve(user, combinedMarketDataSpec.getPreferredSpecification());
MarketDataProvider fallBack = getUnderlying().resolve(user, combinedMarketDataSpec.getFallbackSpecification());
return new CombinedMarketDataProvider(preferred, fallBack);
}
//-------------------------------------------------------------------------
private MarketDataProviderResolver getUnderlying() {
return _underlying;
}
public void setUnderlying(MarketDataProviderResolver underlying) {
_underlying = underlying;
}
}