|
@@ -29,6 +29,7 @@ import com.dmdirc.parser.interfaces.callbacks.*; //NOPMD
|
29
|
29
|
import java.lang.reflect.InvocationHandler;
|
30
|
30
|
import java.lang.reflect.Method;
|
31
|
31
|
import java.lang.reflect.Proxy;
|
|
32
|
+import java.util.Collections;
|
32
|
33
|
import java.util.Date;
|
33
|
34
|
import java.util.HashMap;
|
34
|
35
|
import java.util.Map;
|
|
@@ -118,13 +119,10 @@ public class CallbackManager {
|
118
|
119
|
/**
|
119
|
120
|
* Constructor to create a CallbackManager.
|
120
|
121
|
*
|
121
|
|
- * @param parser Parser that owns this callback manager.
|
122
|
122
|
* @param implementationMap A map of implementations to use
|
123
|
123
|
*/
|
124
|
|
- public CallbackManager(final Parser parser, final Map<Class<?>, Class<?>> implementationMap) {
|
125
|
|
- this.implementationMap = implementationMap;
|
126
|
|
-
|
127
|
|
- initialise(parser);
|
|
124
|
+ public CallbackManager(final Map<Class<?>, Class<?>> implementationMap) {
|
|
125
|
+ this.implementationMap = Collections.unmodifiableMap(implementationMap);
|
128
|
126
|
}
|
129
|
127
|
|
130
|
128
|
/**
|
|
@@ -132,7 +130,7 @@ public class CallbackManager {
|
132
|
130
|
*
|
133
|
131
|
* @param parser The parser associated with this CallbackManager
|
134
|
132
|
*/
|
135
|
|
- protected void initialise(final Parser parser) {
|
|
133
|
+ public void initialise(final Parser parser) {
|
136
|
134
|
for (Class<?> type : CLASSES) {
|
137
|
135
|
if (type.isAnnotationPresent(SpecificCallback.class)) {
|
138
|
136
|
addCallbackType(getSpecificCallbackObject(parser, type));
|
|
@@ -150,7 +148,8 @@ public class CallbackManager {
|
150
|
148
|
* @return The relevant CallbackObject
|
151
|
149
|
*/
|
152
|
150
|
protected CallbackObject getCallbackObject(final Parser parser, final Class<?> type) {
|
153
|
|
- return new CallbackObject(parser, this, type.asSubclass(CallbackInterface.class), implementationMap);
|
|
151
|
+ return new CallbackObject(parser, this, type.asSubclass(CallbackInterface.class),
|
|
152
|
+ implementationMap);
|
154
|
153
|
}
|
155
|
154
|
|
156
|
155
|
/**
|
|
@@ -160,8 +159,10 @@ public class CallbackManager {
|
160
|
159
|
* @param type The type of callback to create an object for
|
161
|
160
|
* @return The relevant CallbackObject
|
162
|
161
|
*/
|
163
|
|
- protected CallbackObjectSpecific getSpecificCallbackObject(final Parser parser, final Class<?> type) {
|
164
|
|
- return new CallbackObjectSpecific(parser, this, type.asSubclass(CallbackInterface.class), implementationMap);
|
|
162
|
+ protected CallbackObjectSpecific getSpecificCallbackObject(
|
|
163
|
+ final Parser parser, final Class<?> type) {
|
|
164
|
+ return new CallbackObjectSpecific(parser, this, type.asSubclass(CallbackInterface.class),
|
|
165
|
+ implementationMap);
|
165
|
166
|
}
|
166
|
167
|
|
167
|
168
|
/**
|
|
@@ -202,10 +203,7 @@ public class CallbackManager {
|
202
|
203
|
*/
|
203
|
204
|
private CallbackObject getCallbackType(final Class<? extends CallbackInterface> callback) {
|
204
|
205
|
if (!callbackHash.containsKey(callback)) {
|
205
|
|
- throw new CallbackNotFoundException("Callback not found: " + callback.getName()
|
206
|
|
- + "\n\nMy class: " + getClass().getName()
|
207
|
|
- + "\nContents: " + callbackHash.keySet()
|
208
|
|
- + "\nThread: " + Thread.currentThread().getName());
|
|
206
|
+ throw new CallbackNotFoundException("Callback not found: " + callback.getName());
|
209
|
207
|
}
|
210
|
208
|
|
211
|
209
|
return callbackHash.get(callback);
|