package org.buddycloud.channelserver.packetprocessor.message.event;
import java.util.Properties;
import java.util.concurrent.BlockingQueue;
import org.buddycloud.channelserver.Configuration;
import org.buddycloud.channelserver.channel.ChannelManager;
import org.buddycloud.channelserver.db.exception.NodeStoreException;
import org.buddycloud.channelserver.utils.NotificationScheme;
import org.dom4j.Element;
import org.xmpp.packet.Message;
import org.xmpp.packet.Packet;
public class DeleteProcessor extends AbstractMessageProcessor {
public DeleteProcessor(BlockingQueue<Packet> outQueue,
Properties configuration, ChannelManager channelManager) {
super(channelManager, configuration, outQueue);
}
@Override
public void process(Message packet) throws Exception {
message = packet;
deleteNode();
if (!Configuration.getInstance().isLocalNode(node)) {
sendLocalNotifications(NotificationScheme.validSubscribers);
}
}
private void deleteNode() throws NodeStoreException {
Element deleteElement = message.getElement().element("event")
.element("delete");
if (deleteElement == null) {
return;
}
node = deleteElement.attributeValue("node");
if (Configuration.getInstance().isLocalNode(node)) {
return;
}
channelManager.deleteNode(node);
}
}