1 | package nu.fw.jeti.backend; |
---|
2 | |
---|
3 | import java.util.HashMap; |
---|
4 | import java.util.Map; |
---|
5 | |
---|
6 | import nu.fw.jeti.jabber.handlers.*; |
---|
7 | import nu.fw.jeti.plugins.PluginsInfo; |
---|
8 | |
---|
9 | /** |
---|
10 | * @author E.S. de Boer |
---|
11 | */ |
---|
12 | |
---|
13 | public class Handlers |
---|
14 | { |
---|
15 | private Map handlers; |
---|
16 | private Map xmppHandlers; |
---|
17 | private InfoQueryHandler iqHandler; |
---|
18 | private PresenceHandler presenceHandler; |
---|
19 | private MessageHandler messageHandler; |
---|
20 | private StreamErrorHandler streamErrorHandler; |
---|
21 | |
---|
22 | public Handlers() |
---|
23 | { |
---|
24 | handlers = new HashMap(10); |
---|
25 | iqHandler = new InfoQueryHandler(); |
---|
26 | presenceHandler = new PresenceHandler(); |
---|
27 | messageHandler = new MessageHandler(); |
---|
28 | streamErrorHandler = new StreamErrorHandler(); |
---|
29 | handlers.put("jabber:iq:auth",new IQAuthHandler()); |
---|
30 | handlers.put("jabber:iq:roster",new RosterHandler()); |
---|
31 | handlers.put("jabber:iq:time",new IQTimeHandler()); |
---|
32 | handlers.put("jabber:iq:version",new IQVersionHandler()); |
---|
33 | handlers.put("jabber:iq:register",new IQRegisterHandler()); |
---|
34 | handlers.put("j2m:prefs",new JetiPrivateHandler()); |
---|
35 | handlers.put("jeti:rosterprefs",new JetiPrivateRosterHandler()); |
---|
36 | handlers.put("jabber:iq:private",new IQPrivateHandler()); |
---|
37 | handlers.put("jabber:x:event",new XMessageEventHandler()); |
---|
38 | handlers.put("jabber:x:delay",new XDelayHandler()); |
---|
39 | handlers.put("jabber:iq:browse",new IQBrowseHandler()); |
---|
40 | handlers.put("jabber:iq:last",new IQLastHandler()); |
---|
41 | handlers.put("jabber:iq:oob",new IQXOOBHandler()); |
---|
42 | handlers.put("jabber:x:data",new XDataHandler()); |
---|
43 | handlers.put("http://jabber.org/protocol/disco#info",new IQDiscoInfoHandler()); |
---|
44 | handlers.put("http://jabber.org/protocol/disco#items",new IQDiscoItemsHandler()); |
---|
45 | handlers.put("http://jabber.org/protocol/caps",new IQXCapsHandler()); |
---|
46 | handlers.put("urn:ietf:params:xml:ns:xmpp-stanzas",new XMPPErrorHandler()); |
---|
47 | handlers.put("urn:ietf:params:xml:ns:xmpp-streams",new XMPPErrorHandler()); |
---|
48 | handlers.put("unknown",new UnknownExtensionHandler()); |
---|
49 | } |
---|
50 | |
---|
51 | public void loadExtraHandlers(Map extraHandlers) |
---|
52 | { |
---|
53 | if(PluginsInfo.isPluginLoaded("xmpp"))xmppHandlers = extraHandlers; |
---|
54 | } |
---|
55 | |
---|
56 | public PacketHandler getPacketHandler(String namespace) |
---|
57 | {//iq message & presence |
---|
58 | if ("iq".equals(namespace)) return iqHandler; |
---|
59 | else if ("presence".equals(namespace)) return presenceHandler; |
---|
60 | else if("message".equals(namespace)) return messageHandler; |
---|
61 | else if ("stream:error".equals(namespace)) return streamErrorHandler; |
---|
62 | else if(xmppHandlers!=null) |
---|
63 | { |
---|
64 | return (PacketHandler)xmppHandlers.get(namespace); |
---|
65 | } |
---|
66 | else return null; |
---|
67 | } |
---|
68 | |
---|
69 | public synchronized ExtensionHandler getExtensionHandler(String namespace) |
---|
70 | { |
---|
71 | return (ExtensionHandler) handlers.get(namespace); |
---|
72 | } |
---|
73 | |
---|
74 | public synchronized void addExtensionHandler(String namespace,ExtensionHandler handler) |
---|
75 | { |
---|
76 | handlers.put(namespace,handler); |
---|
77 | } |
---|
78 | |
---|
79 | public synchronized void removeExtensionHandler(String namespace) |
---|
80 | { |
---|
81 | handlers.remove(namespace); |
---|
82 | } |
---|
83 | } |
---|
84 | |
---|
85 | /* |
---|
86 | * Overrides for emacs |
---|
87 | * Local variables: |
---|
88 | * tab-width: 4 |
---|
89 | * End: |
---|
90 | */ |
---|