Browse Source

Remove some event-based errors.

pull/585/head
Chris Smith 9 years ago
parent
commit
e939448113

+ 12
- 14
src/com/dmdirc/config/ConfigBinder.java View File

22
 
22
 
23
 package com.dmdirc.config;
23
 package com.dmdirc.config;
24
 
24
 
25
-import com.dmdirc.DMDircMBassador;
26
-import com.dmdirc.events.AppErrorEvent;
27
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
25
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
28
 import com.dmdirc.interfaces.config.ConfigChangeListener;
26
 import com.dmdirc.interfaces.config.ConfigChangeListener;
29
 import com.dmdirc.interfaces.config.ReadOnlyConfigProvider;
27
 import com.dmdirc.interfaces.config.ReadOnlyConfigProvider;
30
-import com.dmdirc.logger.ErrorLevel;
31
 
28
 
32
 import com.google.common.collect.ArrayListMultimap;
29
 import com.google.common.collect.ArrayListMultimap;
33
 import com.google.common.collect.Multimap;
30
 import com.google.common.collect.Multimap;
43
 
40
 
44
 import javax.annotation.Nonnull;
41
 import javax.annotation.Nonnull;
45
 
42
 
43
+import org.slf4j.Logger;
44
+import org.slf4j.LoggerFactory;
45
+
46
+import static com.dmdirc.util.LogUtils.APP_ERROR;
47
+
46
 /**
48
 /**
47
  * Facilitates automatically binding fields or methods annotated with a {@link ConfigBinding}
49
  * Facilitates automatically binding fields or methods annotated with a {@link ConfigBinding}
48
  * element to a configuration value.
50
  * element to a configuration value.
49
  */
51
  */
50
 public class ConfigBinder {
52
 public class ConfigBinder {
51
 
53
 
54
+    private static final Logger LOG = LoggerFactory.getLogger(ConfigBinder.class);
55
+
52
     /** A map of instances to created listeners. */
56
     /** A map of instances to created listeners. */
53
     private final Multimap<Object, ConfigChangeListener> listeners = ArrayListMultimap.create();
57
     private final Multimap<Object, ConfigChangeListener> listeners = ArrayListMultimap.create();
54
     /** The default domain to use. */
58
     /** The default domain to use. */
55
     private final Optional<String> defaultDomain;
59
     private final Optional<String> defaultDomain;
56
     /** The configuration manager to use to retrieve settings. */
60
     /** The configuration manager to use to retrieve settings. */
57
     private final AggregateConfigProvider manager;
61
     private final AggregateConfigProvider manager;
58
-    /** The event but used to raise error events. */
59
-    private final DMDircMBassador eventBus;
60
 
62
 
61
-    ConfigBinder(final AggregateConfigProvider manager, final DMDircMBassador eventBus) {
63
+    ConfigBinder(final AggregateConfigProvider manager) {
62
         this.manager = manager;
64
         this.manager = manager;
63
-        this.eventBus = eventBus;
64
         this.defaultDomain = Optional.empty();
65
         this.defaultDomain = Optional.empty();
65
     }
66
     }
66
 
67
 
67
-    ConfigBinder(final AggregateConfigProvider manager, final DMDircMBassador eventBus,
68
-            @Nonnull final String domain) {
68
+    ConfigBinder(final AggregateConfigProvider manager, @Nonnull final String domain) {
69
         this.manager = manager;
69
         this.manager = manager;
70
-        this.eventBus = eventBus;
71
         this.defaultDomain = Optional.of(domain);
70
         this.defaultDomain = Optional.of(domain);
72
     }
71
     }
73
 
72
 
148
         try {
147
         try {
149
             binding.invocation().newInstance().invoke(element, instance, value);
148
             binding.invocation().newInstance().invoke(element, instance, value);
150
         } catch (ReflectiveOperationException ex) {
149
         } catch (ReflectiveOperationException ex) {
151
-            eventBus.publish(new AppErrorEvent(ErrorLevel.HIGH, ex,
152
-                    "Exception when updating bound setting", ""));
150
+            LOG.error(APP_ERROR, "Exception when updating bound setting", ex);
153
         }
151
         }
154
     }
152
     }
