725ab0e7c489c027cd4478b3780cc09f48d4eefe
[jalviewjs.git] / site / j2s / java / lang / Throwable.js
1 // BH added check for annoying NullPointerException to show stack trace during file checking\r
2 \r
3 c$=Clazz.decorateAsClass(function(){\r
4 this.detailMessage=null;\r
5 this.cause=null;\r
6 this.stackTrace=null;\r
7 Clazz.instantialize(this,arguments);\r
8 },java.lang,"Throwable",null,java.io.Serializable);\r
9 Clazz.prepareFields(c$,function(){\r
10 this.cause=this;\r
11 });\r
12 Clazz.makeConstructor(c$,\r
13 function(){\r
14 if(Clazz._checkFiles && this.__CLASS_NAME__ == "java.lang.NullPointerException")\r
15   System.out.println(Clazz.getStackTrace());\r
16 this.fillInStackTrace();\r
17 });\r
18 Clazz.makeConstructor(c$,\r
19 function(message){\r
20 this.fillInStackTrace();\r
21 this.detailMessage=message;\r
22 },"~S");\r
23 Clazz.makeConstructor(c$,\r
24 function(message,cause){\r
25 this.fillInStackTrace();\r
26 this.detailMessage=message;\r
27 this.cause=cause;\r
28 },"~S,Throwable");\r
29 Clazz.makeConstructor(c$,\r
30 function(cause){\r
31 this.fillInStackTrace();\r
32 this.detailMessage=(cause==null?null:cause.toString());\r
33 this.cause=cause;\r
34 },"Throwable");\r
35 Clazz.defineMethod(c$,"getMessage",\r
36 function(){\r
37 {\r
38 if(typeof this.message!="undefined"){\r
39 return this.message;\r
40 }\r
41 }return this.detailMessage;\r
42 });\r
43 Clazz.defineMethod(c$,"getLocalizedMessage",\r
44 function(){\r
45 return this.getMessage();\r
46 });\r
47 Clazz.defineMethod(c$,"getCause",\r
48 function(){\r
49 return(this.cause===this?null:this.cause);\r
50 });\r
51 Clazz.defineMethod(c$,"initCause",\r
52 function(cause){\r
53 if(this.cause!==this)throw new IllegalStateException("Can't overwrite cause");\r
54 if(cause===this)throw new IllegalArgumentException("Self-causation not permitted");\r
55 this.cause=cause;\r
56 return this;\r
57 },"Throwable");\r
58 Clazz.overrideMethod(c$,"toString",\r
59 function(){\r
60 var s=this.getClass().getName();\r
61 var message=this.getLocalizedMessage();\r
62 return(message!=null)?(s+": "+message):s;\r
63 });\r
64 Clazz.defineMethod(c$,"printStackTrace",\r
65 function(){\r
66 System.err.println(this);\r
67 for(var i=0;i<this.stackTrace.length;i++){\r
68 var t=this.stackTrace[i];\r
69 var x=t.methodName.indexOf("(");\r
70 var n=t.methodName.substring(0,x).replace(/\s+/g,"");\r
71 if(n!="construct"||t.nativeClazz==null\r
72 ||Clazz.getInheritedLevel(t.nativeClazz,Throwable)<0){\r
73 System.err.println(t);\r
74 }\r
75 }\r
76 });\r
77 Clazz.defineMethod(c$,"printStackTrace",\r
78 function(s){\r
79 this.printStackTrace();\r
80 },"java.io.PrintStream");\r
81 Clazz.defineMethod(c$,"printStackTrace",\r
82 function(s){\r
83 this.printStackTrace();\r
84 },"java.io.PrintWriter");\r
85 Clazz.defineMethod(c$,"fillInStackTrace",\r
86 function(){\r
87 this.stackTrace=new Array();\r
88 var caller=arguments.callee.caller;\r
89 var superCaller=null;\r
90 var callerList=new Array();\r
91 var index=Clazz.callingStackTraces.length-1;\r
92 var noLooping=true;\r
93 while(index>-1||caller!=null){\r
94 var clazzName=null;\r
95 var nativeClazz=null;\r
96 if(!noLooping||caller==Clazz.tryToSearchAndExecute||caller==Clazz.superCall||caller==null){\r
97 if(index<0){\r
98 break;\r
99 }\r
100 noLooping=true;\r
101 superCaller=Clazz.callingStackTraces[index].caller;\r
102 nativeClazz=Clazz.callingStackTraces[index].owner;\r
103 index--;\r
104 }else{\r
105 superCaller=caller;\r
106 if(superCaller.claxxOwner!=null){\r
107 nativeClazz=superCaller.claxxOwner;\r
108 }else if(superCaller.exClazz!=null){\r
109 nativeClazz=superCaller.exClazz;\r
110 }\r
111 }\r
112 var st=new StackTraceElement(\r
113 ((nativeClazz!=null&&nativeClazz.__CLASS_NAME__.length!=0)?\r
114 nativeClazz.__CLASS_NAME__:"anonymous"),\r
115 ((superCaller.exName==null)?"anonymous":superCaller.exName)\r
116 +" ("+Clazz.getParamsType(superCaller.arguments)+")",\r
117 null,-1);\r
118 st.nativeClazz=nativeClazz;\r
119 this.stackTrace[this.stackTrace.length]=st;\r
120 for(var i=0;i<callerList.length;i++){\r
121 if(callerList[i]==superCaller){\r
122 \r
123 var st=new StackTraceElement("lost","missing",null,-3);\r
124 st.nativeClazz=null;\r
125 this.stackTrace[this.stackTrace.length]=st;\r
126 noLooping=false;\r
127 \r
128 }\r
129 }\r
130 if(superCaller!=null){\r
131 callerList[callerList.length]=superCaller;\r
132 }\r
133 caller=superCaller.arguments.callee.caller;\r
134 }\r
135 Clazz.initializingException=false;\r
136 return this;\r
137 });\r
138 Clazz.defineMethod(c$,"setStackTrace",\r
139 function(stackTrace){\r
140 var defensiveCopy=stackTrace.clone();\r
141 for(var i=0;i<defensiveCopy.length;i++)if(defensiveCopy[i]==null)throw new NullPointerException("stackTrace["+i+"]");\r
142 \r
143 this.stackTrace=defensiveCopy;\r
144 },"~A");\r