package com.voxeo.moho.xmpp;
import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import com.voxeo.moho.ApplicationContext;
import com.voxeo.moho.ApplicationContextImpl;
import com.voxeo.moho.spi.ProtocolDriver;
import com.voxeo.moho.spi.SpiFramework;
import com.voxeo.moho.spi.XMPPDriver;
import com.voxeo.servlet.xmpp.IQRequest;
import com.voxeo.servlet.xmpp.IQResponse;
import com.voxeo.servlet.xmpp.InstantMessage;
import com.voxeo.servlet.xmpp.PresenceMessage;
import com.voxeo.servlet.xmpp.XmppServlet;
public class XMPPController extends XmppServlet {
private static final long serialVersionUID = -1802430322022324158L;
protected XMPPDriver _driver;
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
SpiFramework framework = (SpiFramework) getServletContext().getAttribute(ApplicationContext.FRAMEWORK);
if(framework.getDriverByProtocolFamily(ProtocolDriver.PROTOCOL_XMPP) == null) {
try {
framework.registerDriver(ProtocolDriver.PROTOCOL_XMPP, XMPPDriverImpl.class.getName());
}
catch (Exception e) {
throw new ServletException(e);
}
}
((ApplicationContextImpl)framework).setXMPPController(this);
_driver = (XMPPDriver)framework.getDriverByProtocolFamily(ProtocolDriver.PROTOCOL_XMPP);
_driver.init(framework);
}
@Override
public void destroy() {
super.destroy();
_driver.destroy();
}
@Override
protected void doIQRequest(IQRequest req) throws ServletException, IOException {
_driver.doIQRequest(req);
}
@Override
protected void doIQResponse(IQResponse resp) throws ServletException, IOException {
_driver.doIQResponse(resp);
}
@Override
protected void doPresence(PresenceMessage req) throws ServletException, IOException {
_driver.doPresence(req);
}
@Override
protected void doMessage(InstantMessage req) throws ServletException, IOException {
_driver.doMessage(req);
}
}