Ticket #19098: 19098.patch

File 19098.patch, 5.3 KB (added by GerdP, 4 years ago)

fixes update of plugin after crash

  • src/org/openstreetmap/josm/plugins/PluginHandler.java

     
    11091109     */
    11101110    public static Collection<PluginInformation> updatePlugins(Component parent,
    11111111            Collection<PluginInformation> pluginsWanted, ProgressMonitor monitor, boolean displayErrMsg) {
    1112         Collection<PluginInformation> plugins = null;
    1113         pluginDownloadTask = null;
    11141112        if (monitor == null) {
    11151113            monitor = NullProgressMonitor.INSTANCE;
    11161114        }
    1117         try {
    1118             monitor.beginTask("");
     1115        final ProgressMonitor myMonitor = monitor;
    11191116
    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(() -> {
    11261124            List<PluginInformation> allPlugins = task1.getAvailablePlugins();
     1125            Collection<PluginInformation> plugins = null;
     1126            pluginDownloadTask = null;
    11271127
    11281128            try {
    1129                 plugins = buildListOfPluginsToLoad(parent, monitor.createSubTaskMonitor(1, false));
     1129                plugins = buildListOfPluginsToLoad(parent, myMonitor.createSubTaskMonitor(1, false));
    11301130                // If only some plugins have to be updated, filter the list
    11311131                if (pluginsWanted != null && !pluginsWanted.isEmpty()) {
    11321132                    final Collection<String> pluginsWantedName = Utils.transform(pluginsWanted, piw -> piw.name);
     
    11411141            // filter plugins which actually have to be updated
    11421142            Collection<PluginInformation> pluginsToUpdate = new ArrayList<>();
    11431143            if (plugins != null) {
    1144                 for (PluginInformation pi: plugins) {
     1144                for (PluginInformation pi : plugins) {
    11451145                    if (pi.isUpdateRequired()) {
    11461146                        pluginsToUpdate.add(pi);
    11471147                    }
     
    11551155                if (allPlugins != null) {
    11561156                    // Updated plugins may need additional plugin dependencies currently not installed
    11571157                    //
    1158                     Set<PluginInformation> additionalPlugins = findRequiredPluginsToDownload(pluginsToUpdate, allPlugins, pluginsToDownload);
     1158                    Set<PluginInformation> additionalPlugins = findRequiredPluginsToDownload(pluginsToUpdate,
     1159                            allPlugins, pluginsToDownload);
    11591160                    pluginsToDownload.addAll(additionalPlugins);
    11601161
    11611162                    // Iterate on required plugins, if they need themselves another plugins (i.e A needs B, but B needs C)
     
    11631164                        // Install the additional plugins to load them later
    11641165                        if (plugins != null)
    11651166                            plugins.addAll(additionalPlugins);
    1166                         additionalPlugins = findRequiredPluginsToDownload(additionalPlugins, allPlugins, pluginsToDownload);
     1167                        additionalPlugins = findRequiredPluginsToDownload(additionalPlugins, allPlugins,
     1168                                pluginsToDownload);
    11671169                        pluginsToDownload.addAll(additionalPlugins);
    11681170                    }
    11691171                }
     
    11701172
    11711173                // try to update the locally installed plugins
    11721174                pluginDownloadTask = new PluginDownloadTask(
    1173                         monitor.createSubTaskMonitor(1, false),
     1175                        myMonitor.createSubTaskMonitor(1, false),
    11741176                        pluginsToDownload,
    11751177                        tr("Update plugins")
    1176                 );
     1178                        );
    11771179                try {
    11781180                    pluginDownloadTask.run();
    11791181                } catch (RuntimeException e) { // NOPMD
     
    11911193                    return plugins;
    11921194                }
    11931195            }
    1194         } finally {
    1195             monitor.finishTask();
    1196         }
    1197         if (pluginsWanted == null) {
    1198             // if all plugins updated, remember the update because it was successful
    1199             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();
    12031205    }
    12041206
    12051207    /**