in server/core/src/main/java/org/apache/vysper/xmpp/protocol/StanzaHandlerLookup.java [67:99]
public StanzaHandler getHandler(Stanza stanza) {
if (stanza == null)
return null;
// allow extensions to override default handling
StanzaHandler stanzaHandler = getHandlerForElement(stanza, stanza);
if(stanzaHandler != null) {
return stanzaHandler;
} else {
String name = stanza.getName();
if ("xml".equals(name)) {
return new XMLPrologHandler();
} else if ("stream".equals(name)) {
return new StreamStartHandler();
} else if ("verify".equals(name)) {
return new DbVerifyHandler();
} else if ("result".equals(name)) {
return new DbResultHandler();
} else if (iqHandler.verify(stanza)) {
return getIQHandler(stanza);
} else if (messageHandler.verify(stanza)) {
return getMessageHandler(stanza);
} else if (presenceHandler.verify(stanza)) {
return getPresenceHandler(stanza);
} else {
// ... and if we could not resolve and it's a core stanza, we can safely return an error
if (XMPPCoreStanza.getWrapper(stanza) != null) return SERVICE_UNAVAILABLE_STANZA_ERROR_HANDLER;
else return null;
}
}
}