Quellcode durchsuchen

Add getMetaData method to PluginInfo and use it

Change-Id: I0bf84a236b3d4a3a86bb3cdceadbfb972b7dec27
Reviewed-on: http://gerrit.dmdirc.com/2089
Automatic-Compile: DMDirc Build Manager
Reviewed-by: Chris Smith <chris@dmdirc.com>
tags/0.6.6b1
Greg Holmes vor 13 Jahren
Ursprung
Commit
a4031bdad2

+ 4
- 4
src/com/dmdirc/Main.java Datei anzeigen

270
      */
270
      */
271
     private static void checkBundledPlugins(final PluginManager pm, final ConfigManager config) {
271
     private static void checkBundledPlugins(final PluginManager pm, final ConfigManager config) {
272
         for (PluginInfo plugin : pm.getPluginInfos()) {
272
         for (PluginInfo plugin : pm.getPluginInfos()) {
273
-            if (config.hasOptionString("bundledplugins_versions", plugin.getName())) {
273
+            if (config.hasOptionString("bundledplugins_versions", plugin.getMetaData().getName())) {
274
                 final Version bundled = new Version(config.getOption("bundledplugins_versions",
274
                 final Version bundled = new Version(config.getOption("bundledplugins_versions",
275
-                        plugin.getName()));
276
-                final Version installed = plugin.getVersion();
275
+                        plugin.getMetaData().getName()));
276
+                final Version installed = plugin.getMetaData().getVersion();
277
 
277
 
278
                 if (installed.compareTo(bundled) < 0) {
278
                 if (installed.compareTo(bundled) < 0) {
279
-                    extractCorePlugins(plugin.getName());
279
+                    extractCorePlugins(plugin.getMetaData().getName());
280
                     PluginManager.getPluginManager().reloadPlugin(plugin.getFilename());
280
                     PluginManager.getPluginManager().reloadPlugin(plugin.getFilename());
281
                 }
281
                 }
282
             }
282
             }

+ 6
- 1
src/com/dmdirc/commandparser/BaseCommandInfo.java Datei anzeigen

57
         return name;
57
         return name;
58
     }
58
     }
59
 
59
 
60
-    /** {@inheritDoc} */
60
+    /**
61
+     * {@inheritDoc}
62
+     *
63
+     * @deprecated All commands should be shown in help messages
64
+     */
61
     @Override
65
     @Override
66
+    @Deprecated
62
     public boolean showInHelp() {
67
     public boolean showInHelp() {
63
         return true;
68
         return true;
64
     }
69
     }

+ 2
- 2
src/com/dmdirc/commandparser/commands/global/Ifplugin.java Datei anzeigen

92
 
92
 
93
             for (PluginInfo possPlugin
93
             for (PluginInfo possPlugin
94
                     : PluginManager.getPluginManager().getPluginInfos()) {
94
                     : PluginManager.getPluginManager().getPluginInfos()) {
95
-                res.add(possPlugin.getName());
96
-                res.add("!" + possPlugin.getName());
95
+                res.add(possPlugin.getMetaData().getName());
96
+                res.add("!" + possPlugin.getMetaData().getName());
97
             }
97
             }
98
         } else {
98
         } else {
99
             res = TabCompleter.getIntelligentResults(arg, context, 1);
99
             res = TabCompleter.getIntelligentResults(arg, context, 1);

+ 2
- 2
src/com/dmdirc/commandparser/commands/global/ReloadPlugin.java Datei anzeigen

58
         if (plugin == null) {
58
         if (plugin == null) {
59
             sendLine(origin, args.isSilent(), FORMAT_ERROR,
59
             sendLine(origin, args.isSilent(), FORMAT_ERROR,
60
                     "Plugin Reloading failed - Plugin not loaded");
60
                     "Plugin Reloading failed - Plugin not loaded");
61
-        } else if (PluginManager.getPluginManager().reloadPlugin(plugin.getRelativeFilename())) {
61
+        } else if (PluginManager.getPluginManager().reloadPlugin(plugin.getMetaData().getRelativeFilename())) {
62
             sendLine(origin, args.isSilent(), FORMAT_OUTPUT, "Plugin Reloaded.");
62
             sendLine(origin, args.isSilent(), FORMAT_OUTPUT, "Plugin Reloaded.");
63
         } else {
63
         } else {
64
             sendLine(origin, args.isSilent(), FORMAT_ERROR, "Plugin Reloading failed");
64
             sendLine(origin, args.isSilent(), FORMAT_ERROR, "Plugin Reloading failed");
73
 
73
 
74
         if (arg == 0) {
74
         if (arg == 0) {
75
             for (PluginInfo possPlugin : PluginManager.getPluginManager().getPluginInfos()) {
75
             for (PluginInfo possPlugin : PluginManager.getPluginManager().getPluginInfos()) {
76
-                res.add(possPlugin.getName());
76
+                res.add(possPlugin.getMetaData().getName());
77
             }
77
             }
78
         }
78
         }
79
 
79
 

+ 2
- 2
src/com/dmdirc/commandparser/commands/global/UnloadPlugin.java Datei anzeigen

57
                 .getPluginInfoByName(args.getArguments()[0]);
57
                 .getPluginInfoByName(args.getArguments()[0]);
58
         if (plugin == null) {
58
         if (plugin == null) {
59
             sendLine(origin, args.isSilent(), FORMAT_ERROR, "Plugin unloading failed - Plugin not loaded");
59
             sendLine(origin, args.isSilent(), FORMAT_ERROR, "Plugin unloading failed - Plugin not loaded");
60
-        } else if (PluginManager.getPluginManager().delPlugin(plugin.getRelativeFilename())) {
60
+        } else if (PluginManager.getPluginManager().delPlugin(plugin.getMetaData().getRelativeFilename())) {
61
             sendLine(origin, args.isSilent(), FORMAT_OUTPUT, "Plugin Unloaded.");
61
             sendLine(origin, args.isSilent(), FORMAT_OUTPUT, "Plugin Unloaded.");
62
             PluginManager.getPluginManager().updateAutoLoad(plugin);
62
             PluginManager.getPluginManager().updateAutoLoad(plugin);
63
         } else {
63
         } else {
74
         if (arg == 0) {
74
         if (arg == 0) {
75
             for (PluginInfo possPlugin : PluginManager.getPluginManager().getPluginInfos()) {
75
             for (PluginInfo possPlugin : PluginManager.getPluginManager().getPluginInfos()) {
76
                 if (possPlugin.isLoaded()) {
76
                 if (possPlugin.isLoaded()) {
77
-                    res.add(possPlugin.getName());
77
+                    res.add(possPlugin.getMetaData().getName());
78
                 }
78
                 }
79
             }
79
             }
80
         }
80
         }

+ 6
- 1
src/com/dmdirc/commandparser/commands/server/RawServerCommand.java Datei anzeigen

67
         return myName;
67
         return myName;
68
     }
68
     }
69
 
69
 
70
-    /** {@inheritDoc} */
70
+    /**
71
+     * {@inheritDoc}
72
+     *
73
+     * @deprecated All commands should be shown in help messages
74
+     */
71
     @Override
75
     @Override
76
+    @Deprecated
72
     public boolean showInHelp() {
77
     public boolean showInHelp() {
73
         return true;
78
         return true;
74
     }
79
     }

+ 4
- 3
src/com/dmdirc/config/prefs/PluginPreferencesCategory.java Datei anzeigen

97
      */
97
      */
98
     private void setPlugin(final PluginInfo plugin) {
98
     private void setPlugin(final PluginInfo plugin) {
99
         if (!plugin.isLoaded()) {
99
         if (!plugin.isLoaded()) {
100
-            setWarning("These are settings for the '" + plugin.getNiceName() + "' plugin, "
101
-                    + "which is not currently loaded. You must enable the plugin in the "
102
-                    + "main 'Plugins' category for these settings to have any effect.");
100
+            setWarning("These are settings for the '" + plugin.getMetaData()
101
+                    .getFriendlyName() + "' plugin, " + "which is not currently"
102
+                    + " loaded. You must enable the plugin in the main 'Plugins'"
103
+                    + " category for these settings to have any effect.");
103
         }
104
         }
104
     }
105
     }
105
 
106
 

+ 8
- 2
src/com/dmdirc/plugins/BasePlugin.java Datei anzeigen

108
         }
108
         }
109
     }
109
     }
