Ticket #19098: 19098.patch
File 19098.patch, 5.3 KB (added by , 4 years ago) |
---|
-
src/org/openstreetmap/josm/plugins/PluginHandler.java
1109 1109 */ 1110 1110 public static Collection<PluginInformation> updatePlugins(Component parent, 1111 1111 Collection<PluginInformation> pluginsWanted, ProgressMonitor monitor, boolean displayErrMsg) { 1112 Collection<PluginInformation> plugins = null;1113 pluginDownloadTask = null;1114 1112 if (monitor == null) { 1115 1113 monitor = NullProgressMonitor.INSTANCE; 1116 1114 } 1117 try { 1118 monitor.beginTask(""); 1115 final ProgressMonitor myMonitor = monitor; 1119 1116 1120 // try to download the plugin lists 1121 ReadRemotePluginInformationTask task1 = new ReadRemotePluginInformationTask( 1122 monitor.createSubTaskMonitor(1, false), 1123 Preferences.main().getOnlinePluginSites(), displayErrMsg 1124 ); 1125 task1.run(); 1117 // try to download the plugin lists 1118 ReadRemotePluginInformationTask task1 = new ReadRemotePluginInformationTask( 1119 monitor.createSubTaskMonitor(1, false), 1120 Preferences.main().getOnlinePluginSites(), displayErrMsg 1121 ); 1122 MainApplication.worker.submit(task1); 1123 MainApplication.worker.submit(() -> { 1126 1124 List<PluginInformation> allPlugins = task1.getAvailablePlugins(); 1125 Collection<PluginInformation> plugins = null; 1126 pluginDownloadTask = null; 1127 1127 1128 1128 try { 1129 plugins = buildListOfPluginsToLoad(parent, m onitor.createSubTaskMonitor(1, false));1129 plugins = buildListOfPluginsToLoad(parent, myMonitor.createSubTaskMonitor(1, false)); 1130 1130 // If only some plugins have to be updated, filter the list 1131 1131 if (pluginsWanted != null && !pluginsWanted.isEmpty()) { 1132 1132 final Collection<String> pluginsWantedName = Utils.transform(pluginsWanted, piw -> piw.name); … … 1141 1141 // filter plugins which actually have to be updated 1142 1142 Collection<PluginInformation> pluginsToUpdate = new ArrayList<>(); 1143 1143 if (plugins != null) { 1144 for (PluginInformation pi : plugins) {1144 for (PluginInformation pi : plugins) { 1145 1145 if (pi.isUpdateRequired()) { 1146 1146 pluginsToUpdate.add(pi); 1147 1147 } … … 1155 1155 if (allPlugins != null) { 1156 1156 // Updated plugins may need additional plugin dependencies currently not installed 1157 1157 // 1158 Set<PluginInformation> additionalPlugins = findRequiredPluginsToDownload(pluginsToUpdate, allPlugins, pluginsToDownload); 1158 Set<PluginInformation> additionalPlugins = findRequiredPluginsToDownload(pluginsToUpdate, 1159 allPlugins, pluginsToDownload); 1159 1160 pluginsToDownload.addAll(additionalPlugins); 1160 1161 1161 1162 // Iterate on required plugins, if they need themselves another plugins (i.e A needs B, but B needs C) … … 1163 1164 // Install the additional plugins to load them later 1164 1165 if (plugins != null) 1165 1166 plugins.addAll(additionalPlugins); 1166 additionalPlugins = findRequiredPluginsToDownload(additionalPlugins, allPlugins, pluginsToDownload); 1167 additionalPlugins = findRequiredPluginsToDownload(additionalPlugins, allPlugins, 1168 pluginsToDownload); 1167 1169 pluginsToDownload.addAll(additionalPlugins); 1168 1170 } 1169 1171 } … … 1170 1172 1171 1173 // try to update the locally installed plugins 1172 1174 pluginDownloadTask = new PluginDownloadTask( 1173 m onitor.createSubTaskMonitor(1, false),1175 myMonitor.createSubTaskMonitor(1, false), 1174 1176 pluginsToDownload, 1175 1177 tr("Update plugins") 1176 );1178 ); 1177 1179 try { 1178 1180 pluginDownloadTask.run(); 1179 1181 } catch (RuntimeException e) { // NOPMD … … 1191 1193 return plugins; 1192 1194 } 1193 1195 } 1194 } finally{1195 monitor.finishTask();1196 }1197 if (pluginsWanted == null) {1198 // if all plugins updated, remember the update because it was successful1199 Config.getPref().putInt("pluginmanager.version", Version.getInstance().getVersion());1200 Config.getPref().put("pluginmanager.lastupdate", Long.toString(System.currentTimeMillis())); 1201 } 1202 return plugins;1196 if (pluginsWanted == null) { 1197 // if all plugins updated, remember the update because it was successful 1198 Config.getPref().putInt("pluginmanager.version", Version.getInstance().getVersion()); 1199 Config.getPref().put("pluginmanager.lastupdate", Long.toString(System.currentTimeMillis())); 1200 } 1201 return plugins; 1202 1203 }); 1204 return Collections.emptyList(); 1203 1205 } 1204 1206 1205 1207 /**