浏览代码

Parser abstraction part 2. The parser now works.

tags/0.6.3m2a1
Chris Smith 15 年前
父节点
当前提交
6e1beb7bb3
共有 39 个文件被更改,包括 405 次插入299 次删除
  1. 6
    5
      src/com/dmdirc/ChannelEventHandler.java
  2. 8
    9
      src/com/dmdirc/EventHandler.java
  3. 8
    8
      src/com/dmdirc/Query.java
  4. 2
    2
      src/com/dmdirc/Raw.java
  5. 4
    3
      src/com/dmdirc/ServerEventHandler.java
  6. 1
    1
      src/com/dmdirc/addons/dcc/DCCSendWindow.java
  7. 22
    11
      src/com/dmdirc/parser/irc/IRCParser.java
  8. 3
    1
      src/com/dmdirc/parser/irc/Process001.java
  9. 3
    1
      src/com/dmdirc/parser/irc/Process004005.java
  10. 3
    1
      src/com/dmdirc/parser/irc/Process464.java
  11. 3
    1
      src/com/dmdirc/parser/irc/ProcessAway.java
  12. 3
    1
      src/com/dmdirc/parser/irc/ProcessInvite.java
  13. 5
    2
      src/com/dmdirc/parser/irc/ProcessJoin.java
  14. 3
    1
      src/com/dmdirc/parser/irc/ProcessKick.java
  15. 2
    1
      src/com/dmdirc/parser/irc/ProcessListModes.java
  16. 7
    3
      src/com/dmdirc/parser/irc/ProcessMOTD.java
  17. 30
    15
      src/com/dmdirc/parser/irc/ProcessMessage.java
  18. 12
    6
      src/com/dmdirc/parser/irc/ProcessMode.java
  19. 3
    1
      src/com/dmdirc/parser/irc/ProcessNames.java
  20. 5
    2
      src/com/dmdirc/parser/irc/ProcessNick.java
  21. 3
    1
      src/com/dmdirc/parser/irc/ProcessNickInUse.java
  22. 3
    1
      src/com/dmdirc/parser/irc/ProcessNoticeAuth.java
  23. 3
    1
      src/com/dmdirc/parser/irc/ProcessPart.java
  24. 4
    2
      src/com/dmdirc/parser/irc/ProcessQuit.java
  25. 3
    1
      src/com/dmdirc/parser/irc/ProcessTopic.java
  26. 7
    3
      src/com/dmdirc/parser/irc/ProcessWallops.java
  27. 7
    3
      src/com/dmdirc/parser/irc/ProcessWho.java
  28. 2
    1
      src/com/dmdirc/parser/irc/ProcessingManager.java
  29. 184
    160
      src/com/dmdirc/parser/irc/callbacks/CallbackManager.java
  30. 12
    17
      src/com/dmdirc/parser/irc/callbacks/CallbackObject.java
  31. 23
    15
      test/com/dmdirc/parser/irc/IRCParserTest.java
  32. 2
    1
      test/com/dmdirc/parser/irc/Process004005Test.java
  33. 3
    2
      test/com/dmdirc/parser/irc/ProcessJoinTest.java
  34. 1
    1
      test/com/dmdirc/parser/irc/ProcessNamesTest.java
  35. 5
    3
      test/com/dmdirc/parser/irc/ProcessNickTest.java
  36. 2
    4
      test/com/dmdirc/parser/irc/ProcessPartTest.java
  37. 5
    5
      test/com/dmdirc/parser/irc/ProcessQuitTest.java
  38. 2
    2
      test/com/dmdirc/parser/irc/ProcessTopicTest.java
  39. 1
    1
      test/com/dmdirc/parser/irc/ProcessWhoTest.java

+ 6
- 5
src/com/dmdirc/ChannelEventHandler.java 查看文件

@@ -58,13 +58,14 @@ public final class ChannelEventHandler extends EventHandler implements
58 58
     }
59 59
 
60 60
     /** {@inheritDoc} */
61
+    @SuppressWarnings("unchecked")
61 62
     @Override
