});
xmppSession.addIQListener(new IQListener() {
@Override
public void handle(IQEvent e) {
IQ iq = e.getIQ();
if (e.isIncoming() && isEnabled() && !e.isConsumed() && iq.getType() == IQ.Type.GET) {
InfoDiscovery infoDiscovery = iq.getExtension(InfoDiscovery.class);
if (infoDiscovery != null) {
if (infoDiscovery.getNode() == null) {
IQ result = iq.createResult();
result.setExtension(new InfoDiscovery(getIdentities(), getFeatures(), getExtensions()));
xmppSession.send(result);
e.consume();
} else {
InfoNode infoNode = infoNodeMap.get(infoDiscovery.getNode());
if (infoNode != null) {
IQ result = iq.createResult();
result.setExtension(new InfoDiscovery(infoNode.getNode(), infoNode.getIdentities(), infoNode.getFeatures(), infoNode.getExtensions()));
xmppSession.send(result);
e.consume();
} else {
xmppSession.send(iq.createError(new StanzaError(new ItemNotFound())));
e.consume();
}
}
} else {
ItemDiscovery itemDiscovery = iq.getExtension(ItemDiscovery.class);
if (itemDiscovery != null) {
if (itemDiscovery.getNode() == null) {
IQ result = iq.createResult();
result.setExtension(new ItemDiscovery(items));
xmppSession.send(result);
e.consume();
} else {
ItemNode itemNode = itemNodeMap.get(itemDiscovery.getNode());
if (itemNode != null) {
IQ result = iq.createResult();
result.setExtension(new ItemDiscovery(itemNode.getNode(), items));
xmppSession.send(result);
e.consume();
} else {
xmppSession.send(iq.createError(new StanzaError(new ItemNotFound())));
e.consume();