diff --git a/apps/routerconsole/jsp/debug.jsp b/apps/routerconsole/jsp/debug.jsp index 9f39b840e4..90bd964eb9 100644 --- a/apps/routerconsole/jsp/debug.jsp +++ b/apps/routerconsole/jsp/debug.jsp @@ -26,6 +26,11 @@ */ ctx.updateManager().renderStatusHTML(out); + /* + * Print out the status for the AppManager + */ + ctx.clientAppManager().renderStatusHTML(out); + /* * Print out the status for all the SessionKeyManagers */ diff --git a/router/java/src/net/i2p/router/startup/RouterAppManager.java b/router/java/src/net/i2p/router/startup/RouterAppManager.java index 8b4c841f22..a311fe65d0 100644 --- a/router/java/src/net/i2p/router/startup/RouterAppManager.java +++ b/router/java/src/net/i2p/router/startup/RouterAppManager.java @@ -1,6 +1,11 @@ package net.i2p.router.startup; +import java.io.IOException; +import java.io.Writer; import java.util.Arrays; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -160,4 +165,52 @@ public class RouterAppManager implements ClientAppManager { public ClientApp getRegisteredApp(String name) { return _registered.get(name); } + + /** + * debug + * @since 0.9.6 + */ + public void renderStatusHTML(Writer out) throws IOException { + StringBuilder buf = new StringBuilder(1024); + buf.append("

App Manager

"); + buf.append("

Tracked

"); + toString1(buf); + buf.append("

Registered

"); + toString2(buf); + out.write(buf.toString()); + } + + /** + * debug + * @since 0.9.6 + */ + private void toString1(StringBuilder buf) { + List list = new ArrayList(_clients.size()); + for (Map.Entry entry : _clients.entrySet()) { + ClientApp key = entry.getKey(); + String[] val = entry.getValue(); + list.add("[" + key.getName() + "] = [" + key.getClass().getName() + ' ' + Arrays.toString(val) + "] " + key.getState() + "
"); + } + Collections.sort(list); + for (String e : list) { + buf.append(e); + } + } + + /** + * debug + * @since 0.9.6 + */ + private void toString2(StringBuilder buf) { + List list = new ArrayList(_registered.size()); + for (Map.Entry entry : _registered.entrySet()) { + String key = entry.getKey(); + ClientApp val = entry.getValue(); + list.add("[" + key + "] = [" + val.getClass().getName() + "]
"); + } + Collections.sort(list); + for (String e : list) { + buf.append(e); + } + } }