Explorar el Código

EventBus logging for URLBuilder.

Change-Id: If1f98b4007a50f66c2dcd6f0a7744d24b2139555
Reviewed-on: http://gerrit.dmdirc.com/3673
Automatic-Compile: DMDirc Build Manager
Reviewed-by: Chris Smith <chris@dmdirc.com>
pull/1/head
Greg Holmes hace 10 años
padre
commit
3ba3aed30a
Se han modificado 2 ficheros con 66 adiciones y 30 borrados
  1. 19
    8
      src/com/dmdirc/util/URLBuilder.java
  2. 47
    22
      test/com/dmdirc/util/URLBuilderTest.java

+ 19
- 8
src/com/dmdirc/util/URLBuilder.java Ver fichero

@@ -22,11 +22,13 @@
22 22
 
23 23
 package com.dmdirc.util;
24 24
 
25
+import com.dmdirc.events.UserErrorEvent;
25 26
 import com.dmdirc.logger.ErrorLevel;
26
-import com.dmdirc.logger.Logger;
27 27
 import com.dmdirc.plugins.PluginManager;
28 28
 import com.dmdirc.ui.themes.ThemeManager;
29 29
 
30
+import com.google.common.eventbus.EventBus;
31
+
30 32
 import java.net.MalformedURLException;
31 33
 import java.net.URL;
32 34
 
