Browse Source

Tear Server and FrameContainer apart.

pull/650/head
Chris Smith 8 years ago
parent
commit
96933fd89a

+ 14
- 2
src/com/dmdirc/FrameContainer.java View File

@@ -28,6 +28,7 @@ import com.dmdirc.events.FrameComponentRemovedEvent;
28 28
 import com.dmdirc.events.FrameIconChangedEvent;
29 29
 import com.dmdirc.events.FrameNameChangedEvent;
30 30
 import com.dmdirc.events.FrameTitleChangedEvent;
31
+import com.dmdirc.interfaces.Connection;
31 32
 import com.dmdirc.interfaces.InputModel;
32 33
 import com.dmdirc.interfaces.WindowModel;
33 34
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
@@ -51,7 +52,7 @@ import javax.annotation.Nullable;
51 52
  * The frame container implements basic methods that should be present in all objects that handle a
52 53
  * frame.
53 54
  */
54
-public abstract class FrameContainer implements WindowModel {
55
+public class FrameContainer implements WindowModel {
55 56
 
56 57
     /** Listeners not yet using ListenerSupport. */
57 58
     protected final ListenerList listeners = new ListenerList();
@@ -79,11 +80,13 @@ public abstract class FrameContainer implements WindowModel {
79 80
     private BackBuffer backBuffer;
80 81
     /** The input model for this container. */
81 82
     private Optional<InputModel> inputModel = Optional.empty();
83
+    /** The connection associated with this model. */
84
+    private Optional<Connection> connection = Optional.empty();
82 85
 
83 86
     /**
84 87
      * Instantiate new frame container.
85 88
      */
86
-    protected FrameContainer(
89
+    public FrameContainer(
87 90
             final String icon,
88 91
             final String name,
89 92
             final String title,
@@ -234,4 +237,13 @@ public abstract class FrameContainer implements WindowModel {
234 237
         return unreadStatusManager;
235 238
     }
236 239
 
240
+    public void setConnection(@Nullable final Connection connection) {
241
+        this.connection = Optional.ofNullable(connection);
242
+    }
243
+
244
+    @Override
245
+    public Optional<Connection> getConnection() {
246
+        return connection;
247
+    }
248
+
237 249
 }

+ 76
- 67
src/com/dmdirc/Server.java View File

@@ -23,6 +23,7 @@
23 23
 package com.dmdirc;
24 24
 
25 25
 import com.dmdirc.config.profiles.Profile;
26
+import com.dmdirc.events.FrameClosingEvent;
26 27
 import com.dmdirc.events.ServerConnectErrorEvent;
27 28
 import com.dmdirc.events.ServerConnectedEvent;
28 29
 import com.dmdirc.events.ServerConnectingEvent;
@@ -83,6 +84,8 @@ import javax.net.ssl.SSLException;
83 84
 import org.slf4j.Logger;
84 85
 import org.slf4j.LoggerFactory;
85 86
 
87
+import net.engio.mbassy.listener.Handler;
88
+
86 89
 import static com.dmdirc.util.LogUtils.APP_ERROR;
87 90
 import static com.google.common.base.Preconditions.checkNotNull;
88 91
 
@@ -90,7 +93,7 @@ import static com.google.common.base.Preconditions.checkNotNull;
90 93
  * The Server class represents the client's view of a server. It maintains a list of all channels,
91 94
  * queries, etc, and handles parser callbacks pertaining to the server.
92 95
  */
93
-public class Server extends FrameContainer implements Connection {
96
+public class Server implements Connection {
94 97
 
95 98
     private static final Logger LOG = LoggerFactory.getLogger(Server.class);
96 99
     /** The name of the general domain. */
@@ -163,6 +166,7 @@ public class Server extends FrameContainer implements Connection {
163 166
     private final HighlightManager highlightManager;
164 167
     /** Listener to use for config changes. */
165 168
     private final ConfigChangeListener configListener = (domain, key) -> updateTitle();
169
+    private final FrameContainer windowModel;
166 170
     /** The future used when a reconnect timer is scheduled. */
167 171
     private ScheduledFuture<?> reconnectTimerFuture;
168 172
 
@@ -183,16 +187,14 @@ public class Server extends FrameContainer implements Connection {
183 187
             @Nonnull final Profile profile,
184 188
             final BackBufferFactory backBufferFactory,
185 189
             final UserManager userManager) {
186
-        super("server-disconnected",
187
-                getHost(uri),
188
-                getHost(uri),
189
-                configMigrator.getConfigProvider(),
190
-                backBufferFactory,
191
-                eventBus,
192
-                Arrays.asList(
193
-                        WindowComponent.TEXTAREA.getIdentifier(),
194
-                        WindowComponent.INPUTFIELD.getIdentifier(),
195
-                        WindowComponent.CERTIFICATE_VIEWER.getIdentifier()));
190
+        // TODO: Pass this in
191
+        windowModel =
192
+                new FrameContainer("server-disconnected", getHost(uri), getHost(uri),
193
+                        configMigrator.getConfigProvider(), backBufferFactory, eventBus,
194
+                        Arrays.asList(WindowComponent.TEXTAREA.getIdentifier(),
195
+                                WindowComponent.INPUTFIELD.getIdentifier(),
196
+                                WindowComponent.CERTIFICATE_VIEWER.getIdentifier()));
197
+        windowModel.setConnection(this);
196 198
 
197 199
         this.parserFactory = parserFactory;
198 200
         this.identityFactory = identityFactory;
@@ -206,7 +208,7 @@ public class Server extends FrameContainer implements Connection {
206 208
         this.inviteManager = new InviteManagerImpl(this);
207 209
 
208 210
         awayMessage = Optional.empty();
209
-        eventHandler = new ServerEventHandler(this, groupChatManager, getEventBus());
211
+        eventHandler = new ServerEventHandler(this, groupChatManager, windowModel.getEventBus());
210 212
 
211 213
         this.address = uri;
212 214
         this.profile = profile;
@@ -214,14 +216,15 @@ public class Server extends FrameContainer implements Connection {
214 216
 
215 217
         updateIcon();
216 218
 
217
-        getConfigManager().addChangeListener("formatter", "serverName", configListener);
218
-        getConfigManager().addChangeListener("formatter", "serverTitle", configListener);
219
+        windowModel.getConfigManager().addChangeListener("formatter", "serverName", configListener);
220
+        windowModel.getConfigManager().addChangeListener("formatter", "serverTitle", configListener);
219 221
 
220
-        initBackBuffer();
221
-        this.highlightManager = new HighlightManager(getConfigManager(),
222
-                new ColourManager(getConfigManager()));
222
+        windowModel.initBackBuffer();
223
+        this.highlightManager = new HighlightManager(windowModel.getConfigManager(),
224
+                new ColourManager(windowModel.getConfigManager()));
223 225
         highlightManager.init();
224
-        getEventBus().subscribe(highlightManager);
226
+        windowModel.getEventBus().subscribe(highlightManager);
227
+        windowModel.getEventBus().subscribe(this);
225 228
     }
226 229
 
227 230
     /**
@@ -278,7 +281,8 @@ public class Server extends FrameContainer implements Connection {
278 281
                     return;
279 282
                 case CONNECTED:
280 283
                 case CONNECTING:
281
-                    disconnect(getConfigManager().getOption(DOMAIN_GENERAL, "quitmessage"));
284
+                    disconnect(windowModel.getConfigManager()
285
+                            .getOption(DOMAIN_GENERAL, "quitmessage"));
282 286
                 case DISCONNECTING:
283 287
                     while (!myState.getState().isDisconnected()) {
284 288
                         try {
@@ -313,7 +317,7 @@ public class Server extends FrameContainer implements Connection {
313 317
                 parser = Optional.ofNullable(buildParser());
314 318
 
315 319
                 if (!parser.isPresent()) {
316
-                    getEventBus().publishAsync(
320
+                    windowModel.getEventBus().publishAsync(
317 321
                             new ServerUnknownProtocolEvent(this, address.getScheme()));
318 322
                     return;
319 323
                 }
@@ -338,7 +342,7 @@ public class Server extends FrameContainer implements Connection {
338 342
             }
339 343
         }
340 344
 
341
-        getEventBus().publish(new ServerConnectingEvent(this, address));
345
+        windowModel.getEventBus().publish(new ServerConnectingEvent(this, address));
342 346
     }
343 347
 
344 348
     @Override
@@ -356,12 +360,12 @@ public class Server extends FrameContainer implements Connection {
356 360
 
357 361
     @Override
358 362
     public void reconnect() {
359
-        reconnect(getConfigManager().getOption(DOMAIN_GENERAL, "reconnectmessage"));
363
+        reconnect(windowModel.getConfigManager().getOption(DOMAIN_GENERAL, "reconnectmessage"));
360 364
     }
361 365
 
362 366
     @Override
363 367
     public void disconnect() {
364
-        disconnect(getConfigManager().getOption(DOMAIN_GENERAL, "quitmessage"));
368
+        disconnect(windowModel.getConfigManager().getOption(DOMAIN_GENERAL, "quitmessage"));
365 369
     }
366 370
 
367 371
     @Override
@@ -403,7 +407,8 @@ public class Server extends FrameContainer implements Connection {
403 407
                 parserLock.readLock().unlock();
404 408
             }
405 409
 
406
-            if (getConfigManager().getOptionBool(DOMAIN_GENERAL, "closequeriesonquit")) {
410
+            if (windowModel.getConfigManager()
411
+                    .getOptionBool(DOMAIN_GENERAL, "closequeriesonquit")) {
407 412
                 closeQueries();
408 413
             }
409 414
         }
@@ -423,9 +428,10 @@ public class Server extends FrameContainer implements Connection {
423 428
             }
424 429
 
425 430
             final int delay = Math.max(1000,
426
-                    getConfigManager().getOptionInt(DOMAIN_GENERAL, "reconnectdelay"));
431
+                    windowModel.getConfigManager().getOptionInt(DOMAIN_GENERAL, "reconnectdelay"));
427 432
 
428
-            getEventBus().publishAsync(new ServerReconnectScheduledEvent(this, delay / 1000));
433
+            windowModel.getEventBus().publishAsync(
434
+                    new ServerReconnectScheduledEvent(this, delay / 1000));
429 435
 
430 436
             reconnectTimerFuture = executorService.schedule(() -> {
431 437
                 synchronized (myStateLock) {
@@ -483,7 +489,8 @@ public class Server extends FrameContainer implements Connection {
483 489
             if (!getState().isDisconnected()) {
484 490
                 newQuery.reregister();
485 491
             }
486
-            getInputModel().get().getTabCompleter().addEntry(TabCompletionType.QUERY_NICK, nick);
492
+            windowModel.getInputModel().get().getTabCompleter()
493
+                    .addEntry(TabCompletionType.QUERY_NICK, nick);
487 494
             queries.put(lnick, newQuery);
488 495
         }
489 496
 
@@ -492,8 +499,10 @@ public class Server extends FrameContainer implements Connection {
492 499
 
493 500
     @Override
494 501
     public void updateQuery(final Query query, final String oldNick, final String newNick) {
495
-        getInputModel().get().getTabCompleter().removeEntry(TabCompletionType.QUERY_NICK, oldNick);
496
-        getInputModel().get().getTabCompleter().addEntry(TabCompletionType.QUERY_NICK, newNick);
502
+        windowModel.getInputModel().get().getTabCompleter()
503
+                .removeEntry(TabCompletionType.QUERY_NICK, oldNick);
504
+        windowModel.getInputModel().get().getTabCompleter()
505
+                .addEntry(TabCompletionType.QUERY_NICK, newNick);
497 506
 
498 507
         queries.put(converter.toLowerCase(newNick), query);
499 508
         queries.remove(converter.toLowerCase(oldNick));
@@ -506,7 +515,7 @@ public class Server extends FrameContainer implements Connection {
506 515
 
507 516
     @Override
508 517
     public void delQuery(final Query query) {
509
-        getInputModel().get().getTabCompleter().removeEntry(
518
+        windowModel.getInputModel().get().getTabCompleter().removeEntry(
510 519
                 TabCompletionType.QUERY_NICK, query.getNickname());
511 520
         queries.remove(converter.toLowerCase(query.getNickname()));
512 521
     }
@@ -545,7 +554,8 @@ public class Server extends FrameContainer implements Connection {
545 554
      */
546 555
     @Nullable
547 556
     private Parser buildParser() {
548
-        final Parser myParser = parserFactory.getParser(profile, address, getConfigManager())
557
+        final Parser myParser = parserFactory
558
+                .getParser(profile, address, windowModel.getConfigManager())
549 559
                 .orElse(null);
550 560
 
551 561
         if (myParser != null) {
@@ -554,8 +564,8 @@ public class Server extends FrameContainer implements Connection {
554 564
 
555 565
         if (myParser instanceof SecureParser) {
556 566
             final CertificateManager certificateManager =
557
-                    new CertificateManager(this, address.getHost(), getConfigManager(),
558
-                            userSettings, getEventBus());
567
+                    new CertificateManager(this, address.getHost(), windowModel.getConfigManager(),
568
+                            userSettings, windowModel.getEventBus());
559 569
             final SecureParser secureParser = (SecureParser) myParser;
560 570
             secureParser.setTrustManagers(certificateManager);
561 571
             secureParser.setKeyManagers(certificateManager.getKeyManager());
@@ -582,7 +592,7 @@ public class Server extends FrameContainer implements Connection {
582 592
         final String icon = myState.getState() == ServerState.CONNECTED
583 593
                 ? protocolDescription.get().isSecure(address)
584 594
                 ? "secure-server" : "server" : "server-disconnected";
585
-        setIcon(icon);
595
+        windowModel.setIcon(icon);
586 596
     }
587 597
 
588 598
     /**
@@ -726,37 +736,38 @@ public class Server extends FrameContainer implements Connection {
726 736
         return myState;
727 737
     }
728 738
 
729
-    @Override
730
-    public void close() {
731
-        synchronized (myStateLock) {
732
-            eventHandler.unregisterCallbacks();
733
-            getConfigManager().removeListener(configListener);
734
-            highlightManager.stop();
735
-            getEventBus().unsubscribe(highlightManager);
736
-            executorService.shutdown();
737
-
738
-            disconnect();
739
+    @Handler
740
+    private void handleClose(final FrameClosingEvent event) {
741
+        if (event.getContainer() == windowModel) {
742
+            synchronized (myStateLock) {
743
+                eventHandler.unregisterCallbacks();
744
+                windowModel.getConfigManager().removeListener(configListener);
745
+                highlightManager.stop();
746
+                windowModel.getEventBus().unsubscribe(highlightManager);
747
+                executorService.shutdown();
739 748
 
740
-            myState.transition(ServerState.CLOSING);
741
-        }
749
+                disconnect();
742 750
 
743
-        groupChatManager.closeAll();
744
-        closeQueries();
745
-        inviteManager.removeInvites();
751
+                myState.transition(ServerState.CLOSING);
752
+            }
746 753
 
747
-        super.close();
754
+            groupChatManager.closeAll();
755
+            closeQueries();
756
+            inviteManager.removeInvites();
757
+            windowModel.getEventBus().unsubscribe(this);
758
+        }
748 759
     }
749 760
 
750 761
     @Override
751 762
     public WindowModel getWindowModel() {
752
-        return this;
763
+        return windowModel;
753 764
     }
754 765
 
755 766
     @Override
756 767
     public void sendCTCPReply(final String source, final String type, final String args) {
757 768
         if ("VERSION".equalsIgnoreCase(type)) {
758 769
             parser.get().sendCTCPReply(source, "VERSION",
759
-                    "DMDirc " + getConfigManager().getOption("version", "version") +
770
+                    "DMDirc " + windowModel.getConfigManager().getOption("version", "version") +
760 771
                             " - https://www.dmdirc.com/");
761 772
         } else if ("PING".equalsIgnoreCase(type)) {
762 773
             parser.get().sendCTCPReply(source, "PING", args);
@@ -765,11 +776,6 @@ public class Server extends FrameContainer implements Connection {
765 776
         }
766 777
     }
767 778
 
768
-    @Override
769
-    public Optional<Connection> getConnection() {
770
-        return Optional.of(this);
771
-    }
772
-
773 779
     @Override
774 780
     public void updateTitle() {
775 781
         synchronized (myStateLock) {
@@ -785,9 +791,9 @@ public class Server extends FrameContainer implements Connection {
785 791
                     getLocalUser().map(User::getNickname).orElse("Unknown")
786 792
                 };
787 793
 
788
-                setName(Formatter.formatMessage(getConfigManager(),
794
+                windowModel.setName(Formatter.formatMessage(windowModel.getConfigManager(),
789 795
                         "serverName", arguments));
790
-                setTitle(Formatter.formatMessage(getConfigManager(),
796
+                windowModel.setTitle(Formatter.formatMessage(windowModel.getConfigManager(),
791 797
                         "serverTitle", arguments));
792 798
             } finally {
793 799
                 parserLock.readLock().unlock();
@@ -808,7 +814,7 @@ public class Server extends FrameContainer implements Connection {
808 814
             return;
809 815
         }
810 816
 
811
-        getEventBus().publish(new ServerDisconnectedEvent(this));
817
+        windowModel.getEventBus().publish(new ServerDisconnectedEvent(this));
812 818
 
813 819
         eventHandler.unregisterCallbacks();
814 820
 
@@ -837,14 +843,16 @@ public class Server extends FrameContainer implements Connection {
837 843
 
838 844
             updateIcon();
839 845
 
840
-            if (getConfigManager().getOptionBool(DOMAIN_GENERAL, "closequeriesondisconnect")) {
846
+            if (windowModel.getConfigManager()
847
+                    .getOptionBool(DOMAIN_GENERAL, "closequeriesondisconnect")) {
841 848
                 closeQueries();
842 849
             }
843 850
 
844 851
             inviteManager.removeInvites();
845 852
             updateAwayState(Optional.empty());
846 853
 
847
-            if (getConfigManager().getOptionBool(DOMAIN_GENERAL, "reconnectondisconnect")
854
+            if (windowModel.getConfigManager()
855
+                    .getOptionBool(DOMAIN_GENERAL, "reconnectondisconnect")
848 856
                     && myState.getState() == ServerState.TRANSIENTLY_DISCONNECTED) {
849 857
                 doDelayedReconnect();
850 858
             }
@@ -884,10 +892,11 @@ public class Server extends FrameContainer implements Connection {
884 892
 
885 893
             updateIcon();
886 894
 
887
-            getEventBus().publish(new ServerConnectErrorEvent(this, getErrorDescription
888
-                    (errorInfo)));
895
+            windowModel.getEventBus().publish(new ServerConnectErrorEvent(this,
896
+                    getErrorDescription(errorInfo)));
889 897
 
890
-            if (getConfigManager().getOptionBool(DOMAIN_GENERAL, "reconnectonconnectfailure")) {
898
+            if (windowModel.getConfigManager()
899
+                    .getOptionBool(DOMAIN_GENERAL, "reconnectonconnectfailure")) {
891 900
                 doDelayedReconnect();
892 901
             }
893 902
         }
@@ -949,7 +958,7 @@ public class Server extends FrameContainer implements Connection {
949 958
             groupChatManager.handleConnected();
950 959
         }
951 960
 
952
-        getEventBus().publish(new ServerConnectedEvent(this));
961
+        windowModel.getEventBus().publish(new ServerConnectedEvent(this));
953 962
     }
954 963
 
955 964
     @Override
@@ -960,7 +969,7 @@ public class Server extends FrameContainer implements Connection {
960 969
     @Override
961 970
     public void updateIgnoreList() {
962 971
         ignoreList.clear();
963
-        ignoreList.addAll(getConfigManager().getOptionList("network", "ignorelist"));
972
+        ignoreList.addAll(windowModel.getConfigManager().getOptionList("network", "ignorelist"));
964 973
     }
965 974
 
966 975
     @Override

+ 3
- 3
src/com/dmdirc/ServerEventHandler.java View File

@@ -248,14 +248,14 @@ public class ServerEventHandler extends EventHandler {
248 248
     @Handler
249 249
     public void onPingFailed(final PingFailureEvent event) {
250 250
         eventBus.publishAsync(new StatusBarMessageEvent(new StatusMessage(
251
-                "No ping reply from " + owner.getName() + " for over " +
251
+                "No ping reply from " + owner.getWindowModel().getName() + " for over " +
252 252
                         (int) Math.floor(event.getParser().getPingTime() / 1000.0) + " seconds.",
253
-                owner.getConfigManager())));
253
+                owner.getWindowModel().getConfigManager())));
254 254
 
255 255
         eventBus.publishAsync(new ServerNoPingEvent(owner, event.getParser().getPingTime()));
256 256
 
257 257
         if (event.getParser().getPingTime()
258
-                >= owner.getConfigManager().getOptionInt("server", "pingtimeout")) {
258
+                >= owner.getWindowModel().getConfigManager().getOptionInt("server", "pingtimeout")) {
259 259
             LOG.warn("Server appears to be stoned, reconnecting");
260 260
             eventBus.publishAsync(new ServerStonedEvent(owner));
261 261
             owner.reconnect();

+ 3
- 2
src/com/dmdirc/ServerFactoryImpl.java View File

@@ -92,10 +92,11 @@ public class ServerFactoryImpl {
92 92
                 identityFactory, queryFactory.get(), eventBus,
93 93
                 messageEncoderFactory, userSettings, groupChatManagerFactory, executorService,
94 94
                 uri, profile, backBufferFactory, userManager);
95
-        server.setInputModel(new DefaultInputModel(
95
+        // TODO: Yuck!
96
+        ((FrameContainer) server.getWindowModel()).setInputModel(new DefaultInputModel(
96 97
                 server::sendLine,
97 98
                 new ServerCommandParser(
98
-                        server.getConfigManager(),
99
+                        server.getWindowModel().getConfigManager(),
99 100
                         commandController.get(),
100 101
                         eventBus,
101 102
                         server),

+ 2
- 2
src/com/dmdirc/ServerManager.java View File

@@ -113,7 +113,7 @@ public class ServerManager implements ConnectionManager {
113 113
                 uri,
114 114
                 profile);
115 115
         registerServer(server);
116
-        windowManager.addWindow(server);
116
+        windowManager.addWindow(server.getWindowModel());
117 117
         return server;
118 118
     }
119 119
 
@@ -152,7 +152,7 @@ public class ServerManager implements ConnectionManager {
152 152
     public void closeAll(final String message) {
153 153
         for (Server server : servers) {
154 154
             server.disconnect(message);
155
-            server.close();
155
+            server.getWindowModel().close();
156 156
         }
157 157
     }
158 158
 

+ 7
- 2
test/com/dmdirc/ServerManagerTest.java View File

@@ -25,6 +25,7 @@ package com.dmdirc;
25 25
 import com.dmdirc.config.profiles.Profile;
26 26
 import com.dmdirc.config.profiles.ProfileManager;
27 27
 import com.dmdirc.interfaces.GroupChatManager;
28
+import com.dmdirc.interfaces.WindowModel;
28 29
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
29 30
 import com.dmdirc.interfaces.config.ConfigProviderMigrator;
30 31
 import com.dmdirc.interfaces.config.IdentityFactory;
@@ -63,6 +64,7 @@ public class ServerManagerTest {
63 64
     @Mock private WindowManager windowManager;
64 65
     @Mock private ServerFactoryImpl serverFactoryImpl;
65 66
     @Mock private Server server;
67
+    @Mock private WindowModel windowModel;
66 68
     @Mock private GroupChatManager groupChatManager;
67 69
     @Mock private DMDircMBassador eventBus;
68 70
     @Mock private Channel channel;
@@ -77,6 +79,7 @@ public class ServerManagerTest {
77 79
 
78 80
         when(server.getState()).thenReturn(ServerState.DISCONNECTED);
79 81
         when(server.getGroupChatManager()).thenReturn(groupChatManager);
82
+        when(server.getWindowModel()).thenReturn(windowModel);
80 83
 
81 84
         when(profileManager.getProfiles()).thenReturn(Collections.singletonList(profile));
82 85
         when(profileManager.getDefault()).thenReturn(profile);
@@ -138,10 +141,12 @@ public class ServerManagerTest {
138 141
     @Test
139 142
     public void testCloseAllWithMessage() {
140 143
         final Server serverA = mock(Server.class);
144
+        final WindowModel model = mock(WindowModel.class);
145
+        when(serverA.getWindowModel()).thenReturn(model);
141 146
         serverManager.registerServer(serverA);
142 147
         serverManager.closeAll("message here");
143 148
         verify(serverA).disconnect("message here");
144
-        verify(serverA).close();
149
+        verify(model).close();
145 150
     }
146 151
 
147 152
     @Test
@@ -206,7 +211,7 @@ public class ServerManagerTest {
206 211
     @Test
207 212
     public void testAddsNewServersToWindowManager() {
208 213
         serverManager.connectToAddress(URI.create("irc://fobar"));
209
-        verify(windowManager).addWindow(server);
214
+        verify(windowManager).addWindow(windowModel);
210 215
     }
211 216
 
212 217
 }

Loading…
Cancel
Save