Procházet zdrojové kódy

Merge pull request #666 from csmith/master

Add source checks for eventbus handlers.
pull/667/head
Greg Holmes před 8 roky
rodič
revize
6bb1b2baf1

+ 7
- 5
src/com/dmdirc/GroupChatManagerImpl.java Zobrazit soubor

194
 
194
 
195
     @Handler
195
     @Handler
196
     void handleChannelClosing(final ChannelClosedEvent event) {
196
     void handleChannelClosing(final ChannelClosedEvent event) {
197
-        final GroupChat channel = event.getChannel();
198
-        connection.getWindowModel().getInputModel().get().getTabCompleter()
199
-                .removeEntry(TabCompletionType.CHANNEL, channel.getName());
200
-        channels.remove(channel.getName());
201
-        channel.getEventBus().unsubscribe(this);
197
+        if (event.getChannel().getConnection().equals(connection)) {
198
+            final GroupChat channel = event.getChannel();
199
+            connection.getWindowModel().getInputModel().get().getTabCompleter()
200
+                    .removeEntry(TabCompletionType.CHANNEL, channel.getName());
201
+            channels.remove(channel.getName());
202
+            channel.getEventBus().unsubscribe(this);
203
+        }
202
     }
204
     }
203
 
205
 
204
 }
206
 }

+ 4
- 2
src/com/dmdirc/Server.java Zobrazit soubor

207
         windowModel.getConfigManager().addChangeListener("formatter", "serverName", configListener);
207
         windowModel.getConfigManager().addChangeListener("formatter", "serverName", configListener);
208
         windowModel.getConfigManager().addChangeListener("formatter", "serverTitle", configListener);
208
         windowModel.getConfigManager().addChangeListener("formatter", "serverTitle", configListener);
209
 
209
 
210
-        this.highlightManager = new HighlightManager(windowModel.getConfigManager(),
210
+        this.highlightManager = new HighlightManager(
211
+                windowModel,
212
+                windowModel.getConfigManager(),
211
                 new ColourManager(windowModel.getConfigManager()));
213
                 new ColourManager(windowModel.getConfigManager()));
212
         highlightManager.init();
214
         highlightManager.init();
213
         windowModel.getEventBus().subscribe(highlightManager);
215
         windowModel.getEventBus().subscribe(highlightManager);
705
 
707
 
706
     @Handler
708
     @Handler