155
 
153
 
219
      * @param newListeners The listeners to be added
217
      * @param newListeners The listeners to be added
220
      */
218
      */
221
     private void addListeners(final Object instance,
219
     private void addListeners(final Object instance,
222
-            final Collection<ConfigChangeListener> newListeners) {
220
+            final Iterable<ConfigChangeListener> newListeners) {
223
         synchronized (listeners) {
221
         synchronized (listeners) {
224
             listeners.putAll(instance, newListeners);
222
             listeners.putAll(instance, newListeners);
225
         }
223
         }
244
      * @return A config binder with the specified default domain.
242
      * @return A config binder with the specified default domain.
245
      */
243
      */
246
     public ConfigBinder withDefaultDomain(@Nonnull final String domain) {
244
     public ConfigBinder withDefaultDomain(@Nonnull final String domain) {
247
-        return new ConfigBinder(manager, eventBus, domain);
245
+        return new ConfigBinder(manager, domain);
248
     }
246
     }
249
 
247
 
250
 }
248
 }

+ 8
- 16
src/com/dmdirc/config/ConfigFileBackedConfigProvider.java View File

22
 
22
 
23
 package com.dmdirc.config;
23
 package com.dmdirc.config;
24
 
24
 
25
-import com.dmdirc.DMDircMBassador;
26
-import com.dmdirc.events.UserErrorEvent;
27
 import com.dmdirc.interfaces.config.ConfigChangeListener;
25
 import com.dmdirc.interfaces.config.ConfigChangeListener;
28
 import com.dmdirc.interfaces.config.ConfigProvider;
26
 import com.dmdirc.interfaces.config.ConfigProvider;
29
-import com.dmdirc.logger.ErrorLevel;
30
 import com.dmdirc.util.io.ConfigFile;
27
 import com.dmdirc.util.io.ConfigFile;
31
 import com.dmdirc.util.io.InvalidConfigFileException;
28
 import com.dmdirc.util.io.InvalidConfigFileException;
32
 import com.dmdirc.util.validators.Validator;
29
 import com.dmdirc.util.validators.Validator;
50
 import org.slf4j.Logger;
47
 import org.slf4j.Logger;
51
 import org.slf4j.LoggerFactory;
48
 import org.slf4j.LoggerFactory;
52
 
49
 
50
+import static com.dmdirc.util.LogUtils.USER_ERROR;
51
+
53
 /**
52
 /**
54
  * Provides configuration settings from a {@link ConfigFile}.
53
  * Provides configuration settings from a {@link ConfigFile}.
55
  */
54
  */
72
     /** The config change listeners for this source. */
71
     /** The config change listeners for this source. */
73
     protected final List<WeakReference<ConfigChangeListener>> listeners =
72
     protected final List<WeakReference<ConfigChangeListener>> listeners =
74
             new CopyOnWriteArrayList<>();
73
             new CopyOnWriteArrayList<>();
75
-    /** The event bus to post error events to. */
76
-    private final DMDircMBassador eventBus;
77
     /** Whether this identity needs to be saved. */
74
     /** Whether this identity needs to be saved. */
78
     protected boolean needSave;
75
     protected boolean needSave;
79
 
76
 
87
      * @throws InvalidIdentityFileException Missing required properties
84
      * @throws InvalidIdentityFileException Missing required properties
88
      * @throws IOException                  Input/output exception
85
      * @throws IOException                  Input/output exception
89
      */
86
      */
