package org.marketcetera.marketdata.provider;
import java.util.ArrayList;
import java.util.EnumSet;
import java.util.List;
import java.util.Set;
import org.marketcetera.marketdata.Capability;
import org.marketcetera.marketdata.IFeedComponent.FeedType;
import org.marketcetera.marketdata.MarketDataRequest;
import org.marketcetera.marketdata.core.provider.AbstractMarketDataProvider;
import org.marketcetera.marketdata.core.request.MarketDataRequestAtom;
/* $License$ */
/**
* Provides a test market data provider.
*
* @author <a href="mailto:colin@marketcetera.com">Colin DuPlantis</a>
* @version $Id: MockMarketDataProvider.java 16901 2014-05-11 16:14:11Z colin $
* @since 2.4.0
*/
public class MockMarketDataProvider
extends AbstractMarketDataProvider
{
/**
* Get the canceledAtoms value.
*
* @return a <code>List<MarketDataRequestAtom></code> value
*/
public List<MarketDataRequestAtom> getCanceledAtoms()
{
return canceledAtoms;
}
/**
* Sets the canceledAtoms value.
*
* @param inCanceledAtoms a <code>List<MarketDataRequestAtom></code> value
*/
public void setCanceledAtoms(List<MarketDataRequestAtom> inCanceledAtoms)
{
canceledAtoms = inCanceledAtoms;
}
/**
* Get the requestedAtoms value.
*
* @return a <code>List<MarketDataRequestAtom></code> value
*/
public List<MarketDataRequestAtom> getRequestedAtoms()
{
return requestedAtoms;
}
/**
* Sets the requestedAtoms value.
*
* @param inRequestedAtoms a <code>List<MarketDataRequestAtom></code> value
*/
public void setRequestedAtoms(List<MarketDataRequestAtom> inRequestedAtoms)
{
requestedAtoms = inRequestedAtoms;
}
/**
* Get the requests value.
*
* @return a <code>List<MarketDataRequest></code> value
*/
public List<MarketDataRequest> getRequests()
{
return requests;
}
/**
* Sets the requests value.
*
* @param inRequests a <code>List<MarketDataRequest></code> value
*/
public void setRequests(List<MarketDataRequest> inRequests)
{
requests = inRequests;
}
/**
* Get the started value.
*
* @return a <code>boolean</code> value
*/
public boolean getStarted()
{
return started;
}
/**
* Get the stopped value.
*
* @return a <code>boolean</code> value
*/
public boolean getStopped()
{
return stopped;
}
/**
* Sets the exceptionOnStart value.
*
* @param inExceptionOnStart a <code>RuntimeException</code> value
*/
public void setExceptionOnStart(RuntimeException inExceptionOnStart)
{
exceptionOnStart = inExceptionOnStart;
}
/**
* Sets the exceptionOnStop value.
*
* @param inExceptionOnStop a <code>RuntimeException</code> value
*/
public void setExceptionOnStop(RuntimeException inExceptionOnStop)
{
exceptionOnStop = inExceptionOnStop;
}
/**
* Sets the exceptionOnRequest value.
*
* @param inExceptionOnRequest a <code>RuntimeException</code> value
*/
public void setExceptionOnRequest(RuntimeException inExceptionOnRequest)
{
exceptionOnRequest = inExceptionOnRequest;
}
/**
* Sets the exceptionOnCancel value.
*
* @param inExceptionOnCancel a <code>RuntimeException</code> value
*/
public void setExceptionOnCancel(RuntimeException inExceptionOnCancel)
{
exceptionOnCancel = inExceptionOnCancel;
}
/**
* Sets the capabilities value.
*
* @param a <code>Set<Capability></code> value
*/
public void setCapabilities(Set<Capability> inCapabilities)
{
capabilities = inCapabilities;
}
/**
* Sets the feedType value.
*
* @param a <code>FeedType</code> value
*/
public void setFeedType(FeedType inFeedType)
{
feedType = inFeedType;
}
/* (non-Javadoc)
* @see org.marketcetera.marketdata.provider.MarketDataProvider#getProviderName()
*/
@Override
public String getProviderName()
{
return "mock";
}
/* (non-Javadoc)
* @see org.marketcetera.marketdata.provider.MarketDataProvider#getCapabilities()
*/
@Override
public Set<Capability> getCapabilities()
{
return capabilities;
}
/* (non-Javadoc)
* @see org.marketcetera.marketdata.provider.MarketDataProvider#getFeedType()
*/
@Override
public FeedType getFeedType()
{
return feedType;
}
/**
* Resets the test-related mutable state.
*/
public void reset()
{
canceledAtoms.clear();
requestedAtoms.clear();
requests.clear();
capabilities = EnumSet.allOf(Capability.class);
feedType = FeedType.SIMULATED;
started = false;
stopped = false;
exceptionOnStart = null;
exceptionOnStop = null;
exceptionOnRequest = null;
exceptionOnCancel = null;
}
/* (non-Javadoc)
* @see org.marketcetera.marketdata.provider.AbstractMarketDataProvider#doStart()
*/
@Override
protected void doStart()
{
started = false;
if(exceptionOnStart != null) {
throw exceptionOnStart;
}
started = true;
}
/* (non-Javadoc)
* @see org.marketcetera.marketdata.provider.AbstractMarketDataProvider#doStop()
*/
@Override
protected void doStop()
{
stopped = false;
if(exceptionOnStop != null) {
throw exceptionOnStop;
}
stopped = true;
}
/* (non-Javadoc)
* @see org.marketcetera.marketdata.provider.AbstractMarketDataProvider#doCancel(org.marketcetera.marketdata.request.MarketDataRequestAtom)
*/
@Override
protected void doCancel(MarketDataRequestAtom inAtom)
{
canceledAtoms.add(inAtom);
if(exceptionOnCancel != null) {
throw exceptionOnCancel;
}
}
/* (non-Javadoc)
* @see org.marketcetera.marketdata.provider.AbstractMarketDataProvider#doMarketDataRequest(org.marketcetera.marketdata.request.MarketDataRequest, org.marketcetera.marketdata.request.MarketDataRequestAtom)
*/
@Override
protected void doMarketDataRequest(MarketDataRequest inCompleteRequest,
MarketDataRequestAtom inRequestAtom)
throws InterruptedException
{
requestedAtoms.add(inRequestAtom);
requests.add(inCompleteRequest);
if(exceptionOnRequest != null) {
throw exceptionOnRequest;
}
}
private List<MarketDataRequestAtom> canceledAtoms = new ArrayList<MarketDataRequestAtom>();
private List<MarketDataRequestAtom> requestedAtoms = new ArrayList<MarketDataRequestAtom>();
private List<MarketDataRequest> requests = new ArrayList<MarketDataRequest>();
private Set<Capability> capabilities = EnumSet.allOf(Capability.class);
private FeedType feedType = FeedType.SIMULATED;
private boolean started = false;
private boolean stopped = false;
private RuntimeException exceptionOnStart;
private RuntimeException exceptionOnStop;
private RuntimeException exceptionOnRequest;
private RuntimeException exceptionOnCancel;
}