package org.marketcetera.client;
import javax.xml.bind.JAXBException;
import org.marketcetera.client.jms.JmsManager;
import org.marketcetera.client.jms.JmsUtils;
import org.marketcetera.util.misc.ClassVersion;
import org.marketcetera.util.ws.stateful.SessionFactory;
import org.marketcetera.util.ws.stateless.StatelessClientContext;
import org.marketcetera.util.ws.tags.SessionId;
import org.springframework.jms.core.JmsOperations;
/**
* A mock session factory.
*
* @author tlerios@marketcetera.com
* @since 1.5.0
* @version $Id: MockSessionFactory.java 16154 2012-07-14 16:34:05Z colin $
*/
/* $License$ */
@ClassVersion("$Id: MockSessionFactory.java 16154 2012-07-14 16:34:05Z colin $")
public class MockSessionFactory
implements SessionFactory<Object>
{
// INSTANCE DATA.
private final JmsManager mJmsManager;
private final MockMessageHandler mHandler;
// CONSTRUCTORS.
public MockSessionFactory
(JmsManager jmsManager,
MockMessageHandler handler)
{
mJmsManager=jmsManager;
mHandler=handler;
}
// SessionFactory.
@Override
public Object createSession
(StatelessClientContext context,
String user,
SessionId id)
{
JmsOperations replySender;
try {
replySender=mJmsManager.getOutgoingJmsFactory().createJmsTemplateX
(JmsUtils.getReplyTopicName(id),true);
} catch (JAXBException ex) {
throw new IllegalStateException
("Cannot initialize trade message reply topic",ex);
}
mHandler.setReplySender(replySender);
return null;
}
@Override
public void removedSession(Object session)
{
mHandler.setReplySender(null);
}
}