90
-    public ConfigFileBackedConfigProvider(@Nullable final IdentityManager identityManager,
91
-            final DMDircMBassador eventBus, final Path file, final boolean forceDefault)
92
-            throws IOException, InvalidIdentityFileException {
87
+    public ConfigFileBackedConfigProvider(
88
+            @Nullable final IdentityManager identityManager, final Path file,
89
+            final boolean forceDefault) throws IOException, InvalidIdentityFileException {
93
         this.identityManager = identityManager;
90
         this.identityManager = identityManager;
94
         this.file = new ConfigFile(file);
91
         this.file = new ConfigFile(file);
95
         this.file.setAutomake(true);
92
         this.file.setAutomake(true);
96
-        this.eventBus = eventBus;
97
         initFile(forceDefault);
93
         initFile(forceDefault);
98
         myTarget = getTarget(forceDefault);
94
         myTarget = getTarget(forceDefault);
99
     }
95
     }
107
      * @throws InvalidIdentityFileException Missing required properties
103
      * @throws InvalidIdentityFileException Missing required properties
108
      * @throws IOException                  Input/output exception
104
      * @throws IOException                  Input/output exception
109
      */
105
      */
110
-    public ConfigFileBackedConfigProvider(final DMDircMBassador eventBus, final InputStream stream,
106
+    public ConfigFileBackedConfigProvider(final InputStream stream,
111
             final boolean forceDefault) throws IOException, InvalidIdentityFileException {
107
             final boolean forceDefault) throws IOException, InvalidIdentityFileException {
112
         this.identityManager = null;
108
         this.identityManager = null;
113
         this.file = new ConfigFile(stream);
109
         this.file = new ConfigFile(stream);
114
         this.file.setAutomake(true);
110
         this.file.setAutomake(true);
115
-        this.eventBus = eventBus;
116
         initFile(forceDefault);
111
         initFile(forceDefault);
117
         myTarget = getTarget(forceDefault);
112
         myTarget = getTarget(forceDefault);
118
     }
113
     }
125
      * @param target          The target of this identity
120
      * @param target          The target of this identity
126
      */
121
      */
127
     public ConfigFileBackedConfigProvider(@Nullable final IdentityManager identityManager,
122
     public ConfigFileBackedConfigProvider(@Nullable final IdentityManager identityManager,
128
-            final DMDircMBassador eventBus, final ConfigFile configFile,
129
-            final ConfigTarget target) {
123
+            final ConfigFile configFile, final ConfigTarget target) {
130
         this.identityManager = identityManager;
124
         this.identityManager = identityManager;
131
         this.file = configFile;
125
         this.file = configFile;
132
-        this.eventBus = eventBus;
133
         this.file.setAutomake(true);
126
         this.file.setAutomake(true);
134
         this.myTarget = target;
127
         this.myTarget = target;
135
     }
128
     }
470
 
463
 
471
                 needSave = false;
464
                 needSave = false;
472
             } catch (IOException ex) {
465
             } catch (IOException ex) {
473
-                eventBus.publish(new UserErrorEvent(ErrorLevel.MEDIUM, ex,
474
-                        "Unable to save identity file: " + ex.getMessage(), ""));
466
+                LOG.warn(USER_ERROR, "Unable to save identity file", ex);
475
             }
467
             }
476
         }
468
         }
477
     }
469
     }

+ 1
- 1
src/com/dmdirc/config/ConfigManager.java View File

127
         this.server = server;
127
         this.server = server;
128
         this.channel = chanName;
128
         this.channel = chanName;
129
 
129
 
130
-        binder = new ConfigBinder(this, eventBus);
130
+        binder = new ConfigBinder(this);
131
     }
131
     }
132
 
132
 
133
     @Override
133
     @Override

+ 7
- 9
src/com/dmdirc/config/IdentityManager.java View File

24
 
24
 
25
 import com.dmdirc.DMDircMBassador;
25
 import com.dmdirc.DMDircMBassador;
26
 import com.dmdirc.Precondition;
26
 import com.dmdirc.Precondition;
27
-import com.dmdirc.events.AppErrorEvent;
28
 import com.dmdirc.events.UserErrorEvent;
27
 import com.dmdirc.events.UserErrorEvent;
29
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
28
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
30
 import com.dmdirc.interfaces.config.ConfigProvider;
