Skip to content

Commit 77fc827

Browse files
adding a new sample script (dump.all.classes)
1 parent 9f2c981 commit 77fc827

File tree

2 files changed

+40
-3
lines changed

2 files changed

+40
-3
lines changed

docs/localhost.port.0.5.0/index.html

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,11 @@ <h2>HTTP API</h2>
7373
</div>
7474
<div><a href="js?code=java.lang.System.getProperty('java.class.path')">get the class path</a></div>
7575
<div><a href="js?code=JSON.stringify(java.lang.System.getProperty('java.class.path').split(java.lang.System.getProperty('path.separator')))">get the class path (JSON)</a></div>
76-
<div><a href="js?code=load('https://lorenzoongithub.github.io/nudge4j/twigs/get.class.path.js')">get the class path (JSON - full external function)</a></div>
77-
<div><a href="js?code=load('https://lorenzoongithub.github.io/nudge4j/twigs/get.thread.x.cpu.js')">get CPU usage per Thread</a></div>
78-
<div><a href="js?code=load('https://lorenzoongithub.github.io/nudge4j/twigs/get.thread.dump.js')">get Thread dump</a></div>
76+
<div><a href="js?code=load('https%3A%2F%2Florenzoongithub.github.io%2Fnudge4j%2Ftwigs%2Fget.class.path.js')">get the class path (JSON - full external function)</a></div>
77+
<div><a href="js?code=load('https%3A%2F%2Florenzoongithub.github.io%2Fnudge4j%2Ftwigs%2Fget.thread.x.cpu.js')">get CPU usage per Thread</a></div>
78+
<div><a href="js?code=load('https%3A%2F%2Florenzoongithub.github.io%2Fnudge4j%2Ftwigs%2Fget.thread.dump.js')">get Thread dump</a></div>
79+
<div><a href="js?code=load('https%3A%2F%2Florenzoongithub.github.io%2Fnudge4j%2Ftwigs%2Fget.all.classes.js')%3BgetAllClasses(%7BskipJDK%3Afalse%7D)">get all classes</a></div>
80+
<div><a href="js?code=load('https%3A%2F%2Florenzoongithub.github.io%2Fnudge4j%2Ftwigs%2Fget.all.classes.js')%3BgetAllClasses(%7BskipJDK%3Atrue%7D)">get all classes (exclude JDKs)</a></div>
7981
</div>
8082
<div class='njSeparator'></div>
8183
<div class='footer' style='text-align:right;'>

docs/twigs/dump.all.classes.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
//
2+
// Inspired by this gist:
3+
// https://gist.github.com/sundararajana/f01c3edd941c1af99e0c/216c9c92e349f13a0478f96d65dd67df6ed2c9b8
4+
//
5+
function dumpAllClasses(options) {
6+
var EnumSet = java.util.EnumSet;
7+
var JavaFileObject = javax.tools.JavaFileObject;
8+
var ToolProvider = javax.tools.ToolProvider;
9+
var DiagnosticCollector = javax.tools.DiagnosticCollector;
10+
var StandardLocation = javax.tools.StandardLocation;
11+
12+
var compiler = ToolProvider.getSystemJavaCompiler();
13+
var fm = compiler.getStandardFileManager(new DiagnosticCollector(), null, null);
14+
var kinds = EnumSet.of(JavaFileObject.Kind.CLASS);
15+
var itr = fm.list(StandardLocation.PLATFORM_CLASS_PATH, '', kinds, true).iterator();
16+
var sb = new java.lang.StringBuilder();
17+
var count = 0;
18+
while(itr.hasNext()) {
19+
var jfo = itr.next();
20+
var uri = jfo.toUri();
21+
if (uri.getScheme().equals("jar")) {
22+
var schemeSpecPart = uri.getSchemeSpecificPart();
23+
if (options && options.skipJDK &&
24+
schemeSpecPart.contains("/jre/lib/") ||
25+
schemeSpecPart.contains("/rt.jar/")) {
26+
continue;
27+
}
28+
}
29+
var name = fm.inferBinaryName(StandardLocation.PLATFORM_CLASS_PATH, jfo);
30+
if (name.contains('$')) continue; // skip inner classes.
31+
count++;
32+
sb.append( name +"\n" );
33+
}
34+
return '[Total:'+count+']\n'+sb.toString();
35+
}

0 commit comments

Comments
 (0)