spark+smack+openfire实现请求响应简单流程 (五)

2014-11-24 10:21:33 · 作者: · 浏览: 5
rver_error);

return result;
}
}
}

private IQ manageRoster(IQ packet) throws UnauthorizedException,
UserAlreadyExistsException, SharedGroupException {

IQ returnPacket = null;
JID sender = packet.getFrom();

System.out.println("IQLoadUserCrowdListHandler - manageRoster - begin");

IQ.Type type = packet.getType();

try {
System.out.println("IQLoadUserCrowdListHandler - manageRoster - 1");

if (IQ.Type.get == type) {

package org.jivesoftware.expand.handler.crowd;

import gnu.inet.encoding.IDNAException;

import java.util.ArrayList;
import java.util.Iterator;

import org.dom4j.Element;
import org.jivesoftware.expand.util.Dom4jElement;
import org.jivesoftware.openfire.IQHandlerInfo;
import org.jivesoftware.openfire.PacketException;
import org.jivesoftware.openfire.SharedGroupException;
import org.jivesoftware.openfire.XMPPServer;
import org.jivesoftware.openfire.auth.UnauthorizedException;
import org.jivesoftware.openfire.disco.ServerFeaturesProvider;
import org.jivesoftware.openfire.handler.IQHandler;
import org.jivesoftware.openfire.user.UserAlreadyExistsException;
import org.jivesoftware.openfire.user.UserManager;
import org.jivesoftware.util.LocaleUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xmpp.packet.IQ;
import org.xmpp.packet.JID;
import org.xmpp.packet.PacketError;

public class IQTestrrHandler extends IQHandler implements
ServerFeaturesProvider {

private static final Logger Log = LoggerFactory
.getLogger(IQTestrrHandler.class);

private IQHandlerInfo info;

public IQTestrrHandler() {
super("XMPP User Crowd List Handler");
info = new IQHandlerInfo("query", "jabber:iq:testrr");
}

@Override
public IQ handleIQ(IQ packet) throws UnauthorizedException, PacketException {
System.out.println("IQLoadUserCrowdListHandler - handleIQ - begin");
try {
IQ returnPacket = null;

System.out.println("IQLoadUserCrowdListHandler - handleIQ - 1");

System.out.println("IQLoadUserCrowdListHandler - handleIQ - packet to xml = "
+ packet.toXML());

JID recipientJID = packet.getTo();

if (recipientJID == null
|| recipientJID.getNode() == null
|| !UserManager.getInstance().isRegisteredUser(
recipientJID.getNode())) {
returnPacket = manageRoster(packet);
}
return returnPacket;
} catch (SharedGroupException e) {
IQ result = IQ.createResultIQ(packet);
result.setChildElement(packet.getChildElement().createCopy());
result.setError(PacketError.Condition.not_acceptable);

return result;
} catch (Exception e) {
if (e.getCause() instanceof IDNAException) {
Log.warn(LocaleUtils.getLocalizedString("admin.error"), e);
IQ result = IQ.createResultIQ(packet);
result.setChildElement(packet.getChildElement().createCopy());
result.setError(PacketError.Condition.jid_malformed);

return result;
} else {
Log.error(LocaleUtils.getLocalizedString("admin.error"), e);
IQ result = IQ.createResultIQ(packet);
result.setChildElement(packet.getChildElement().createCopy());
result.setError(PacketError.Condition.intern