29
 import com.dmdirc.interfaces.config.ConfigProvider;
60
 import org.slf4j.Logger;
59
 import org.slf4j.Logger;
61
 import org.slf4j.LoggerFactory;
60
 import org.slf4j.LoggerFactory;
62
 
61
 
62
+import static com.dmdirc.util.LogUtils.FATAL_APP_ERROR;
63
 import static com.google.common.base.Preconditions.checkArgument;
63
 import static com.google.common.base.Preconditions.checkArgument;
64
 import static com.google.common.base.Preconditions.checkNotNull;
64
 import static com.google.common.base.Preconditions.checkNotNull;
65
 
65
 
144
         addonSettings.put("name", "Addon defaults");
144
         addonSettings.put("name", "Addon defaults");
145
         addonConfigFile.addDomain("identity", addonSettings);
145
         addonConfigFile.addDomain("identity", addonSettings);
146
 
146
 
147
-        addonConfig = new ConfigFileBackedConfigProvider(this, eventBus, addonConfigFile, target);
147
+        addonConfig = new ConfigFileBackedConfigProvider(this, addonConfigFile, target);
148
         addConfigProvider(addonConfig);
148
         addConfigProvider(addonConfig);
149
     }
149
     }
150
 
150
 
156
             loadIdentity(FileUtils.getPathForResource(getClass().getResource(
156
             loadIdentity(FileUtils.getPathForResource(getClass().getResource(
157
                     "defaults/default/formatter")));
157
                     "defaults/default/formatter")));
158
         } catch (URISyntaxException ex) {
158
         } catch (URISyntaxException ex) {
159
-            eventBus.publishAsync(new AppErrorEvent(ErrorLevel.FATAL, ex,
160
-                    "Unable to load settings", ""));
159
+            LOG.error(FATAL_APP_ERROR, "Unable to load settings", ex);
161
         }
160
         }
162
 
161
 
163
         final Path file = identitiesDirectory.resolve("modealiases");
162
         final Path file = identitiesDirectory.resolve("modealiases");
265
         }
264
         }
266
 
265
 
