瀏覽代碼

Merge pull request #466 from csmith/master

Add source checks for eventbus handlers.
pull/467/head
Greg Holmes 8 年之前
父節點
當前提交
1cd834f642

+ 2
- 2
awaycolours/src/com/dmdirc/addons/awaycolours/AwayColoursManager.java 查看文件

@@ -75,8 +75,8 @@ public class AwayColoursManager {
75 75
 
76 76
     @Handler
77 77
     public void handleAwayEvent(final ChannelUserAwayEvent event) {
78
-            event.getUser().setDisplayProperty(DisplayProperty.FOREGROUND_COLOUR, colour);
79
-            event.getChannel().refreshClients();
78
+        event.getUser().setDisplayProperty(DisplayProperty.FOREGROUND_COLOUR, colour);
79
+        event.getChannel().refreshClients();
80 80
     }
81 81
 
82 82
     @Handler

+ 8
- 9
channelwho/src/com/dmdirc/addons/channelwho/ConnectionHandler.java 查看文件

@@ -87,13 +87,11 @@ public class ConnectionHandler {
87 87
 
88 88
     @VisibleForTesting
89 89
     void checkWho() {
90
-        connectionManager.getConnections().forEach(
91
-                connection -> connection.getGroupChatManager().getChannels().forEach(channel -> {
92
-                    if (channel.getWindowModel().getConfigManager()
93
-                            .getOptionBool(domain, "sendwho")) {
94
-                        channel.requestUsersInfo();
95
-                    }
96
-                }));
90
+        connection.getGroupChatManager().getChannels().forEach(channel -> {
91
+            if (channel.getWindowModel().getConfigManager().getOptionBool(domain, "sendwho")) {
92
+                channel.requestUsersInfo();
93
+            }
94
+        });
97 95
     }
98 96
 
99 97
     @VisibleForTesting
@@ -109,7 +107,8 @@ public class ConnectionHandler {
109 107
     @VisibleForTesting
110 108
     @Handler
111 109
     void handleAwayEvent(final ChannelUserAwayEvent event) {
112
-        if (!event.getReason().isPresent()) {
110
+        if (event.getChannel().getConnection().equals(connection)
111
+                && !event.getReason().isPresent()) {
113 112
             event.setDisplayProperty(DisplayProperty.DO_NOT_DISPLAY, true);
114 113
             final boolean notseen = !users.containsKey(event.getUser().getNickname());
115 114
             users.put(event.getUser().getNickname(), event.getUser());
@@ -123,7 +122,7 @@ public class ConnectionHandler {
123 122
     @VisibleForTesting
124 123
     @Handler
125 124
     void handleServerNumericEvent(final ServerNumericEvent event) {
126
-        if (event.getNumeric() == 301) {
125
+        if (event.getConnection().equals(connection) && event.getNumeric() == 301) {
127 126
             final String nickname = event.getArgs()[3];
128 127
             final String reason = event.getArgs()[4];
129 128
             users.removeAll(nickname).forEach(u -> u.getGroupChat().getEventBus()

+ 15
- 5
contactlist/src/com/dmdirc/addons/contactlist/ContactListListener.java 查看文件

@@ -70,27 +70,37 @@ public class ContactListListener {
70 70
 
71 71
     @Handler
72 72
     public void handleClientsUpdated(final NickListClientsChangedEvent event) {
73
-        event.getUsers().forEach(this::clientAdded);
73
+        if (event.getChannel().equals(groupChat)) {
74
+            event.getUsers().forEach(this::clientAdded);
75
+        }
74 76
     }
75 77
 
76 78
     @Handler
77 79
     public void handleClientAdded(final NickListClientAddedEvent event) {
78
-        clientAdded(event.getUser());
80
+        if (event.getChannel().equals(groupChat)) {
81
+            clientAdded(event.getUser());
82
+        }
79 83
     }
80 84
 
81 85
     @Handler
82 86
     public void handleUserAway(final ChannelUserAwayEvent event) {
83
-        clientAdded(event.getUser());
87
+        if (event.getChannel().equals(groupChat)) {
88
+            clientAdded(event.getUser());
89
+        }
84 90
     }
85 91
 
86 92
     @Handler
87 93
     public void handleUserBack(final ChannelUserBackEvent event) {
88
-        clientAdded(event.getUser());
94
+        if (event.getChannel().equals(groupChat)) {
95
+            clientAdded(event.getUser());
96
+        }
89 97
     }
90 98
 
91 99
     @Handler
92 100
     public void windowClosing(final FrameClosingEvent event) {
93
-        removeListeners();
101
+        if (event.getSource().equals(groupChat.getWindowModel())) {
102
+            removeListeners();
103
+        }
94 104
     }
95 105
 
96 106
     void clientAdded(final GroupChatUser client) {

+ 6
- 6
debug/src/com/dmdirc/addons/debug/RawWindow.java 查看文件

@@ -29,7 +29,6 @@ import com.dmdirc.parser.events.DataInEvent;
29 29
 import com.dmdirc.parser.events.DataOutEvent;
30 30
 import com.dmdirc.parser.interfaces.Parser;
31 31
 import com.dmdirc.ui.core.components.WindowComponent;
32
-import com.dmdirc.ui.input.TabCompleterFactory;
33 32
 import com.dmdirc.ui.messages.BackBufferFactory;
34 33
 
35 34
 import java.util.Arrays;
@@ -44,10 +43,7 @@ public class RawWindow extends FrameContainer {
44 43
 
45 44
     private final Connection connection;
46 45
 
47
-    public RawWindow(
48
-            final Connection connection,
49
-            final TabCompleterFactory tabCompleterFactory,
50
-            final BackBufferFactory backBufferFactory) {
46
+    public RawWindow(final Connection connection, final BackBufferFactory backBufferFactory) {
51 47
         super("raw", "Raw", "(Raw log)",
52 48
                 connection.getWindowModel().getConfigManager(),
53 49
                 backBufferFactory,
@@ -75,7 +71,11 @@ public class RawWindow extends FrameContainer {
75 71
 
76 72
     @Handler
77 73
     public void handleServerConnecting(final ServerConnectingEvent connectingEvent) {
78
-        connection.getParser().map(Parser::getCallbackManager).ifPresent(c -> c.subscribe(this));
74
+        if (connectingEvent.getConnection().equals(connection)) {
75
+            connection.getParser()
76
+                    .map(Parser::getCallbackManager)
77
+                    .ifPresent(c -> c.subscribe(this));
78
+        }
79 79
     }
80 80
 
81 81
     @Handler

+ 1
- 2
debug/src/com/dmdirc/addons/debug/RawWindowFactory.java 查看文件

@@ -58,8 +58,7 @@ public class RawWindowFactory {
58 58
     }
59 59
 
60 60
     public RawWindow getRawWindow(final Connection connection) {
61
-        final RawWindow rawWindow = new RawWindow(connection,
62
-                tabCompleterFactory,  backBufferFactory);
61
+        final RawWindow rawWindow = new RawWindow(connection, backBufferFactory);
63 62
         rawWindow.setInputModel(
64 63
                 new DefaultInputModel(
65 64
                         connection::sendLine,

+ 3
- 1
debug/src/com/dmdirc/addons/debug/commands/EventBusViewer.java 查看文件

@@ -124,7 +124,9 @@ public class EventBusViewer extends DebugCommand {
124 124
 
125 125
         @Handler
126 126
         public void handleFrameClosing(final FrameClosingEvent event) {
127
-            eventBus.unsubscribe(this);
127
+            if (event.getSource().equals(target)) {
128
+                eventBus.unsubscribe(this);
129
+            }
128 130
         }
129 131
 
130 132
         @Handler

+ 8
- 11
identd/src/com/dmdirc/addons/identd/IdentdManager.java 查看文件

@@ -77,7 +77,6 @@ public class IdentdManager {
77 77
      * Called when the plugin is loaded.
78 78
      */
79 79
     public void onLoad() {
80
-        // Add action hooks
81 80
         eventBus.subscribe(this);
82 81
 
83 82
         if (config.getOptionBool(domain, "advanced.alwaysOn")) {
@@ -97,11 +96,11 @@ public class IdentdManager {
97 96
     @Handler
98 97
     public void handleServerConnecting(final ServerConnectingEvent event) {
99 98
         synchronized (connections) {
100
-                if (connections.isEmpty()) {
101
-                    server.startServer();
102
-                }
103
-                connections.add(event.getConnection());
99
+            if (connections.isEmpty()) {
100
+                server.startServer();
104 101
             }
102
+            connections.add(event.getConnection());
103
+        }
105 104
     }
106 105
 
107 106
     @Handler
@@ -116,16 +115,14 @@ public class IdentdManager {
116 115
 
117 116
     private void handleServerRemoved(final Connection connection) {
118 117
         synchronized (connections) {
119
-                connections.remove(connection);
118
+            connections.remove(connection);
120 119
 
121
-                if (connections.isEmpty() && !config.getOptionBool(domain, "advanced.alwaysOn")) {
122
-                    server.stopServer();
123
-                }
120
+            if (connections.isEmpty() && !config.getOptionBool(domain, "advanced.alwaysOn")) {
121
+                server.stopServer();
124 122
             }
123
+        }
125 124
     }
126 125
 
127
-
128
-
129 126
     @Handler
130 127
     public void showConfig(final ClientPrefsOpenedEvent event) {
131 128
         final PreferencesDialogModel manager = event.getModel();

+ 9
- 3
jpq/src/com/dmdirc/addons/jpq/GroupChatHandler.java 查看文件

@@ -77,21 +77,27 @@ public class GroupChatHandler {
77 77
     @VisibleForTesting
78 78
     @Handler
79 79
     void handleJoin(final ChannelJoinEvent event) {
80
-        hideEvent(event);
80
+        if (event.getChannel().equals(groupChat)) {
81
+            hideEvent(event);
82
+        }
81 83
     }
82 84
 
83 85
     @SuppressWarnings("TypeMayBeWeakened")
84 86
     @VisibleForTesting
85 87
     @Handler
86 88
     void handlePart(final ChannelPartEvent event) {
87
-        hideEvent(event);
89
+        if (event.getChannel().equals(groupChat)) {
90
+            hideEvent(event);
91
+        }
88 92
     }
89 93
 
90 94
     @SuppressWarnings("TypeMayBeWeakened")
91 95
     @VisibleForTesting
92 96
     @Handler
93 97
     void handleQuit(final ChannelQuitEvent event) {
94
-        hideEvent(event);
98
+        if (event.getChannel().equals(groupChat)) {
99
+            hideEvent(event);
100
+        }
95 101
     }
96 102
 
97 103
     private void hideEvent(final DisplayableEvent event) {

+ 4
- 4
parserdebug/src/com/dmdirc/addons/parserdebug/ParserDebugManager.java 查看文件

@@ -134,10 +134,10 @@ public class ParserDebugManager {
134 134
 
135 135
     @Handler
136 136
     public void handleServerDisconnected(final ServerDisconnectedEvent event) {
137
-            final Parser parser = event.getConnection().getParser().get();
138
-            if (registeredParsers.containsKey(parser)) {
139
-                removeParser(parser, false);
140
-            }
137
+        final Parser parser = event.getConnection().getParser().get();
138
+        if (registeredParsers.containsKey(parser)) {
139
+            removeParser(parser, false);
140
+        }
141 141
     }
142 142
 
143 143
     @Handler

+ 13
- 5
ui_swing/src/com/dmdirc/addons/ui_swing/components/NickList.java 查看文件

@@ -224,23 +224,31 @@ public class NickList extends JScrollPane implements MouseListener {
224 224
 
225 225
     @Handler(invocation = EdtHandlerInvocation.class)
226 226
     public void handleClientsChanged(final NickListClientsChangedEvent event) {
227
-        nicklistModel.replace(event.getUsers());
227
+        if (event.getChannel().getWindowModel().equals(frame.getContainer())) {
228
+            nicklistModel.replace(event.getUsers());
229
+        }
228 230
     }
229 231
 
230 232
     @Handler(invocation = EdtHandlerInvocation.class)
231 233
     public void handleNickListUpdated(final NickListUpdatedEvent event) {
232
-        nicklistModel.sort();
233
-        repaint();
234
+        if (event.getChannel().getWindowModel().equals(frame.getContainer())) {
235
+            nicklistModel.sort();
236
+            repaint();
237
+        }
234 238
     }
235 239
 
236 240
     @Handler(invocation = EdtHandlerInvocation.class)
237 241
     public void handleClientAdded(final NickListClientAddedEvent event) {
238
-        nicklistModel.add(event.getUser());
242
+        if (event.getChannel().getWindowModel().equals(frame.getContainer())) {
243
+            nicklistModel.add(event.getUser());
244
+        }
239 245
     }
240 246
 
241 247
     @Handler(invocation = EdtHandlerInvocation.class)
242 248
     public void handleClientRemoved(final NickListClientRemovedEvent event) {
243
-        nicklistModel.remove(event.getUser());
249
+        if (event.getChannel().getWindowModel().equals(frame.getContainer())) {
250
+            nicklistModel.remove(event.getUser());
251
+        }
244 252
     }
245 253
 
246 254
 }

+ 6
- 2
ui_swing/src/com/dmdirc/addons/ui_swing/components/TopicBar.java 查看文件

@@ -228,12 +228,16 @@ public class TopicBar extends JComponent implements ActionListener, ConfigChange
228 228
 
229 229
     @Handler(invocation = EdtHandlerInvocation.class)
230 230
     public void handleTopicChanged(final ChannelTopicChangeEvent event) {
231
-        topicChanged(event.getChannel(), event.getTopic());
231
+        if (event.getChannel().equals(channel)) {
232
+            topicChanged(event.getChannel(), event.getTopic());
233
+        }
232 234
     }
233 235
 
234 236
     @Handler(invocation = EdtHandlerInvocation.class)
235 237
     public void handleTopicUnset(final ChannelTopicUnsetEvent event) {
236
-        topicChanged(event.getChannel(), null);
238
+        if (event.getChannel().equals(channel)) {
239
+            topicChanged(event.getChannel(), null);
240
+        }
237 241
     }
238 242
 
239 243
     private void topicChanged(final GroupChat channel, final Topic topic) {

+ 6
- 4
ui_swing/src/com/dmdirc/addons/ui_swing/components/frames/ChannelFrame.java 查看文件

@@ -224,10 +224,12 @@ public final class ChannelFrame extends InputTextFrame {
224 224
     @Override
225 225
     @Handler(invocation = EdtHandlerInvocation.class)
226 226
     public void windowClosing(final FrameClosingEvent event) {
227
-        saveSplitPanePosition();
228
-        topicBar.close();
229
-        dialogProvider.dispose(groupChat);
230
-        super.windowClosing(event);
227
+        if (event.getSource().equals(getContainer())) {
228
+            saveSplitPanePosition();
229
+            topicBar.close();
230
+            dialogProvider.dispose(groupChat);
231
+            super.windowClosing(event);
232
+        }
231 233
     }
232 234
 
233 235
     @Override

+ 16
- 10
ui_swing/src/com/dmdirc/addons/ui_swing/components/frames/ServerFrame.java 查看文件

@@ -142,27 +142,33 @@ public final class ServerFrame extends InputTextFrame {
142 142
 
143 143
     @Handler(invocation = EdtHandlerInvocation.class)
144 144
     public void handleCertProblem(final ServerCertificateProblemEncounteredEvent event) {
145
-        if (sslDialog != null) {
146
-            sslDialog.dispose();
147
-        }
145
+        if (event.getConnection().equals(connection)) {
146
+            if (sslDialog != null) {
147
+                sslDialog.dispose();
148
+            }
148 149
 
149
-        sslDialog = sslDialogFactory.create(event);
150
-        sslDialog.display();
150
+            sslDialog = sslDialogFactory.create(event);
151
+            sslDialog.display();
152
+        }
151 153
     }
152 154
 
153 155
     @Handler(invocation = EdtHandlerInvocation.class)
154 156
     public void handleCertProblemResolved(final ServerCertificateProblemResolvedEvent event) {
155
-        if (sslDialog != null) {
156
-            sslDialog.dispose();
157
+        if (event.getConnection().equals(connection)) {
158
+            if (sslDialog != null) {
159
+                sslDialog.dispose();
160
+            }
157 161
         }
158 162
     }
159 163
 
160 164
     @Override
161 165
     @Handler(invocation = EdtHandlerInvocation.class)
162 166
     public void windowClosing(final FrameClosingEvent event) {
163
-        connection.getWindowModel().getEventBus().unsubscribe(this);
164
-        dialogProvider.dispose(connection);
165
-        super.windowClosing(event);
167
+        if (event.getSource().equals(frameParent)) {
168
+            connection.getWindowModel().getEventBus().unsubscribe(this);
169
+            dialogProvider.dispose(connection);
170
+            super.windowClosing(event);
171
+        }
166 172
     }
167 173
 
168 174
     @Override

+ 0
- 2
windowflashing/src/com/dmdirc/addons/windowflashing/WindowFlashingManager.java 查看文件

@@ -176,8 +176,6 @@ public class WindowFlashingManager {
176 176
         }
177 177
     }
178 178
 
179
-
180
-
181 179
     @Handler
182 180
     public void showConfig(final ClientPrefsOpenedEvent event) {
183 181
         final PreferencesDialogModel manager = event.getModel();

Loading…
取消
儲存