package org.marketcetera.marketdata.core.webservice.impl;
import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.commons.lang.Validate;
import org.marketcetera.util.log.SLF4JLoggerProxy;
import org.marketcetera.util.ws.ContextClassProvider;
import org.marketcetera.util.ws.stateful.Authenticator;
import org.marketcetera.util.ws.stateful.Server;
import org.marketcetera.util.ws.stateful.ServerProvider;
import org.marketcetera.util.ws.stateful.SessionManager;
import org.springframework.context.Lifecycle;
/* $License$ */
/**
*
*
* @author <a href="mailto:colin@marketcetera.com">Colin DuPlantis</a>
* @version $Id: MockServer.java 16901 2014-05-11 16:14:11Z colin $
* @since 2.4.0
*/
public class MockServer
implements Lifecycle, ServerProvider<MockSession>
{
/* (non-Javadoc)
* @see org.springframework.context.Lifecycle#isRunning()
*/
@Override
public boolean isRunning()
{
return running.get();
}
/* (non-Javadoc)
* @see org.springframework.context.Lifecycle#start()
*/
@Override
public void start()
{
Validate.notNull(hostname);
Validate.isTrue(port > 1024);
Validate.notNull(authenticator);
Validate.notNull(sessionManager);
SLF4JLoggerProxy.debug(this,
"Starting mock server on {}:{}",
hostname,
port);
server = new Server<MockSession>(hostname,
port,
authenticator,
sessionManager,
contextClassProvider);
running.set(true);
}
/* (non-Javadoc)
* @see org.springframework.context.Lifecycle#stop()
*/
@Override
public void stop()
{
SLF4JLoggerProxy.debug(this,
"Stopping mock server");
try {
server.stop();
server = null;
} finally {
running.set(false);
}
}
/* (non-Javadoc)
* @see org.marketcetera.util.ws.stateful.ServerProvider#getServer()
*/
@Override
public Server<MockSession> getServer()
{
return server;
}
/**
* Get the hostname value.
*
* @return a <code>String</code> value
*/
public String getHostname()
{
return hostname;
}
/**
* Sets the hostname value.
*
* @param inHostname a <code>String</code> value
*/
public void setHostname(String inHostname)
{
hostname = inHostname;
}
/**
* Get the port value.
*
* @return a <code>int</code> value
*/
public int getPort()
{
return port;
}
/**
* Sets the port value.
*
* @param inPort a <code>int</code> value
*/
public void setPort(int inPort)
{
port = inPort;
}
/**
* Get the contextClassProvider value.
*
* @return a <code>ContextClassProvider</code> value
*/
public ContextClassProvider getContextClassProvider()
{
return contextClassProvider;
}
/**
* Sets the contextClassProvider value.
*
* @param inContextClassProvider a <code>ContextClassProvider</code> value
*/
public void setContextClassProvider(ContextClassProvider inContextClassProvider)
{
contextClassProvider = inContextClassProvider;
}
/**
* Get the sessionManager value.
*
* @return a <code>SessionManager<MockSession></code> value
*/
public SessionManager<MockSession> getSessionManager()
{
return sessionManager;
}
/**
* Sets the sessionManager value.
*
* @param inSessionManager a <code>SessionManager<MockSession></code> value
*/
public void setSessionManager(SessionManager<MockSession> inSessionManager)
{
sessionManager = inSessionManager;
}
/**
* Get the authenticator value.
*
* @return a <code>Authenticator</code> value
*/
public Authenticator getAuthenticator()
{
return authenticator;
}
/**
* Sets the authenticator value.
*
* @param inAuthenticator a <code>Authenticator</code> value
*/
public void setAuthenticator(Authenticator inAuthenticator)
{
authenticator = inAuthenticator;
}
/**
*
*/
private ContextClassProvider contextClassProvider;
/**
*
*/
private SessionManager<MockSession> sessionManager;
/**
*
*/
private Authenticator authenticator;
/**
*
*/
private Server<MockSession> server;
/**
*
*/
private String hostname = "127.0.0.1";
/**
*
*/
private int port = 12345;
/**
*
*/
private final AtomicBoolean running = new AtomicBoolean(false);
}