110
 
110
 
111
-    /** {@inheritDoc} */
111
+    /**
112
+     * {@inheritDoc}
113
+     *
114
+     * @deprecated PluginInfo should be obtained using a constructor parameter,
115
+     * if required
116
+     */
112
     @Override
117
     @Override
118
+    @Deprecated
113
     public void setPluginInfo(final PluginInfo pluginInfo) {
119
     public void setPluginInfo(final PluginInfo pluginInfo) {
114
         this.pluginInfo = pluginInfo;
120
         this.pluginInfo = pluginInfo;
115
     }
121
     }
147
             final String fs = System.getProperty("file.separator");
153
             final String fs = System.getProperty("file.separator");
148
             final String dir = PluginManager.getPluginManager()
154
             final String dir = PluginManager.getPluginManager()
149
                     .getFilesDirectory();
155
                     .getFilesDirectory();
150
-            filesDir = new File(dir + pluginInfo.getName() + fs);
156
+            filesDir = new File(dir + pluginInfo.getMetaData().getName() + fs);
151
             if (!filesDir.exists()) {
157
             if (!filesDir.exists()) {
152
                 filesDir.mkdirs();
158
                 filesDir.mkdirs();
153
             }
159
             }

+ 1
- 1
src/com/dmdirc/plugins/ExportInfo.java Datei anzeigen

