Просмотр исходного кода

Inject the PluginManager.

Change-Id: Ic5eaf45c19502b4d30db49e8b1b95d91be04fc2a
Reviewed-on: http://gerrit.dmdirc.com/2687
Automatic-Compile: DMDirc Build Manager
Reviewed-by: Greg Holmes <greg@dmdirc.com>
tags/0.8rc1
Chris Smith 10 лет назад
Родитель
Сommit
beda762db4

+ 12
- 0
src/com/dmdirc/ClientModule.java Просмотреть файл

25
 import com.dmdirc.actions.ActionManager;
25
 import com.dmdirc.actions.ActionManager;
26
 import com.dmdirc.commandline.CommandLineOptionsModule;
26
 import com.dmdirc.commandline.CommandLineOptionsModule;
27
 import com.dmdirc.config.IdentityManager;
27
 import com.dmdirc.config.IdentityManager;
28
+import com.dmdirc.interfaces.ActionController;
28
 import com.dmdirc.interfaces.IdentityController;
29
 import com.dmdirc.interfaces.IdentityController;
29
 
30
 
30
 import javax.inject.Singleton;
31
 import javax.inject.Singleton;
88
         return actionManager;
89
         return actionManager;
89
     }
90
     }
90
 
91
 
92
+    /**
93
+     * Provides an action controller.
94
+     *
95
+     * @param actionManager The action manager to use as a controller.
96
+     * @return An action controller to use.
97
+     */
98
+    @Provides
99
+    public ActionController getActionController(final ActionManager actionManager) {
100
+        return actionManager;
101
+    }
102
+
91
 }
103
 }

+ 6
- 6
src/com/dmdirc/Main.java Просмотреть файл

87
     /** The command-line parser used for this instance. */
87
     /** The command-line parser used for this instance. */
88
     private final CommandLineParser commandLineParser;
88
     private final CommandLineParser commandLineParser;
89
 
89
 
90
+    /** The plugin manager the client will use. */
91
+    private final PluginManager pluginManager;
92
+
90
     /** The config dir to use for the client. */
93
     /** The config dir to use for the client. */
91
     private final String configdir;
94
     private final String configdir;
92
 
95
 
94
     @Deprecated
97
     @Deprecated
95
     public static Main mainInstance;
98
     public static Main mainInstance;
96
 
99
 
97
-    /** Instance of pluginmanager used by this Main. */
98
-    protected PluginManager pluginManager;
99
-
100
     /**
100
     /**
101
      * Creates a new instance of {@link Main}.
101
      * Creates a new instance of {@link Main}.
102
      *
102
      *
104
      * @param serverManager The server manager the client will use.
104
      * @param serverManager The server manager the client will use.
105
      * @param actionManager The action manager the client will use.
105
      * @param actionManager The action manager the client will use.
106
      * @param commandLineParser The command-line parser used for this instance.
106
      * @param commandLineParser The command-line parser used for this instance.
107
+     * @param pluginManager The plugin manager the client will use.
107
      * @param configDir The base configuration directory to use.
108
      * @param configDir The base configuration directory to use.
108
      */
109
      */
109
     @Inject
110
     @Inject
112
             final ServerManager serverManager,
113
             final ServerManager serverManager,
113
             final ActionManager actionManager,
114
             final ActionManager actionManager,
114
             final CommandLineParser commandLineParser,
115
             final CommandLineParser commandLineParser,
116
+            final PluginManager pluginManager,
115
             @Directory(DirectoryType.BASE) final String configDir) {
117
             @Directory(DirectoryType.BASE) final String configDir) {
116
         this.identityManager = identityManager;
118
         this.identityManager = identityManager;
117
         this.serverManager = serverManager;
119
         this.serverManager = serverManager;
118
         this.actionManager = actionManager;
120
         this.actionManager = actionManager;
119
         this.commandLineParser = commandLineParser;
121
         this.commandLineParser = commandLineParser;
122
+        this.pluginManager = pluginManager;
120
         this.configdir = configDir;
123
         this.configdir = configDir;
121
     }