@@ -44,19 +46,24 @@ public class URLBuilder {
44 46
     private final Provider<PluginManager> pluginManagerProvider;
45 47
     /** Provider to retrieve a theme manager instance when needed. */
46 48
     private final Provider<ThemeManager> themeManagerProvider;
49
+    /** The event bus to post errors on. */
50
+    private final EventBus eventBus;
47 51
 
48 52
     /**
49 53
      * Creates a new instance of URLBuilder.
50 54
      *
51 55
      * @param pluginManagerProvider Provider to retrieve a plugin manager instance when needed.
52 56
      * @param themeManagerProvider  Provider to retrieve a theme manager instance when needed.
57
+     * @param eventBus              The event bus to post errors on.
53 58
      */
54 59
     @Inject
55 60
     public URLBuilder(
56 61
             final Provider<PluginManager> pluginManagerProvider,
57
-            final Provider<ThemeManager> themeManagerProvider) {
62
+            final Provider<ThemeManager> themeManagerProvider,
63
+            final EventBus eventBus) {
58 64
         this.pluginManagerProvider = pluginManagerProvider;
59 65
         this.themeManagerProvider = themeManagerProvider;
66
+        this.eventBus = eventBus;
60 67
     }
61 68
 
62 69
     /**
@@ -72,7 +79,7 @@ public class URLBuilder {
72 79
         try {
73 80
             return new URL(prefix + path);
74 81
         } catch (MalformedURLException ex) {
75
-            Logger.appError(ErrorLevel.HIGH, "Unable to build file URL", ex);
82
+            eventBus.post(new UserErrorEvent(ErrorLevel.HIGH, ex, "Unable to build file URL", ""));
76 83
             return null;
77 84
         }
78 85
     }
@@ -93,7 +100,7 @@ public class URLBuilder {
93 100
             }
94 101
             return new URL(url);
95 102
         } catch (MalformedURLException ex) {
96
-            Logger.appError(ErrorLevel.HIGH, "Unable to build jar URL", ex);
103
+            eventBus.post(new UserErrorEvent(ErrorLevel.HIGH, ex, "Unable to build jar URL", ""));
97 104
             return null;
98 105
         }
99 106
     }
@@ -158,7 +165,8 @@ public class URLBuilder {
158 165
             final int offset = spec.indexOf(':', 6);
159 166
 
160 167
             if (offset < 0) {
161
-                Logger.userError(ErrorLevel.LOW, "Invalid URL, must contain ':': " + spec);
168
+                eventBus.post(new UserErrorEvent(ErrorLevel.LOW, null,
169
+                        "Invalid URL, must contain ':': " + spec, ""));
162 170
                 return null;
163 171
             } else {
164 172
                 return getUrlForJarFile(spec.substring(6, offset), spec.substring(offset + 1));
@@ -167,7 +175,8 @@ public class URLBuilder {
167 175
             final int offset = spec.indexOf(':', 8);
168 176
 
169 177
             if (offset < 0) {
170
-                Logger.userError(ErrorLevel.LOW, "Invalid URL, must contain ':': " + spec);
178
+                eventBus.post(new UserErrorEvent(ErrorLevel.LOW, null,
179
+                        "Invalid URL, must contain ':': " + spec, ""));
171 180
                 return null;
172 181
             } else {
173 182
                 return getUrlForPluginResource(spec.substring(9, offset), spec.substring(offset + 1));
@@ -176,7 +185,8 @@ public class URLBuilder {
176 185
             final int offset = spec.indexOf(':', 8);
177 186
 
178 187
             if (offset < 0) {
179
-                Logger.userError(ErrorLevel.LOW, "Invalid URL, must contain ':': " + spec);
188
+                eventBus.post(new UserErrorEvent(ErrorLevel.LOW, null,
189
+                        "Invalid URL, must contain ':': " + spec, ""));
180 190
                 return null;
181 191
             } else {
182 192
                 return getUrlForThemeResource(spec.substring(8, offset), spec.substring(offset + 1));
@@ -185,7 +195,8 @@ public class URLBuilder {
185 195
             try {
186 196
                 return new URL(spec);
187 197
             } catch (MalformedURLException ex) {
188
-                Logger.userError(ErrorLevel.MEDIUM, "Unable to load resource", ex);
198
+                eventBus.post(new UserErrorEvent(ErrorLevel.LOW, ex,
199
+                        "Unable to load resource", ""));
189 200
                 return null;
190 201
             }
191 202
         } else {

+ 47
- 22
test/com/dmdirc/util/URLBuilderTest.java Ver fichero

@@ -27,6 +27,8 @@ import com.dmdirc.plugins.PluginManager;
27 27
 import com.dmdirc.plugins.PluginMetaData;
28 28
 import com.dmdirc.ui.themes.ThemeManager;
29 29
 
30
+import com.google.common.eventbus.EventBus;
31
+
30 32
 import java.net.MalformedURLException;
31 33
 import java.net.URL;
32 34
 
@@ -51,6 +53,7 @@ public class URLBuilderTest {
51 53
     @Mock private ThemeManager themeManager;
52 54
     @Mock private PluginInfo pluginInfo;
53 55
     @Mock private PluginMetaData pluginMetaData;
56
+    @Mock private EventBus eventBus;
54 57
 
55 58
     @Before
56 59
     public void setup() throws MalformedURLException {
@@ -64,43 +67,50 @@ public class URLBuilderTest {
64 67
 
65 68
     @Test
66 69
     public void testGetUrlForFileWithoutFilePrefix() throws MalformedURLException {
67
-        URLBuilder urlBuilder = new URLBuilder(pluginManagerProvider, themeManagerProvider);
70
+        URLBuilder urlBuilder
71
+                = new URLBuilder(pluginManagerProvider, themeManagerProvider, eventBus);
68 72
         Assert.assertEquals(new URL("file://test"), urlBuilder.getUrlForFile("test"));
69 73
     }
70 74
 
71 75
     @Test
72 76
     public void testGetUrlForFileWithFilePrefix() throws MalformedURLException {
73
-        URLBuilder urlBuilder = new URLBuilder(pluginManagerProvider, themeManagerProvider);
77
+        URLBuilder urlBuilder
78
+                = new URLBuilder(pluginManagerProvider, themeManagerProvider, eventBus);
74 79
         Assert.assertEquals(new URL("file://test"), urlBuilder.getUrlForFile("file://test"));
75 80
     }
76 81
 
77 82
     @Test
78 83
     public void testGetUrlInvalid() throws MalformedURLException {
79
-        URLBuilder urlBuilder = new URLBuilder(pluginManagerProvider, themeManagerProvider);
84
+        URLBuilder urlBuilder
85
+                = new URLBuilder(pluginManagerProvider, themeManagerProvider, eventBus);
80 86
         Assert.assertNull(urlBuilder.getUrlForFile("file://[test"));
81 87
     }
82 88
 
83 89
     @Test
84 90
     public void testGetUrlForJarFile() throws MalformedURLException {
85
-        URLBuilder urlBuilder = new URLBuilder(pluginManagerProvider, themeManagerProvider);
91
+        URLBuilder urlBuilder
92
+                = new URLBuilder(pluginManagerProvider, themeManagerProvider, eventBus);
86 93
         Assert.assertEquals(new URL("jar:file:/jarFile!/test"), urlBuilder.getUrlForJarFile("jarFile", "test"));
87 94
     }
88 95
 
89 96
     @Test
90 97
     public void testGetUrlForJarFileInvalud() throws MalformedURLException {
91
-        URLBuilder urlBuilder = new URLBuilder(pluginManagerProvider, themeManagerProvider);
98
+        URLBuilder urlBuilder
99
+                = new URLBuilder(pluginManagerProvider, themeManagerProvider, eventBus);
92 100
         Assert.assertNull(urlBuilder.getUrlForJarFile("[jarFile", "test"));
93 101
     }
94 102
 
95 103
     @Test
96 104
     public void testGetUrlForDMDircResourceNonExistant() {
97
-        URLBuilder urlBuilder = new URLBuilder(pluginManagerProvider, themeManagerProvider);
105
+        URLBuilder urlBuilder
106
+                = new URLBuilder(pluginManagerProvider, themeManagerProvider, eventBus);
98 107
         Assert.assertNull(urlBuilder.getUrlForDMDircResource("test"));
99 108
     }
100 109
 
101 110
     @Test
102 111
     public void testGetUrlForDMDircResource() throws MalformedURLException {
103
-        URLBuilder urlBuilder = new URLBuilder(pluginManagerProvider, themeManagerProvider);
112
+        URLBuilder urlBuilder
113
+                = new URLBuilder(pluginManagerProvider, themeManagerProvider, eventBus);
104 114
         URL url = urlBuilder.getUrlForDMDircResource("com/dmdirc/Main.class");
105 115
         Assert.assertEquals("file", url.getProtocol());
106 116
         Assert.assertTrue(url.getFile().endsWith("com/dmdirc/Main.class"));
@@ -108,19 +118,22 @@ public class URLBuilderTest {
108 118
 
109 119
     @Test
110 120
     public void testGetUrlForThemeResource() throws MalformedURLException {
111
-        URLBuilder urlBuilder = new URLBuilder(pluginManagerProvider, themeManagerProvider);
121
+        URLBuilder urlBuilder
122
+                = new URLBuilder(pluginManagerProvider, themeManagerProvider, eventBus);
112 123
         Assert.assertEquals(new URL("jar:file:/themes/testTheme.zip!/testFile"), urlBuilder.getUrlForThemeResource("testTheme", "testFile"));
113 124
     }
114 125
 
115 126
     @Test
116 127
     public void testGetUrlForPluginResource() throws MalformedURLException {
117
-        URLBuilder urlBuilder = new URLBuilder(pluginManagerProvider, themeManagerProvider);
128
+        URLBuilder urlBuilder
129
+                = new URLBuilder(pluginManagerProvider, themeManagerProvider, eventBus);
118 130
         Assert.assertEquals(new URL("jar:file:/testPlugin!/testFile"), urlBuilder.getUrlForPluginResource("testPlugin", "testFile"));
119 131
     }
120 132
 
121 133
     @Test
122 134
     public void testGetUrlDMDirc() {
123
-        URLBuilder urlBuilder = new URLBuilder(pluginManagerProvider, themeManagerProvider);
135
+        URLBuilder urlBuilder
136
+                = new URLBuilder(pluginManagerProvider, themeManagerProvider, eventBus);
124 137
         URL url = urlBuilder.getUrl("dmdirc://com/dmdirc/Main.class");
125 138
         Assert.assertEquals("file", url.getProtocol());
126 139
         Assert.assertTrue(url.getFile().endsWith("com/dmdirc/Main.class"));
@@ -128,73 +141,85 @@ public class URLBuilderTest {
128 141
 
129 142
     @Test
130 143
     public void testGetUrlJar() throws MalformedURLException {
131
-        URLBuilder urlBuilder = new URLBuilder(pluginManagerProvider, themeManagerProvider);
144
+        URLBuilder urlBuilder
145
+                = new URLBuilder(pluginManagerProvider, themeManagerProvider, eventBus);
132 146
         Assert.assertEquals(new URL("jar:file:/jarFile!/testFile"), urlBuilder.getUrl("jar://jarFile:testFile"));
133 147
     }
134 148
 
135 149
     @Test
136 150
     public void testGetUrlJarWithoutFile() throws MalformedURLException {
137
-        URLBuilder urlBuilder = new URLBuilder(pluginManagerProvider, themeManagerProvider);
151
+        URLBuilder urlBuilder
152
+                = new URLBuilder(pluginManagerProvider, themeManagerProvider, eventBus);
138 153
         Assert.assertNull(urlBuilder.getUrl("jar://jarFile"));
139 154
     }
140 155
 
141 156
     @Test
142 157
     public void testGetUrlZip() throws MalformedURLException {
143
-        URLBuilder urlBuilder = new URLBuilder(pluginManagerProvider, themeManagerProvider);
158
+        URLBuilder urlBuilder
159
+                = new URLBuilder(pluginManagerProvider, themeManagerProvider, eventBus);
144 160
         Assert.assertEquals(new URL("jar:file:/zipFile!/testFile"), urlBuilder.getUrl("zip://zipFile:testFile"));
145 161
     }
146 162
 
147 163
     @Test
148 164
     public void testGetUrlZipWithoutFile() throws MalformedURLException {
149
-        URLBuilder urlBuilder = new URLBuilder(pluginManagerProvider, themeManagerProvider);
165
+        URLBuilder urlBuilder
166
+                = new URLBuilder(pluginManagerProvider, themeManagerProvider, eventBus);
150 167
         Assert.assertNull(urlBuilder.getUrl("zip://zipFile"));
151 168
     }
152 169
 
153 170
     @Test
154 171
     public void testGetUrlPlugin() throws MalformedURLException {
155
-        URLBuilder urlBuilder = new URLBuilder(pluginManagerProvider, themeManagerProvider);
172
+        URLBuilder urlBuilder
173
+                = new URLBuilder(pluginManagerProvider, themeManagerProvider, eventBus);
156 174
         Assert.assertEquals(new URL("jar:file:/testPlugin!/testFile"), urlBuilder.getUrl("plugin://pluginFile:testFile"));
157 175
     }
158 176
 
159 177
     @Test
160 178
     public void testGetUrlPluginWithoutFile() throws MalformedURLException {
161
-        URLBuilder urlBuilder = new URLBuilder(pluginManagerProvider, themeManagerProvider);
179
+        URLBuilder urlBuilder
180
+                = new URLBuilder(pluginManagerProvider, themeManagerProvider, eventBus);
162 181
         Assert.assertNull(urlBuilder.getUrl("plugin://pluginFile"));
163 182
     }
164 183
 
165 184
     @Test
166 185
     public void testGetUrlTheme() throws MalformedURLException {
167
-        URLBuilder urlBuilder = new URLBuilder(pluginManagerProvider, themeManagerProvider);
186
+        URLBuilder urlBuilder
187
+                = new URLBuilder(pluginManagerProvider, themeManagerProvider, eventBus);
168 188
         Assert.assertEquals(new URL("jar:file:/themes/themeFile.zip!/testFile"), urlBuilder.getUrl("theme://themeFile:testFile"));
169 189
     }
170 190
 
171 191
     @Test
172 192
     public void testGetUrlThemeWithoutFile() throws MalformedURLException {
173
-        URLBuilder urlBuilder = new URLBuilder(pluginManagerProvider, themeManagerProvider);
193
+        URLBuilder urlBuilder
194
+                = new URLBuilder(pluginManagerProvider, themeManagerProvider, eventBus);
174 195
         Assert.assertNull(urlBuilder.getUrl("theme://themeFile"));
175 196
     }
176 197
 
177 198
     @Test
178 199
     public void testGetUrlHTTP() throws MalformedURLException {
179
-        URLBuilder urlBuilder = new URLBuilder(pluginManagerProvider, themeManagerProvider);
200
+        URLBuilder urlBuilder
201
+                = new URLBuilder(pluginManagerProvider, themeManagerProvider, eventBus);
180 202
         Assert.assertEquals(new URL("http://testDomain"), urlBuilder.getUrl("http://testDomain"));
181 203
     }
182 204
 
183 205
     @Test
184 206
     public void testGetUrlHTTPInvalid() throws MalformedURLException {
185
-        URLBuilder urlBuilder = new URLBuilder(pluginManagerProvider, themeManagerProvider);
207
+        URLBuilder urlBuilder
208
+                = new URLBuilder(pluginManagerProvider, themeManagerProvider, eventBus);
186 209
         Assert.assertNull(urlBuilder.getUrl("http://[testDomain"));
187 210
     }
188 211
 
189 212
     @Test
190 213
     public void testGetUrlFileWithPrefix() throws MalformedURLException {
191
-        URLBuilder urlBuilder = new URLBuilder(pluginManagerProvider, themeManagerProvider);
214
+        URLBuilder urlBuilder
215
+                = new URLBuilder(pluginManagerProvider, themeManagerProvider, eventBus);
192 216
         Assert.assertEquals(new URL("file://testFile"), urlBuilder.getUrl("file://testFile"));
193 217
     }
194 218
 
195 219
     @Test
196 220
     public void testGetUrlFileWithoutPrefix() throws MalformedURLException {
197
-        URLBuilder urlBuilder = new URLBuilder(pluginManagerProvider, themeManagerProvider);
221
+        URLBuilder urlBuilder
222
+                = new URLBuilder(pluginManagerProvider, themeManagerProvider, eventBus);
198 223
         Assert.assertEquals(new URL("file://testFile"), urlBuilder.getUrl("testFile"));
199 224
     }
200 225
 }

Loading…
Cancelar
Guardar