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 5386554954aebcbcddc89ee8c9433a325299bc1b..7ba50c305ef963461a13aa3ca817c11dad3fc9e2 100644 --- a/apps/routerconsole/java/src/net/i2p/router/update/ConsoleUpdateManager.java +++ b/apps/routerconsole/java/src/net/i2p/router/update/ConsoleUpdateManager.java @@ -1,13 +1,15 @@ package net.i2p.router.update; -import java.io.ByteArrayInputStream; import java.io.File; +import java.io.IOException; +import java.io.Writer; import java.net.URI; import java.net.URISyntaxException; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.Comparator; import java.util.Date; import java.util.Iterator; import java.util.List; @@ -1111,7 +1113,7 @@ public class ConsoleUpdateManager implements UpdateManager { @Override public String toString() { - return "RegisteredUpdater " + updater.getClass() + " for " + type + ' ' + method + " @pri " + priority; + return "RegisteredUpdater " + updater.getClass().getName() + " for " + type + ' ' + method + " @pri " + priority; } } @@ -1152,7 +1154,7 @@ public class ConsoleUpdateManager implements UpdateManager { @Override public String toString() { - return "RegisteredChecker " + checker.getClass() + " for " + type + ' ' + method + " @pri " + priority; + return "RegisteredChecker " + checker.getClass().getName() + " for " + type + ' ' + method + " @pri " + priority; } } @@ -1223,4 +1225,51 @@ public class ConsoleUpdateManager implements UpdateManager { return "VersionAvailable \"" + version + "\" " + sourceMap; } } + + /** debug */ + public void renderStatusHTML(Writer out) throws IOException { + StringBuilder buf = new StringBuilder(1024); + buf.append("<h2>Update Manager</h2>"); + buf.append("<h3>Installed</h3>"); + toString(buf, _installed); + buf.append("<h3>Available</h3>"); + toString(buf, _available); + buf.append("<h3>Downloaded</h3>"); + toString(buf, _downloaded); + buf.append("<h3>Registered Checkers</h3>"); + toString(buf, _registeredCheckers); + buf.append("<h3>Registered Updaters</h3>"); + toString(buf, _registeredUpdaters); + buf.append("<h3>Active Checkers</h3>"); + toString(buf, _activeCheckers); + buf.append("<h3>Active Updaters</h3>"); + toString(buf, _downloaders); + out.write(buf.toString()); + } + + /** debug */ + private static void toString(StringBuilder buf, Collection col) { + List<String> list = new ArrayList(col.size()); + for (Object o : col) { + list.add(o.toString()); + } + Collections.sort(list); + for (String e : list) { + buf.append("[").append(e).append("]<br>"); + } + } + + /** debug */ + private static void toString(StringBuilder buf, Map<?, ?> map) { + List<String> list = new ArrayList(map.size()); + for (Map.Entry entry : map.entrySet()) { + String key = entry.getKey().toString(); + String val = entry.getValue().toString(); + list.add("[" + key + "] = [" + val + "]<br>"); + } + Collections.sort(list); + for (String e : list) { + buf.append(e); + } + } } diff --git a/apps/routerconsole/jsp/debug.jsp b/apps/routerconsole/jsp/debug.jsp index 6da4cce616e93d6ef545d61f8ebe1fc23ffc5f6b..9f39b840e4720a7b57f1da11df23f728d0675f61 100644 --- a/apps/routerconsole/jsp/debug.jsp +++ b/apps/routerconsole/jsp/debug.jsp @@ -13,7 +13,7 @@ <%@include file="summaryajax.jsi" %> </head><body onload="initAjax()"> <%@include file="summary.jsi" %> -<h1>Router SKM</h1> +<h1>Router Debug</h1> <div class="main" id="main"> <% /* @@ -22,9 +22,14 @@ net.i2p.router.RouterContext ctx = (net.i2p.router.RouterContext) net.i2p.I2PAppContext.getGlobalContext(); /* - * Print out the status for all the SessionKeyManagers + * Print out the status for the UpdateManager */ + ctx.updateManager().renderStatusHTML(out); + /* + * Print out the status for all the SessionKeyManagers + */ + out.print("<h2>Router SKM</h2>"); ctx.sessionKeyManager().renderStatusHTML(out); java.util.Set<net.i2p.data.Destination> clients = ctx.clientManager().listClients(); for (net.i2p.data.Destination dest : clients) { diff --git a/core/java/src/net/i2p/update/UpdateManager.java b/core/java/src/net/i2p/update/UpdateManager.java index eae698de4d59e50bc3d88cc578dacad9286671b4..5f609f54756e80698e2f38273fdb4db74c65eed5 100644 --- a/core/java/src/net/i2p/update/UpdateManager.java +++ b/core/java/src/net/i2p/update/UpdateManager.java @@ -1,6 +1,8 @@ package net.i2p.update; import java.io.File; +import java.io.IOException; +import java.io.Writer; import java.net.URI; import java.util.List; @@ -79,4 +81,9 @@ public interface UpdateManager { * @return true if valid, false if corrupt */ public boolean notifyComplete(UpdateTask task, String actualVersion, File file); + + /** + * For debugging + */ + public void renderStatusHTML(Writer out) throws IOException; } diff --git a/core/java/src/net/i2p/util/VersionComparator.java b/core/java/src/net/i2p/util/VersionComparator.java index 8c72252fcb40f4a7a0fe49ac2804cee7bfab3232..ad7c20a0924fbb19ad9e4c028480031081fa702d 100644 --- a/core/java/src/net/i2p/util/VersionComparator.java +++ b/core/java/src/net/i2p/util/VersionComparator.java @@ -46,10 +46,9 @@ public class VersionComparator implements Comparator<String> { } catch (NumberFormatException nfe) { return 1; } - long diff = left - right; - if (diff < 0) + if (left < right) return -1; - if (diff > 0) + if (left > right) return 1; return 0; }