Browse Source

Merge pull request #450 from csmith/master

Use events for some more plugin outputs.
pull/451/head
Greg Holmes 8 years ago
parent
commit
4639737185

+ 2
- 9
logging/src/com/dmdirc/addons/logging/HistoryWindow.java View File

34
 
34
 
35
 import java.io.IOException;
35
 import java.io.IOException;
36
 import java.nio.file.Path;
36
 import java.nio.file.Path;
37
-import java.text.ParsePosition;
38
-import java.text.SimpleDateFormat;
39
 import java.util.Collections;
37
 import java.util.Collections;
40
-import java.util.Date;
41
 import java.util.List;
38
 import java.util.List;
42
 import java.util.Optional;
39
 import java.util.Optional;
43
 
40
 
84
         try (final ReverseFileReader reader = new ReverseFileReader(logFile)) {
81
         try (final ReverseFileReader reader = new ReverseFileReader(logFile)) {
85
             final List<String> lines = reader.getLines(Math.min(limit, numLines));
82
             final List<String> lines = reader.getLines(Math.min(limit, numLines));
86
             Collections.reverse(lines);
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
         } catch (IOException | SecurityException ex) {
86
         } catch (IOException | SecurityException ex) {
94
             LOG.warn(USER_ERROR, "Unable to read log file.", ex);
87
             LOG.warn(USER_ERROR, "Unable to read log file.", ex);
95
         }
88
         }

+ 31
- 22
logging/test/com/dmdirc/addons/logging/HistoryWindowTest.java View File

24
 
24
 
25
 import com.dmdirc.DMDircMBassador;
25
 import com.dmdirc.DMDircMBassador;
26
 import com.dmdirc.config.ConfigBinder;
26
 import com.dmdirc.config.ConfigBinder;
27
-import com.dmdirc.events.DisplayPropertyMap;
28
 import com.dmdirc.interfaces.Connection;
27
 import com.dmdirc.interfaces.Connection;
29
 import com.dmdirc.interfaces.WindowModel;
28
 import com.dmdirc.interfaces.WindowModel;
30
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
29
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
31
 import com.dmdirc.ui.messages.BackBuffer;
30
 import com.dmdirc.ui.messages.BackBuffer;
32
 import com.dmdirc.ui.messages.BackBufferFactory;
31
 import com.dmdirc.ui.messages.BackBufferFactory;
33
-import com.dmdirc.ui.messages.IRCDocument;
34
 
32
 
35
 import java.nio.file.Paths;
33
 import java.nio.file.Paths;
36
-import java.text.SimpleDateFormat;
34
+import java.util.ArrayList;
35
+import java.util.List;
37
 import java.util.Optional;
36
 import java.util.Optional;
37
+import java.util.concurrent.CountDownLatch;
38
+import java.util.concurrent.TimeUnit;
38
 
39
 
39
 import org.junit.Before;
40
 import org.junit.Before;
40
 import org.junit.Test;
41
 import org.junit.Test;
41
 import org.junit.runner.RunWith;
42
 import org.junit.runner.RunWith;
42
-import org.mockito.InOrder;
43
 import org.mockito.Mock;
43
 import org.mockito.Mock;
44
 import org.mockito.runners.MockitoJUnitRunner;
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
 import static junit.framework.TestCase.assertEquals;
50
 import static junit.framework.TestCase.assertEquals;
51
+import static org.junit.Assert.assertTrue;
47
 import static org.mockito.Matchers.any;
52
 import static org.mockito.Matchers.any;
48
-import static org.mockito.Matchers.eq;
49
-import static org.mockito.Mockito.inOrder;
50
 import static org.mockito.Mockito.when;
53
 import static org.mockito.Mockito.when;
51
 @RunWith(MockitoJUnitRunner.class)
54
 @RunWith(MockitoJUnitRunner.class)