707
     private void handleClose(final FrameClosingEvent event) {
709
     private void handleClose(final FrameClosingEvent event) {
708
-        if (event.getSource() == windowModel) {
710
+        if (event.getSource().equals(windowModel)) {
709
             synchronized (myStateLock) {
711
             synchronized (myStateLock) {
710
                 eventHandler.unregisterCallbacks();
712
                 eventHandler.unregisterCallbacks();
711
                 windowModel.getConfigManager().removeListener(configListener);
713
                 windowModel.getConfigManager().removeListener(configListener);

+ 21
- 11
src/com/dmdirc/ui/messages/HighlightManager.java Zobrazit soubor

32
 import com.dmdirc.events.ServerConnectedEvent;
32
 import com.dmdirc.events.ServerConnectedEvent;
33
 import com.dmdirc.events.ServerNickChangeEvent;
33
 import com.dmdirc.events.ServerNickChangeEvent;
34
 import com.dmdirc.interfaces.User;
34
 import com.dmdirc.interfaces.User;
35
+import com.dmdirc.interfaces.WindowModel;
35
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
36
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
36
 import com.dmdirc.util.colours.Colour;
37
 import com.dmdirc.util.colours.Colour;
37
 
38
 
53
             "(\\p{Space}|\\p{Punct}|$).*";
54
             "(\\p{Space}|\\p{Punct}|$).*";
54
 
55
 
55
     private final Collection<Pattern> patterns = new ArrayList<>();
56
     private final Collection<Pattern> patterns = new ArrayList<>();
57
+    private final WindowModel serverWindow;
56
     private final AggregateConfigProvider configProvider;
58
     private final AggregateConfigProvider configProvider;
57
     private final ColourManager colourManager;
59
     private final ColourManager colourManager;
58
 
60
 
62
     private Optional<Colour> foregroundColour = Optional.empty();
64
     private Optional<Colour> foregroundColour = Optional.empty();
63
 
65
 
64
     public HighlightManager(
66
     public HighlightManager(
67
+            final WindowModel serverWindow,
65
             final AggregateConfigProvider configProvider,
68
             final AggregateConfigProvider configProvider,
66
             final ColourManager colourManager) {
69
             final ColourManager colourManager) {
70
+        this.serverWindow = serverWindow;
67
         this.configProvider = configProvider;
71
         this.configProvider = configProvider;
68
         this.colourManager = colourManager;
72
         this.colourManager = colourManager;
69
     }
73
     }
78
 
82
 
79
     @Handler
83
     @Handler
80
     void handleChannelMessage(final BaseChannelTextEvent event) {
84
     void handleChannelMessage(final BaseChannelTextEvent event) {
81
-        if (patterns.stream().anyMatch(p -> p.matcher(event.getMessage()).matches())) {
85
+        if (event.getChannel().getConnection().get().getWindowModel().equals(serverWindow)
86
+                && patterns.stream().anyMatch(p -> p.matcher(event.getMessage()).matches())) {
82
             setColours(event);
87
             setColours(event);
83
             event.getChannel().getEventBus().publishAsync(new ChannelHighlightEvent(event));
88
             event.getChannel().getEventBus().publishAsync(new ChannelHighlightEvent(event));
84
         }
89
         }
86
 
91
 
87
     @Handler
92
     @Handler
88
     void handleQueryMessage(final BaseQueryTextEvent event) {
93
     void handleQueryMessage(final BaseQueryTextEvent event) {
89
-        if (patterns.stream().anyMatch(p -> p.matcher(event.getMessage()).matches())) {
94
+        if (event.getUser().getConnection().getWindowModel().equals(serverWindow)
95
+                && patterns.stream().anyMatch(p -> p.matcher(event.getMessage()).matches())) {
90
             setColours(event);
96
             setColours(event);
91
             event.getQuery().getEventBus().publishAsync(new QueryHighlightEvent(event));
97
             event.getQuery().getEventBus().publishAsync(new QueryHighlightEvent(event));
92
         }
98
         }
94
 
100
 
95
     @Handler
101
     @Handler
96
     void handleNickChange(final ServerNickChangeEvent event) {
102
     void handleNickChange(final ServerNickChangeEvent event) {
97
-        setNickname(event.getNewNick());
103
+        if (event.getConnection().getWindowModel().equals(serverWindow)) {
104
+            setNickname(event.getNewNick());
105
+        }
98
     }
106
     }
99
 
107
 
100
     @Handler
108
     @Handler
101
     void handleConnected(final ServerConnectedEvent event) {
109
     void handleConnected(final ServerConnectedEvent event) {
102
-        patterns.clear();
110
+        if (event.getConnection().getWindowModel().equals(serverWindow)) {
111
+            patterns.clear();
103
 
112
 
104
-        event.getConnection().getProfile().getHighlights()
105
-                .stream()
106
-                .map(this::compile)
107
-                .forEach(patterns::add);
113
+            event.getConnection().getProfile().getHighlights()
114
+                    .stream()
115
+                    .map(this::compile)
116
+                    .forEach(patterns::add);
108
 
117
 
109
-        event.getConnection().getLocalUser()
110
-                .map(User::getNickname)
111
-                .ifPresent(this::setNickname);
118
+            event.getConnection().getLocalUser()
119
+                    .map(User::getNickname)
120
+                    .ifPresent(this::setNickname);
121
+        }
112
     }
122
     }
113
 
123
 
114
     @ConfigBinding(domain = "ui", key = "highlightLineForegroundColour", required = false)
124
     @ConfigBinding(domain = "ui", key = "highlightLineForegroundColour", required = false)

+ 4
- 1
test/com/dmdirc/ui/messages/HighlightManagerTest.java Zobrazit soubor

32
 import com.dmdirc.interfaces.Connection;
32
 import com.dmdirc.interfaces.Connection;
33
 import com.dmdirc.interfaces.GroupChatUser;
33
 import com.dmdirc.interfaces.GroupChatUser;
34
 import com.dmdirc.interfaces.User;
34
 import com.dmdirc.interfaces.User;
35
+import com.dmdirc.interfaces.WindowModel;
35
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
36
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
36
 
37
 
37
 import com.google.common.collect.Lists;
38
 import com.google.common.collect.Lists;
57
 public class HighlightManagerTest {
58
 public class HighlightManagerTest {
58
 
59
 
59
     @Mock private Connection connection;
60
     @Mock private Connection connection;
61
+    @Mock private WindowModel windowModel;
60
     @Mock private User user;
62
     @Mock private User user;
61
     @Mock private Profile profile;
63
     @Mock private Profile profile;
62
 
64
 
72
     public void setup() {
74
     public void setup() {
73
         when(connection.getLocalUser()).thenReturn(Optional.of(user));
75
         when(connection.getLocalUser()).thenReturn(Optional.of(user));
74
         when(connection.getProfile()).thenReturn(profile);
76
         when(connection.getProfile()).thenReturn(profile);
77
+        when(connection.getWindowModel()).thenReturn(windowModel);
75
 
78
 
76
         when(channel.getEventBus()).thenReturn(eventBus);
79
         when(channel.getEventBus()).thenReturn(eventBus);
77
 
80
 
78
-        manager = new HighlightManager(configProvider, colourManager);
81
+        manager = new HighlightManager(windowModel, configProvider, colourManager);
79
     }
82
     }
80
 
83
 
81
     @Test
84
     @Test

Načítá se…
Zrušit
Uložit