52
     public ExportedService getExportedService() {
52
     public ExportedService getExportedService() {
53
         try {
53
         try {
54
             final Class<?> c = pluginInfo.getPluginClassLoader().loadClass(className, false);
54
             final Class<?> c = pluginInfo.getPluginClassLoader().loadClass(className, false);
55
-            final Plugin p = className.equals(pluginInfo.getMainClass()) ? pluginInfo.getPluginObject() : null;
55
+            final Plugin p = className.equals(pluginInfo.getMetaData().getMainClass()) ? pluginInfo.getPluginObject() : null;
56
             return new ExportedService(c, methodName, p);
56
             return new ExportedService(c, methodName, p);
57
         } catch (ClassNotFoundException cnfe) {
57
         } catch (ClassNotFoundException cnfe) {
58
             return null;
58
             return null;

+ 1
- 1
src/com/dmdirc/plugins/GlobalClassLoader.java Datei anzeigen

81
     public Class<?> loadClass(final String name, final PluginInfo pi) throws ClassNotFoundException {
81
     public Class<?> loadClass(final String name, final PluginInfo pi) throws ClassNotFoundException {
82
         for (String classname : pi.getPersistentClasses()) {
82
         for (String classname : pi.getPersistentClasses()) {
83
             if (!resourcesList.containsKey(classname)) {
83
             if (!resourcesList.containsKey(classname)) {
84
-                resourcesList.put(classname, pi.getFullFilename());
84
+                resourcesList.put(classname, pi.getMetaData().getPluginUrl().getPath());
85
             }
85
             }
86
         }
86
         }
87
         return loadClass(name);
87
         return loadClass(name);

+ 2
- 2
src/com/dmdirc/plugins/PluginClassLoader.java Datei anzeigen

137
                 }
137
                 }
138
             }
138
             }
139
         } catch (NoClassDefFoundError e) {
139
         } catch (NoClassDefFoundError e) {
140
-            throw new ClassNotFoundException("Error loading '" + name + "' (wanted by " + pluginInfo.getName() + ") -> " + e.getMessage(), e);
140
+            throw new ClassNotFoundException("Error loading '" + name + "' (wanted by " + pluginInfo.getMetaData().getName() + ") -> " + e.getMessage(), e);
141
         }
141
         }
142
 
142
 
143
 
143
 
152
         if (res.resourceExists(fileName)) {
152
         if (res.resourceExists(fileName)) {
153
             data = res.getResourceBytes(fileName);
153
             data = res.getResourceBytes(fileName);
154
         } else {
154
         } else {
155
-            throw new ClassNotFoundException("Resource '" + name + "' (wanted by " + pluginInfo.getName() + ") does not exist.");
155
+            throw new ClassNotFoundException("Resource '" + name + "' (wanted by " + pluginInfo.getMetaData().getName() + ") does not exist.");
156
         }
156
         }
157
 
157
 
158
         try {
158
         try {

+ 9
- 0
src/com/dmdirc/plugins/PluginInfo.java Datei anzeigen

115
         getDefaults();
115
         getDefaults();
116
     }
116
     }
117
 
117
 
118
+    /**
119
+     * Gets this plugin's meta data object.
120
+     *
121
+     * @return Plugin meta data object
122
+     */
123
+    public PluginMetaData getMetaData() {
124
+        return metadata;
125
+    }
126
+
118
     /**
127
     /**
119
      * Updates the list of known classes within this plugin from the specified
128
      * Updates the list of known classes within this plugin from the specified
120
      * resource manager.
129
      * resource manager.

+ 4
- 4
src/com/dmdirc/plugins/PluginManager.java Datei anzeigen

375
      */
375
      */