52
 public class HistoryWindowTest {
55
 public class HistoryWindowTest {
53
 
56
 
54
-    @Mock private IRCDocument document;
55
     @Mock private BackBuffer backBuffer;
57
     @Mock private BackBuffer backBuffer;
56
     @Mock private AggregateConfigProvider config;
58
     @Mock private AggregateConfigProvider config;
57
     @Mock private ConfigBinder configBinder;
59
     @Mock private ConfigBinder configBinder;
64
     @Before
66
     @Before
65
     public void setUp() throws Exception {
67
     public void setUp() throws Exception {
66
         when(backBufferFactory.getBackBuffer(any())).thenReturn(backBuffer);
68
         when(backBufferFactory.getBackBuffer(any())).thenReturn(backBuffer);
67
-        when(backBuffer.getDocument()).thenReturn(document);
68
         when(config.getBinder()).thenReturn(configBinder);
69
         when(config.getBinder()).thenReturn(configBinder);
69
         when(frameContainer.getConfigManager()).thenReturn(config);
70
         when(frameContainer.getConfigManager()).thenReturn(config);
70
         when(frameContainer.getConnection()).thenReturn(Optional.of(connection));
71
         when(frameContainer.getConnection()).thenReturn(Optional.of(connection));
80
 
81
 
81
     @Test
82
     @Test
82
     public void testOutputLoggingBackBuffer() throws Exception {
83
     public void testOutputLoggingBackBuffer() throws Exception {
84
+        final LineListener listener = new LineListener();
85
+        instance.getEventBus().subscribe(listener);
83
         instance.outputLoggingBackBuffer(4);
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 View File

24
 
24
 
25
 import com.dmdirc.DMDircMBassador;
25
 import com.dmdirc.DMDircMBassador;
26
 import com.dmdirc.FrameContainer;
26
 import com.dmdirc.FrameContainer;
27
+import com.dmdirc.events.CommandOutputEvent;
27
 import com.dmdirc.interfaces.Connection;
28
 import com.dmdirc.interfaces.Connection;
28
 import com.dmdirc.parser.interfaces.Parser;
29
 import com.dmdirc.parser.interfaces.Parser;
29
 import com.dmdirc.ui.core.components.WindowComponent;
30
 import com.dmdirc.ui.core.components.WindowComponent;
30
 import com.dmdirc.ui.messages.BackBufferFactory;
31
 import com.dmdirc.ui.messages.BackBufferFactory;
31
 
32
 
32
 import java.util.Arrays;
33
 import java.util.Arrays;
33
-import java.util.Date;
34
 import java.util.Optional;
34
 import java.util.Optional;
35
 
35
 
36
 /**
36
 /**
74
      * Set the parser to null to stop us holding onto parsers when the server connection is closed.
74
      * Set the parser to null to stop us holding onto parsers when the server connection is closed.
75
      */
75
      */
76
     public void unsetParser() {
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
         parser = null;
80
         parser = null;
80
     }
81
     }
81
 
82
 

+ 11
- 8
parserdebug/src/com/dmdirc/addons/parserdebug/ParserDebugManager.java View File

23
 package com.dmdirc.addons.parserdebug;
23
 package com.dmdirc.addons.parserdebug;
24
 
24
 
25
 import com.dmdirc.DMDircMBassador;
25
 import com.dmdirc.DMDircMBassador;
26
+import com.dmdirc.events.CommandOutputEvent;
26
 import com.dmdirc.events.ServerDisconnectedEvent;
27
 import com.dmdirc.events.ServerDisconnectedEvent;
27
 import com.dmdirc.interfaces.Connection;
28
 import com.dmdirc.interfaces.Connection;
28
 import com.dmdirc.parser.events.DebugInfoEvent;
29
 import com.dmdirc.parser.events.DebugInfoEvent;
30
 import com.dmdirc.ui.WindowManager;
31
 import com.dmdirc.ui.WindowManager;
31
 import com.dmdirc.ui.messages.BackBufferFactory;
32
 import com.dmdirc.ui.messages.BackBufferFactory;
32
 
33
 
33
-import java.util.Date;
34
 import java.util.HashMap;
34
 import java.util.HashMap;
35
 import java.util.Map;
35
 import java.util.Map;
36
 
36
 
96
                 connection, eventBus, backBufferFactory);
96
                 connection, eventBus, backBufferFactory);
97
         windowManager.addWindow(connection.getWindowModel(), window);
97
         windowManager.addWindow(connection.getWindowModel(), window);
98
         registeredParsers.put(parser, window);
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
     public void removeParser(final Parser parser, final boolean close) {
111
     public void removeParser(final Parser parser, final boolean close) {
111
         parser.getCallbackManager().unsubscribe(this);
112
         parser.getCallbackManager().unsubscribe(this);
112
         final DebugWindow window = registeredParsers.get(parser);
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
         if (close) {
118
         if (close) {
117
             window.close();
119
             window.close();
118
         }
120
         }
142
     public void onDebugInfo(final DebugInfoEvent event) {
144
     public void onDebugInfo(final DebugInfoEvent event) {
143
         final DebugWindow window = registeredParsers.get(event.getParser());
145
         final DebugWindow window = registeredParsers.get(event.getParser());
144
         if (window != null) {
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
 

Loading…
Cancel
Save