package com.reucon.openfire.plugin.archive.xep0313; import org.dom4j.*; import org.jivesoftware.openfire.handler.IQHandler; import org.jivesoftware.openfire.session.LocalClientSession; import org.jivesoftware.openfire.session.Session; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.xmpp.packet.IQ; import org.xmpp.packet.Message; /** * XEP-0313 IQ Query Handler */ class IQQueryHandler0 extends IQQueryHandler { private static final Logger Log = LoggerFactory.getLogger(IQHandler.class); private static final String MODULE_NAME = "Message Archive Management Query Handler v0"; IQQueryHandler0() { super(MODULE_NAME, "urn:xmpp:mam:0"); } @Override protected void sendMidQuery(IQ packet, Session session) { sendAcknowledgementResult(packet, session); } @Override protected void sendEndQuery(IQ packet, Session session, QueryRequest queryRequest) { sendFinalMessage(session, queryRequest); } /** * Send result packet to client acknowledging query. * @param packet Received query packet * @param session Client session to respond to */ private void sendAcknowledgementResult(IQ packet, Session session) { IQ result = IQ.createResultIQ(packet); session.process(result); } /** * Send final message back to client following query. * @param session Client session to respond to * @param queryRequest Received query request */ private void sendFinalMessage(Session session, final QueryRequest queryRequest) { Message finalMessage = new Message(); finalMessage.setTo(session.getAddress()); Element fin = finalMessage.addChildElement("fin", NAMESPACE); completeFinElement(queryRequest, fin); session.process(finalMessage); } }