package org.marketcetera.photon.internal.marketdata; import org.marketcetera.core.instruments.InstrumentFunctionHandler; import org.marketcetera.core.instruments.StaticInstrumentFunctionSelector; import org.marketcetera.marketdata.MarketDataRequestBuilder; import org.marketcetera.trade.Instrument; import org.marketcetera.util.misc.ClassVersion; /* $License$ */ /** * Initializes market data request for an instrument. * * <p>A subclass of this class should be created for every instrument type handled by the system. * * @author <a href="mailto:will@marketcetera.com">Will Horn</a> * @version $Id: InstrumentRequestAdapter.java 16862 2014-03-19 12:28:49Z colin $ * @since 2.0.0 */ @ClassVersion("$Id: InstrumentRequestAdapter.java 16862 2014-03-19 12:28:49Z colin $") public abstract class InstrumentRequestAdapter<InstrumentClazz extends Instrument> extends InstrumentFunctionHandler<InstrumentClazz> { /** * Initializes a {@link MarketDataRequestBuilder} for the provided instrument. * * @param inInstrument an <code>I</code> value * @return a {@link MarketDataRequestBuilder} with instrument information */ abstract public MarketDataRequestBuilder initializeRequest(InstrumentClazz inInstrument); /** * Creates an instance that handles the specified instrument subclass. * * @param instrument the instrument subclass handled by this instance. */ protected InstrumentRequestAdapter(Class<InstrumentClazz> instrument) { super(instrument); } public static final StaticInstrumentFunctionSelector<InstrumentRequestAdapter> SELECTOR = new StaticInstrumentFunctionSelector<InstrumentRequestAdapter>(InstrumentRequestAdapter.class); }