62
-    protected void addCallback(final CallbackManager cbm, final String name)
63
-            throws CallbackNotFoundException {
64
-        if ("onAwayStateOther".equals(name)) {
65
-            cbm.addCallback(name, this);
63
+    protected <T extends CallbackInterface> void addCallback(
64
+            final CallbackManager cbm, final Class<T> type) throws CallbackNotFoundException {
65
+        if (OtherAwayStateListener.class.equals(type)) {
66
+            cbm.addCallback(type, (T) this);
66 67
         } else {
67
-            cbm.addCallback(name, this, owner.getChannelInfo().getName());
68
+            cbm.addCallback(type, (T) this, owner.getChannelInfo().getName());
68 69
         }
69 70
     }
70 71
 

+ 8
- 9
src/com/dmdirc/EventHandler.java 查看文件

@@ -36,21 +36,18 @@ import com.dmdirc.parser.interfaces.callbacks.CallbackInterface;
36 36
  */
37 37
 public abstract class EventHandler implements CallbackInterface {
38 38
     
39
-    /** The prefix indicating that the interface is a parser callback. */
40
-    private static final String CALLBACK_PREFIX = "com.dmdirc.parser.irc.callbacks.interfaces.I";
41
-    
42 39
     /**
43 40
      * Registers all callbacks that this event handler implements with the
44 41
      * owner's parser.
45 42
      */
43
+    @SuppressWarnings("unchecked")
46 44
     public void registerCallbacks() {
47 45
         final CallbackManager cbm = getServer().getParser().getCallbackManager();
48 46
         
49 47
         try {
50 48
             for (Class iface : this.getClass().getInterfaces()) {
51
-                if (iface.getName().startsWith(CALLBACK_PREFIX)) {
52
-                    addCallback(cbm, "on"
53
-                            + iface.getName().substring(CALLBACK_PREFIX.length()));
49
+                if (CallbackInterface.class.isAssignableFrom(iface)) {
50
+                    addCallback(cbm, iface);
54 51
                 }
55 52
             }
56 53
         } catch (CallbackNotFoundException exception) {
@@ -71,13 +68,15 @@ public abstract class EventHandler implements CallbackInterface {
71 68
     /**
72 69
      * Adds a callback to this event handler.
73 70
      * 
71
+     * @param <T> The type of callback to be added
74 72
      * @param cbm The callback manager to use
75
-     * @param name The name of the callback to be added
73
+     * @param type The type of the callback to be added
76 74
      * @throws com.dmdirc.parser.irc.callbacks.CallbackNotFoundException
77 75
      * if the specified callback isn't found
78 76
      */
79
-    protected abstract void addCallback(CallbackManager cbm, String name) 
80
-            throws CallbackNotFoundException;
77
+    @SuppressWarnings("unchecked")
78
+    protected abstract <T extends CallbackInterface> void addCallback(
79
+            final CallbackManager cbm, final Class<T> type) throws CallbackNotFoundException;
81 80
     
82 81
     /**
83 82
      * Retrieves the server belonging to this EventHandler's owner.

+ 8
- 8
src/com/dmdirc/Query.java 查看文件

@@ -243,10 +243,10 @@ public final class Query extends MessageTarget implements
243 243
         final CallbackManager callbackManager = server.getParser().getCallbackManager();
244 244
 
245 245
         try {
246
-            callbackManager.addCallback("onPrivateAction", this, ClientInfo.parseHost(host));
247
-            callbackManager.addCallback("onPrivateMessage", this, ClientInfo.parseHost(host));
248
-            callbackManager.addCallback("onQuit", this);
249
-            callbackManager.addCallback("onNickChanged", this);
246
+            callbackManager.addCallback(PrivateActionListener.class, this, ClientInfo.parseHost(host));
247
+            callbackManager.addCallback(PrivateMessageListener.class, this, ClientInfo.parseHost(host));
248
+            callbackManager.addCallback(QuitListener.class, this);
249
+            callbackManager.addCallback(NickChangeListener.class, this);
250 250
         } catch (CallbackNotFoundException ex) {
251 251
             Logger.appError(ErrorLevel.HIGH, "Unable to get query events", ex);
252 252
         }
@@ -259,12 +259,12 @@ public final class Query extends MessageTarget implements
259 259
         if (sOldNick.equals(ClientInfo.parseHost(host))) {
260 260
             final CallbackManager callbackManager = server.getParser().getCallbackManager();
261 261
 
262
-            callbackManager.delCallback("onPrivateAction", this);
263
-            callbackManager.delCallback("onPrivateMessage", this);
262
+            callbackManager.delCallback(PrivateActionListener.class, this);
263
+            callbackManager.delCallback(PrivateMessageListener.class, this);
264 264
 
265 265
             try {
266
-                callbackManager.addCallback("onPrivateAction", this, cClient.getNickname());
267
-                callbackManager.addCallback("onPrivateMessage", this, cClient.getNickname());
266
+                callbackManager.addCallback(PrivateActionListener.class, this, cClient.getNickname());
267
+                callbackManager.addCallback(PrivateMessageListener.class, this, cClient.getNickname());
268 268
             } catch (CallbackNotFoundException ex) {
269 269
                 Logger.appError(ErrorLevel.HIGH, "Unable to get query events", ex);
270 270
             }

+ 2
- 2
src/com/dmdirc/Raw.java 查看文件

@@ -77,8 +77,8 @@ public final class Raw extends WritableFrameContainer implements DataInListener,
77 77
      */
78 78
     public void registerCallbacks() {
79 79
         try {
80
-            server.getParser().getCallbackManager().addCallback("OnDataIn", this);
81
-            server.getParser().getCallbackManager().addCallback("OnDataOut", this);
80
+            server.getParser().getCallbackManager().addCallback(DataInListener.class, this);
81
+            server.getParser().getCallbackManager().addCallback(DataOutListener.class, this);
82 82
         } catch (CallbackNotFoundException ex) {
83 83
             Logger.appError(ErrorLevel.HIGH, "Unable to register raw callbacks", ex);
84 84
         }

+ 4
- 3
src/com/dmdirc/ServerEventHandler.java 查看文件

@@ -64,9 +64,10 @@ public final class ServerEventHandler extends EventHandler
64 64
 
65 65
     /** {@inheritDoc} */
66 66
     @Override
67
-    protected void addCallback(final CallbackManager cbm, final String name)
68
-            throws CallbackNotFoundException {
69
-        cbm.addCallback(name, this);
67
+    @SuppressWarnings("unchecked")
68
+    protected <T extends CallbackInterface> void addCallback(
69
+            final CallbackManager cbm, final Class<T> type) throws CallbackNotFoundException {
70
+        cbm.addCallback(type, (T) this);
70 71
     }
71 72
 
72 73
     /** {@inheritDoc} */

+ 1
- 1
src/com/dmdirc/addons/dcc/DCCSendWindow.java 查看文件

@@ -98,7 +98,7 @@ public class DCCSendWindow extends DCCFrame implements DCCSendInterface, ActionL
98 98
         this.myPlugin = plugin;
99 99
         
100 100
 		if (parser != null) {
101
-			parser.getCallbackManager().addNonCriticalCallback("onSocketClosed", this);
101
+			parser.getCallbackManager().addNonCriticalCallback(SocketCloseListener.class, this);
102 102
 		}
103 103
 		dcc.setHandler(this);
104 104
 

+ 22
- 11
src/com/dmdirc/parser/irc/IRCParser.java 查看文件

@@ -22,6 +22,17 @@
22 22
 
23 23
 package com.dmdirc.parser.irc;
24 24
 
25
+import com.dmdirc.parser.interfaces.callbacks.ConnectErrorListener;
26
+import com.dmdirc.parser.interfaces.callbacks.DataInListener;
27
+import com.dmdirc.parser.interfaces.callbacks.DataOutListener;
28
+import com.dmdirc.parser.interfaces.callbacks.DebugInfoListener;
29
+import com.dmdirc.parser.interfaces.callbacks.ErrorInfoListener;
30
+import com.dmdirc.parser.interfaces.callbacks.PingFailureListener;
31
+import com.dmdirc.parser.interfaces.callbacks.PingSentListener;
32
+import com.dmdirc.parser.interfaces.callbacks.PingSuccessListener;
33
+import com.dmdirc.parser.interfaces.callbacks.Post005Listener;
34
+import com.dmdirc.parser.interfaces.callbacks.ServerErrorListener;
35
+import com.dmdirc.parser.interfaces.callbacks.SocketCloseListener;
25 36
 import com.dmdirc.parser.irc.callbacks.CallbackManager;
26 37
 
27 38
 import java.io.BufferedReader;
@@ -429,7 +440,7 @@ public class IRCParser implements Runnable {
429 440
 	 * @return true if a method was called, false otherwise
430 441
 	 */
431 442
 	protected boolean callServerError(final String message) {
432
-		return myCallbackManager.getCallbackType("OnServerError").call(message);
443
+		return myCallbackManager.getCallbackType(ServerErrorListener.class).call(message);
433 444
 	}
434 445
 
435 446
 	/**
@@ -440,7 +451,7 @@ public class IRCParser implements Runnable {
440 451
 	 * @return true if a method was called, false otherwise
441 452
 	 */
442 453
 	protected boolean callDataIn(final String data) {
443
-		return myCallbackManager.getCallbackType("OnDataIn").call(data);
454
+		return myCallbackManager.getCallbackType(DataInListener.class).call(data);
444 455
 	}
445 456
 
446 457
 	/**
@@ -452,7 +463,7 @@ public class IRCParser implements Runnable {
452 463
 	 * @see com.dmdirc.parser.irc.callbacks.interfaces.IDataOut
453 464
 	 */
454 465
 	protected boolean callDataOut(final String data, final boolean fromParser) {
455
-		return myCallbackManager.getCallbackType("OnDataOut").call(data, fromParser);
466
+		return myCallbackManager.getCallbackType(DataOutListener.class).call(data, fromParser);
456 467
 	}
457 468
 
458 469
 	/**
@@ -476,7 +487,7 @@ public class IRCParser implements Runnable {
476 487
 	 * @return true if a method was called, false otherwise
477 488
 	 */
478 489
 	protected boolean callDebugInfo(final int level, final String data) {
479
-		return myCallbackManager.getCallbackType("OnDebugInfo").call(level, data);
490
+		return myCallbackManager.getCallbackType(DebugInfoListener.class).call(level, data);
480 491
 	}
481 492
 
482 493
 	/**
@@ -487,7 +498,7 @@ public class IRCParser implements Runnable {
487 498
 	 * @return true if a method was called, false otherwise
488 499
 	 */
489 500
 	protected boolean callErrorInfo(final ParserError errorInfo) {
490
-		return myCallbackManager.getCallbackType("OnErrorInfo").call(errorInfo);
501
+		return myCallbackManager.getCallbackType(ErrorInfoListener.class).call(errorInfo);
491 502
 	}
492 503
 
493 504
 	/**
@@ -498,7 +509,7 @@ public class IRCParser implements Runnable {
498 509
 	 * @return true if a method was called, false otherwise
499 510
 	 */
500 511
 	protected boolean callConnectError(final ParserError errorInfo) {
501
-		return myCallbackManager.getCallbackType("OnConnectError").call(errorInfo);
512
+		return myCallbackManager.getCallbackType(ConnectErrorListener.class).call(errorInfo);
502 513
 	}
503 514
 
504 515
 	/**
@@ -508,7 +519,7 @@ public class IRCParser implements Runnable {
508 519
 	 * @return true if a method was called, false otherwise
509 520
 	 */
510 521
 	protected boolean callSocketClosed() {
511
-		return myCallbackManager.getCallbackType("OnSocketClosed").call();
522
+		return myCallbackManager.getCallbackType(SocketCloseListener.class).call();
512 523
 	}
513 524
 
514 525
 	/**
@@ -518,7 +529,7 @@ public class IRCParser implements Runnable {
518 529
 	 * @return true if a method was called, false otherwise
519 530
 	 */
520 531
 	protected boolean callPingFailed() {
521
-		return myCallbackManager.getCallbackType("OnPingFailed").call();
532
+		return myCallbackManager.getCallbackType(PingFailureListener.class).call();
522 533
 	}
523 534
 
524 535
 	/**
@@ -528,7 +539,7 @@ public class IRCParser implements Runnable {
528 539
 	 * @return true if a method was called, false otherwise
529 540
 	 */
530 541
 	protected boolean callPingSent() {
531
-		return myCallbackManager.getCallbackType("OnPingSent").call();
542
+		return myCallbackManager.getCallbackType(PingSentListener.class).call();
532 543
 	}
533 544
 
534 545
 	/**
@@ -538,7 +549,7 @@ public class IRCParser implements Runnable {
538 549
 	 * @return true if a method was called, false otherwise
539 550
 	 */
540 551
 	protected boolean callPingSuccess() {
541
-		return myCallbackManager.getCallbackType("OnPingSuccess").call();
552
+		return myCallbackManager.getCallbackType(PingSuccessListener.class).call();
542 553
 	}
543 554
 
544 555
 	/**
@@ -556,7 +567,7 @@ public class IRCParser implements Runnable {
556 567
 		if (!h005Info.containsKey("USERMODES")) { parseUserModes(); }
557 568
 		if (!h005Info.containsKey("CHANMODES")) { parseChanModes(); }
558 569
 
559
-		return getCallbackManager().getCallbackType("OnPost005").call();
570
+		return getCallbackManager().getCallbackType(Post005Listener.class).call();
560 571
 	}
561 572
 
562 573
 	//---------------------------------------------------------------------------

+ 3
- 1
src/com/dmdirc/parser/irc/Process001.java 查看文件

@@ -22,6 +22,8 @@
22 22
 
23 23
 package com.dmdirc.parser.irc;
24 24
 
25
+import com.dmdirc.parser.interfaces.callbacks.ServerReadyListener;
26
+
25 27
 /**
26 28
  * Process a 001 message.
27 29
  */
@@ -74,7 +76,7 @@ public class Process001 extends IRCProcessor {
74 76
 	 * @return true if a method was called, false otherwise
75 77
 	 */	
76 78
 	protected boolean callServerReady() {
77
-		return getCallbackManager().getCallbackType("OnServerReady").call();
79
+		return getCallbackManager().getCallbackType(ServerReadyListener.class).call();
78 80
 	}
79 81
 	
80 82
 	/**

+ 3
- 1
src/com/dmdirc/parser/irc/Process004005.java 查看文件

@@ -22,6 +22,8 @@
22 22
 
23 23
 package com.dmdirc.parser.irc;
24 24
 
25
+import com.dmdirc.parser.interfaces.callbacks.NetworkDetectedListener;
26
+
25 27
 /**
26 28
  * Process ISUPPORT lines.
27 29
  */
@@ -132,7 +134,7 @@ public class Process004005 extends IRCProcessor {
132 134
 		final String ircdVersion = myParser.getIRCD(false);
133 135
 		final String ircdType = myParser.getIRCD(true);
134 136
 		
135
-		return getCallbackManager().getCallbackType("OnGotNetwork").call(networkName, ircdVersion, ircdType);
137
+		return getCallbackManager().getCallbackType(NetworkDetectedListener.class).call(networkName, ircdVersion, ircdType);
136 138
 	}
137 139
 	
138 140
 	/**

+ 3
- 1
src/com/dmdirc/parser/irc/Process464.java 查看文件

@@ -22,6 +22,8 @@
22 22
 
23 23
 package com.dmdirc.parser.irc;
24 24
 
25
+import com.dmdirc.parser.interfaces.callbacks.PasswordRequiredListener;
26
+
25 27
 /**
26 28
  * Process a 464 message.
27 29
  */
@@ -56,7 +58,7 @@ public class Process464 extends IRCProcessor {
56 58
 	 * @return true if a method was called, false otherwise
57 59
 	 */
58 60
 	protected boolean callPasswordRequired() {
59
-		return getCallbackManager().getCallbackType("OnPasswordRequired").call();
61
+		return getCallbackManager().getCallbackType(PasswordRequiredListener.class).call();
60 62
 	}
61 63
 	
62 64
 	/**

+ 3
- 1
src/com/dmdirc/parser/irc/ProcessAway.java 查看文件

@@ -22,6 +22,8 @@
22 22
 
23 23
 package com.dmdirc.parser.irc;
24 24
 
25
+import com.dmdirc.parser.interfaces.callbacks.AwayStateListener;
26
+
25 27
 /**
26 28
  * Process an Away/Back message.
27 29
  */
@@ -52,7 +54,7 @@ public class ProcessAway extends IRCProcessor {
52 54
 	 * @return true if a method was called, false otherwise
53 55
 	 */
54 56
 	protected boolean callAwayState(boolean currentState, String reason) {
55
-		return myParser.getCallbackManager().getCallbackType("OnAwayState").call(currentState, reason);
57
+		return myParser.getCallbackManager().getCallbackType(AwayStateListener.class).call(currentState, reason);
56 58
 	}
57 59
 	
58 60
 	/**

+ 3
- 1
src/com/dmdirc/parser/irc/ProcessInvite.java 查看文件

@@ -22,6 +22,8 @@
22 22
 
23 23
 package com.dmdirc.parser.irc;
24 24
 
25
+import com.dmdirc.parser.interfaces.callbacks.InviteListener;
26
+
25 27
 /**
26 28
  * Process an Invite Request.
27 29
  */
@@ -49,7 +51,7 @@ public class ProcessInvite extends IRCProcessor {
49 51
 	 * @return true if a method was called, false otherwise
50 52
 	 */
51 53
 	protected boolean callInvite(final String userHost, final String channel) {
52
-		return getCallbackManager().getCallbackType("OnInvite").call(userHost, channel);
54
+		return getCallbackManager().getCallbackType(InviteListener.class).call(userHost, channel);
53 55
 	}
54 56
 	
55 57
 	/**

+ 5
- 2
src/com/dmdirc/parser/irc/ProcessJoin.java 查看文件

@@ -22,6 +22,9 @@
22 22
 
23 23
 package com.dmdirc.parser.irc;
24 24
 
25
+import com.dmdirc.parser.interfaces.callbacks.ChannelJoinListener;
26
+import com.dmdirc.parser.interfaces.callbacks.ChannelSelfJoinListener;
27
+
25 28
 /**
26 29
  * Process a channel join.
27 30
  */
@@ -106,7 +109,7 @@ public class ProcessJoin extends IRCProcessor {
106 109
 	 * @return true if a method was called, false otherwise
107 110
 	 */
108 111
 	protected boolean callChannelJoin(final ChannelInfo cChannel, final ChannelClientInfo cChannelClient) {
109
-		return getCallbackManager().getCallbackType("OnChannelJoin").call(cChannel, cChannelClient);
112
+		return getCallbackManager().getCallbackType(ChannelJoinListener.class).call(cChannel, cChannelClient);
110 113
 	}
111 114
 	
112 115
 	/**
@@ -117,7 +120,7 @@ public class ProcessJoin extends IRCProcessor {
117 120
 	 * @return true if a method was called, false otherwise
118 121
 	 */
119 122
 	protected boolean callChannelSelfJoin(final ChannelInfo cChannel) {
120
-		return  getCallbackManager().getCallbackType("OnChannelSelfJoin").call(cChannel);
123
+		return  getCallbackManager().getCallbackType(ChannelSelfJoinListener.class).call(cChannel);
121 124
 	}
122 125
 	
123 126
 	/**

+ 3
- 1
src/com/dmdirc/parser/irc/ProcessKick.java 查看文件

@@ -22,6 +22,8 @@
22 22
 
23 23
 package com.dmdirc.parser.irc;
24 24
 
25
+import com.dmdirc.parser.interfaces.callbacks.ChannelKickListener;
26
+
25 27
 /**
26 28
  * Process a channel kick.
27 29
  */
@@ -88,7 +90,7 @@ public class ProcessKick extends IRCProcessor {
88 90
 	 * @return true if a method was called, false otherwise
89 91
 	 */
90 92
 	protected boolean callChannelKick(ChannelInfo cChannel, ChannelClientInfo cKickedClient, ChannelClientInfo cKickedByClient, String sReason, String sKickedByHost) {
91
-		return getCallbackManager().getCallbackType("OnChannelKick").call(cChannel, cKickedClient, cKickedByClient, sReason, sKickedByHost);
93
+		return getCallbackManager().getCallbackType(ChannelKickListener.class).call(cChannel, cKickedClient, cKickedByClient, sReason, sKickedByHost);
92 94
 	}
93 95
 	
94 96
 	/**

+ 2
- 1
src/com/dmdirc/parser/irc/ProcessListModes.java 查看文件

@@ -22,6 +22,7 @@
22 22
 
23 23
 package com.dmdirc.parser.irc;
24 24
 
25
+import com.dmdirc.parser.interfaces.callbacks.ChannelListModeListener;
25 26
 import java.util.List;
26 27
 import java.util.LinkedList;
27 28
 import java.util.Queue;
@@ -227,7 +228,7 @@ public class ProcessListModes extends IRCProcessor {
227 228
 	 * @return true if a method was called, false otherwise
228 229
 	 */
229 230
 	protected boolean callChannelGotListModes(ChannelInfo cChannel) {
230
-		return getCallbackManager().getCallbackType("OnChannelGotListModes").call(cChannel);
231
+		return getCallbackManager().getCallbackType(ChannelListModeListener.class).call(cChannel);
231 232
 	}
232 233
 	
233 234
 	/**

+ 7
- 3
src/com/dmdirc/parser/irc/ProcessMOTD.java 查看文件

@@ -22,6 +22,10 @@
22 22
 
23 23
 package com.dmdirc.parser.irc;
24 24
 
25
+import com.dmdirc.parser.interfaces.callbacks.MotdEndListener;
26
+import com.dmdirc.parser.interfaces.callbacks.MotdLineListener;
27
+import com.dmdirc.parser.interfaces.callbacks.MotdStartListener;
28
+
25 29
 /**
26 30
  * Process a MOTD Related Line.
27 31
  */
@@ -53,7 +57,7 @@ public class ProcessMOTD extends IRCProcessor {
53 57
 	 * @return true if a method was called, false otherwise
54 58
 	 */
55 59
 	protected boolean callMOTDEnd(final boolean noMOTD, final String data) {
56
-		return getCallbackManager().getCallbackType("OnMOTDEnd").call(noMOTD, data);
60
+		return getCallbackManager().getCallbackType(MotdEndListener.class).call(noMOTD, data);
57 61
 	}
58 62
 	
59 63
 	/**
@@ -64,7 +68,7 @@ public class ProcessMOTD extends IRCProcessor {
64 68
 	 * @return true if a method was called, false otherwise
65 69
 	 */
66 70
 	protected boolean callMOTDLine(final String data) {
67
-		return getCallbackManager().getCallbackType("OnMOTDLine").call(data);
71
+		return getCallbackManager().getCallbackType(MotdLineListener.class).call(data);
68 72
 	}
69 73
 	
70 74
 	/**
@@ -75,7 +79,7 @@ public class ProcessMOTD extends IRCProcessor {
75 79
 	 * @return true if a method was called, false otherwise
76 80
 	 */
77 81
 	protected boolean callMOTDStart(String data) {
78
-		return getCallbackManager().getCallbackType("OnMOTDStart").call(data);
82
+		return getCallbackManager().getCallbackType(MotdStartListener.class).call(data);
79 83
 	}
80 84
 	
81 85
 	/**

+ 30
- 15
src/com/dmdirc/parser/irc/ProcessMessage.java 查看文件

@@ -22,6 +22,21 @@
22 22
 
23 23
 package com.dmdirc.parser.irc;
24 24
 
25
+import com.dmdirc.parser.interfaces.callbacks.ChannelActionListener;
26
+import com.dmdirc.parser.interfaces.callbacks.ChannelCtcpListener;
27
+import com.dmdirc.parser.interfaces.callbacks.ChannelCtcpReplyListener;
28
+import com.dmdirc.parser.interfaces.callbacks.ChannelMessageListener;
29
+import com.dmdirc.parser.interfaces.callbacks.ChannelNoticeListener;
30
+import com.dmdirc.parser.interfaces.callbacks.PrivateActionListener;
31
+import com.dmdirc.parser.interfaces.callbacks.PrivateCtcpListener;
32
+import com.dmdirc.parser.interfaces.callbacks.PrivateCtcpReplyListener;
33
+import com.dmdirc.parser.interfaces.callbacks.PrivateMessageListener;
34
+import com.dmdirc.parser.interfaces.callbacks.PrivateNoticeListener;
35
+import com.dmdirc.parser.interfaces.callbacks.UnknownActionListener;
36
+import com.dmdirc.parser.interfaces.callbacks.UnknownCtcpListener;
37
+import com.dmdirc.parser.interfaces.callbacks.UnknownCtcpReplyListener;
38
+import com.dmdirc.parser.interfaces.callbacks.UnknownMessageListener;
39
+import com.dmdirc.parser.interfaces.callbacks.UnknownNoticeListener;
25 40
 import java.util.regex.PatternSyntaxException;
26 41
 
27 42
 /**
@@ -222,7 +237,7 @@ public class ProcessMessage extends IRCProcessor {
222 237
 	 * @return true if a method was called, false otherwise
223 238
 	 */
224 239
 	protected boolean callChannelAction(final ChannelInfo cChannel, final ChannelClientInfo cChannelClient, final String sMessage, final String sHost) {
225
-		return getCallbackManager().getCallbackType("OnChannelAction").call(cChannel, cChannelClient, sMessage, sHost);
240
+		return getCallbackManager().getCallbackType(ChannelActionListener.class).call(cChannel, cChannelClient, sMessage, sHost);
226 241
 	}
227 242
 	
228 243
 	/**
@@ -237,7 +252,7 @@ public class ProcessMessage extends IRCProcessor {
237 252
 	 * @return true if a method was called, false otherwise
238 253
 	 */
239 254
 	protected boolean callChannelCTCP(final ChannelInfo cChannel, final ChannelClientInfo cChannelClient, final String sType, final String sMessage, final String sHost) {
240
-		return getCallbackManager().getCallbackType("OnChannelCTCP").call(cChannel, cChannelClient, sType, sMessage, sHost);
255
+		return getCallbackManager().getCallbackType(ChannelCtcpListener.class).call(cChannel, cChannelClient, sType, sMessage, sHost);
241 256
 	}
242 257
 
243 258
 	/**
@@ -252,7 +267,7 @@ public class ProcessMessage extends IRCProcessor {
252 267
 	 * @return true if a method was called, false otherwise
253 268
 	 */
254 269
 	protected boolean callChannelCTCPReply(final ChannelInfo cChannel, final ChannelClientInfo cChannelClient, final String sType, final String sMessage, final String sHost) {
255
-		return getCallbackManager().getCallbackType("OnChannelCTCPReply").call(cChannel, cChannelClient, sType, sMessage, sHost);
270
+		return getCallbackManager().getCallbackType(ChannelCtcpReplyListener.class).call(cChannel, cChannelClient, sType, sMessage, sHost);
256 271
 	}
257 272
 	
258 273
 	/**
@@ -266,7 +281,7 @@ public class ProcessMessage extends IRCProcessor {
266 281
 	 * @return true if a method was called, false otherwise
267 282
 	 */
268 283
 	protected boolean callChannelMessage(final ChannelInfo cChannel, final ChannelClientInfo cChannelClient, final String sMessage, final String sHost) {
269
-		return getCallbackManager().getCallbackType("OnChannelMessage").call(cChannel, cChannelClient, sMessage, sHost);
284
+		return getCallbackManager().getCallbackType(ChannelMessageListener.class).call(cChannel, cChannelClient, sMessage, sHost);
270 285
 	}
271 286
 	
272 287
 	/**
@@ -280,7 +295,7 @@ public class ProcessMessage extends IRCProcessor {
280 295
 	 * @return true if a method was called, false otherwise
281 296
 	 */
282 297
 	protected boolean callChannelNotice(final ChannelInfo cChannel, final ChannelClientInfo cChannelClient, final String sMessage, final String sHost) {
283
-		return getCallbackManager().getCallbackType("OnChannelNotice").call(cChannel, cChannelClient, sMessage, sHost);
298
+		return getCallbackManager().getCallbackType(ChannelNoticeListener.class).call(cChannel, cChannelClient, sMessage, sHost);
284 299
 	}
285 300
 	
286 301
 	/**
@@ -322,7 +337,7 @@ public class ProcessMessage extends IRCProcessor {
322 337
 	 * @return true if a method was called, false otherwise
323 338
 	 */
324 339
 	protected boolean callPrivateAction(final String sMessage, final String sHost) {
325
-		return getCallbackManager().getCallbackType("OnPrivateAction").call(sMessage, sHost);
340
+		return getCallbackManager().getCallbackType(PrivateActionListener.class).call(sMessage, sHost);
326 341
 	}
327 342
 
328 343
 	/**
@@ -335,7 +350,7 @@ public class ProcessMessage extends IRCProcessor {
335 350
 	 * @return true if a method was called, false otherwise
336 351
 	 */
337 352
 	protected boolean callPrivateCTCP(final String sType, final String sMessage, final String sHost) {
338
-		return getCallbackManager().getCallbackType("OnPrivateCTCP").call(sType, sMessage, sHost);
353
+		return getCallbackManager().getCallbackType(PrivateCtcpListener.class).call(sType, sMessage, sHost);
339 354
 	}
340 355
 
341 356
 	/**
@@ -348,7 +363,7 @@ public class ProcessMessage extends IRCProcessor {
348 363
 	 * @return true if a method was called, false otherwise
349 364
 	 */
350 365
 	protected boolean callPrivateCTCPReply(final String sType, final String sMessage, final String sHost) {
351
-		return getCallbackManager().getCallbackType("OnPrivateCTCPReply").call(sType, sMessage, sHost);
366
+		return getCallbackManager().getCallbackType(PrivateCtcpReplyListener.class).call(sType, sMessage, sHost);
352 367
 	}
353 368
 
354 369
 	/**
@@ -360,7 +375,7 @@ public class ProcessMessage extends IRCProcessor {
360 375
 	 * @return true if a method was called, false otherwise
361 376
 	 */
362 377
 	protected boolean callPrivateMessage(final String sMessage, final String sHost) {
363
-		return getCallbackManager().getCallbackType("OnPrivateMessage").call(sMessage, sHost);
378
+		return getCallbackManager().getCallbackType(PrivateMessageListener.class).call(sMessage, sHost);
364 379
 	}
365 380
 
366 381
 	/**
@@ -372,7 +387,7 @@ public class ProcessMessage extends IRCProcessor {
372 387
 	 * @return true if a method was called, false otherwise
373 388
 	 */
374 389
 	protected boolean callPrivateNotice(final String sMessage, final String sHost) {
375
-		return getCallbackManager().getCallbackType("OnPrivateNotice").call(sMessage, sHost);
390
+		return getCallbackManager().getCallbackType(PrivateNoticeListener.class).call(sMessage, sHost);
376 391
 	}
377 392
 	
378 393
 	/**
@@ -385,7 +400,7 @@ public class ProcessMessage extends IRCProcessor {
385 400
 	 * @return true if a method was called, false otherwise
386 401
 	 */
387 402
 	protected boolean callUnknownAction(final String sMessage, final String sTarget, final String sHost) {
388
-		return getCallbackManager().getCallbackType("OnUnknownAction").call(sMessage, sTarget, sHost);
403
+		return getCallbackManager().getCallbackType(UnknownActionListener.class).call(sMessage, sTarget, sHost);
389 404
 	}
390 405
 
391 406
 	/**
@@ -399,7 +414,7 @@ public class ProcessMessage extends IRCProcessor {
399 414
 	 * @return true if a method was called, false otherwise
400 415
 	 */
401 416
 	protected boolean callUnknownCTCP(final String sType, final String sMessage, final String sTarget, final String sHost) {
402
-		return getCallbackManager().getCallbackType("OnUnknownCTCP").call(sType, sMessage, sTarget, sHost);
417
+		return getCallbackManager().getCallbackType(UnknownCtcpListener.class).call(sType, sMessage, sTarget, sHost);
403 418
 	}
404 419
 
405 420
 	/**
@@ -413,7 +428,7 @@ public class ProcessMessage extends IRCProcessor {
413 428
 	 * @return true if a method was called, false otherwise
414 429
 	 */
415 430
 	protected boolean callUnknownCTCPReply(final String sType, final String sMessage, final String sTarget, final String sHost) {
416
-		return getCallbackManager().getCallbackType("OnUnknownCTCPReply").call(sType, sMessage, sTarget, sHost);
431
+		return getCallbackManager().getCallbackType(UnknownCtcpReplyListener.class).call(sType, sMessage, sTarget, sHost);
417 432
 	}
418 433
 
419 434
 	/**
@@ -426,7 +441,7 @@ public class ProcessMessage extends IRCProcessor {
426 441
 	 * @return true if a method was called, false otherwise
427 442
 	 */
428 443
 	protected boolean callUnknownMessage(final String sMessage, final String sTarget, final String sHost) {
429
-		return getCallbackManager().getCallbackType("OnUnknownMessage").call(sMessage, sTarget, sHost);
444
+		return getCallbackManager().getCallbackType(UnknownMessageListener.class).call(sMessage, sTarget, sHost);
430 445
 	}
431 446
 
432 447
 	/**
@@ -439,7 +454,7 @@ public class ProcessMessage extends IRCProcessor {
439 454
 	 * @return true if a method was called, false otherwise
440 455
 	 */
441 456
 	protected boolean callUnknownNotice(final String sMessage, final String sTarget, final String sHost) {
442
-		return getCallbackManager().getCallbackType("OnUnknownNotice").call(sMessage, sTarget, sHost);
457
+		return getCallbackManager().getCallbackType(UnknownNoticeListener.class).call(sMessage, sTarget, sHost);
443 458
 	}
444 459
 
445 460
 	

+ 12
- 6
src/com/dmdirc/parser/irc/ProcessMode.java 查看文件

@@ -22,6 +22,12 @@
22 22
 
23 23
 package com.dmdirc.parser.irc;
24 24
 
25
+import com.dmdirc.parser.interfaces.callbacks.ChannelModeChangeListener;
26
+import com.dmdirc.parser.interfaces.callbacks.ChannelNonUserModeChangeListener;
27
+import com.dmdirc.parser.interfaces.callbacks.ChannelSingleModeChangeListener;
28
+import com.dmdirc.parser.interfaces.callbacks.ChannelUserModeChangeListener;
29
+import com.dmdirc.parser.interfaces.callbacks.UserModeChangeListener;
30
+import com.dmdirc.parser.interfaces.callbacks.UserModeDiscoveryListener;
25 31
 import com.dmdirc.parser.irc.callbacks.CallbackObject;
26 32
 import java.util.Calendar;
27 33
 
@@ -91,8 +97,8 @@ public class ProcessMode extends IRCProcessor {
91 97
 		CallbackObject cbNonUser = null;
92 98
 
93 99
 		if (!sParam.equals("324")) {
94
-			cbSingle = getCallbackManager().getCallbackType("OnChannelSingleModeChanged");
95
-			cbNonUser = getCallbackManager().getCallbackType("OnChannelNonUserModeChanged");
100
+			cbSingle = getCallbackManager().getCallbackType(ChannelSingleModeChangeListener.class);
101
+			cbNonUser = getCallbackManager().getCallbackType(ChannelNonUserModeChangeListener.class);
96 102
 		}
97 103
 		
98 104
 		iChannel = getChannelInfo(sChannelName);
@@ -274,7 +280,7 @@ public class ProcessMode extends IRCProcessor {
274 280
 	 * @return true if a method was called, false otherwise
275 281
 	 */
276 282
 	protected boolean callChannelModeChanged(ChannelInfo cChannel, ChannelClientInfo cChannelClient, String sHost, String sModes) {
277
-		return getCallbackManager().getCallbackType("OnChannelModeChanged").call(cChannel, cChannelClient, sHost, sModes);
283
+		return getCallbackManager().getCallbackType(ChannelModeChangeListener.class).call(cChannel, cChannelClient, sHost, sModes);
278 284
 	}
279 285
 	
280 286
 	/**
@@ -289,7 +295,7 @@ public class ProcessMode extends IRCProcessor {
289 295
 	 * @return true if a method was called, false otherwise
290 296
 	 */
291 297
 	protected boolean callChannelUserModeChanged(ChannelInfo cChannel, ChannelClientInfo cChangedClient, ChannelClientInfo cSetByClient, String sHost, String sMode) {
292
-		return getCallbackManager().getCallbackType("OnChannelUserModeChanged").call(cChannel, cChangedClient, cSetByClient, sHost, sMode);
298
+		return getCallbackManager().getCallbackType(ChannelUserModeChangeListener.class).call(cChannel, cChangedClient, cSetByClient, sHost, sMode);
293 299
 	}
294 300
 	
295 301
 	/**
@@ -302,7 +308,7 @@ public class ProcessMode extends IRCProcessor {
302 308
 	 * @return true if a method was called, false otherwise
303 309
 	 */
304 310
 	protected boolean callUserModeChanged(ClientInfo cClient, String sSetby, String sModes) {
305
-		return getCallbackManager().getCallbackType("OnUserModeChanged").call(cClient, sSetby, sModes);
311
+		return getCallbackManager().getCallbackType(UserModeChangeListener.class).call(cClient, sSetby, sModes);
306 312
 	}
307 313
 	
308 314
 	/**
@@ -314,7 +320,7 @@ public class ProcessMode extends IRCProcessor {
314 320
 	 * @return true if a method was called, false otherwise
315 321
 	 */
316 322
 	protected boolean callUserModeDiscovered(ClientInfo cClient, String sModes) {
317
-		return getCallbackManager().getCallbackType("OnUserModeDiscovered").call(cClient, sModes);
323
+		return getCallbackManager().getCallbackType(UserModeDiscoveryListener.class).call(cClient, sModes);
318 324
 	}	
319 325
 	
320 326
 	/**

+ 3
- 1
src/com/dmdirc/parser/irc/ProcessNames.java 查看文件

@@ -22,6 +22,8 @@
22 22
 
23 23
 package com.dmdirc.parser.irc;
24 24
 
25
+import com.dmdirc.parser.interfaces.callbacks.ChannelNamesListener;
26
+
25 27
 /**
26 28
  * Process a Names reply.
27 29
  */
@@ -106,7 +108,7 @@ public class ProcessNames extends IRCProcessor {
106 108
 	 * @return true if a method was called, false otherwise
107 109
 	 */
108 110
 	protected boolean callChannelGotNames(ChannelInfo cChannel) {
109
-		return getCallbackManager().getCallbackType("OnChannelGotNames").call(cChannel);
111
+		return getCallbackManager().getCallbackType(ChannelNamesListener.class).call(cChannel);
110 112
 	}
111 113
 	
112 114
 	/**

+ 5
- 2
src/com/dmdirc/parser/irc/ProcessNick.java 查看文件

@@ -22,6 +22,9 @@
22 22
 
23 23
 package com.dmdirc.parser.irc;
24 24
 
25
+import com.dmdirc.parser.interfaces.callbacks.ChannelNickChangeListener;
26
+import com.dmdirc.parser.interfaces.callbacks.NickChangeListener;
27
+
25 28
 /**
26 29
  * Process a Nick change.
27 30
  */
@@ -88,7 +91,7 @@ public class ProcessNick extends IRCProcessor {
88 91
 	 * @return true if a method was called, false otherwise
89 92
 	 */
90 93
 	protected boolean callChannelNickChanged(ChannelInfo cChannel, ChannelClientInfo cChannelClient, String sOldNick) {
91
-		return getCallbackManager().getCallbackType("OnChannelNickChanged").call(cChannel, cChannelClient, sOldNick);
94
+		return getCallbackManager().getCallbackType(ChannelNickChangeListener.class).call(cChannel, cChannelClient, sOldNick);
92 95
 	}
93 96
 	
94 97
 	/**
@@ -100,7 +103,7 @@ public class ProcessNick extends IRCProcessor {
100 103
 	 * @return true if a method was called, false otherwise
101 104
 	 */
102 105
 	protected boolean callNickChanged(ClientInfo cClient, String sOldNick) {
103
-		return getCallbackManager().getCallbackType("OnNickChanged").call(cClient, sOldNick);
106
+		return getCallbackManager().getCallbackType(NickChangeListener.class).call(cClient, sOldNick);
104 107
 	}
105 108
 	
106 109
 	/**

+ 3
- 1
src/com/dmdirc/parser/irc/ProcessNickInUse.java 查看文件

@@ -22,6 +22,8 @@
22 22
 
23 23
 package com.dmdirc.parser.irc;
24 24
 
25
+import com.dmdirc.parser.interfaces.callbacks.NickInUseListener;
26
+
25 27
 /**
26 28
  * Process a NickInUse message.
27 29
  * Parser implements handling of this if Pre-001 and no other handler found,
@@ -73,7 +75,7 @@ public class ProcessNickInUse extends IRCProcessor {
73 75
 	 * @return true if a method was called, false otherwise
74 76
 	 */
75 77
 	protected boolean callNickInUse(final String nickname) {
76
-		return getCallbackManager().getCallbackType("OnNickInUse").call(nickname);
78
+		return getCallbackManager().getCallbackType(NickInUseListener.class).call(nickname);
77 79
 	}
78 80
 	
79 81
 	/**

+ 3
- 1
src/com/dmdirc/parser/irc/ProcessNoticeAuth.java 查看文件

@@ -22,6 +22,8 @@
22 22
 
23 23
 package com.dmdirc.parser.irc;
24 24
 
25
+import com.dmdirc.parser.interfaces.callbacks.AuthNoticeListener;
26
+
25 27
 /**
26 28
  * Process a NoticeAuth message.
27 29
  */
@@ -45,7 +47,7 @@ public class ProcessNoticeAuth extends IRCProcessor {
45 47
 	 * @return true if a method was called, false otherwise
46 48
 	 */
47 49
 	protected boolean callNoticeAuth(final String data) {
48
-		return getCallbackManager().getCallbackType("OnNoticeAuth").call(data);
50
+		return getCallbackManager().getCallbackType(AuthNoticeListener.class).call(data);
49 51
 	}
50 52
 	
51 53
 	/**

+ 3
- 1
src/com/dmdirc/parser/irc/ProcessPart.java 查看文件

@@ -22,6 +22,8 @@
22 22
 
23 23
 package com.dmdirc.parser.irc;
24 24
 
25
+import com.dmdirc.parser.interfaces.callbacks.ChannelPartListener;
26
+
25 27
 /**
26 28
  * Process a channel part.
27 29
  */
@@ -84,7 +86,7 @@ public class ProcessPart extends IRCProcessor {
84 86
 	 * @return true if a method was called, false otherwise
85 87
 	 */
86 88
 	protected boolean callChannelPart(final ChannelInfo cChannel, final ChannelClientInfo cChannelClient, final String sReason) {
87
-		return getCallbackManager().getCallbackType("OnChannelPart").call(cChannel, cChannelClient, sReason);
89
+		return getCallbackManager().getCallbackType(ChannelPartListener.class).call(cChannel, cChannelClient, sReason);
88 90
 	}
89 91
 	
90 92
 	/**

+ 4
- 2
src/com/dmdirc/parser/irc/ProcessQuit.java 查看文件

@@ -22,6 +22,8 @@
22 22
 
23 23
 package com.dmdirc.parser.irc;
24 24
 
25
+import com.dmdirc.parser.interfaces.callbacks.ChannelQuitListener;
26
+import com.dmdirc.parser.interfaces.callbacks.QuitListener;
25 27
 import java.util.ArrayList;
26 28
 
27 29
 /**
@@ -87,7 +89,7 @@ public class ProcessQuit extends IRCProcessor {
87 89
 	 * @return true if a method was called, false otherwise
88 90
 	 */
89 91
 	protected boolean callChannelQuit(final ChannelInfo cChannel, final ChannelClientInfo cChannelClient, final String sReason) {
90
-		return getCallbackManager().getCallbackType("OnChannelQuit").call(cChannel, cChannelClient, sReason);
92
+		return getCallbackManager().getCallbackType(ChannelQuitListener.class).call(cChannel, cChannelClient, sReason);
91 93
 	}
92 94
 	
93 95
 	/**
@@ -99,7 +101,7 @@ public class ProcessQuit extends IRCProcessor {
99 101
 	 * @return true if a method was called, false otherwise
100 102
 	 */
101 103
 	protected boolean callQuit(final ClientInfo cClient, final String sReason) {
102
-		return getCallbackManager().getCallbackType("OnQuit").call(cClient, sReason);
104
+		return getCallbackManager().getCallbackType(QuitListener.class).call(cClient, sReason);
103 105
 	}
104 106
 	
105 107
 	/**

+ 3
- 1
src/com/dmdirc/parser/irc/ProcessTopic.java 查看文件

@@ -22,6 +22,8 @@
22 22
 
23 23
 package com.dmdirc.parser.irc;
24 24
 
25
+import com.dmdirc.parser.interfaces.callbacks.ChannelTopicListener;
26
+
25 27
 /**
26 28
  * Process a topic change.
27 29
  */
@@ -75,7 +77,7 @@ public class ProcessTopic extends IRCProcessor {
75 77
 	 * @return true if a method was called, false otherwise
76 78
 	 */
77 79
 	protected boolean callChannelTopic(final ChannelInfo cChannel, final boolean bIsJoinTopic) {
78
-		return getCallbackManager().getCallbackType("OnChannelTopic").call(cChannel, bIsJoinTopic);
80
+		return getCallbackManager().getCallbackType(ChannelTopicListener.class).call(cChannel, bIsJoinTopic);
79 81
 	}
80 82
 	
81 83
 	/**

+ 7
- 3
src/com/dmdirc/parser/irc/ProcessWallops.java 查看文件

@@ -22,6 +22,10 @@
22 22
 
23 23
 package com.dmdirc.parser.irc;
24 24
 
25
+import com.dmdirc.parser.interfaces.callbacks.WallDesyncListener;
26
+import com.dmdirc.parser.interfaces.callbacks.WallopListener;
27
+import com.dmdirc.parser.interfaces.callbacks.WalluserListener;
28
+
25 29
 /**
26 30
  * Process a WALLOPS Message.
27 31
  */
@@ -62,7 +66,7 @@ public class ProcessWallops extends IRCProcessor {
62 66
 	 * @return true if a method was called, false otherwise
63 67
 	 */
64 68
 	protected boolean callWallop(final String message, final String host) {
65
-		return getCallbackManager().getCallbackType("OnWallop").call(message, host);
69
+		return getCallbackManager().getCallbackType(WallopListener.class).call(message, host);
66 70
 	}
67 71
 	
68 72
 	/**
@@ -74,7 +78,7 @@ public class ProcessWallops extends IRCProcessor {
74 78
 	 * @return true if a method was called, false otherwise
75 79
 	 */
76 80
 	protected boolean callWalluser(final String message, final String host) {
77
-		return getCallbackManager().getCallbackType("OnWalluser").call(message, host);
81
+		return getCallbackManager().getCallbackType(WalluserListener.class).call(message, host);
78 82
 	}
79 83
 	
80 84
 	/**
@@ -86,7 +90,7 @@ public class ProcessWallops extends IRCProcessor {
86 90
 	 * @return true if a method was called, false otherwise
87 91
 	 */
88 92
 	protected boolean callWallDesync(final String message, final String host) {
89
-		return getCallbackManager().getCallbackType("OnWallDesync").call(message, host);
93
+		return getCallbackManager().getCallbackType(WallDesyncListener.class).call(message, host);
90 94
 	}
91 95
 	
92 96
 	

+ 7
- 3
src/com/dmdirc/parser/irc/ProcessWho.java 查看文件

@@ -22,6 +22,10 @@
22 22
 
23 23
 package com.dmdirc.parser.irc;
24 24
 
25
+import com.dmdirc.parser.interfaces.callbacks.AwayStateListener;
26
+import com.dmdirc.parser.interfaces.callbacks.ChannelOtherAwayStateListener;
27
+import com.dmdirc.parser.interfaces.callbacks.OtherAwayStateListener;
28
+
25 29
 /**
26 30
  * Process a /who reply.
27 31
  */
@@ -88,7 +92,7 @@ public class ProcessWho extends IRCProcessor {
88 92
 	 * @return true if a method was called, false otherwise
89 93
 	 */
90 94
 	protected boolean callAwayState(boolean currentState, String reason) {
91
-		return getCallbackManager().getCallbackType("OnAwayState").call(currentState, reason);
95
+		return getCallbackManager().getCallbackType(AwayStateListener.class).call(currentState, reason);
92 96
 	}
93 97
 	
94 98
 	/**
@@ -100,7 +104,7 @@ public class ProcessWho extends IRCProcessor {
100 104
 	 * @return true if a method was called, false otherwise
101 105
 	 */
102 106
 	protected boolean callAwayStateOther(final ClientInfo client, final boolean state) {
103
-		return getCallbackManager().getCallbackType("OnAwayStateOther").call(client, state);
107
+		return getCallbackManager().getCallbackType(OtherAwayStateListener.class).call(client, state);
104 108
 	}
105 109
 	
106 110
 	/**
@@ -113,7 +117,7 @@ public class ProcessWho extends IRCProcessor {
113 117
 	 * @return true if a method was called, false otherwise
114 118
 	 */
115 119
 	protected boolean callChannelAwayStateOther(final ChannelInfo channel, final ChannelClientInfo channelClient, final boolean state) {
116
-		return getCallbackManager().getCallbackType("OnChannelAwayStateOther").call(channel, channelClient, state);
120
+		return getCallbackManager().getCallbackType(ChannelOtherAwayStateListener.class).call(channel, channelClient, state);
117 121
 	}
118 122
 	
119 123
 	/**

+ 2
- 1
src/com/dmdirc/parser/irc/ProcessingManager.java 查看文件

@@ -22,6 +22,7 @@
22 22
 
23 23
 package com.dmdirc.parser.irc;
24 24
 
25
+import com.dmdirc.parser.interfaces.callbacks.NumericListener;
25 26
 import java.util.Hashtable;
26 27
 
27 28
 /**
@@ -213,7 +214,7 @@ public class ProcessingManager {
213 214
 	 * @return true if a method was called, false otherwise
214 215
 	 */
215 216
 	protected boolean callNumeric(final int numeric, final String[] token) {
216
-		return myParser.getCallbackManager().getCallbackType("OnNumeric").call(numeric, token);
217
+		return myParser.getCallbackManager().getCallbackType(NumericListener.class).call(numeric, token);
217 218
 	}
218 219
 
219 220
 }

+ 184
- 160
src/com/dmdirc/parser/irc/callbacks/CallbackManager.java 查看文件

@@ -19,7 +19,6 @@
19 19
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20 20
  * SOFTWARE.
21 21
  */
22
-
23 22
 package com.dmdirc.parser.irc.callbacks;
24 23
 
25 24
 import com.dmdirc.parser.interfaces.callbacks.*;
@@ -37,10 +36,12 @@ import java.util.Map;
37 36
 public final class CallbackManager {
38 37
 
39 38
     private static final Class[] CLASSES = {
40
-        AwayStateListener.class, OtherAwayStateListener.class, ChannelOtherAwayStateListener.class,
41
-        ChannelActionListener.class, ChannelCtcpListener.class, ChannelCtcpReplyListener.class,
42
-        ChannelListModeListener.class, ChannelNamesListener.class, ChannelJoinListener.class,
43
-        ChannelKickListener.class, ChannelMessageListener.class, ChannelModeChangeListener.class,
39
+        AwayStateListener.class, OtherAwayStateListener.class,
40
+        ChannelOtherAwayStateListener.class, ChannelActionListener.class,
41
+        ChannelCtcpListener.class, ChannelCtcpReplyListener.class,
42
+        ChannelListModeListener.class, ChannelNamesListener.class,
43
+        ChannelJoinListener.class, ChannelKickListener.class,
44
+        ChannelMessageListener.class, ChannelModeChangeListener.class,
44 45
         ChannelNickChangeListener.class, ChannelNonUserModeChangeListener.class,
45 46
 	ChannelModeMessage.class, ChannelModeNotice.class,
46 47
         ChannelNoticeListener.class, ChannelPartListener.class, ChannelQuitListener.class,
@@ -59,20 +60,20 @@ public final class CallbackManager {
59 60
         WallDesyncListener.class, WallopListener.class, WalluserListener.class,
60 61
     };
61 62
 
62
-	/** Reference to the parser object that owns this CallbackManager. */
63
-	IRCParser myParser;
64
-	
65
-	/** Hashtable used to store the different types of callback known. */
66
-	private final Map<String, CallbackObject> callbackHash = new Hashtable<String, CallbackObject>();
67
-	
68
-	/**
69
-	 * Constructor to create a CallbackManager.
70
-	 *
71
-	 * @param parser IRCParser that owns this callback manager.
72
-	 */
73
-	public CallbackManager(final IRCParser parser) {
74
-		myParser = parser;
75
-		
63
+    /** Reference to the parser object that owns this CallbackManager. */
64
+    IRCParser myParser;
65
+    /** Hashtable used to store the different types of callback known. */
66
+    private final Map<Class<? extends CallbackInterface>, CallbackObject> callbackHash
67
+            = new Hashtable<Class<? extends CallbackInterface>, CallbackObject>();
68
+
69
+    /**
70
+     * Constructor to create a CallbackManager.
71
+     *
72
+     * @param parser IRCParser that owns this callback manager.
73
+     */
74
+    public CallbackManager(final IRCParser parser) {
75
+        myParser = parser;
76
+
76 77
         for (Class<?> type : CLASSES) {
77 78
             if (type.isAnnotationPresent(SpecificCallback.class)) {
78 79
                 addCallbackType(new CallbackObjectSpecific(myParser, this,
@@ -82,146 +83,169 @@ public final class CallbackManager {
82 83
                         type.asSubclass(CallbackInterface.class)));
83 84
             }
84 85
         }
85
-	}
86
-
87
-	/**
88
-	 * Add new callback type.
89
-	 *
90
-	 * @param callback CallbackObject subclass for the callback.
91
-	 * @return if adding succeeded or not.
92
-	 */
93
-	public boolean addCallbackType(final CallbackObject callback) {
94
-		if (!callbackHash.containsKey(callback.getLowerName())) {
95
-			callbackHash.put(callback.getLowerName(), callback);
96
-			return true;
97
-		}
98
-		return false;
99
-	}
100
-	
101
-	/**
102
-	 * Remove a callback type.
103
-	 *
104
-	 * @param callback CallbackObject subclass to remove.
105
-	 * @return if removal succeeded or not.
106
-	 */
107
-	public boolean delCallbackType(final CallbackObject callback) {
108
-		if (callbackHash.containsKey(callback.getLowerName())) {
109
-			callbackHash.remove(callback.getLowerName());
110
-			return true;
111
-		}
112
-		return false;
113
-	}
114
-	
115
-	/**
116
-	 * Get reference to callback object.
117
-	 *
118
-	 * @param callbackName Name of callback object.
119
-	 * @return CallbackObject returns the callback object for this type
120
-	 */
121
-	public CallbackObject getCallbackType(final String callbackName) {
122
-		if (!callbackHash.containsKey(callbackName.toLowerCase())) {
123
-			throw new CallbackNotFoundException("Callback not found: " + callbackName);
124
-		}
125
-		
126
-		return callbackHash.get(callbackName.toLowerCase());
127
-	}
128
-	
129
-	/**
130
-	 * Remove all callbacks associated with a specific object.
131
-	 *
132
-	 * @param o instance of ICallbackInterface to remove.
133
-	 */
134
-	public void delAllCallback(final CallbackInterface o) {
135
-		for (CallbackObject cb : callbackHash.values()) {
136
-			if (cb != null) { cb.del(o); }
137
-		}
138
-	}
139
-	
140
-	/**
141
-	 * Add all callbacks.
142
-	 *
143
-	 * @param o instance of ICallbackInterface to add.
144
-	 */
145
-	public void addAllCallback(final CallbackInterface o) {
146
-		for (CallbackObject cb : callbackHash.values()) {
147
-			if (cb != null) { cb.add(o); }
148
-		}
149
-	}
150
-	
151
-	/**
152
-	 * Add a callback.
153
- 	 * This method will throw a CallbackNotFoundException if the callback does not exist.
154
-	 *
155
-	 * @param callbackName Name of callback object.
156
-	 * @param o instance of ICallbackInterface to add.
157
-	 * @throws CallbackNotFoundException If callback is not found.
158
-	 * @throws NullPointerException If 'o' is null
159
-	 */
160
-	public void addCallback(final String callbackName, final CallbackInterface o) throws CallbackNotFoundException {
161
-		if (o == null) {
162
-			throw new NullPointerException("CallbackInterface is null");
163
-		}
164
-		
165
-		final CallbackObject cb = getCallbackType(callbackName);
166
-		
167
-		if (cb != null) { cb.add(o); }
168
-	}
169
-	
170
-	/**
171
-	 * Add a callback with a specific target.
172
- 	 * This method will throw a CallbackNotFoundException if the callback does not exist.
173
-	 *
174
-	 * @param callbackName Name of callback object.
175
-	 * @param o instance of ICallbackInterface to add.
176
-	 * @param target Parameter to specify that a callback should only fire for specific things
177
-	 * @throws CallbackNotFoundException If callback is not found.
178
-	 * @throws NullPointerException If 'o' is null
179
-	 */
180
-	public void addCallback(final String callbackName, final CallbackInterface o, final String target) throws CallbackNotFoundException {
181
-		if (o == null) { throw new NullPointerException("CallbackInterface is null"); }
182
-		((CallbackObjectSpecific) getCallbackType(callbackName)).add(o,target);
183
-	}
184
-	
185
-	/**
186
-	 * Add a callback without an exception.
187
-	 * This should be used if a callback is not essential for execution (ie the DebugOut callback)
188
-	 *
189
-	 * @param callbackName Name of callback object.
190
-	 * @param o instance of ICallbackInterface to add.
191
-	 * @return true/false if the callback was added or not.
192
-	 */
193
-	public boolean addNonCriticalCallback(final String callbackName, final CallbackInterface o)  {
194
-		try {
195
-			addCallback(callbackName, o);
196
-			return true;
197
-		} catch (CallbackNotFoundException e) { return false; }
198
-	}
199
-	
200
-	/**
201
-	 * Add a callback with a specific target.
202
-	 * This should be used if a callback is not essential for execution
203
-	 *
204
-	 * @param callbackName Name of callback object.
205
-	 * @param o instance of ICallbackInterface to add.
206
-	 * @param target Parameter to specify that a callback should only fire for specific things
207
-	 * @return true/false if the callback was added or not.
208
-	 */
209
-	public boolean addNonCriticalCallback(final String callbackName, final CallbackInterface o, final String target) {
210
-		try {
211
-			addCallback(callbackName, o, target);
212
-			return true;
213
-		} catch (CallbackNotFoundException e) { return false;	}
214
-	}
215
-	
216
-	
217
-	/**
218
-	 * Remove a callback.
219
-	 *
220
-	 * @param callbackName Name of callback object.
221
-	 * @param o instance of ICallbackInterface to remove.
222
-	 */
223
-	public void delCallback(final String callbackName, final CallbackInterface o) {
224
-		getCallbackType(callbackName).del(o);
225
-	}
86
+    }
87
+
88
+    /**
89
+     * Add new callback type.
90
+     *
91
+     * @param callback CallbackObject subclass for the callback.
92
+     * @return if adding succeeded or not.
93
+     */
94
+    public boolean addCallbackType(final CallbackObject callback) {
95
+        if (!callbackHash.containsKey(callback.getType())) {
96
+            callbackHash.put(callback.getType(), callback);
97
+            return true;
98
+        }
99
+
100
+        return false;
101
+    }
102
+
103
+    /**
104
+     * Remove a callback type.
105
+     *
106
+     * @param callback CallbackObject subclass to remove.
107
+     * @return if removal succeeded or not.
108
+     */
109
+    public boolean delCallbackType(final CallbackObject callback) {
110
+        if (callbackHash.containsKey(callback.getType())) {
111
+            callbackHash.remove(callback.getType());
112
+            return true;
113
+        }
114
+
115
+        return false;
116
+    }
117
+
118
+    /**
119
+     * Get reference to callback object.
120
+     *
121
+     * @param callback Name of type of callback object.
122
+     * @return CallbackObject returns the callback object for this type
123
+     */
124
+    public CallbackObject getCallbackType(final Class<? extends CallbackInterface> callback) {
125
+        if (!callbackHash.containsKey(callback)) {
126
+            throw new CallbackNotFoundException("Callback not found: " + callback.getName());
127
+        }
128
+
129
+        return callbackHash.get(callback);
130
+    }
131
+
132
+    /**
133
+     * Remove all callbacks associated with a specific object.
134
+     *
135
+     * @param o instance of ICallbackInterface to remove.
136
+     */
137
+    public void delAllCallback(final CallbackInterface o) {
138
+        for (CallbackObject cb : callbackHash.values()) {
139
+            if (cb != null) {
140
+                cb.del(o);
141
+            }
142
+        }
143
+    }
144
+
145
+    /**
146
+     * Add all callbacks.
147
+     *
148
+     * @param o instance of ICallbackInterface to add.
149
+     */
150
+    public void addAllCallback(final CallbackInterface o) {
151
+        for (CallbackObject cb : callbackHash.values()) {
152
+            if (cb != null) {
153
+                cb.add(o);
154
+            }
155
+        }
156
+    }
157
+
158
+    /**
159
+     * Add a callback.
160
+     * This method will throw a CallbackNotFoundException if the callback does not exist.
161
+     *
162
+     * @param <T> The type of callback
163
+     * @param callback Type of callback object
164
+     * @param o instance of ICallbackInterface to add.
165
+     * @throws CallbackNotFoundException If callback is not found.
166
+     * @throws NullPointerException If 'o' is null
167
+     */
168
+    public <T extends CallbackInterface> void addCallback(
169
+            final Class<T> callback, final T o) throws CallbackNotFoundException {
170
+        if (o == null) {
171
+            throw new NullPointerException("CallbackInterface is null");
172
+        }
173
+
174
+        final CallbackObject cb = getCallbackType(callback);
175
+
176
+        if (cb != null) {
177
+            cb.add(o);
178
+        }
179
+    }
180
+
181
+    /**
182
+     * Add a callback with a specific target.
183
+     * This method will throw a CallbackNotFoundException if the callback does not exist.
184
+     *
185
+     * @param <T> The type of callback
186
+     * @param callback Type of callback object.
187
+     * @param o instance of ICallbackInterface to add.
188
+     * @param target Parameter to specify that a callback should only fire for specific things
189
+     * @throws CallbackNotFoundException If callback is not found.
190
+     * @throws NullPointerException If 'o' is null
191
+     */
192
+    public <T extends CallbackInterface> void addCallback(
193
+            final Class<T> callback,
194
+            final T o, final String target) throws CallbackNotFoundException {
195
+        if (o == null) {
196
+            throw new NullPointerException("CallbackInterface is null");
197
+        }
198
+        
199
+        ((CallbackObjectSpecific) getCallbackType(callback)).add(o, target);
200
+    }
201
+
202
+    /**
203
+     * Add a callback without an exception.
204
+     * This should be used if a callback is not essential for execution (ie the DebugOut callback)
205
+     *
206
+     * @param <T> The type of callback object
207
+     * @param callback Type of callback object.
208
+     * @param o instance of ICallbackInterface to add.
209
+     * @return true/false if the callback was added or not.
210
+     */
211
+    public <T extends CallbackInterface> boolean addNonCriticalCallback(
212
+            final Class<T> callback, final T o) {
213
+        try {
214
+            addCallback(callback, o);
215
+            return true;
216
+        } catch (CallbackNotFoundException e) {
217
+            return false;
218
+        }
219
+    }
220
+
221
+    /**
222
+     * Add a callback with a specific target.
223
+     * This should be used if a callback is not essential for execution
224
+     *
225
+     * @param <T> The type of callback
226
+     * @param callback Type of callback object.
227
+     * @param o instance of ICallbackInterface to add.
228
+     * @param target Parameter to specify that a callback should only fire for specific things
229
+     * @return true/false if the callback was added or not.
230
+     */
231
+    public <T extends CallbackInterface> boolean addNonCriticalCallback(
232
+            final Class<T> callback, final T o, final String target) {
233
+        try {
234
+            addCallback(callback, o, target);
235
+            return true;
236
+        } catch (CallbackNotFoundException e) {
237
+            return false;
238
+        }
239
+    }
226 240
 
241
+    /**
242
+     * Remove a callback.
243
+     *
244
+     * @param callback Type of callback object.
245
+     * @param o instance of ICallbackInterface to remove.
246
+     */
247
+    public void delCallback(final Class<? extends CallbackInterface> callback,
248
+            final CallbackInterface o) {
249
+        getCallbackType(callback).del(o);
250
+    }
227 251
 }

+ 12
- 17
src/com/dmdirc/parser/irc/callbacks/CallbackObject.java 查看文件

@@ -26,6 +26,7 @@ import com.dmdirc.parser.irc.IRCParser;
26 26
 import com.dmdirc.parser.irc.ParserError;
27 27
 import com.dmdirc.parser.interfaces.callbacks.CallbackInterface;
28 28
 
29
+import com.dmdirc.parser.interfaces.callbacks.ErrorInfoListener;
29 30
 import java.lang.annotation.Annotation;
30 31
 import java.lang.reflect.Constructor;
31 32
 import java.lang.reflect.InvocationTargetException;
@@ -96,7 +97,7 @@ public class CallbackObject {
96 97
 	 * @return true if error call succeeded, false otherwise
97 98
 	 */
98 99
 	protected final boolean callErrorInfo(final ParserError errorInfo) {
99
-		return myManager.getCallbackType("OnErrorInfo").call(errorInfo);
100
+		return myManager.getCallbackType(ErrorInfoListener.class).call(errorInfo);
100 101
 	}
101 102
 	
102 103
 	/**
@@ -112,23 +113,17 @@ public class CallbackObject {
112 113
 	 * @param eMethod Object to remove callback to.
113 114
 	 */
114 115
 	public void del(final CallbackInterface eMethod) { delCallback(eMethod); }
115
-	
116
-	/**
117
-	 * Get the name for this callback.
118
-	 *
119
-	 * @return Name of callback
120
-	 */
121
-	public String getName() {
122
-		return "On" + type.getSimpleName().substring(1); // Trim the 'I'
123
-	}
124
-	
125
-	/**
126
-	 * Get the name for this callback in lowercase.
127
-	 *
128
-	 * @return Name of callback, in lowercase
129
-	 */
130
-	public final String getLowerName() { return this.getName().toLowerCase(); }
131 116
 
117
+    /**
118
+     * Retrieves the type of callback that this callback object is for.
119
+     *
120
+     * @return This object's type
121
+     * @since 0.6.3m2
122
+     */
123
+    public Class<? extends CallbackInterface> getType() {
124
+        return type;
125
+    }
126
+	
132 127
     /**
133 128
      * Actually calls this callback. The specified arguments must match those
134 129
      * specified in the callback's interface, or an error will be raised.

+ 23
- 15
test/com/dmdirc/parser/irc/IRCParserTest.java 查看文件

@@ -31,11 +31,19 @@ import com.dmdirc.harness.parser.TestIServerError;
31 31
 import com.dmdirc.harness.parser.TestIPost005;
32 32
 import com.dmdirc.harness.parser.TestIPrivateMessage;
33 33
 import com.dmdirc.harness.parser.TestIPrivateAction;
34
+import com.dmdirc.parser.interfaces.callbacks.AuthNoticeListener;
34 35
 import com.dmdirc.parser.irc.callbacks.CallbackNotFoundException;
35 36
 import com.dmdirc.parser.interfaces.callbacks.AwayStateListener;
36 37
 import com.dmdirc.parser.interfaces.callbacks.ChannelKickListener;
37 38
 
39
+import com.dmdirc.parser.interfaces.callbacks.ConnectErrorListener;
38 40
 import com.dmdirc.parser.interfaces.callbacks.ErrorInfoListener;
41
+import com.dmdirc.parser.interfaces.callbacks.NumericListener;
42
+import com.dmdirc.parser.interfaces.callbacks.Post005Listener;
43
+import com.dmdirc.parser.interfaces.callbacks.PrivateActionListener;
44
+import com.dmdirc.parser.interfaces.callbacks.PrivateCtcpListener;
45
+import com.dmdirc.parser.interfaces.callbacks.PrivateMessageListener;
46
+import com.dmdirc.parser.interfaces.callbacks.ServerErrorListener;
39 47
 import java.util.Arrays;
40 48
 import java.util.List;
41 49
 
@@ -55,7 +63,7 @@ public class IRCParserTest {
55 63
 
56 64
         try {
57 65
             final IRCParser myParser = new IRCParser();
58
-            myParser.getCallbackManager().addCallback("non-existant", mock(AwayStateListener.class));
66
+            myParser.getCallbackManager().addCallback(null, mock(AwayStateListener.class));
59 67
         } catch (CallbackNotFoundException ex) {
60 68
             res = true;
61 69
         }
@@ -69,7 +77,7 @@ public class IRCParserTest {
69 77
         final ErrorInfoListener error = mock(ErrorInfoListener.class);
70 78
 
71 79
         final TestParser myParser = new TestParser();
72
-        myParser.getCallbackManager().addCallback("onErrorInfo", error);
80
+        myParser.getCallbackManager().addCallback(ErrorInfoListener.class, error);
73 81
         myParser.injectConnectionStrings();
74 82
         myParser.nick = "nick2";
75 83
         myParser.injectConnectionStrings();
@@ -86,7 +94,7 @@ public class IRCParserTest {
86 94
         si.setUseSocks(true);
87 95
         
88 96
         final IRCParser myParser = new IRCParser(si);
89
-        myParser.getCallbackManager().addCallback("onConnectError", tice);
97
+        myParser.getCallbackManager().addCallback(ConnectErrorListener.class, tice);
90 98
         myParser.setBindIP("0.0.0.0");
91 99
         myParser.run();
92 100
         
@@ -168,7 +176,7 @@ public class IRCParserTest {
168 176
         final TestIServerError test = new TestIServerError();
169 177
 
170 178
         final TestParser parser = new TestParser();
171
-        parser.getCallbackManager().addCallback("onServerError", test);
179
+        parser.getCallbackManager().addCallback(ServerErrorListener.class, test);
172 180
         parser.injectLine("ERROR :You smell of cheese");
173 181
 
174 182
         assertNotNull(test.message);
@@ -180,7 +188,7 @@ public class IRCParserTest {
180 188
     public void testAuthNotices() throws CallbackNotFoundException {
181 189
         final TestINoticeAuth test = new TestINoticeAuth();
182 190
         final TestParser parser = new TestParser();
183
-        parser.getCallbackManager().addCallback("onNoticeAuth", test);
191
+        parser.getCallbackManager().addCallback(AuthNoticeListener.class, test);
184 192
         parser.sendConnectionStrings();
185 193
         parser.injectLine("NOTICE AUTH :Random auth notice?");
186 194
 
@@ -199,7 +207,7 @@ public class IRCParserTest {
199 207
     public void testPre001NickChange() throws CallbackNotFoundException {
200 208
         final TestINoticeAuth test = new TestINoticeAuth();
201 209
         final TestParser parser = new TestParser();
202
-        parser.getCallbackManager().addCallback("onNoticeAuth", test);
210
+        parser.getCallbackManager().addCallback(AuthNoticeListener.class, test);
203 211
         parser.sendConnectionStrings();
204 212
         parser.injectLine(":chris!@ NICK :user2");
205 213
 
@@ -210,7 +218,7 @@ public class IRCParserTest {
210 218
     public void testNumeric() throws CallbackNotFoundException {
211 219
         final TestINumeric test = new TestINumeric();
212 220
         final TestParser parser = new TestParser();
213
-        parser.getCallbackManager().addCallback("onNumeric", test);
221
+        parser.getCallbackManager().addCallback(NumericListener.class, test);
214 222
 
215 223
         parser.injectLine(":server 001 nick :Hi there, nick");
216 224
 
@@ -223,7 +231,7 @@ public class IRCParserTest {
223 231
     public void testPost005() throws CallbackNotFoundException {
224 232
         final TestIPost005 test = new TestIPost005();
225 233
         final TestParser parser = new TestParser();
226
-        parser.getCallbackManager().addCallback("onPost005", test);
234
+        parser.getCallbackManager().addCallback(Post005Listener.class, test);
227 235
 
228 236
         final String[] strings = {
229 237
             "NOTICE AUTH :Blah, blah",
@@ -354,9 +362,9 @@ public class IRCParserTest {
354 362
 
355 363
         parser.injectConnectionStrings();
356 364
 
357
-        parser.getCallbackManager().addCallback("onPrivateMessage", ipmtest);
358
-        parser.getCallbackManager().addCallback("onPrivateAction", ipatest);
359
-        parser.getCallbackManager().addCallback("onPrivateCTCP", ipctest);
365
+        parser.getCallbackManager().addCallback(PrivateMessageListener.class, ipmtest);
366
+        parser.getCallbackManager().addCallback(PrivateActionListener.class, ipatest);
367
+        parser.getCallbackManager().addCallback(PrivateCtcpListener.class, ipctest);
360 368
 
361 369
         parser.injectLine(":a!b@c PRIVMSG nick :Hello!");
362 370
         assertNotNull(ipmtest.host);
@@ -459,7 +467,7 @@ public class IRCParserTest {
459 467
         parser.injectConnectionStrings();
460 468
 
461 469
         parser.injectLine(":nick JOIN #D");
462
-        parser.getCallbackManager().addCallback("onChannelKick", ick, "#D");
470
+        parser.getCallbackManager().addCallback(ChannelKickListener.class, ick, "#D");
463 471
         parser.injectLine(":bar!me@moo KICK #D nick :Bye!");
464 472
 
465 473
         verify(ick).onChannelKick(same(parser), (ChannelInfo) anyObject(),
@@ -481,7 +489,7 @@ public class IRCParserTest {
481 489
     public void testIllegalPort1() {
482 490
         final TestParser tp = new TestParser(new MyInfo(), new ServerInfo("127.0.0.1", 0, ""));
483 491
         final TestIConnectError tiei = new TestIConnectError();
484
-        tp.getCallbackManager().addCallback("OnConnectError", tiei);
492
+        tp.getCallbackManager().addCallback(ConnectErrorListener.class, tiei);
485 493
         tp.runSuper();
486 494
         assertTrue(tiei.error);
487 495
     }
@@ -490,7 +498,7 @@ public class IRCParserTest {
490 498
     public void testIllegalPort2() {
491 499
         final TestParser tp = new TestParser(new MyInfo(), new ServerInfo("127.0.0.1", 1, ""));
492 500
         final TestIConnectError tiei = new TestIConnectError();
493
-        tp.getCallbackManager().addCallback("OnConnectError", tiei);
501
+        tp.getCallbackManager().addCallback(ConnectErrorListener.class, tiei);
494 502
         tp.runSuper();
495 503
         assertTrue(tiei.error);
496 504
     }    
@@ -499,7 +507,7 @@ public class IRCParserTest {
499 507
     public void testIllegalPort3() {
500 508
         final TestParser tp = new TestParser(new MyInfo(), new ServerInfo("127.0.0.1", 65570, ""));
501 509
         final TestIConnectError tiei = new TestIConnectError();
502
-        tp.getCallbackManager().addCallback("OnConnectError", tiei);
510
+        tp.getCallbackManager().addCallback(ConnectErrorListener.class, tiei);
503 511
         tp.runSuper();
504 512
         assertTrue(tiei.error);
505 513
     }

+ 2
- 1
test/com/dmdirc/parser/irc/Process004005Test.java 查看文件

@@ -24,6 +24,7 @@ package com.dmdirc.parser.irc;
24 24
 
25 25
 import com.dmdirc.harness.parser.TestIErrorInfo;
26 26
 import com.dmdirc.harness.parser.TestParser;
27
+import com.dmdirc.parser.interfaces.callbacks.ErrorInfoListener;
27 28
 import org.junit.Test;
28 29
 import static org.junit.Assert.*;
29 30
 
@@ -63,7 +64,7 @@ public class Process004005Test {
63 64
         final TestParser tp = doCaseMappingTest("rfc1459", 4);
64 65
         final TestIErrorInfo tiei = new TestIErrorInfo();
65 66
         
66
-        tp.getCallbackManager().addCallback("OnErrorInfo", tiei);
67
+        tp.getCallbackManager().addCallback(ErrorInfoListener.class, tiei);
67 68
         
68 69
         tp.injectLine(":server 005 nick CASEMAPPING=unknown :are supported by this server");
69 70
         

+ 3
- 2
test/com/dmdirc/parser/irc/ProcessJoinTest.java 查看文件

@@ -27,6 +27,7 @@ import com.dmdirc.harness.parser.TestParser;
27 27
 import com.dmdirc.parser.irc.callbacks.CallbackNotFoundException;
28 28
 import com.dmdirc.parser.interfaces.callbacks.ChannelJoinListener;
29 29
 
30
+import com.dmdirc.parser.interfaces.callbacks.ChannelSelfJoinListener;
30 31
 import org.junit.Test;
31 32
 import static org.junit.Assert.*;
32 33
 import static org.mockito.Mockito.*;
@@ -39,7 +40,7 @@ public class ProcessJoinTest {
39 40
         final TestIChannelSelfJoin test = new TestIChannelSelfJoin();
40 41
 
41 42
         parser.injectConnectionStrings();
42
-        parser.getCallbackManager().addCallback("onChannelSelfJoin", test);
43
+        parser.getCallbackManager().addCallback(ChannelSelfJoinListener.class, test);
43 44
         parser.injectLine(":nick JOIN #DMDirc_testing");
44 45
 
45 46
         assertNotNull(test.channel);
@@ -57,7 +58,7 @@ public class ProcessJoinTest {
57 58
         final ChannelJoinListener test = mock(ChannelJoinListener.class);
58 59
 
59 60
         parser.injectConnectionStrings();
60
-        parser.getCallbackManager().addCallback("onChannelJoin", test);
61
+        parser.getCallbackManager().addCallback(ChannelJoinListener.class, test);
61 62
         
62 63
         parser.injectLine(":nick JOIN #DMDirc_testing");
63 64
         parser.injectLine(":foo!bar@baz JOIN #DMDirc_testing");

+ 1
- 1
test/com/dmdirc/parser/irc/ProcessNamesTest.java 查看文件

@@ -36,7 +36,7 @@ public class ProcessNamesTest {
36 36
         final TestParser parser = new TestParser();
37 37
         final TestIErrorInfo test = new TestIErrorInfo();
38 38
         parser.injectConnectionStrings();
39
-        parser.getCallbackManager().addCallback("OnErrorInfo", test);
39
+        parser.getCallbackManager().addCallback(ErrorInfoListener.class, test);
40 40
         
41 41
         parser.injectLine(":server 366 nick #nonexistant :End of /NAMES list.");
42 42
         

+ 5
- 3
test/com/dmdirc/parser/irc/ProcessNickTest.java 查看文件

@@ -25,6 +25,8 @@ package com.dmdirc.parser.irc;
25 25
 import com.dmdirc.harness.parser.TestParser;
26 26
 import com.dmdirc.harness.parser.TestIErrorInfo;
27 27
 import com.dmdirc.harness.parser.TestINickChanged;
28
+import com.dmdirc.parser.interfaces.callbacks.ErrorInfoListener;
29
+import com.dmdirc.parser.interfaces.callbacks.NickChangeListener;
28 30
 import com.dmdirc.parser.irc.callbacks.CallbackNotFoundException;
29 31
 import org.junit.Test;
30 32
 import static org.junit.Assert.*;
@@ -36,7 +38,7 @@ public class ProcessNickTest {
36 38
         final TestParser parser = new TestParser();
37 39
         final TestINickChanged tinc = new TestINickChanged();
38 40
 
39
-        parser.getCallbackManager().addCallback("OnNickChanged", tinc);
41
+        parser.getCallbackManager().addCallback(NickChangeListener.class, tinc);
40 42
         
41 43
         parser.injectConnectionStrings();
42 44
         parser.injectLine(":nick JOIN #DMDirc_testing");
@@ -80,7 +82,7 @@ public class ProcessNickTest {
80 82
         final TestParser parser = new TestParser();
81 83
         final TestIErrorInfo info = new TestIErrorInfo();
82 84
         
83
-        parser.getCallbackManager().addCallback("OnErrorInfo", info);
85
+        parser.getCallbackManager().addCallback(ErrorInfoListener.class, info);
84 86
         parser.injectConnectionStrings();
85 87
         parser.injectLine(":nick JOIN #DMDirc_testing");
86 88
         parser.injectLine(":server 353 nick = #DMDirc_testing :@nick +luser @+nick2 nick3");
@@ -96,7 +98,7 @@ public class ProcessNickTest {
96 98
         final TestParser parser = new TestParser();
97 99
         final TestINickChanged tinc = new TestINickChanged();
98 100
         
99
-        parser.getCallbackManager().addCallback("OnNickChanged", tinc);
101
+        parser.getCallbackManager().addCallback(NickChangeListener.class, tinc);
100 102
         
101 103
         parser.injectConnectionStrings();
102 104
         parser.injectLine(":random!lu@ser NICK rand");

+ 2
- 4
test/com/dmdirc/parser/irc/ProcessPartTest.java 查看文件

@@ -27,8 +27,6 @@ import com.dmdirc.harness.parser.TestIChannelPart;
27 27
 import com.dmdirc.parser.irc.callbacks.CallbackNotFoundException;
28 28
 
29 29
 import com.dmdirc.parser.interfaces.callbacks.ChannelPartListener;
30
-import com.dmdirc.parser.interfaces.callbacks.ChannelQuitListener;
31
-import com.dmdirc.parser.interfaces.callbacks.QuitListener;
32 30
 import org.junit.Test;
33 31
 import static org.junit.Assert.*;
34 32
 
@@ -45,7 +43,7 @@ public class ProcessPartTest {
45 43
         parser.injectLine(":server 366 nick #DMDirc_testing :End of /NAMES list.");
46 44
         
47 45
         final TestIChannelPart test = new TestIChannelPart();
48
-        parser.getCallbackManager().addCallback("OnChannelPart", test);
46
+        parser.getCallbackManager().addCallback(ChannelPartListener.class, test);
49 47
         
50 48
         assertEquals(2, parser.getChannelInfo("#DMDirc_testing").getChannelClients().size());
51 49
         
@@ -73,7 +71,7 @@ public class ProcessPartTest {
73 71
         parser.injectLine(":server 366 nick #DMDirc_testing :End of /NAMES list.");
74 72
         
75 73
         final TestIChannelPart test = new TestIChannelPart();
76
-        parser.getCallbackManager().addCallback("OnChannelPart", test);
74
+        parser.getCallbackManager().addCallback(ChannelPartListener.class, test);
77 75
         
78 76
         assertEquals(2, parser.getChannelInfo("#DMDirc_testing").getChannelClients().size());
79 77
         

+ 5
- 5
test/com/dmdirc/parser/irc/ProcessQuitTest.java 查看文件

@@ -24,10 +24,10 @@ package com.dmdirc.parser.irc;
24 24
 
25 25
 import com.dmdirc.harness.parser.TestParser;
26 26
 import com.dmdirc.harness.parser.TestIQuit;
27
-import com.dmdirc.parser.irc.callbacks.CallbackNotFoundException;
28
-
29 27
 import com.dmdirc.parser.interfaces.callbacks.ChannelQuitListener;
30 28
 import com.dmdirc.parser.interfaces.callbacks.QuitListener;
29
+import com.dmdirc.parser.irc.callbacks.CallbackNotFoundException;
30
+
31 31
 import org.junit.Test;
32 32
 import static org.junit.Assert.*;
33 33
 
@@ -47,7 +47,7 @@ public class ProcessQuitTest {
47 47
         parser.injectLine(":server 366 nick #DMDirc_testing2 :End of /NAMES list.");        
48 48
         
49 49
         final TestIQuit test = new TestIQuit();
50
-        parser.getCallbackManager().addCallback("OnChannelQuit", test);
50
+        parser.getCallbackManager().addCallback(ChannelQuitListener.class, test);
51 51
         
52 52
         assertEquals(2, parser.getChannelInfo("#DMDirc_testing").getChannelClients().size());
53 53
         
@@ -80,7 +80,7 @@ public class ProcessQuitTest {
80 80
         parser.injectLine(":server 366 nick #DMDirc_testing2 :End of /NAMES list.");
81 81
         
82 82
         final TestIQuit test = new TestIQuit();
83
-        parser.getCallbackManager().addCallback("OnQuit", test);
83
+        parser.getCallbackManager().addCallback(QuitListener.class, test);
84 84
         
85 85
         assertEquals(2, parser.getChannelInfo("#DMDirc_testing").getChannelClients().size());
86 86
         
@@ -108,7 +108,7 @@ public class ProcessQuitTest {
108 108
         parser.injectLine(":server 366 nick #DMDirc_testing :End of /NAMES list.");
109 109
         
110 110
         final TestIQuit test = new TestIQuit();
111
-        parser.getCallbackManager().addCallback("OnQuit", test);
111
+        parser.getCallbackManager().addCallback(QuitListener.class, test);
112 112
         
113 113
         assertEquals(2, parser.getChannelInfo("#DMDirc_testing").getChannelClients().size());
114 114
         

+ 2
- 2
test/com/dmdirc/parser/irc/ProcessTopicTest.java 查看文件

@@ -36,7 +36,7 @@ public class ProcessTopicTest {
36 36
         final TestParser parser = new TestParser();
37 37
         final TestIChannelTopic test = new TestIChannelTopic();
38 38
         parser.injectConnectionStrings();
39
-        parser.getCallbackManager().addCallback("OnChannelTopic", test);
39
+        parser.getCallbackManager().addCallback(ChannelTopicListener.class, test);
40 40
         
41 41
         parser.injectLine(":nick JOIN #DMDirc_testing");
42 42
         parser.injectLine(":server 332 nick #DMDirc_testing :This be a topic");
@@ -60,7 +60,7 @@ public class ProcessTopicTest {
60 60
         parser.injectLine(":server 332 nick #DMDirc_testing :This be a topic");
61 61
         parser.injectLine(":server 333 nick #DMDirc_testing Q 1207350306");
62 62
         
63
-        parser.getCallbackManager().addCallback("OnChannelTopic", test);
63
+        parser.getCallbackManager().addCallback(ChannelTopicListener.class, test);
64 64
         
65 65
         parser.injectLine(":foobar TOPIC #DMDirc_testing :New topic here");
66 66
         

+ 1
- 1
test/com/dmdirc/parser/irc/ProcessWhoTest.java 查看文件

@@ -35,7 +35,7 @@ public class ProcessWhoTest {
35 35
         final TestParser parser = new TestParser();
36 36
         final AwayStateListener test = mock(AwayStateListener.class);
37 37
         parser.injectConnectionStrings();
38
-        parser.getCallbackManager().addCallback("OnAwayState", test);
38
+        parser.getCallbackManager().addCallback(AwayStateListener.class, test);
39 39
 
40 40
         parser.injectLine(":nick JOIN #DMDirc_testing");
41 41
 

正在加载...
取消
保存