/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.engine.marketdata.random;
import com.opengamma.engine.marketdata.MarketDataProvider;
import com.opengamma.engine.marketdata.MarketDataProviderFactory;
import com.opengamma.engine.marketdata.resolver.MarketDataProviderResolver;
import com.opengamma.engine.marketdata.spec.MarketDataSpecification;
import com.opengamma.engine.marketdata.spec.RandomizingMarketDataSpecification;
import com.opengamma.livedata.UserPrincipal;
import com.opengamma.util.ArgumentChecker;
/**
* Factory for instances of {@link RandomizingMarketDataProvider}.
*/
public class RandomizingMarketDataProviderFactory implements MarketDataProviderFactory {
private final MarketDataProviderResolver _resolver;
/**
* @param resolver For resolving the underlying market data provider
*/
public RandomizingMarketDataProviderFactory(MarketDataProviderResolver resolver) {
ArgumentChecker.notNull(resolver, "resolver");
_resolver = resolver;
}
@Override
public RandomizingMarketDataProvider create(UserPrincipal marketDataUser, MarketDataSpecification marketDataSpec) {
if (!(marketDataSpec instanceof RandomizingMarketDataSpecification)) {
throw new IllegalArgumentException("Spec must be a RandomizingMarketDataSpecification but is " + marketDataSpec);
}
RandomizingMarketDataSpecification randomSpec = (RandomizingMarketDataSpecification) marketDataSpec;
MarketDataProvider underlying = _resolver.resolve(marketDataUser, randomSpec.getUnderlying());
return new RandomizingMarketDataProvider(randomSpec, underlying);
}
}