浏览代码

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 13 年前
父节点
当前提交
a4031bdad2

+ 4
- 4
src/com/dmdirc/Main.java 查看文件

@@ -270,13 +270,13 @@ public final class Main {
270 270
      */
271 271
     private static void checkBundledPlugins(final PluginManager pm, final ConfigManager config) {
272 272
         for (PluginInfo plugin : pm.getPluginInfos()) {
273
-            if (config.hasOptionString("bundledplugins_versions", plugin.getName())) {
273
+            if (config.hasOptionString("bundledplugins_versions", plugin.getMetaData().getName())) {
274 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 278
                 if (installed.compareTo(bundled) < 0) {
279
-                    extractCorePlugins(plugin.getName());
279
+                    extractCorePlugins(plugin.getMetaData().getName());
280 280
                     PluginManager.getPluginManager().reloadPlugin(plugin.getFilename());
281 281
                 }
282 282
             }

+ 6
- 1
src/com/dmdirc/commandparser/BaseCommandInfo.java 查看文件

@@ -57,8 +57,13 @@ public class BaseCommandInfo implements CommandInfo {
57 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 65
     @Override
66
+    @Deprecated
62 67
     public boolean showInHelp() {
63 68
         return true;
64 69
     }

+ 2
- 2
src/com/dmdirc/commandparser/commands/global/Ifplugin.java 查看文件

@@ -92,8 +92,8 @@ public class Ifplugin extends Command implements IntelligentCommand {
92 92
 
93 93
             for (PluginInfo possPlugin
94 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 98
         } else {
99 99
             res = TabCompleter.getIntelligentResults(arg, context, 1);

+ 2
- 2
src/com/dmdirc/commandparser/commands/global/ReloadPlugin.java 查看文件

@@ -58,7 +58,7 @@ public class ReloadPlugin extends Command implements IntelligentCommand {
58 58
         if (plugin == null) {
59 59
             sendLine(origin, args.isSilent(), FORMAT_ERROR,
60 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 62
             sendLine(origin, args.isSilent(), FORMAT_OUTPUT, "Plugin Reloaded.");
63 63
         } else {
64 64
             sendLine(origin, args.isSilent(), FORMAT_ERROR, "Plugin Reloading failed");
@@ -73,7 +73,7 @@ public class ReloadPlugin extends Command implements IntelligentCommand {
73 73
 
74 74
         if (arg == 0) {
75 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 查看文件

@@ -57,7 +57,7 @@ public class UnloadPlugin extends Command implements IntelligentCommand {
57 57
                 .getPluginInfoByName(args.getArguments()[0]);
58 58
         if (plugin == null) {
59 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 61
             sendLine(origin, args.isSilent(), FORMAT_OUTPUT, "Plugin Unloaded.");
62 62
             PluginManager.getPluginManager().updateAutoLoad(plugin);
63 63
         } else {
@@ -74,7 +74,7 @@ public class UnloadPlugin extends Command implements IntelligentCommand {
74 74
         if (arg == 0) {
75 75
             for (PluginInfo possPlugin : PluginManager.getPluginManager().getPluginInfos()) {
76 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 查看文件

@@ -67,8 +67,13 @@ public class RawServerCommand extends Command implements CommandInfo {
67 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 75
     @Override
76
+    @Deprecated
72 77
     public boolean showInHelp() {
73 78
         return true;
74 79
     }

+ 4
- 3
src/com/dmdirc/config/prefs/PluginPreferencesCategory.java 查看文件

@@ -97,9 +97,10 @@ public class PluginPreferencesCategory extends PreferencesCategory {
97 97
      */
98 98
     private void setPlugin(final PluginInfo plugin) {
99 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 查看文件

@@ -108,8 +108,14 @@ public abstract class BasePlugin implements Plugin {
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 117
     @Override
118
+    @Deprecated
113 119
     public void setPluginInfo(final PluginInfo pluginInfo) {
114 120
         this.pluginInfo = pluginInfo;
115 121
     }
@@ -147,7 +153,7 @@ public abstract class BasePlugin implements Plugin {
147 153
             final String fs = System.getProperty("file.separator");
148 154
             final String dir = PluginManager.getPluginManager()
149 155
                     .getFilesDirectory();
150
-            filesDir = new File(dir + pluginInfo.getName() + fs);
156
+            filesDir = new File(dir + pluginInfo.getMetaData().getName() + fs);
151 157
             if (!filesDir.exists()) {
152 158
                 filesDir.mkdirs();
153 159
             }

+ 1
- 1
src/com/dmdirc/plugins/ExportInfo.java 查看文件

@@ -52,7 +52,7 @@ public class ExportInfo {
52 52
     public ExportedService getExportedService() {
53 53
         try {
54 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 56
             return new ExportedService(c, methodName, p);
57 57
         } catch (ClassNotFoundException cnfe) {
58 58
             return null;

+ 1
- 1
src/com/dmdirc/plugins/GlobalClassLoader.java 查看文件

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

+ 2
- 2
src/com/dmdirc/plugins/PluginClassLoader.java 查看文件

@@ -137,7 +137,7 @@ public class PluginClassLoader extends ClassLoader {
137 137
                 }
138 138
             }
139 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,7 +152,7 @@ public class PluginClassLoader extends ClassLoader {
152 152
         if (res.resourceExists(fileName)) {
153 153
             data = res.getResourceBytes(fileName);
154 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 158
         try {

+ 9
- 0
src/com/dmdirc/plugins/PluginInfo.java 查看文件

@@ -115,6 +115,15 @@ public class PluginInfo implements Comparable<PluginInfo>, ServiceProvider {
115 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 128
      * Updates the list of known classes within this plugin from the specified
120 129
      * resource manager.

+ 4
- 4
src/com/dmdirc/plugins/PluginManager.java 查看文件

@@ -375,7 +375,7 @@ public class PluginManager implements ActionListener {
375 375
      */
376 376
     public PluginInfo getPluginInfoByName(final String name) {
377 377
         for (PluginInfo pluginInfo : getPluginInfos()) {
378
-            if (pluginInfo.getName().equalsIgnoreCase(name)) {
378
+            if (pluginInfo.getMetaData().getName().equalsIgnoreCase(name)) {
379 379
                 return pluginInfo;
380 380
             }
381 381
         }
@@ -550,7 +550,7 @@ public class PluginManager implements ActionListener {
550 550
      */
551 551
     public void updateAutoLoad(final PluginInfo plugin) {
552 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 555
         if (plugin.isLoaded() && !list.contains(path)) {
556 556
             list.add(path);
@@ -582,9 +582,9 @@ public class PluginManager implements ActionListener {
582 582
                     try {
583 583
                         pi.getPlugin().showConfig((PreferencesDialogModel) arguments[0]);
584 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 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 查看文件

@@ -52,8 +52,8 @@ public class PluginComponent implements UpdateComponent, FileComponent {
52 52
     public PluginComponent(final PluginInfo plugin) {
53 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 57
             UpdateChecker.removeComponent(getName());
58 58
             UpdateChecker.registerComponent(this);
59 59
         }
@@ -62,29 +62,29 @@ public class PluginComponent implements UpdateComponent, FileComponent {
62 62
     /** {@inheritDoc} */
63 63
     @Override
64 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 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 72
     /** {@inheritDoc} */
73 73
     @Override
74 74
     public String getFriendlyName() {
75
-        return plugin.getNiceName();
75
+        return plugin.getMetaData().getFriendlyName();
76 76
     }
77 77
 
78 78
     /** {@inheritDoc} */
79 79
     @Override
80 80
     public String getFriendlyVersion() {
81
-        return plugin.getFriendlyVersion();
81
+        return plugin.getMetaData().getFriendlyVersion();
82 82
     }
83 83
 
84 84
     /** {@inheritDoc} */
85 85
     @Override
86 86
     public Version getVersion() {
87
-        return plugin.getVersion();
87
+        return plugin.getMetaData().getVersion();
88 88
     }
89 89
 
90 90
     /** {@inheritDoc} */
@@ -108,7 +108,7 @@ public class PluginComponent implements UpdateComponent, FileComponent {
108 108
     /** {@inheritDoc} */
109 109
     @Override
110 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 113
         boolean returnCode = false;
114 114
         final boolean wasLoaded = plugin.isLoaded();
@@ -128,7 +128,7 @@ public class PluginComponent implements UpdateComponent, FileComponent {
128 128
         // If it does, update the metadata.
129 129
         if (requiresRestart() || !new File(path).renameTo(target)) {
130 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 133
             if (newTarget.exists()) {
134 134
                 newTarget.delete();

+ 2
- 2
src/com/dmdirc/util/URLBuilder.java 查看文件

@@ -110,8 +110,8 @@ public final class URLBuilder {
110 110
      */
111 111
     public static URL buildPluginURL(final String plugin, final String path) {
112 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 查看文件

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

正在加载...
取消
保存