@Test public void installedPluginsTest() throws IOException { File pluginDir = cfg.getPluginDir(); createDirectory(pluginDir.toPath()); File tmp1 = File.createTempFile("test", ".jpi", pluginDir); File tmp2 = File.createTempFile("test2", ".jpi", pluginDir); URL deliveryPipelineJpi = this.getClass().getResource("/delivery-pipeline-plugin.jpi"); File deliveryPipelineFile = new File(deliveryPipelineJpi.getFile()); URL githubJpi = this.getClass().getResource("/github-branch-source.jpi"); File githubFile = new File(githubJpi.getFile()); FileUtils.copyFile(deliveryPipelineFile, tmp1); FileUtils.copyFile(githubFile, tmp2); String tmp1name = FilenameUtils.getBaseName(tmp1.getName()); String tmp2name = FilenameUtils.getBaseName(tmp2.getName()); Map<String, Plugin> actualPlugins = pm.installedPlugins(); assertThat(actualPlugins) .hasSize(2) .containsValues( new Plugin(tmp1name, "1.3.2", null, null), new Plugin(tmp2name, "1.8", null, null)); }
public Map<String, Plugin> installedPlugins() { Map<String, Plugin> installedPlugins = new HashMap<>(); FileFilter fileFilter = new WildcardFileFilter("*.jpi"); File[] files = refDir.listFiles(fileFilter); if (files != null) { for (File file : files) { String pluginName = FilenameUtils.getBaseName(file.getName()); installedPlugins.put(pluginName, new Plugin(pluginName, getPluginVersion(file), null, null)); } } return installedPlugins; }
PluginManager { public Map<String, Plugin> installedPlugins() { Map<String, Plugin> installedPlugins = new HashMap<>(); FileFilter fileFilter = new WildcardFileFilter("*.jpi"); File[] files = refDir.listFiles(fileFilter); if (files != null) { for (File file : files) { String pluginName = FilenameUtils.getBaseName(file.getName()); installedPlugins.put(pluginName, new Plugin(pluginName, getPluginVersion(file), null, null)); } } return installedPlugins; } }
PluginManager { public Map<String, Plugin> installedPlugins() { Map<String, Plugin> installedPlugins = new HashMap<>(); FileFilter fileFilter = new WildcardFileFilter("*.jpi"); File[] files = refDir.listFiles(fileFilter); if (files != null) { for (File file : files) { String pluginName = FilenameUtils.getBaseName(file.getName()); installedPlugins.put(pluginName, new Plugin(pluginName, getPluginVersion(file), null, null)); } } return installedPlugins; } @SuppressFBWarnings(value = "PATH_TRAVERSAL_IN", justification = "we want the user to be able to specify a path")  PluginManager(Config cfg); }
PluginManager { public Map<String, Plugin> installedPlugins() { Map<String, Plugin> installedPlugins = new HashMap<>(); FileFilter fileFilter = new WildcardFileFilter("*.jpi"); File[] files = refDir.listFiles(fileFilter); if (files != null) { for (File file : files) { String pluginName = FilenameUtils.getBaseName(file.getName()); installedPlugins.put(pluginName, new Plugin(pluginName, getPluginVersion(file), null, null)); } } return installedPlugins; } @SuppressFBWarnings(value = "PATH_TRAVERSAL_IN", justification = "we want the user to be able to specify a path")  PluginManager(Config cfg); void start(); void start(boolean downloadUc); List<Plugin> findPluginsToDownload(Map<String, Plugin> requestedPlugins); Map<String, Plugin> findEffectivePlugins(List<Plugin> pluginsToBeDownloaded); void listPlugins(); void logPlugins(String description, List<Plugin> plugins); Map<String, List<SecurityWarning>> getSecurityWarnings(); void showAllSecurityWarnings(); void showSpecificSecurityWarnings(List<Plugin> plugins); List<Plugin> getLatestVersionsOfPlugins(List<Plugin> plugins); boolean warningExists(Plugin plugin); void checkVersionCompatibility(VersionNumber jenkinsVersion, List<Plugin> pluginsToBeDownloaded); void downloadPlugins(List<Plugin> plugins); Map<String, Plugin> findPluginsAndDependencies(List<Plugin> requestedPlugins); void outputPluginReplacementInfo(Plugin lowerVersion, Plugin higherVersion); @Deprecated JSONObject getJson(String urlString); JSONObject getJson(URL url, String cacheKey); void getUCJson(VersionNumber jenkinsVersion); JSONArray getPluginDependencyJsonArray(Plugin plugin, JSONObject ucJson); VersionNumber getLatestPluginVersion(String pluginName); List<Plugin> resolveDependenciesFromManifest(Plugin plugin); List<Plugin> resolveDependenciesFromJson(Plugin plugin, JSONObject pluginJson); List<Plugin> resolveDirectDependencies(Plugin plugin); Map<String, Plugin> resolveRecursiveDependencies(Plugin plugin); boolean downloadPlugin(Plugin plugin, File location); String getPluginDownloadUrl(Plugin plugin); boolean downloadToFile(String urlString, Plugin plugin, File fileLocation); @SuppressFBWarnings({"RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE", "PATH_TRAVERSAL_IN"}) boolean downloadToFile(String urlString, Plugin plugin, File fileLocation, int maxRetries); String getAttributeFromManifest(File file, String key); VersionNumber getJenkinsVersionFromWar(); String getPluginVersion(File file); Map<String, Plugin> installedPlugins(); @SuppressFBWarnings({"RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE", "PATH_TRAVERSAL_IN"}) Map<String, Plugin> bundledPlugins(); String getJenkinsUCLatest(); void setJenkinsUCLatest(String updateCenterLatest); void setInstalledPluginVersions(Map<String, Plugin> installedPlugins); void setBundledPluginVersions(Map<String, Plugin> bundledPlugins); void setAllPluginsAndDependencies(Map<String, Plugin> allPluginsAndDependencies); void setEffectivePlugins(Map<String, Plugin> effectivePlugins); void setPluginsToBeDownloaded(List<Plugin> pluginsToBeDownloaded); void logVerbose(String message); void setLatestUcJson(JSONObject latestUcJson); void setLatestUcPlugins(JSONObject latestPlugins); void setExperimentalUcJson(JSONObject experimentalUcJson); void setAllSecurityWarnings(Map<String, List<SecurityWarning>> securityWarnings); void setPluginInfoJson(JSONObject pluginInfoJson); void setCm(CacheManager cm); List<Plugin> getFailedPlugins(); }
PluginManager { public Map<String, Plugin> installedPlugins() { Map<String, Plugin> installedPlugins = new HashMap<>(); FileFilter fileFilter = new WildcardFileFilter("*.jpi"); File[] files = refDir.listFiles(fileFilter); if (files != null) { for (File file : files) { String pluginName = FilenameUtils.getBaseName(file.getName()); installedPlugins.put(pluginName, new Plugin(pluginName, getPluginVersion(file), null, null)); } } return installedPlugins; } @SuppressFBWarnings(value = "PATH_TRAVERSAL_IN", justification = "we want the user to be able to specify a path")  PluginManager(Config cfg); void start(); void start(boolean downloadUc); List<Plugin> findPluginsToDownload(Map<String, Plugin> requestedPlugins); Map<String, Plugin> findEffectivePlugins(List<Plugin> pluginsToBeDownloaded); void listPlugins(); void logPlugins(String description, List<Plugin> plugins); Map<String, List<SecurityWarning>> getSecurityWarnings(); void showAllSecurityWarnings(); void showSpecificSecurityWarnings(List<Plugin> plugins); List<Plugin> getLatestVersionsOfPlugins(List<Plugin> plugins); boolean warningExists(Plugin plugin); void checkVersionCompatibility(VersionNumber jenkinsVersion, List<Plugin> pluginsToBeDownloaded); void downloadPlugins(List<Plugin> plugins); Map<String, Plugin> findPluginsAndDependencies(List<Plugin> requestedPlugins); void outputPluginReplacementInfo(Plugin lowerVersion, Plugin higherVersion); @Deprecated JSONObject getJson(String urlString); JSONObject getJson(URL url, String cacheKey); void getUCJson(VersionNumber jenkinsVersion); JSONArray getPluginDependencyJsonArray(Plugin plugin, JSONObject ucJson); VersionNumber getLatestPluginVersion(String pluginName); List<Plugin> resolveDependenciesFromManifest(Plugin plugin); List<Plugin> resolveDependenciesFromJson(Plugin plugin, JSONObject pluginJson); List<Plugin> resolveDirectDependencies(Plugin plugin); Map<String, Plugin> resolveRecursiveDependencies(Plugin plugin); boolean downloadPlugin(Plugin plugin, File location); String getPluginDownloadUrl(Plugin plugin); boolean downloadToFile(String urlString, Plugin plugin, File fileLocation); @SuppressFBWarnings({"RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE", "PATH_TRAVERSAL_IN"}) boolean downloadToFile(String urlString, Plugin plugin, File fileLocation, int maxRetries); String getAttributeFromManifest(File file, String key); VersionNumber getJenkinsVersionFromWar(); String getPluginVersion(File file); Map<String, Plugin> installedPlugins(); @SuppressFBWarnings({"RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE", "PATH_TRAVERSAL_IN"}) Map<String, Plugin> bundledPlugins(); String getJenkinsUCLatest(); void setJenkinsUCLatest(String updateCenterLatest); void setInstalledPluginVersions(Map<String, Plugin> installedPlugins); void setBundledPluginVersions(Map<String, Plugin> bundledPlugins); void setAllPluginsAndDependencies(Map<String, Plugin> allPluginsAndDependencies); void setEffectivePlugins(Map<String, Plugin> effectivePlugins); void setPluginsToBeDownloaded(List<Plugin> pluginsToBeDownloaded); void logVerbose(String message); void setLatestUcJson(JSONObject latestUcJson); void setLatestUcPlugins(JSONObject latestPlugins); void setExperimentalUcJson(JSONObject experimentalUcJson); void setAllSecurityWarnings(Map<String, List<SecurityWarning>> securityWarnings); void setPluginInfoJson(JSONObject pluginInfoJson); void setCm(CacheManager cm); List<Plugin> getFailedPlugins();  }