/**
* 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 java.util.HashMap;
import java.util.Map;
import com.opengamma.engine.marketdata.MarketDataProvider;
import com.opengamma.engine.marketdata.MarketDataProviderFactory;
import com.opengamma.engine.marketdata.spec.MarketDataSpecification;
import com.opengamma.livedata.UserPrincipal;
/**
* Resolves a {@link MarketDataSpecification} into a {@link MarketDataProvider} by specification type.
*/
public class TypeBasedMarketDataProviderResolver implements MarketDataProviderResolver {
private final Map<Class<?>, MarketDataProviderFactory> _providerFactoryMap = new HashMap<Class<?>, MarketDataProviderFactory>();
public void addProvider(Class<?> marketDataSpecType, MarketDataProviderFactory provider) {
_providerFactoryMap.put(marketDataSpecType, provider);
}
@Override
public MarketDataProvider resolve(UserPrincipal user, MarketDataSpecification marketDataSpec) {
MarketDataProviderFactory providerFactory = _providerFactoryMap.get(marketDataSpec.getClass());
if (providerFactory == null) {
return null;
}
return providerFactory.create(user, marketDataSpec);
}
}