From bd9ad9982b484776e8cb46650d61a405ef1dad37 Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Mon, 22 Oct 2012 20:25:01 +0000
Subject: [PATCH] - Fix spacing in summary bar - Add start() in UpdateTask so
 things happen in the right order - Add toString() in UpdateTask for better
 debugging - Fix getID() for plugin UpdateTasks

---
 .../java/src/org/klomp/snark/UpdateHandler.java    |  1 -
 .../java/src/org/klomp/snark/UpdateRunner.java     | 14 ++++++++------
 .../i2p/router/update/ConsoleUpdateManager.java    |  3 +++
 .../src/net/i2p/router/update/NewsHandler.java     |  1 -
 .../net/i2p/router/update/PluginUpdateChecker.java |  3 +++
 .../net/i2p/router/update/PluginUpdateHandler.java |  2 --
 .../net/i2p/router/update/PluginUpdateRunner.java  |  3 +++
 .../i2p/router/update/UnsignedUpdateHandler.java   |  2 --
 .../src/net/i2p/router/update/UpdateHandler.java   |  1 -
 .../src/net/i2p/router/update/UpdateRunner.java    |  5 +++++
 .../java/src/net/i2p/router/web/SummaryHelper.java |  8 ++++++++
 core/java/src/net/i2p/update/UpdateTask.java       |  5 +++++
 12 files changed, 35 insertions(+), 13 deletions(-)

diff --git a/apps/i2psnark/java/src/org/klomp/snark/UpdateHandler.java b/apps/i2psnark/java/src/org/klomp/snark/UpdateHandler.java
index ecb27c55d0..4e5b56a419 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 a676f33ab8..9699b70d7e 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 7ba50c305e..c264e61d33 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 5a3ed7501f..d54948a848 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 56dd2e8a3d..a9625feb9a 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 3f38724efd..12847fc8e2 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 ddf4a75a3b..6265496379 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 15db5c9266..0cfcbc9495 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 3af9837167..3ff73e4d31 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 813713220c..bb952bc50b 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 1d04344419..63bf2a5646 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 97944b0e0c..f9b383062d 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();
-- 
GitLab