267
         try {
266
         try {
268
-            final ConfigProvider provider = new ConfigFileBackedConfigProvider(this, eventBus,
269
-                    file, false);
267
+            final ConfigProvider provider = new ConfigFileBackedConfigProvider(this, file, false);
270
             addConfigProvider(provider);
268
             addConfigProvider(provider);
271
             configProvidersByPath.put(file, provider);
269
             configProvidersByPath.put(file, provider);
272
         } catch (InvalidIdentityFileException ex) {
270
         } catch (InvalidIdentityFileException ex) {
307
     @Override
305
     @Override
308
     public void loadVersionIdentity() {
306
     public void loadVersionIdentity() {
309
         try {
307
         try {
310
-            versionConfig = new ConfigFileBackedConfigProvider(eventBus, IdentityManager.class.
308
+            versionConfig = new ConfigFileBackedConfigProvider(IdentityManager.class.
311
                     getResourceAsStream("/com/dmdirc/version.config"), false);
309
                     getResourceAsStream("/com/dmdirc/version.config"), false);
312
             addConfigProvider(versionConfig);
310
             addConfigProvider(versionConfig);
313
         } catch (IOException | InvalidIdentityFileException ex) {
311
         } catch (IOException | InvalidIdentityFileException ex) {
329
                 Files.createFile(file);
327
                 Files.createFile(file);
330
             }
328
             }
331
 
329
 
332
-            config = new ConfigFileBackedConfigProvider(this, eventBus, file, true);
330
+            config = new ConfigFileBackedConfigProvider(this, file, true);
333
             config.setOption("identity", "name", "Global config");
331
             config.setOption("identity", "name", "Global config");
334
             configProvidersByPath.put(file, config);
332
             configProvidersByPath.put(file, config);
335
             addConfigProvider(config);
333
             addConfigProvider(config);
653
         configFile.write();
651
         configFile.write();
654
 
652
 
655
         final ConfigFileBackedConfigProvider identity = new ConfigFileBackedConfigProvider(this,
653
         final ConfigFileBackedConfigProvider identity = new ConfigFileBackedConfigProvider(this,
656
-                eventBus, file, false);
654
+                file, false);
657
         addConfigProvider(identity);
655
         addConfigProvider(identity);
658
 
656
 
659
         return identity;
657
         return identity;

+ 1
- 1
src/com/dmdirc/plugins/PluginInfo.java View File

267
         try (final InputStream stream = Files.newInputStream(path)) {
267
         try (final InputStream stream = Files.newInputStream(path)) {
268
             synchronized (configProviders) {
268
             synchronized (configProviders) {
269
                 final ConfigProvider configProvider =
269
                 final ConfigProvider configProvider =
270
-                        new ConfigFileBackedConfigProvider(eventBus, stream, false);
270
+                        new ConfigFileBackedConfigProvider(stream, false);
271
                 identityController.addConfigProvider(configProvider);
271
                 identityController.addConfigProvider(configProvider);
272
                 configProviders.add(configProvider);
272
                 configProviders.add(configProvider);
273
             }
273
             }

+ 1
- 1
src/com/dmdirc/ui/themes/Theme.java View File

110
 
110
 
111
         if (stream != null) {
111
         if (stream != null) {
112
             try {
112
             try {
113
-                identity = new ThemeIdentity(eventBus, stream, this);
113
+                identity = new ThemeIdentity(stream, this);
114
                 identityController.addConfigProvider(identity);
114
                 identityController.addConfigProvider(identity);
115
             } catch (InvalidIdentityFileException | IOException ex) {
115
             } catch (InvalidIdentityFileException | IOException ex) {
116
                 eventBus.publish(new UserErrorEvent(ErrorLevel.MEDIUM,
116
                 eventBus.publish(new UserErrorEvent(ErrorLevel.MEDIUM,

+ 3
- 4
src/com/dmdirc/ui/themes/ThemeIdentity.java View File

22
 
22
 
23
 package com.dmdirc.ui.themes;
23
 package com.dmdirc.ui.themes;
24
 
24
 
25
-import com.dmdirc.DMDircMBassador;
26
 import com.dmdirc.config.ConfigFileBackedConfigProvider;
25
 import com.dmdirc.config.ConfigFileBackedConfigProvider;
27
 import com.dmdirc.config.InvalidIdentityFileException;
26
 import com.dmdirc.config.InvalidIdentityFileException;
28
 import com.dmdirc.util.validators.Validator;
27
 import com.dmdirc.util.validators.Validator;
47
      * @throws InvalidIdentityFileException Missing required properties
46
      * @throws InvalidIdentityFileException Missing required properties
48
      * @throws IOException                  Input/output exception
47
      * @throws IOException                  Input/output exception
49
      */
48
      */
50
-    public ThemeIdentity(final DMDircMBassador eventBus, final InputStream stream,
51
-            final Theme theme) throws IOException, InvalidIdentityFileException {
52
-        super(eventBus, stream, true);
49
+    public ThemeIdentity(final InputStream stream, final Theme theme)
50
+            throws IOException, InvalidIdentityFileException {
51
+        super(stream, true);
53
 
52
 
54
         myTarget.setTheme();
53
         myTarget.setTheme();
55
         this.theme = theme;
54
         this.theme = theme;

+ 1
- 3
test/com/dmdirc/config/ConfigBinderTest.java View File

22
 
22
 
23
 package com.dmdirc.config;
23
 package com.dmdirc.config;
24
 
24
 
25
-import com.dmdirc.DMDircMBassador;
26
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
25
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
27
 
26
 
28
 import org.junit.Before;
27
 import org.junit.Before;
41
 public class ConfigBinderTest {
40
 public class ConfigBinderTest {
42
 
41
 
43
     @Mock private AggregateConfigProvider configProvider;
42
     @Mock private AggregateConfigProvider configProvider;
44
-    @Mock private DMDircMBassador eventBus;
45
     private ConfigBinder binder;
43
     private ConfigBinder binder;
46
 
44
 
47
     @Before
45
     @Before
48
     public void setup() {
46
     public void setup() {
49
-        binder = new ConfigBinder(configProvider, eventBus);
47
+        binder = new ConfigBinder(configProvider);
50
     }
48
     }
51
 
49
 
52
     @Test
50
     @Test

+ 4
- 8
test/com/dmdirc/config/ConfigFileBackedConfigProviderTest.java View File

22
 
22
 
23
 package com.dmdirc.config;
23
 package com.dmdirc.config;
24
 
24
 
25
-import com.dmdirc.DMDircMBassador;
26
 import com.dmdirc.interfaces.config.ConfigChangeListener;
25
 import com.dmdirc.interfaces.config.ConfigChangeListener;
27
 import com.dmdirc.interfaces.config.ConfigProvider;
26
 import com.dmdirc.interfaces.config.ConfigProvider;
28
 import com.dmdirc.util.io.InvalidConfigFileException;
27
 import com.dmdirc.util.io.InvalidConfigFileException;
65
 
64
 
66
     @Mock private IdentityManager identityManager;
65
     @Mock private IdentityManager identityManager;
67
     @Mock private ConfigChangeListener changeListener;
66
     @Mock private ConfigChangeListener changeListener;
68
-    @Mock private DMDircMBassador eventBus;
69
 
67
 
70
     private FileSystem fs;
68
     private FileSystem fs;
71
 
69
 
80
 
78
 
81
     @Test(expected = InvalidIdentityFileException.class)
79
     @Test(expected = InvalidIdentityFileException.class)
82
     public void testNoName() throws IOException, InvalidIdentityFileException {
80
     public void testNoName() throws IOException, InvalidIdentityFileException {
83
-        new ConfigFileBackedConfigProvider(identityManager, eventBus, fs.getPath("no-name"), false);
81
+        new ConfigFileBackedConfigProvider(identityManager, fs.getPath("no-name"), false);
84
     }
82
     }
85
 
83
 
86
     @Test(expected = InvalidIdentityFileException.class)
84
     @Test(expected = InvalidIdentityFileException.class)
87
     public void testNoTarget() throws IOException, InvalidIdentityFileException {
85
     public void testNoTarget() throws IOException, InvalidIdentityFileException {
88
-        new ConfigFileBackedConfigProvider(identityManager,  eventBus,fs.getPath("no-target"), false);
86
+        new ConfigFileBackedConfigProvider(identityManager, fs.getPath("no-target"), false);
89
     }
87
     }
90
 
88
 
91
     @Test(expected = InvalidIdentityFileException.class)
89
     @Test(expected = InvalidIdentityFileException.class)
92
     public void testInvalidConfigFile() throws IOException, InvalidIdentityFileException {
90
     public void testInvalidConfigFile() throws IOException, InvalidIdentityFileException {
93
-        new ConfigFileBackedConfigProvider(identityManager, eventBus,
94
-                fs.getPath("invalid-config-file"), false);
91
+        new ConfigFileBackedConfigProvider(identityManager, fs.getPath("invalid-config-file"), false);
95
     }
92
     }
96
 
93
 
97
     @Test
94
     @Test
321
 
318
 
322
     private ConfigFileBackedConfigProvider getProvider(final String file)
319
     private ConfigFileBackedConfigProvider getProvider(final String file)
323
             throws IOException, InvalidIdentityFileException {
320
             throws IOException, InvalidIdentityFileException {
324
-        return new ConfigFileBackedConfigProvider(identityManager, eventBus,
325
-                fs.getPath(file), false);
321
+        return new ConfigFileBackedConfigProvider(identityManager, fs.getPath(file), false);
326
     }
322
     }
327
 
323
 
328
 }
324
 }

Loading…
Cancel
Save