376
     public PluginInfo getPluginInfoByName(final String name) {
376
     public PluginInfo getPluginInfoByName(final String name) {
377
         for (PluginInfo pluginInfo : getPluginInfos()) {
377
         for (PluginInfo pluginInfo : getPluginInfos()) {
378
-            if (pluginInfo.getName().equalsIgnoreCase(name)) {
378
+            if (pluginInfo.getMetaData().getName().equalsIgnoreCase(name)) {
379
                 return pluginInfo;
379
                 return pluginInfo;
380
             }
380
             }
381
         }
381
         }
550
      */
550
      */
551
     public void updateAutoLoad(final PluginInfo plugin) {
551
     public void updateAutoLoad(final PluginInfo plugin) {
552
         final List<String> list = IdentityManager.getGlobalConfig().getOptionList("plugins", "autoload");
552
         final List<String> list = IdentityManager.getGlobalConfig().getOptionList("plugins", "autoload");
553
-        final String path = plugin.getRelativeFilename();
553
+        final String path = plugin.getMetaData().getRelativeFilename();
554
 
554
 
555
         if (plugin.isLoaded() && !list.contains(path)) {
555
         if (plugin.isLoaded() && !list.contains(path)) {
556
             list.add(path);
556
             list.add(path);
582
                     try {
582
                     try {
583
                         pi.getPlugin().showConfig((PreferencesDialogModel) arguments[0]);
583
                         pi.getPlugin().showConfig((PreferencesDialogModel) arguments[0]);
584
                     } catch (LinkageError le) {
584
                     } catch (LinkageError le) {
585
-                        Logger.userError(ErrorLevel.MEDIUM, "Error with plugin (" + pi.getNiceName() + "), unable to show config (" + le + ")", le);
585
+                        Logger.userError(ErrorLevel.MEDIUM, "Error with plugin (" + pi.getMetaData().getFriendlyName() + "), unable to show config (" + le + ")", le);
586
                     } catch (Exception ex) {
586
                     } catch (Exception ex) {
587
-                        Logger.userError(ErrorLevel.MEDIUM, "Error with plugin (" + pi.getNiceName() + "), unable to show config (" + ex + ")", ex);
587
+                        Logger.userError(ErrorLevel.MEDIUM, "Error with plugin (" + pi.getMetaData().getFriendlyName() + "), unable to show config (" + ex + ")", ex);
588
                     }
588
                     }
589
                 }
589
                 }
590
             }
590
             }

+ 10
- 10
src/com/dmdirc/updater/components/PluginComponent.java Datei anzeigen

52
     public PluginComponent(final PluginInfo plugin) {
52
     public PluginComponent(final PluginInfo plugin) {
53
         this.plugin = plugin;
53
         this.plugin = plugin;
54
 
54
 
55
-        if ((plugin.getAddonID() > 0 && plugin.getVersion().isValid())
56
-                || (CONFIG.hasOptionInt("plugin-addonid", plugin.getName()))) {
55
+        if ((plugin.getMetaData().getUpdaterId() > 0 && plugin.getMetaData().getVersion().isValid())
56
+                || (CONFIG.hasOptionInt("plugin-addonid", plugin.getMetaData().getName()))) {
57
             UpdateChecker.removeComponent(getName());
57
             UpdateChecker.removeComponent(getName());
58
             UpdateChecker.registerComponent(this);
58
             UpdateChecker.registerComponent(this);
59
         }
59
         }
62
     /** {@inheritDoc} */
62
     /** {@inheritDoc} */
63
     @Override
63
     @Override
64
     public String getName() {
64
     public String getName() {
65
-        if (plugin.getAddonID() > 0) {
66
-            return "addon-" + plugin.getAddonID();
65
+        if (plugin.getMetaData().getUpdaterId() > 0) {
66
+            return "addon-" + plugin.getMetaData().getUpdaterId();
67
         } else {
67
         } else {
68
-            return "addon-" + CONFIG.getOption("plugin-addonid", plugin.getName());
68
+            return "addon-" + CONFIG.getOption("plugin-addonid", plugin.getMetaData().getName());
69
         }
69
         }
70
     }
70
     }
71
 
71
 
72
     /** {@inheritDoc} */
72
     /** {@inheritDoc} */
73
     @Override
73
     @Override
74
     public String getFriendlyName() {
74
     public String getFriendlyName() {
75
-        return plugin.getNiceName();
75
+        return plugin.getMetaData().getFriendlyName();
76
     }
76
     }
77
 
77
 
78
     /** {@inheritDoc} */
78
     /** {@inheritDoc} */
79
     @Override
79
     @Override
80
     public String getFriendlyVersion() {
80
     public String getFriendlyVersion() {
81
-        return plugin.getFriendlyVersion();
81
+        return plugin.getMetaData().getFriendlyVersion();
82
     }
82
     }
83
 
83
 
84
     /** {@inheritDoc} */
84
     /** {@inheritDoc} */
85
     @Override
85
     @Override
86
     public Version getVersion() {
86
     public Version getVersion() {
87
-        return plugin.getVersion();
87
+        return plugin.getMetaData().getVersion();
88
     }
88
     }
89
 
89
 
90
     /** {@inheritDoc} */
90
     /** {@inheritDoc} */
108
     /** {@inheritDoc} */
108
     /** {@inheritDoc} */
109
     @Override
109
     @Override
110
     public boolean doInstall(final String path) {
110
     public boolean doInstall(final String path) {
111
-        final File target = new File(plugin.getFullFilename());
111
+        final File target = new File(plugin.getMetaData().getPluginUrl().getPath());
112
 
112
 
113
         boolean returnCode = false;
113
         boolean returnCode = false;
114
         final boolean wasLoaded = plugin.isLoaded();
114
         final boolean wasLoaded = plugin.isLoaded();
128
         // If it does, update the metadata.
128
         // If it does, update the metadata.
129
         if (requiresRestart() || !new File(path).renameTo(target)) {
129
         if (requiresRestart() || !new File(path).renameTo(target)) {
130
             // Windows rocks!
130
             // Windows rocks!
131
-            final File newTarget = new File(plugin.getFullFilename() + ".update");
131
+            final File newTarget = new File(plugin.getMetaData().getPluginUrl().getPath() + ".update");
132
 
132
 
133
             if (newTarget.exists()) {
133
             if (newTarget.exists()) {
134
                 newTarget.delete();
134
                 newTarget.delete();

+ 2
- 2
src/com/dmdirc/util/URLBuilder.java Datei anzeigen

110
      */
110
      */
111
     public static URL buildPluginURL(final String plugin, final String path) {
111
     public static URL buildPluginURL(final String plugin, final String path) {
112
         return buildJarURL(
112
         return buildJarURL(
113
-                PluginManager.getPluginManager().getPluginInfoByName(plugin).getFullFilename(),
114
-                path);
113
+                PluginManager.getPluginManager().getPluginInfoByName(plugin)
114
+                .getMetaData().getPluginUrl().getPath(), path);
115
     }
115
     }
116
 
116
 
117
     /**
117
     /**

+ 7
- 1
test/com/dmdirc/config/prefs/PluginPreferencesCategoryTest.java Datei anzeigen

21
  */
21
  */
22
 package com.dmdirc.config.prefs;
22
 package com.dmdirc.config.prefs;
23
 
23
 
24
+import com.dmdirc.plugins.PluginMetaData;
24
 import com.dmdirc.plugins.PluginInfo;
25
 import com.dmdirc.plugins.PluginInfo;
25
 
26
 
26
 import org.junit.BeforeClass;
27
 import org.junit.BeforeClass;
31
 public class PluginPreferencesCategoryTest {
32
 public class PluginPreferencesCategoryTest {
32
 
33
 
33
     private static PluginInfo loaded, unloaded;
34
     private static PluginInfo loaded, unloaded;
35
+    private static PluginMetaData metaData;
34
     private static PreferencesInterface obj;
36
     private static PreferencesInterface obj;
35
 
37
 
36
     @BeforeClass
38
     @BeforeClass
37
     public static void setupClass() {
39
     public static void setupClass() {
40
+        metaData = mock(PluginMetaData.class);
41
+        when(metaData.getFriendlyName()).thenReturn("nice name");
42
+
38
         loaded = mock(PluginInfo.class);
43
         loaded = mock(PluginInfo.class);
39
         when(loaded.isLoaded()).thenReturn(true);
44
         when(loaded.isLoaded()).thenReturn(true);
45
+        when(loaded.getMetaData()).thenReturn(metaData);
40
 
46
 
41
         unloaded = mock(PluginInfo.class);
47
         unloaded = mock(PluginInfo.class);
42
         when(unloaded.isLoaded()).thenReturn(false);
48
         when(unloaded.isLoaded()).thenReturn(false);
43
-        when(unloaded.getNiceName()).thenReturn("nice name");
49
+        when(unloaded.getMetaData()).thenReturn(metaData);
44
 
50
 
45
         obj = mock(PreferencesInterface.class);
51
         obj = mock(PreferencesInterface.class);
46
     }
52
     }

Laden…
Abbrechen
Speichern