diff --git a/apps/i2psnark/java/src/org/klomp/snark/UpdateHandler.java b/apps/i2psnark/java/src/org/klomp/snark/UpdateHandler.java index ecb27c55d05e00f4034d1359a3784b7927f62aef..4e5b56a41990e5b6a483dacbbef9633994f58b4c 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/UpdateHandler.java +++ b/apps/i2psnark/java/src/org/klomp/snark/UpdateHandler.java @@ -47,7 +47,6 @@ class UpdateHandler implements Updater { return null; UpdateRunner update = new UpdateRunner(_context, _umgr, _smgr, updateSources, newVersion); _umgr.notifyProgress(update, "<b>" + _smgr.util().getString("Updating") + "</b>"); - update.start(); return update; } } diff --git a/apps/i2psnark/java/src/org/klomp/snark/UpdateRunner.java b/apps/i2psnark/java/src/org/klomp/snark/UpdateRunner.java index a676f33ab8059d7ee3b37f921e83aeda60f55ff9..9699b70d7e9fe86e611eadfe1e6747aded82f14e 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/UpdateRunner.java +++ b/apps/i2psnark/java/src/org/klomp/snark/UpdateRunner.java @@ -77,11 +77,6 @@ class UpdateRunner implements UpdateTask, CompleteListener { * If it is, get the whole thing. */ private void update() { - if (_urls.isEmpty()) { - _umgr.notifyTaskFailed(this, "", null); - return; - } - for (URI uri : _urls) { _currentURI = uri; String updateURL = uri.toString(); @@ -102,7 +97,9 @@ class UpdateRunner implements UpdateTask, CompleteListener { new Timeout(); break; } - } catch (IllegalArgumentException iae) {} + } catch (IllegalArgumentException iae) { + _log.error("Invalid update URL", iae); + } } if (_snark == null) fatal("No valid URLs"); @@ -232,4 +229,9 @@ class UpdateRunner implements UpdateTask, CompleteListener { private void updateStatus(String s) { _umgr.notifyProgress(this, s); } + + @Override + public String toString() { + return getClass().getName() + ' ' + getType() + ' ' + getID() + ' ' + getMethod() + ' ' + getURI(); + } } diff --git a/apps/routerconsole/java/src/net/i2p/router/update/ConsoleUpdateManager.java b/apps/routerconsole/java/src/net/i2p/router/update/ConsoleUpdateManager.java index 7ba50c305ef963461a13aa3ca817c11dad3fc9e2..c264e61d33828e896f65f61ed8aeac44d16098bd 100644 --- a/apps/routerconsole/java/src/net/i2p/router/update/ConsoleUpdateManager.java +++ b/apps/routerconsole/java/src/net/i2p/router/update/ConsoleUpdateManager.java @@ -184,6 +184,7 @@ public class ConsoleUpdateManager implements UpdateManager { if (_log.shouldLog(Log.INFO)) _log.info("Starting " + r); _activeCheckers.add(t); + t.start(); } } if (t != null) { @@ -226,6 +227,7 @@ public class ConsoleUpdateManager implements UpdateManager { if (_log.shouldLog(Log.INFO)) _log.info("Starting " + r); _activeCheckers.add(t); + t.start(); break; } } @@ -517,6 +519,7 @@ public class ConsoleUpdateManager implements UpdateManager { if (_log.shouldLog(Log.INFO)) _log.info("Starting " + r); _downloaders.put(t, toTry); + t.start(); return t; } else { if (_log.shouldLog(Log.WARN)) diff --git a/apps/routerconsole/java/src/net/i2p/router/update/NewsHandler.java b/apps/routerconsole/java/src/net/i2p/router/update/NewsHandler.java index 5a3ed7501f19c7afa089a3a0657f22fdac9559c3..d54948a8481922f7f9b647ae5f7fc33294f3b070 100644 --- a/apps/routerconsole/java/src/net/i2p/router/update/NewsHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/update/NewsHandler.java @@ -46,7 +46,6 @@ class NewsHandler extends UpdateHandler implements Checker { updateSources.add(new URI(BACKUP_NEWS_URL)); } catch (URISyntaxException use) {} UpdateRunner update = new NewsFetcher(_context, _mgr, updateSources); - update.start(); return update; } } diff --git a/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateChecker.java b/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateChecker.java index 56dd2e8a3dceee2d28e021de97f3b490cd498fe7..a9625feb9adef09f7484b441f65786e856428646 100644 --- a/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateChecker.java +++ b/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateChecker.java @@ -46,6 +46,9 @@ class PluginUpdateChecker extends UpdateRunner { @Override public UpdateType getType() { return UpdateType.PLUGIN; } + + @Override + public String getID() { return _appName; } @Override public void run() { diff --git a/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateHandler.java b/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateHandler.java index 3f38724efd31afafe57da7e0d6ecfc7e8c59bb33..12847fc8e2dbe99cb777896e6fd9e82169f08fa6 100644 --- a/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateHandler.java @@ -57,7 +57,6 @@ class PluginUpdateHandler implements Checker, Updater { } UpdateRunner update = new PluginUpdateChecker(_context, _mgr, updateSources, appName, oldVersion); - update.start(); return update; } @@ -78,7 +77,6 @@ class PluginUpdateHandler implements Checker, Updater { UpdateRunner update = new PluginUpdateRunner(_context, _mgr, updateSources, appName, oldVersion); // set status before thread to ensure UI feedback _mgr.notifyProgress(update, "<b>" + _mgr._("Updating") + "</b>"); - update.start(); return update; } } diff --git a/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateRunner.java b/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateRunner.java index ddf4a75a3b217adf13d4d6721db35ec48b467a69..6265496379e6ee6f403980aabd1e642ff5987a28 100644 --- a/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateRunner.java +++ b/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateRunner.java @@ -74,6 +74,9 @@ class PluginUpdateRunner extends UpdateRunner { @Override public URI getURI() { return _uri; } + @Override + public String getID() { return _appName; } + @Override protected void update() { diff --git a/apps/routerconsole/java/src/net/i2p/router/update/UnsignedUpdateHandler.java b/apps/routerconsole/java/src/net/i2p/router/update/UnsignedUpdateHandler.java index 15db5c9266adf658c2b7aae90fb10e9a5a2eb68e..0cfcbc94955389290409aca1fcfc24c4e4cea7d3 100644 --- a/apps/routerconsole/java/src/net/i2p/router/update/UnsignedUpdateHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/update/UnsignedUpdateHandler.java @@ -71,7 +71,6 @@ class UnsignedUpdateHandler implements Checker, Updater { } UpdateRunner update = new UnsignedUpdateChecker(_context, _mgr, updateSources, ms); - update.start(); return update; } @@ -91,7 +90,6 @@ class UnsignedUpdateHandler implements Checker, Updater { UpdateRunner update = new UnsignedUpdateRunner(_context, _mgr, updateSources); // set status before thread to ensure UI feedback _mgr.notifyProgress(update, "<b>" + _mgr._("Updating") + "</b>"); - update.start(); return update; } } diff --git a/apps/routerconsole/java/src/net/i2p/router/update/UpdateHandler.java b/apps/routerconsole/java/src/net/i2p/router/update/UpdateHandler.java index 3af9837167d0c0b008453d3707beed0cdfaa7fb8..3ff73e4d31d73741d350834d1dcdc892ef7e4372 100644 --- a/apps/routerconsole/java/src/net/i2p/router/update/UpdateHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/update/UpdateHandler.java @@ -44,7 +44,6 @@ class UpdateHandler implements Updater { UpdateRunner update = new UpdateRunner(_context, _mgr, updateSources); // set status before thread to ensure UI feedback _mgr.notifyProgress(update, "<b>" + _mgr._("Updating") + "</b>"); - update.start(); return update; } } diff --git a/apps/routerconsole/java/src/net/i2p/router/update/UpdateRunner.java b/apps/routerconsole/java/src/net/i2p/router/update/UpdateRunner.java index 813713220ca4d35195cee0be9d32491be78568b2..bb952bc50bd42f7601bf2bd4d9e9182dfaea8bfd 100644 --- a/apps/routerconsole/java/src/net/i2p/router/update/UpdateRunner.java +++ b/apps/routerconsole/java/src/net/i2p/router/update/UpdateRunner.java @@ -236,4 +236,9 @@ class UpdateRunner extends I2PAppThread implements UpdateTask, EepGet.StatusList protected String _(String s, Object o) { return _mgr._(s, o); } + + @Override + public String toString() { + return getClass().getName() + ' ' + getType() + ' ' + getID() + ' ' + getMethod() + ' ' + getURI(); + } } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java index 1d0434441976134ea23a0b825bbb7965244bb016..63bf2a564679df06f9e30b4c7536e3eb26387933 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java @@ -652,8 +652,10 @@ public class SummaryHelper extends HelperBase { StringBuilder buf = new StringBuilder(512); // display all the time so we display the final failure message, and plugin update messages too String status = NewsHelper.getUpdateStatus(); + boolean needSpace = false; if (status.length() > 0) { buf.append("<h4>").append(status).append("</h4>\n"); + needSpace = true; } String dver = NewsHelper.updateVersionDownloaded(); if (dver == null) @@ -661,6 +663,10 @@ public class SummaryHelper extends HelperBase { if (dver != null && !NewsHelper.isUpdateInProgress() && !_context.router().gracefulShutdownInProgress()) { + if (needSpace) + buf.append("<hr>"); + else + needSpace = true; buf.append("<h4><b>").append(_("Update downloaded")).append("<br>"); if (_context.hasWrapper()) buf.append(_("Click Restart to install")); @@ -675,6 +681,8 @@ public class SummaryHelper extends HelperBase { _context.portMapper().getPort(PortMapper.SVC_HTTP_PROXY) > 0 && // assume using proxy for now getAction() == null && getUpdateNonce() == null) { + if (needSpace) + buf.append("<hr>"); long nonce = _context.random().nextLong(); String prev = System.getProperty("net.i2p.router.web.UpdateHandler.nonce"); if (prev != null) diff --git a/core/java/src/net/i2p/update/UpdateTask.java b/core/java/src/net/i2p/update/UpdateTask.java index 97944b0e0cb9ffe3875e9d490ad06b96a410b7a1..f9b383062dcec7949a4407b69d05ef68fd226d2c 100644 --- a/core/java/src/net/i2p/update/UpdateTask.java +++ b/core/java/src/net/i2p/update/UpdateTask.java @@ -9,6 +9,11 @@ import java.net.URI; */ public interface UpdateTask { + /** + * Tasks must not start themselves in the constructor. Do it here. + */ + public void start(); + public void shutdown(); public boolean isRunning();