124
     }
122
 
125
 
157
 
160
 
158
         MessageSinkManager.getManager().loadDefaultSinks();
161
         MessageSinkManager.getManager().loadDefaultSinks();
159
 
162
 
160
-        final String fs = System.getProperty("file.separator");
161
-        final String pluginDirectory = configdir + "plugins" + fs;
162
-        pluginManager = new PluginManager(identityManager, actionManager, pluginDirectory);
163
         pluginManager.refreshPlugins();
163
         pluginManager.refreshPlugins();
164
         checkBundledPlugins(pluginManager, identityManager.getGlobalConfiguration());
164
         checkBundledPlugins(pluginManager, identityManager.getGlobalConfiguration());
165
 
165
 

+ 26
- 1
src/com/dmdirc/commandline/CommandLineOptionsModule.java Просмотреть файл

41
         /** The base directory, where everything else lives. */
41
         /** The base directory, where everything else lives. */
42
         BASE,
42
         BASE,
43
         /** The directory that identities are stored in. */
43
         /** The directory that identities are stored in. */
44
-        IDENTITIES;
44
+        IDENTITIES,
45
+        /** The directory that plugins are stored in. */
46
+        PLUGINS;
45
     }
47
     }
46
 
48
 
47
     /**
49
     /**
65
         this.parser = parser;
67
         this.parser = parser;
66
     }
68
     }
67
 
69
 
70
+    /**
71
+     * Provides the command-line parser used for this instance.
72
+     *
73
+     * @return The command-line parser.
74
+     */
68
     @Provides
75
     @Provides
69
     public CommandLineParser getParser() {
76
     public CommandLineParser getParser() {
70
         return parser;
77
         return parser;
71
     }
78
     }
72
 
79
 
80
+    /**
81
+     * Provides the base directory that all DMDirc user data is stored in.
82
+     *
83
+     * @return The base directory.
84
+     */
73
     @Provides
85
     @Provides
74
     @Singleton
86
     @Singleton
75
     @Directory(DirectoryType.BASE)
87
     @Directory(DirectoryType.BASE)
81
         }
93
         }
82
     }
94
     }
83
 
95
 
96
+    /**
97
+     * Provides the path to the plugins directory.
98
+     *
99
+     * @param baseDirectory The base DMDirc directory.
100
+     * @return The plugin directory.
101
+     */
102
+    @Provides
103
+    @Singleton
104
+    @Directory(DirectoryType.PLUGINS)
105
+    public String getPluginsDirectory(final @Directory(DirectoryType.BASE) String baseDirectory) {
106
+        return baseDirectory + "plugins" + File.separator;
107
+    }
108
+
84
     /**
109
     /**
85
      * Initialises the location of the configuration directory.
110
      * Initialises the location of the configuration directory.
86
      */
111
      */

+ 6
- 1
src/com/dmdirc/plugins/PluginManager.java Просмотреть файл

23
 package com.dmdirc.plugins;
23
 package com.dmdirc.plugins;
24
 
24
 
25
 import com.dmdirc.actions.CoreActionType;
25
 import com.dmdirc.actions.CoreActionType;
26
+import com.dmdirc.commandline.CommandLineOptionsModule.Directory;
27
+import com.dmdirc.commandline.CommandLineOptionsModule.DirectoryType;
26
 import com.dmdirc.config.prefs.PreferencesDialogModel;
28
 import com.dmdirc.config.prefs.PreferencesDialogModel;
27
 import com.dmdirc.interfaces.ActionController;
29
 import com.dmdirc.interfaces.ActionController;
28
 import com.dmdirc.interfaces.ActionListener;
30
 import com.dmdirc.interfaces.ActionListener;
47
 import java.util.List;
49
 import java.util.List;
48
 import java.util.Map;
50
 import java.util.Map;
49
 
51
 
52
+import javax.inject.Inject;
53
+
50
 /**
54
 /**
51
  * Searches for and manages plugins and services.
55
  * Searches for and manages plugins and services.
52
  */
