28 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
29 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 */
31
32 /**
33 * Nashorn project uses "final" modifier for method parameters
34 * (like 'val' of Scala). This tool finds method parameters that
35 * miss final modifier.
36 */
37
38 // Usage: jjs -J-Djava.ext.dirs=<your_nashorn_jar_dir> find_nonfinals.js
39
40 var Class = Java.type("java.lang.Class");
41 var System = Java.type("java.lang.System");
42 var File = Java.type("java.io.File");
43 var JarFile = Java.type("java.util.jar.JarFile");
44 var Modifier = Java.type("java.lang.reflect.Modifier");
45
46 // locate nashorn.jar from java.ext.dirs
47 function findNashorn() {
48 var paths = System.getProperty("java.ext.dirs").split(':');
49 for each (var p in paths) {
50 var nashorn = p + File.separator + "nashorn.jar";
51 if (new File(nashorn).exists()) {
52 return nashorn;
53 }
54 }
55 }
56
57 // analyze a single Class and print info on non-final parameters
58 function analyzeClass(cls) {
59 var methods = cls.getDeclaredMethods();
60 for each (var method in methods) {
61 // this requires -parameters option when compiling java sources
62 var params = method.parameters;
63 for each (var p in params) {
64 var modifiers = p.modifiers;
65 if (!Modifier.isFinal(modifiers)) {
66 if (! method.name.startsWith("access$")) {
67 print(method);
68 print(" ->", p);
|
28 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
29 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 */
31
32 /**
33 * Nashorn project uses "final" modifier for method parameters
34 * (like 'val' of Scala). This tool finds method parameters that
35 * miss final modifier.
36 */
37
38 // Usage: jjs -J-Djava.ext.dirs=<your_nashorn_jar_dir> find_nonfinals.js
39
40 var Class = Java.type("java.lang.Class");
41 var System = Java.type("java.lang.System");
42 var File = Java.type("java.io.File");
43 var JarFile = Java.type("java.util.jar.JarFile");
44 var Modifier = Java.type("java.lang.reflect.Modifier");
45
46 // locate nashorn.jar from java.ext.dirs
47 function findNashorn() {
48 var paths = System.getProperty("java.ext.dirs").split(File.pathSeparator);
49 for each (var p in paths) {
50 var nashorn = p + File.separator + "nashorn.jar";
51 if (new File(nashorn).exists()) {
52 return nashorn;
53 }
54 }
55 }
56
57 // analyze a single Class and print info on non-final parameters
58 function analyzeClass(cls) {
59 var methods = cls.getDeclaredMethods();
60 for each (var method in methods) {
61 // this requires -parameters option when compiling java sources
62 var params = method.parameters;
63 for each (var p in params) {
64 var modifiers = p.modifiers;
65 if (!Modifier.isFinal(modifiers)) {
66 if (! method.name.startsWith("access$")) {
67 print(method);
68 print(" ->", p);
|