package org.marketcetera.symbol;
import java.util.List;
import org.apache.commons.lang.Validate;
import org.marketcetera.trade.Instrument;
import org.marketcetera.util.misc.ClassVersion;
import org.springframework.beans.factory.InitializingBean;
import com.google.common.collect.Lists;
/* $License$ */
/**
* Resolves symbols by managing a list of individual symbol resolvers.
*
* @author <a href="mailto:colin@marketcetera.com">Colin DuPlantis</a>
* @version $Id: IterativeSymbolResolver.java 16901 2014-05-11 16:14:11Z colin $
* @since 2.4.0
*/
@ClassVersion("$Id: IterativeSymbolResolver.java 16901 2014-05-11 16:14:11Z colin $")
public class IterativeSymbolResolver
implements SymbolResolverService, InitializingBean
{
/* (non-Javadoc)
* @see com.marketcetera.ors.symbol.SymbolResolverServices#resolveSymbol(java.lang.String)
*/
@Override
public Instrument resolveSymbol(String inSymbol)
{
for(SymbolResolver resolver : symbolResolvers) {
try {
Instrument instrument = resolver.resolveSymbol(inSymbol);
if(instrument != null) {
return instrument;
}
} catch (Exception e) {
Messages.SYMBOL_RESOLVER_ERROR.warn(this,
e);
}
}
return null;
}
/* (non-Javadoc)
* @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet()
*/
@Override
public void afterPropertiesSet()
throws Exception
{
Validate.notNull(symbolResolvers,
Messages.MISSING_SYMBOL_RESOLVERS.getText());
Validate.notEmpty(symbolResolvers,
Messages.MISSING_SYMBOL_RESOLVERS.getText());
}
/**
* Get the symbolResolvers value.
*
* @return a <code>List<SymbolResolver></code> value
*/
public List<SymbolResolver> getSymbolResolvers()
{
return symbolResolvers;
}
/**
* Sets the symbolResolvers value.
*
* @param inSymbolResolvers a <code>List<SymbolResolver></code> value
*/
public void setSymbolResolvers(List<SymbolResolver> inSymbolResolvers)
{
symbolResolvers = inSymbolResolvers;
}
/**
* list of symbol resolvers
*/
private List<SymbolResolver> symbolResolvers = Lists.newArrayList();
}