56
  */
80
      * @param actionController The action controller to use for events.
84
      * @param actionController The action controller to use for events.
81
      * @param directory The directory to load plugins from.
85
      * @param directory The directory to load plugins from.
82
      */
86
      */
87
+    @Inject
83
     public PluginManager(
88
     public PluginManager(
84
             final IdentityController identityController,
89
             final IdentityController identityController,
85
             final ActionController actionController,
90
             final ActionController actionController,
86
-            final String directory) {
91
+            @Directory(DirectoryType.PLUGINS) final String directory) {
87
         this.identityController = identityController;
92
         this.identityController = identityController;
88
         this.actionController = actionController;
93
         this.actionController = actionController;
89
         this.directory = directory;
94
         this.directory = directory;

+ 10
- 5
test/com/dmdirc/TestMain.java Просмотреть файл

21
     private final IdentityManager identityManager;
21
     private final IdentityManager identityManager;
22
     private final ServerManager serverManager;
22
     private final ServerManager serverManager;
23
     private final ActionManager actionManager;
23
     private final ActionManager actionManager;
24
+    private final PluginManager pluginManager;
24
     private final String configdir;
25
     private final String configdir;
25
 
26
 
26
     public TestMain(final IdentityManager identityManager,
27
     public TestMain(final IdentityManager identityManager,
27
             final ServerManager serverManager,
28
             final ServerManager serverManager,
28
             final ActionManager actionManager,
29
             final ActionManager actionManager,
29
             final CommandLineParser commandLineParser,
30
             final CommandLineParser commandLineParser,
31
+            final PluginManager pluginManager,
30
             final String configDir) {
32
             final String configDir) {
31
-        super(identityManager, serverManager, actionManager, commandLineParser, configDir);
33
+        super(identityManager, serverManager, actionManager, commandLineParser, pluginManager, configDir);
32
         this.identityManager = identityManager;
34
         this.identityManager = identityManager;
33
         this.serverManager = serverManager;
35
         this.serverManager = serverManager;
34
         this.actionManager = actionManager;
36
         this.actionManager = actionManager;
37
+        this.pluginManager = pluginManager;
35
         this.configdir = configDir;
38
         this.configdir = configDir;
36
     }
39
     }
37
 
40
 
47
             // to handleInvalidConfigFile(); here)
50
             // to handleInvalidConfigFile(); here)
48
         }
51
         }
49
 
52
 
50
-        final String fs = System.getProperty("file.separator");
51
-        final String pluginDirectory = configdir + "plugins" + fs;
52
-        pluginManager = new PluginManager(IdentityManager.getIdentityManager(), actionManager, pluginDirectory);
53
         pluginManager.refreshPlugins();
53
         pluginManager.refreshPlugins();
54
         CommandManager.initCommandManager(IdentityManager.getIdentityManager(), serverManager);
54
         CommandManager.initCommandManager(IdentityManager.getIdentityManager(), serverManager);
55
 
55
 
84
                 tempFile.delete();
84
                 tempFile.delete();
85
                 tempFile.mkdir();
85
                 tempFile.mkdir();
86
                 tempFile.deleteOnExit();
86
                 tempFile.deleteOnExit();
87
-                instance = new TestMain(identityManager, serverManager, actionManager, null, tempFile.getAbsolutePath() + File.separator);
87
+
88
+                final String configDirectory = tempFile.getAbsolutePath() + File.separator;
89
+                final String pluginDirectory = configDirectory + "plugins" + File.separator;
90
+                final PluginManager pluginManager = new PluginManager(identityManager, actionManager, pluginDirectory);
91
+
92
+                instance = new TestMain(identityManager, serverManager, actionManager, null, pluginManager, configDirectory);
88
                 instance.init();
93
                 instance.init();
89
             } catch (IOException ex) {
94
             } catch (IOException ex) {
90
                 // Blargh.
95
                 // Blargh.

Загрузка…
Отмена
Сохранить