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