Quellcode durchsuchen

Merge pull request #450 from csmith/master

Use events for some more plugin outputs.
pull/451/head
Greg Holmes vor 8 Jahren
Ursprung
Commit
4639737185

+ 2
- 9
logging/src/com/dmdirc/addons/logging/HistoryWindow.java Datei anzeigen

@@ -34,10 +34,7 @@ import com.google.common.annotations.VisibleForTesting;
34 34
 
35 35
 import java.io.IOException;
36 36
 import java.nio.file.Path;
37
-import java.text.ParsePosition;
38
-import java.text.SimpleDateFormat;
39 37
 import java.util.Collections;
40
-import java.util.Date;
41 38
 import java.util.List;
42 39
 import java.util.Optional;
43 40
 
@@ -84,12 +81,8 @@ public class HistoryWindow extends FrameContainer {
84 81
         try (final ReverseFileReader reader = new ReverseFileReader(logFile)) {
85 82
             final List<String> lines = reader.getLines(Math.min(limit, numLines));
86 83
             Collections.reverse(lines);
87
-            lines.forEach(l -> {
88
-                final ParsePosition pos = new ParsePosition(0);
89
-                final Date date = new SimpleDateFormat("[dd/MM/yyyy HH:mm:ss]").parse(l, pos);
90
-                final String text = l.substring(pos.getIndex()+1);
91
-                addLine(text, date);
92
-            });
84
+            lines.forEach(l ->
85
+                    getEventBus().publishAsync(new HistoricalLineRestoredEvent(this, l)));
93 86
         } catch (IOException | SecurityException ex) {
94 87
             LOG.warn(USER_ERROR, "Unable to read log file.", ex);
95 88
         }

+ 31
- 22
logging/test/com/dmdirc/addons/logging/HistoryWindowTest.java Datei anzeigen

@@ -24,34 +24,36 @@ package com.dmdirc.addons.logging;
24 24
 
25 25
 import com.dmdirc.DMDircMBassador;
26 26
 import com.dmdirc.config.ConfigBinder;
27
-import com.dmdirc.events.DisplayPropertyMap;
28 27
 import com.dmdirc.interfaces.Connection;
29 28
 import com.dmdirc.interfaces.WindowModel;
30 29
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
31 30
 import com.dmdirc.ui.messages.BackBuffer;
32 31
 import com.dmdirc.ui.messages.BackBufferFactory;
33
-import com.dmdirc.ui.messages.IRCDocument;
34 32
 
35 33
 import java.nio.file.Paths;
36
-import java.text.SimpleDateFormat;
34
+import java.util.ArrayList;
35
+import java.util.List;
37 36
 import java.util.Optional;
37
+import java.util.concurrent.CountDownLatch;
38
+import java.util.concurrent.TimeUnit;
38 39
 
39 40
 import org.junit.Before;
40 41
 import org.junit.Test;
41 42
 import org.junit.runner.RunWith;
42
-import org.mockito.InOrder;
43 43
 import org.mockito.Mock;
44 44
 import org.mockito.runners.MockitoJUnitRunner;
45 45
 
46
+import net.engio.mbassy.listener.Handler;
47
+import net.engio.mbassy.listener.Listener;
48
+import net.engio.mbassy.listener.References;
49
+
46 50
 import static junit.framework.TestCase.assertEquals;
51
+import static org.junit.Assert.assertTrue;
47 52
 import static org.mockito.Matchers.any;
48
-import static org.mockito.Matchers.eq;
49
-import static org.mockito.Mockito.inOrder;
50 53
 import static org.mockito.Mockito.when;
51 54
 @RunWith(MockitoJUnitRunner.class)
52 55
 public class HistoryWindowTest {
53 56
 
54
-    @Mock private IRCDocument document;
55 57
     @Mock private BackBuffer backBuffer;
56 58
     @Mock private AggregateConfigProvider config;
57 59
     @Mock private ConfigBinder configBinder;
@@ -64,7 +66,6 @@ public class HistoryWindowTest {
64 66
     @Before
65 67
     public void setUp() throws Exception {
66 68
         when(backBufferFactory.getBackBuffer(any())).thenReturn(backBuffer);
67
-        when(backBuffer.getDocument()).thenReturn(document);
68 69
         when(config.getBinder()).thenReturn(configBinder);
69 70
         when(frameContainer.getConfigManager()).thenReturn(config);
70 71
         when(frameContainer.getConnection()).thenReturn(Optional.of(connection));
@@ -80,20 +81,28 @@ public class HistoryWindowTest {
80 81
 
81 82
     @Test
82 83
     public void testOutputLoggingBackBuffer() throws Exception {
84
+        final LineListener listener = new LineListener();
85
+        instance.getEventBus().subscribe(listener);
83 86
         instance.outputLoggingBackBuffer(4);
84
-        final InOrder inOrder = inOrder(document);
85
-        inOrder.verify(document).addText(eq(new SimpleDateFormat("[dd/MM/yyyy HH:mm:ss]")
86
-                .parse("[21/12/2015 12:58:02]").getTime()), eq
87
-                (DisplayPropertyMap.EMPTY), eq("RAAR"));
88
-        inOrder.verify(document).addText(eq(new SimpleDateFormat("[dd/MM/yyyy HH:mm:ss]")
89
-                .parse("[21/12/2015 12:59:03]").getTime()), eq
90
-                (DisplayPropertyMap.EMPTY), eq("RAAAR"));
91
-        inOrder.verify(document).addText(eq(new SimpleDateFormat("[dd/MM/yyyy HH:mm:ss]")
92
-                .parse("[21/12/2015 13:00:04]").getTime()), eq
93
-                (DisplayPropertyMap.EMPTY), eq("RAAAAR"));
94
-        inOrder.verify(document).addText(eq(new SimpleDateFormat("[dd/MM/yyyy HH:mm:ss]")
95
-                .parse("[21/12/2015 13:01:05]").getTime()), eq
96
-                (DisplayPropertyMap.EMPTY), eq("RAAAAAR"));
97
-        inOrder.verifyNoMoreInteractions();
87
+
88
+        assertTrue(listener.latch.await(5, TimeUnit.SECONDS));
89
+        assertEquals("[21/12/2015 12:58:02] RAAR", listener.values.get(0).getLine());
90
+        assertEquals("[21/12/2015 12:59:03] RAAAR", listener.values.get(1).getLine());
91
+        assertEquals("[21/12/2015 13:00:04] RAAAAR", listener.values.get(2).getLine());
92
+        assertEquals("[21/12/2015 13:01:05] RAAAAAR", listener.values.get(3).getLine());
93
+    }
94
+
95
+    @Listener(references = References.Strong)
96
+    private static class LineListener {
97
+
98
+        public final List<HistoricalLineRestoredEvent> values = new ArrayList<>();
99
+        public final CountDownLatch latch = new CountDownLatch(4);
100
+
101
+        @Handler
102
+        private void handleLineRestored(final HistoricalLineRestoredEvent event) {
103
+            values.add(event);
104
+            latch.countDown();
105
+        }
106
+
98 107
     }
99 108
 }

+ 4
- 3
parserdebug/src/com/dmdirc/addons/parserdebug/DebugWindow.java Datei anzeigen

@@ -24,13 +24,13 @@ package com.dmdirc.addons.parserdebug;
24 24
 
25 25
 import com.dmdirc.DMDircMBassador;
26 26
 import com.dmdirc.FrameContainer;
27
+import com.dmdirc.events.CommandOutputEvent;
27 28
 import com.dmdirc.interfaces.Connection;
28 29
 import com.dmdirc.parser.interfaces.Parser;
29 30
 import com.dmdirc.ui.core.components.WindowComponent;
30 31
 import com.dmdirc.ui.messages.BackBufferFactory;
31 32
 
32 33
 import java.util.Arrays;
33
-import java.util.Date;
34 34
 import java.util.Optional;
35 35
 
36 36
 /**
@@ -74,8 +74,9 @@ public class DebugWindow extends FrameContainer {
74 74
      * Set the parser to null to stop us holding onto parsers when the server connection is closed.
75 75
      */
76 76
     public void unsetParser() {
77
-        addLine("======================", new Date());
78
-        addLine("Unset parser: " + parser, new Date());
77
+        getEventBus().publishAsync(new CommandOutputEvent(this,
78
+                "======================\n" +
79
+                "Unset parser: " + parser));
79 80
         parser = null;
80 81
     }
81 82
 

+ 11
- 8
parserdebug/src/com/dmdirc/addons/parserdebug/ParserDebugManager.java Datei anzeigen

@@ -23,6 +23,7 @@
23 23
 package com.dmdirc.addons.parserdebug;
24 24
 
25 25
 import com.dmdirc.DMDircMBassador;
26
+import com.dmdirc.events.CommandOutputEvent;
26 27
 import com.dmdirc.events.ServerDisconnectedEvent;
27 28
 import com.dmdirc.interfaces.Connection;
28 29
 import com.dmdirc.parser.events.DebugInfoEvent;
@@ -30,7 +31,6 @@ import com.dmdirc.parser.interfaces.Parser;
30 31
 import com.dmdirc.ui.WindowManager;
31 32
 import com.dmdirc.ui.messages.BackBufferFactory;
32 33
 
33
-import java.util.Date;
34 34
 import java.util.HashMap;
35 35
 import java.util.Map;
36 36
 
@@ -96,9 +96,10 @@ public class ParserDebugManager {
96 96
                 connection, eventBus, backBufferFactory);
97 97
         windowManager.addWindow(connection.getWindowModel(), window);
98 98
         registeredParsers.put(parser, window);
99
-        window.addLine("======================", new Date());
100
-        window.addLine("Started Monitoring: " + parser, new Date());
101
-        window.addLine("======================", new Date());
99
+        window.getEventBus().publishAsync(new CommandOutputEvent(window,
100
+                "======================\n" +
101
+                "Started Monitoring: " + parser + '\n' +
102
+                "======================"));
102 103
     }
103 104
 
104 105
     /**
@@ -110,9 +111,10 @@ public class ParserDebugManager {
110 111
     public void removeParser(final Parser parser, final boolean close) {
111 112
         parser.getCallbackManager().unsubscribe(this);
112 113
         final DebugWindow window = registeredParsers.get(parser);
113
-        window.addLine("======================", new Date());
114
-        window.addLine("No Longer Monitoring: " + parser + " (User Requested)", new Date());
115
-        window.addLine("======================", new Date());
114
+        window.getEventBus().publishAsync(new CommandOutputEvent(window,
115
+                "======================\n" +
116
+                "No Longer Monitoring: " + parser + " (User Requested)\n" +
117
+                "======================"));
116 118
         if (close) {
117 119
             window.close();
118 120
         }
@@ -142,7 +144,8 @@ public class ParserDebugManager {
142 144
     public void onDebugInfo(final DebugInfoEvent event) {
143 145
         final DebugWindow window = registeredParsers.get(event.getParser());
144 146
         if (window != null) {
145
-            window.addLine(String.format("[%d] %s%n", event.getLevel(), event.getData()), new Date());
147
+            window.getEventBus().publishAsync(new CommandOutputEvent(window,
148
+                    String.format("[%d] %s%n", event.getLevel(), event.getData())));
146 149
         }
147 150
     }
148 151
 

Laden…
Abbrechen
Speichern