/**
* Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.engine.marketdata.resolver;
import com.opengamma.engine.marketdata.MarketDataInjectorImpl;
import com.opengamma.engine.marketdata.MarketDataProvider;
import com.opengamma.engine.marketdata.MarketDataProviderWithOverride;
import com.opengamma.engine.marketdata.spec.MarketDataSpecification;
import com.opengamma.livedata.UserPrincipal;
import com.opengamma.util.ArgumentChecker;
/**
* A {@link MarketDataProviderResolver} which delegates resolution to an underlying provider, but wraps any resolved provider in a {@link MarketDataProviderResolverWithOverride}.
*/
public class MarketDataProviderResolverWithOverride implements MarketDataProviderResolver {
private final MarketDataProviderResolver _underlying;
private final MarketDataInjectorImpl _overrideInjector;
public MarketDataProviderResolverWithOverride(MarketDataProviderResolver underlying, MarketDataInjectorImpl overrideInjector) {
ArgumentChecker.notNull(underlying, "underlying");
ArgumentChecker.notNull(overrideInjector, "overrideInjector");
_underlying = underlying;
_overrideInjector = overrideInjector;
}
@Override
public MarketDataProvider resolve(UserPrincipal user, MarketDataSpecification marketDataSpec) {
MarketDataProvider provider = _underlying.resolve(user, marketDataSpec);
if (provider == null) {
return null;
}
return new MarketDataProviderWithOverride(provider, _overrideInjector);
}
}