JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / site / swingjs / j2s / java / util / WeakHashMap.js
1 Clazz.load(["java.lang.ref.WeakReference","java.util.AbstractMap","$.Iterator","$.Map"],"java.util.WeakHashMap",["java.lang.IllegalArgumentException","$.IllegalStateException","java.lang.ref.ReferenceQueue","java.util.AbstractCollection","$.AbstractSet","$.Arrays","$.ConcurrentModificationException","$.NoSuchElementException"],function(){\r
2 c$=Clazz.decorateAsClass(function(){\r
3 this.referenceQueue=null;\r
4 this.elementCount=0;\r
5 this.elementData=null;\r
6 this.loadFactor=0;\r
7 this.threshold=0;\r
8 this.modCount=0;\r
9 if(!Clazz.isClassDefined("java.util.WeakHashMap.HashIterator")){\r
10 java.util.WeakHashMap.$WeakHashMap$HashIterator$();\r
11 }\r
12 Clazz.instantialize(this,arguments);\r
13 },java.util,"WeakHashMap",java.util.AbstractMap,java.util.Map);\r
14 c$.newEntryArray=Clazz.defineMethod(c$,"newEntryArray",\r
15 ($fz=function(size){\r
16 return new Array(size);\r
17 },$fz.isPrivate=true,$fz),"~N");\r
18 Clazz.makeConstructor(c$,\r
19 function(){\r
20 this.construct(16);\r
21 });\r
22 Clazz.makeConstructor(c$,\r
23 function(capacity){\r
24 Clazz.superConstructor(this,java.util.WeakHashMap,[]);\r
25 if(capacity>=0){\r
26 this.elementCount=0;\r
27 this.elementData=java.util.WeakHashMap.newEntryArray(capacity==0?1:capacity);\r
28 this.loadFactor=7500;\r
29 this.computeMaxSize();\r
30 this.referenceQueue=new java.lang.ref.ReferenceQueue();\r
31 }else{\r
32 throw new IllegalArgumentException();\r
33 }},"~N");\r
34 Clazz.makeConstructor(c$,\r
35 function(capacity,loadFactor){\r
36 Clazz.superConstructor(this,java.util.WeakHashMap,[]);\r
37 if(capacity>=0&&loadFactor>0){\r
38 this.elementCount=0;\r
39 this.elementData=java.util.WeakHashMap.newEntryArray(capacity==0?1:capacity);\r
40 this.loadFactor=Math.round((loadFactor*10000));\r
41 this.computeMaxSize();\r
42 this.referenceQueue=new java.lang.ref.ReferenceQueue();\r
43 }else{\r
44 throw new IllegalArgumentException();\r
45 }},"~N,~N");\r
46 Clazz.makeConstructor(c$,\r
47 function(map){\r
48 this.construct(map.size()<6?11:map.size()*2);\r
49 this.putAllImpl(map);\r
50 },"java.util.Map");\r
51 Clazz.overrideMethod(c$,"clear",\r
52 function(){\r
53 if(this.elementCount>0){\r
54 this.elementCount=0;\r
55 java.util.Arrays.fill(this.elementData,null);\r
56 this.modCount++;\r
57 while(this.referenceQueue.poll()!=null){\r
58 }\r
59 }});\r
60 Clazz.defineMethod(c$,"computeMaxSize",\r
61 ($fz=function(){\r
62 this.threshold=(Math.floor(this.elementData.length*this.loadFactor/10000));\r
63 },$fz.isPrivate=true,$fz));\r
64 Clazz.overrideMethod(c$,"containsKey",\r
65 function(key){\r
66 return this.getEntry(key)!=null;\r
67 },"~O");\r
68 Clazz.overrideMethod(c$,"entrySet",\r
69 function(){\r
70 this.poll();\r
71 return((Clazz.isClassDefined("java.util.WeakHashMap$1")?0:java.util.WeakHashMap.$WeakHashMap$1$()),Clazz.innerTypeInstance(java.util.WeakHashMap$1,this,null));\r
72 });\r
73 Clazz.overrideMethod(c$,"keySet",\r
74 function(){\r
75 this.poll();\r
76 if(this.$keySet==null){\r
77 this.$keySet=((Clazz.isClassDefined("java.util.WeakHashMap$2")?0:java.util.WeakHashMap.$WeakHashMap$2$()),Clazz.innerTypeInstance(java.util.WeakHashMap$2,this,null));\r
78 }return this.$keySet;\r
79 });\r
80 Clazz.overrideMethod(c$,"values",\r
81 function(){\r
82 this.poll();\r
83 if(this.valuesCollection==null){\r
84 this.valuesCollection=((Clazz.isClassDefined("java.util.WeakHashMap$3")?0:java.util.WeakHashMap.$WeakHashMap$3$()),Clazz.innerTypeInstance(java.util.WeakHashMap$3,this,null));\r
85 }return this.valuesCollection;\r
86 });\r
87 Clazz.overrideMethod(c$,"get",\r
88 function(key){\r
89 this.poll();\r
90 if(key!=null){\r
91 var index=(key.hashCode()&0x7FFFFFFF)%this.elementData.length;\r
92 var entry=this.elementData[index];\r
93 while(entry!=null){\r
94 if(key.equals(entry.get())){\r
95 return entry.value;\r
96 }entry=entry.$next;\r
97 }\r
98 return null;\r
99 }var entry=this.elementData[0];\r
100 while(entry!=null){\r
101 if(entry.isNull){\r
102 return entry.value;\r
103 }entry=entry.$next;\r
104 }\r
105 return null;\r
106 },"~O");\r
107 Clazz.defineMethod(c$,"getEntry",\r
108 function(key){\r
109 this.poll();\r
110 if(key!=null){\r
111 var index=(key.hashCode()&0x7FFFFFFF)%this.elementData.length;\r
112 var entry=this.elementData[index];\r
113 while(entry!=null){\r
114 if(key.equals(entry.get())){\r
115 return entry;\r
116 }entry=entry.$next;\r
117 }\r
118 return null;\r
119 }var entry=this.elementData[0];\r
120 while(entry!=null){\r
121 if(entry.isNull){\r
122 return entry;\r
123 }entry=entry.$next;\r
124 }\r
125 return null;\r
126 },"~O");\r
127 Clazz.overrideMethod(c$,"containsValue",\r
128 function(value){\r
129 this.poll();\r
130 if(value!=null){\r
131 for(var i=this.elementData.length;--i>=0;){\r
132 var entry=this.elementData[i];\r
133 while(entry!=null){\r
134 var key=entry.get();\r
135 if((key!=null||entry.isNull)&&value.equals(entry.value)){\r
136 return true;\r
137 }entry=entry.$next;\r
138 }\r
139 }\r
140 }else{\r
141 for(var i=this.elementData.length;--i>=0;){\r
142 var entry=this.elementData[i];\r
143 while(entry!=null){\r
144 var key=entry.get();\r
145 if((key!=null||entry.isNull)&&entry.value==null){\r
146 return true;\r
147 }entry=entry.$next;\r
148 }\r
149 }\r
150 }return false;\r
151 },"~O");\r
152 Clazz.overrideMethod(c$,"isEmpty",\r
153 function(){\r
154 return this.size()==0;\r
155 });\r
156 Clazz.defineMethod(c$,"poll",\r
157 function(){\r
158 var toRemove;\r
159 while((toRemove=this.referenceQueue.poll())!=null){\r
160 this.removeEntry(toRemove);\r
161 }\r
162 });\r
163 Clazz.defineMethod(c$,"removeEntry",\r
164 function(toRemove){\r
165 var entry;\r
166 var last=null;\r
167 var index=(toRemove.hash&0x7FFFFFFF)%this.elementData.length;\r
168 entry=this.elementData[index];\r
169 while(entry!=null){\r
170 if(toRemove===entry){\r
171 this.modCount++;\r
172 if(last==null){\r
173 this.elementData[index]=entry.$next;\r
174 }else{\r
175 last.$next=entry.$next;\r
176 }this.elementCount--;\r
177 break;\r
178 }last=entry;\r
179 entry=entry.$next;\r
180 }\r
181 },"java.util.WeakHashMap.Entry");\r
182 Clazz.overrideMethod(c$,"put",\r
183 function(key,value){\r
184 this.poll();\r
185 var index=0;\r
186 var entry;\r
187 if(key!=null){\r
188 index=(key.hashCode()&0x7FFFFFFF)%this.elementData.length;\r
189 entry=this.elementData[index];\r
190 while(entry!=null&&!key.equals(entry.get())){\r
191 entry=entry.$next;\r
192 }\r
193 }else{\r
194 entry=this.elementData[0];\r
195 while(entry!=null&&!entry.isNull){\r
196 entry=entry.$next;\r
197 }\r
198 }if(entry==null){\r
199 this.modCount++;\r
200 if(++this.elementCount>this.threshold){\r
201 this.rehash();\r
202 index=key==null?0:(key.hashCode()&0x7FFFFFFF)%this.elementData.length;\r
203 }entry=new java.util.WeakHashMap.Entry(key,value,this.referenceQueue);\r
204 entry.$next=this.elementData[index];\r
205 this.elementData[index]=entry;\r
206 return null;\r
207 }var result=entry.value;\r
208 entry.value=value;\r
209 return result;\r
210 },"~O,~O");\r
211 Clazz.defineMethod(c$,"rehash",\r
212 ($fz=function(){\r
213 var length=this.elementData.length<<1;\r
214 if(length==0){\r
215 length=1;\r
216 }var newData=java.util.WeakHashMap.newEntryArray(length);\r
217 for(var i=0;i<this.elementData.length;i++){\r
218 var entry=this.elementData[i];\r
219 while(entry!=null){\r
220 var index=entry.isNull?0:(entry.hash&0x7FFFFFFF)%length;\r
221 var next=entry.$next;\r
222 entry.$next=newData[index];\r
223 newData[index]=entry;\r
224 entry=next;\r
225 }\r
226 }\r
227 this.elementData=newData;\r
228 this.computeMaxSize();\r
229 },$fz.isPrivate=true,$fz));\r
230 Clazz.overrideMethod(c$,"putAll",\r
231 function(map){\r
232 this.putAllImpl(map);\r
233 },"java.util.Map");\r
234 Clazz.overrideMethod(c$,"remove",\r
235 function(key){\r
236 this.poll();\r
237 var index=0;\r
238 var entry;\r
239 var last=null;\r
240 if(key!=null){\r
241 index=(key.hashCode()&0x7FFFFFFF)%this.elementData.length;\r
242 entry=this.elementData[index];\r
243 while(entry!=null&&!key.equals(entry.get())){\r
244 last=entry;\r
245 entry=entry.$next;\r
246 }\r
247 }else{\r
248 entry=this.elementData[0];\r
249 while(entry!=null&&!entry.isNull){\r
250 last=entry;\r
251 entry=entry.$next;\r
252 }\r
253 }if(entry!=null){\r
254 this.modCount++;\r
255 if(last==null){\r
256 this.elementData[index]=entry.$next;\r
257 }else{\r
258 last.$next=entry.$next;\r
259 }this.elementCount--;\r
260 return entry.value;\r
261 }return null;\r
262 },"~O");\r
263 Clazz.overrideMethod(c$,"size",\r
264 function(){\r
265 this.poll();\r
266 return this.elementCount;\r
267 });\r
268 Clazz.defineMethod(c$,"putAllImpl",\r
269 ($fz=function(map){\r
270 if(map.entrySet()!=null){\r
271 Clazz.superCall(this,java.util.WeakHashMap,"putAll",[map]);\r
272 }},$fz.isPrivate=true,$fz),"java.util.Map");\r
273 c$.$WeakHashMap$HashIterator$=function(){\r
274 Clazz.pu$h(self.c$);\r
275 c$=Clazz.decorateAsClass(function(){\r
276 Clazz.prepareCallback(this,arguments);\r
277 this.position=0;\r
278 this.expectedModCount=0;\r
279 this.currentEntry=null;\r
280 this.nextEntry=null;\r
281 this.nextKey=null;\r
282 this.type=null;\r
283 Clazz.instantialize(this,arguments);\r
284 },java.util.WeakHashMap,"HashIterator",null,java.util.Iterator);\r
285 Clazz.makeConstructor(c$,\r
286 function(a){\r
287 this.type=a;\r
288 this.expectedModCount=this.b$["java.util.WeakHashMap"].modCount;\r
289 },"java.util.WeakHashMap.Entry.Type");\r
290 Clazz.overrideMethod(c$,"hasNext",\r
291 function(){\r
292 if(this.nextEntry!=null){\r
293 return true;\r
294 }while(true){\r
295 if(this.nextEntry==null){\r
296 while(this.position<this.b$["java.util.WeakHashMap"].elementData.length){\r
297 if((this.nextEntry=this.b$["java.util.WeakHashMap"].elementData[this.position++])!=null){\r
298 break;\r
299 }}\r
300 if(this.nextEntry==null){\r
301 return false;\r
302 }}this.nextKey=this.nextEntry.get();\r
303 if(this.nextKey!=null||this.nextEntry.isNull){\r
304 return true;\r
305 }this.nextEntry=this.nextEntry.$next;\r
306 }\r
307 });\r
308 Clazz.overrideMethod(c$,"next",\r
309 function(){\r
310 if(this.expectedModCount==this.b$["java.util.WeakHashMap"].modCount){\r
311 if(this.hasNext()){\r
312 this.currentEntry=this.nextEntry;\r
313 this.nextEntry=this.currentEntry.$next;\r
314 var a=this.type.get(this.currentEntry);\r
315 this.nextKey=null;\r
316 return a;\r
317 }throw new java.util.NoSuchElementException();\r
318 }throw new java.util.ConcurrentModificationException();\r
319 });\r
320 Clazz.overrideMethod(c$,"remove",\r
321 function(){\r
322 if(this.expectedModCount==this.b$["java.util.WeakHashMap"].modCount){\r
323 if(this.currentEntry!=null){\r
324 this.b$["java.util.WeakHashMap"].removeEntry(this.currentEntry);\r
325 this.currentEntry=null;\r
326 this.expectedModCount++;\r
327 }else{\r
328 throw new IllegalStateException();\r
329 }}else{\r
330 throw new java.util.ConcurrentModificationException();\r
331 }});\r
332 c$=Clazz.p0p();\r
333 };\r
334 c$.$WeakHashMap$1$=function(){\r
335 Clazz.pu$h(self.c$);\r
336 c$=Clazz.declareAnonymous(java.util,"WeakHashMap$1",java.util.AbstractSet);\r
337 Clazz.overrideMethod(c$,"size",\r
338 function(){\r
339 return this.b$["java.util.WeakHashMap"].size();\r
340 });\r
341 Clazz.overrideMethod(c$,"clear",\r
342 function(){\r
343 this.b$["java.util.WeakHashMap"].clear();\r
344 });\r
345 Clazz.overrideMethod(c$,"remove",\r
346 function(object){\r
347 if(this.contains(object)){\r
348 this.b$["java.util.WeakHashMap"].remove((object).getKey());\r
349 return true;\r
350 }return false;\r
351 },"~O");\r
352 Clazz.overrideMethod(c$,"contains",\r
353 function(object){\r
354 if(Clazz.instanceOf(object,java.util.Map.Entry)){\r
355 var entry=this.b$["java.util.WeakHashMap"].getEntry((object).getKey());\r
356 if(entry!=null){\r
357 var key=entry.get();\r
358 if(key!=null||entry.isNull){\r
359 return object.equals(entry);\r
360 }}}return false;\r
361 },"~O");\r
362 Clazz.overrideMethod(c$,"iterator",\r
363 function(){\r
364 return Clazz.innerTypeInstance(java.util.WeakHashMap.HashIterator,this,null,((Clazz.isClassDefined("java.util.WeakHashMap$1$1")?0:java.util.WeakHashMap.$WeakHashMap$1$1$()),Clazz.innerTypeInstance(java.util.WeakHashMap$1$1,this,null)));\r
365 });\r
366 c$=Clazz.p0p();\r
367 };\r
368 c$.$WeakHashMap$1$1$=function(){\r
369 Clazz.pu$h(self.c$);\r
370 c$=Clazz.declareAnonymous(java.util,"WeakHashMap$1$1",null,java.util.WeakHashMap.Entry.Type);\r
371 Clazz.overrideMethod(c$,"get",\r
372 function(entry){\r
373 return entry;\r
374 },"java.util.Map.Entry");\r
375 c$=Clazz.p0p();\r
376 };\r
377 c$.$WeakHashMap$2$=function(){\r
378 Clazz.pu$h(self.c$);\r
379 c$=Clazz.declareAnonymous(java.util,"WeakHashMap$2",java.util.AbstractSet);\r
380 Clazz.overrideMethod(c$,"contains",\r
381 function(object){\r
382 return this.b$["java.util.WeakHashMap"].containsKey(object);\r
383 },"~O");\r
384 Clazz.overrideMethod(c$,"size",\r
385 function(){\r
386 return this.b$["java.util.WeakHashMap"].size();\r
387 });\r
388 Clazz.overrideMethod(c$,"clear",\r
389 function(){\r
390 this.b$["java.util.WeakHashMap"].clear();\r
391 });\r
392 Clazz.overrideMethod(c$,"remove",\r
393 function(key){\r
394 if(this.b$["java.util.WeakHashMap"].containsKey(key)){\r
395 this.b$["java.util.WeakHashMap"].remove(key);\r
396 return true;\r
397 }return false;\r
398 },"~O");\r
399 Clazz.overrideMethod(c$,"iterator",\r
400 function(){\r
401 return Clazz.innerTypeInstance(java.util.WeakHashMap.HashIterator,this,null,((Clazz.isClassDefined("java.util.WeakHashMap$2$1")?0:java.util.WeakHashMap.$WeakHashMap$2$1$()),Clazz.innerTypeInstance(java.util.WeakHashMap$2$1,this,null)));\r
402 });\r
403 c$=Clazz.p0p();\r
404 };\r
405 c$.$WeakHashMap$2$1$=function(){\r
406 Clazz.pu$h(self.c$);\r
407 c$=Clazz.declareAnonymous(java.util,"WeakHashMap$2$1",null,java.util.WeakHashMap.Entry.Type);\r
408 Clazz.overrideMethod(c$,"get",\r
409 function(entry){\r
410 return entry.getKey();\r
411 },"java.util.Map.Entry");\r
412 c$=Clazz.p0p();\r
413 };\r
414 c$.$WeakHashMap$3$=function(){\r
415 Clazz.pu$h(self.c$);\r
416 c$=Clazz.declareAnonymous(java.util,"WeakHashMap$3",java.util.AbstractCollection);\r
417 Clazz.overrideMethod(c$,"size",\r
418 function(){\r
419 return this.b$["java.util.WeakHashMap"].size();\r
420 });\r
421 Clazz.overrideMethod(c$,"clear",\r
422 function(){\r
423 this.b$["java.util.WeakHashMap"].clear();\r
424 });\r
425 Clazz.overrideMethod(c$,"contains",\r
426 function(object){\r
427 return this.b$["java.util.WeakHashMap"].containsValue(object);\r
428 },"~O");\r
429 Clazz.overrideMethod(c$,"iterator",\r
430 function(){\r
431 return Clazz.innerTypeInstance(java.util.WeakHashMap.HashIterator,this,null,((Clazz.isClassDefined("java.util.WeakHashMap$3$1")?0:java.util.WeakHashMap.$WeakHashMap$3$1$()),Clazz.innerTypeInstance(java.util.WeakHashMap$3$1,this,null)));\r
432 });\r
433 c$=Clazz.p0p();\r
434 };\r
435 c$.$WeakHashMap$3$1$=function(){\r
436 Clazz.pu$h(self.c$);\r
437 c$=Clazz.declareAnonymous(java.util,"WeakHashMap$3$1",null,java.util.WeakHashMap.Entry.Type);\r
438 Clazz.overrideMethod(c$,"get",\r
439 function(entry){\r
440 return entry.getValue();\r
441 },"java.util.Map.Entry");\r
442 c$=Clazz.p0p();\r
443 };\r
444 Clazz.pu$h(self.c$);\r
445 c$=Clazz.decorateAsClass(function(){\r
446 this.hash=0;\r
447 this.isNull=false;\r
448 this.value=null;\r
449 this.$next=null;\r
450 Clazz.instantialize(this,arguments);\r
451 },java.util.WeakHashMap,"Entry",java.lang.ref.WeakReference,java.util.Map.Entry);\r
452 Clazz.makeConstructor(c$,\r
453 function(a,b,c){\r
454 Clazz.superConstructor(this,java.util.WeakHashMap.Entry,[a,c]);\r
455 this.isNull=a==null;\r
456 this.hash=this.isNull?0:a.hashCode();\r
457 this.value=b;\r
458 },"~O,~O,java.lang.ref.ReferenceQueue");\r
459 Clazz.overrideMethod(c$,"getKey",\r
460 function(){\r
461 return Clazz.superCall(this,java.util.WeakHashMap.Entry,"get",[]);\r
462 });\r
463 Clazz.overrideMethod(c$,"getValue",\r
464 function(){\r
465 return this.value;\r
466 });\r
467 Clazz.overrideMethod(c$,"setValue",\r
468 function(a){\r
469 var b=this.value;\r
470 this.value=a;\r
471 return b;\r
472 },"~O");\r
473 Clazz.overrideMethod(c$,"equals",\r
474 function(a){\r
475 if(!(Clazz.instanceOf(a,java.util.Map.Entry))){\r
476 return false;\r
477 }var b=a;\r
478 var c=Clazz.superCall(this,java.util.WeakHashMap.Entry,"get",[]);\r
479 return(c==null?c===b.getKey():c.equals(b.getKey()))&&(this.value==null?this.value===b.getValue():this.value.equals(b.getValue()));\r
480 },"~O");\r
481 Clazz.overrideMethod(c$,"hashCode",\r
482 function(){\r
483 return this.hash+(this.value==null?0:this.value.hashCode());\r
484 });\r
485 Clazz.overrideMethod(c$,"toString",\r
486 function(){\r
487 return Clazz.superCall(this,java.util.WeakHashMap.Entry,"get",[])+"="+this.value;\r
488 });\r
489 Clazz.declareInterface(java.util.WeakHashMap.Entry,"Type");\r
490 c$=Clazz.p0p();\r
491 Clazz.defineStatics(c$,\r
492 "DEFAULT_SIZE",16);\r
493 });\r