Selaa lähdekoodia

Fix relaybot plugin for parser changes

Change-Id: I7abcc2478ae104dfa5807934a5a249c4f5386773
Depends-On: I1b20a8f11d7c806cea5038599f7342627217652b
Reviewed-on: http://gerrit.dmdirc.com/2184
Reviewed-by: Greg Holmes <greg@dmdirc.com>
Automatic-Compile: DMDirc Build Manager
tags/0.7rc1
Chris Smith 12 vuotta sitten
vanhempi
commit
487d9d7377
1 muutettua tiedostoa jossa 16 lisäystä ja 1 poistoa
  1. 16
    1
      src/com/dmdirc/addons/relaybot/RelayCallbackManager.java

+ 16
- 1
src/com/dmdirc/addons/relaybot/RelayCallbackManager.java Näytä tiedosto

27
 import com.dmdirc.parser.common.CallbackManager;
27
 import com.dmdirc.parser.common.CallbackManager;
28
 import com.dmdirc.parser.common.CallbackNotFoundException;
28
 import com.dmdirc.parser.common.CallbackNotFoundException;
29
 import com.dmdirc.parser.common.CallbackObject;
29
 import com.dmdirc.parser.common.CallbackObject;
30
+import com.dmdirc.parser.common.ChildImplementations;
30
 import com.dmdirc.parser.interfaces.Parser;
31
 import com.dmdirc.parser.interfaces.Parser;
31
 import com.dmdirc.parser.interfaces.callbacks.CallbackInterface;
32
 import com.dmdirc.parser.interfaces.callbacks.CallbackInterface;
32
 import com.dmdirc.parser.interfaces.callbacks.ChannelMessageListener;
33
 import com.dmdirc.parser.interfaces.callbacks.ChannelMessageListener;
35
 
36
 
36
 import java.lang.reflect.Field;
37
 import java.lang.reflect.Field;
37
 import java.util.Date;
38
 import java.util.Date;
39
+import java.util.HashMap;
38
 import java.util.Map;
40
 import java.util.Map;
39
 
41
 
40
 /**
42
 /**
63
      * @param parser
65
      * @param parser
64
      */
66
      */
65
     public RelayCallbackManager(final RelayBotPlugin myPlugin, final IRCParser parser) {
67
     public RelayCallbackManager(final RelayBotPlugin myPlugin, final IRCParser parser) {
66
-        super(parser, IRCParser.IMPL_MAP);
68
+        super(parser, getImplementations());
67
 
69
 
68
         this.myPlugin = myPlugin;
70
         this.myPlugin = myPlugin;
69
         this.originalCBM = parser.getCallbackManager();
71
         this.originalCBM = parser.getCallbackManager();
71
         addCallback(SocketCloseListener.class, this);
73
         addCallback(SocketCloseListener.class, this);
72
     }
74
     }
73
 
75
 
76
+    private static Map<Class<?>, Class<?>> getImplementations() {
77
+        final Map<Class<?>, Class<?>> implementations
78
+                = new HashMap<Class<?>, Class<?>>();
79
+
80
+        for (Class<?> child : IRCParser.class.getAnnotation(ChildImplementations.class).value()) {
81
+            for (Class<?> iface : child.getInterfaces()) {
82
+                implementations.put(iface, child);
83
+            }
84
+        }
85
+
86
+        return implementations;
87
+    }
88
+
74
     /** {@inheritDoc} */
89
     /** {@inheritDoc} */
75
     @Override
90
     @Override
76
     public <S extends CallbackInterface> void addCallback(final Class<S> callback, final S o, final String target) throws CallbackNotFoundException {
91
     public <S extends CallbackInterface> void addCallback(final Class<S> callback, final S o, final String target) throws CallbackNotFoundException {

Loading…
Peruuta
Tallenna