diff --git a/apps/routerconsole/jsp/debug.jsp b/apps/routerconsole/jsp/debug.jsp index 9f39b840e4720a7b57f1da11df23f728d0675f61..90bd964eb9d3fe3626206bd3ef02f34f744c7bb4 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 8b4c841f22b2f540ae5eb9e30730dc8e08f008f7..a311fe65d0693a1c9eec067eddce1e08b2d04701 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("<h2>App Manager</h2>"); + buf.append("<h3>Tracked</h3>"); + toString1(buf); + buf.append("<h3>Registered</h3>"); + toString2(buf); + out.write(buf.toString()); + } + + /** + * debug + * @since 0.9.6 + */ + private void toString1(StringBuilder buf) { + List<String> list = new ArrayList(_clients.size()); + for (Map.Entry<ClientApp, String[]> entry : _clients.entrySet()) { + ClientApp key = entry.getKey(); + String[] val = entry.getValue(); + list.add("[" + key.getName() + "] = [" + key.getClass().getName() + ' ' + Arrays.toString(val) + "] " + key.getState() + "<br>"); + } + Collections.sort(list); + for (String e : list) { + buf.append(e); + } + } + + /** + * debug + * @since 0.9.6 + */ + private void toString2(StringBuilder buf) { + List<String> list = new ArrayList(_registered.size()); + for (Map.Entry<String, ClientApp> entry : _registered.entrySet()) { + String key = entry.getKey(); + ClientApp val = entry.getValue(); + list.add("[" + key + "] = [" + val.getClass().getName() + "]<br>"); + } + Collections.sort(list); + for (String e : list) { + buf.append(e); + } + } }