private PluginInfo readPluginInfoFromJar(File pluginJarFile) throws Exception { try (JarInputStream jarStream = new JarInputStream(new FileInputStream(pluginJarFile))) { Manifest jarManifest = jarStream.getManifest(); if (jarManifest == null) { throw new Exception("Given file is not a valid Syncany plugin file (not a JAR file, or no manifest)."); } String pluginId = jarManifest.getMainAttributes().getValue("Plugin-Id"); if (pluginId == null) { throw new Exception("Given file is not a valid Syncany plugin file (no plugin ID in manifest)."); } PluginInfo pluginInfo = new PluginInfo(); pluginInfo.setPluginId(pluginId); pluginInfo.setPluginName(jarManifest.getMainAttributes().getValue("Plugin-Name")); pluginInfo.setPluginVersion(jarManifest.getMainAttributes().getValue("Plugin-Version")); pluginInfo.setPluginDate(jarManifest.getMainAttributes().getValue("Plugin-Date")); pluginInfo.setPluginAppMinVersion(jarManifest.getMainAttributes().getValue("Plugin-App-Min-Version")); pluginInfo.setPluginRelease(Boolean.parseBoolean(jarManifest.getMainAttributes().getValue("Plugin-Release"))); if (jarManifest.getMainAttributes().getValue("Plugin-Conflicts-With") != null) { pluginInfo.setConflictingPluginIds(Arrays.asList(jarManifest.getMainAttributes().getValue("Plugin-Conflicts-With"))); } return pluginInfo; } }
private List<PluginInfo> getLocalList() { List<PluginInfo> localPluginInfos = new ArrayList<PluginInfo>(); for (Plugin plugin : Plugins.list()) { PluginInfo pluginInfo = new PluginInfo(); pluginInfo.setPluginId(plugin.getId()); pluginInfo.setPluginName(plugin.getName()); pluginInfo.setPluginVersion(plugin.getVersion()); localPluginInfos.add(pluginInfo); } return localPluginInfos; }