1
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
4
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
6
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../style.css" TITLE="Style">
9
<!-- render overall pkg coverage graph -->
10
<TABLE cellspacing="0" cellpadding="2">
12
<!-- D:\ java\ development\ opensource\ opensymphony\ oscache\ src\ core\ java\ com\ opensymphony\ oscache\ base\ algorithm\ AbstractConcurrentReadCache.java -->
14
<TD colspan="6" class="reportHeader">
15
<TABLE width="100%"><TR>
16
<TD valign="top" class="titleText">Clover coverage report - <DIV class="timestamp"><b>Coverage timestamp:</b> do jan 22 2004 21:12:32 CET</DIV>
17
<DIV class="navBar"><a href="../../../../../pkgs-summary.html"><b>Overview</b></a> <a href="pkg-summary.html"><b>Package</b></a> <font class="navBarCurrent">File</font></DIV>
19
<DIV class="navBarLink">
21
<A HREF="../../../../../index.html" TARGET="_top">FRAMES</A>
22
<A HREF="AbstractConcurrentReadCache.html" TARGET="_top">NO FRAMES</A>
26
<td class="headerStats" valign="top" width="40%" align="right">
29
<td nowrap><b>file stats:</b></td>
30
<td align="right"><b>LOC:</b></td>
31
<td align="right">2.030</td>
32
<td width="10%"> </td>
33
<td align="right"><b>Methods:</b></td>
34
<td align="right">86</td>
38
<td align="right"><b>NCLOC:</b></td>
39
<td align="right">899</td>
40
<td width="10%"> </td>
41
<td align="right"><b>Classes:</b></td>
42
<td align="right">5</td>
50
<TR><TD class="hbreak" colspan="6"> </TD></TR>
52
<TD class="graphHeaderLeft"><b> Source file</b></TD>
53
<TD class="graphHeader">Conditionals</TD>
54
<TD class="graphHeader">Statements</TD>
55
<TD class="graphHeader">Methods</TD>
56
<TD class="graphHeader" align="left" colspan="2"><B>TOTAL</B></TD>
59
<TD class="graphItem">
60
AbstractConcurrentReadCache.java
63
<TD class="graphPercent" align="center">56,3%</TD>
64
<TD class="graphPercent" align="center">60%</TD>
65
<TD class="graphPercent" align="center">50%</TD>
66
<TD class="graphBarLeft" align="center"><B>57,9%</B></TD>
68
<TABLE class="barGraph" cellspacing="0">
71
<TD class="covered"><img alt="coverage" src="../../../../../img/trans.gif"
72
width="115" height="12"></TD>
73
<TD class="uncovered"><img alt="coverage" src="../../../../../img/trans.gif"
74
width="85" height="12"></TD>
84
<TABLE cellspacing="0" cellpadding="0" class="srcView">
89
<TD align="right" class="lineCount">
93
<TD align="right" class="coverageCount">
98
<PRE class="srcLine"> <span class="comment">/*</span></PRE>
105
<TD align="right" class="lineCount">
109
<TD align="right" class="coverageCount">
114
<PRE class="srcLine"> <span class="comment"> * Copyright (c) 2002-2003 by OpenSymphony</span></PRE>
121
<TD align="right" class="lineCount">
125
<TD align="right" class="coverageCount">
130
<PRE class="srcLine"> <span class="comment"> * All rights reserved.</span></PRE>
137
<TD align="right" class="lineCount">
141
<TD align="right" class="coverageCount">
146
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
153
<TD align="right" class="lineCount">
157
<TD align="right" class="coverageCount">
162
<PRE class="srcLine"> <span class="comment">/*</span></PRE>
169
<TD align="right" class="lineCount">
173
<TD align="right" class="coverageCount">
178
<PRE class="srcLine"> <span class="comment"> File: AbstractConcurrentReadCache</span></PRE>
185
<TD align="right" class="lineCount">
189
<TD align="right" class="coverageCount">
194
<PRE class="srcLine"> <span class="comment"></span></PRE>
201
<TD align="right" class="lineCount">
205
<TD align="right" class="coverageCount">
210
<PRE class="srcLine"> <span class="comment"> Written by Doug Lea. Adapted from JDK1.2 HashMap.java and Hashtable.java</span></PRE>
217
<TD align="right" class="lineCount">
221
<TD align="right" class="coverageCount">
226
<PRE class="srcLine"> <span class="comment"> which carries the following copyright:</span></PRE>
233
<TD align="right" class="lineCount">
237
<TD align="right" class="coverageCount">
242
<PRE class="srcLine"> <span class="comment"></span></PRE>
249
<TD align="right" class="lineCount">
253
<TD align="right" class="coverageCount">
258
<PRE class="srcLine"> <span class="comment"> * Copyright 1997 by Sun Microsystems, Inc.,</span></PRE>
265
<TD align="right" class="lineCount">
269
<TD align="right" class="coverageCount">
274
<PRE class="srcLine"> <span class="comment"> * 901 San Antonio Road, Palo Alto, California, 94303, U.S.A.</span></PRE>
281
<TD align="right" class="lineCount">
285
<TD align="right" class="coverageCount">
290
<PRE class="srcLine"> <span class="comment"> * All rights reserved.</span></PRE>
297
<TD align="right" class="lineCount">
301
<TD align="right" class="coverageCount">
306
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
313
<TD align="right" class="lineCount">
317
<TD align="right" class="coverageCount">
322
<PRE class="srcLine"> <span class="comment"> * This software is the confidential and proprietary information</span></PRE>
329
<TD align="right" class="lineCount">
333
<TD align="right" class="coverageCount">
338
<PRE class="srcLine"> <span class="comment"> * of Sun Microsystems, Inc. ("Confidential Information"). You</span></PRE>
345
<TD align="right" class="lineCount">
349
<TD align="right" class="coverageCount">
354
<PRE class="srcLine"> <span class="comment"> * shall not disclose such Confidential Information and shall use</span></PRE>
361
<TD align="right" class="lineCount">
365
<TD align="right" class="coverageCount">
370
<PRE class="srcLine"> <span class="comment"> * it only in accordance with the terms of the license agreement</span></PRE>
377
<TD align="right" class="lineCount">
381
<TD align="right" class="coverageCount">
386
<PRE class="srcLine"> <span class="comment"> * you entered into with Sun.</span></PRE>
393
<TD align="right" class="lineCount">
397
<TD align="right" class="coverageCount">
402
<PRE class="srcLine"> <span class="comment"></span></PRE>
409
<TD align="right" class="lineCount">
413
<TD align="right" class="coverageCount">
418
<PRE class="srcLine"> <span class="comment"> This class is a modified version of ConcurrentReaderHashMap, which was written</span></PRE>
425
<TD align="right" class="lineCount">
429
<TD align="right" class="coverageCount">
434
<PRE class="srcLine"> <span class="comment"> by Doug Lea (http://gee.cs.oswego.edu/dl/). The modifications where done</span></PRE>
441
<TD align="right" class="lineCount">
445
<TD align="right" class="coverageCount">
450
<PRE class="srcLine"> <span class="comment"> by Pyxis Technologies. This is a base class for the OSCache module of the</span></PRE>
457
<TD align="right" class="lineCount">
461
<TD align="right" class="coverageCount">
466
<PRE class="srcLine"> <span class="comment"> openSymphony project (www.opensymphony.com).</span></PRE>
473
<TD align="right" class="lineCount">
477
<TD align="right" class="coverageCount">
482
<PRE class="srcLine"> <span class="comment"></span></PRE>
489
<TD align="right" class="lineCount">
493
<TD align="right" class="coverageCount">
498
<PRE class="srcLine"> <span class="comment"> History:</span></PRE>
505
<TD align="right" class="lineCount">
509
<TD align="right" class="coverageCount">
514
<PRE class="srcLine"> <span class="comment"> Date Who What</span></PRE>
521
<TD align="right" class="lineCount">
525
<TD align="right" class="coverageCount">
530
<PRE class="srcLine"> <span class="comment"> 28oct1999 dl Created</span></PRE>
537
<TD align="right" class="lineCount">
541
<TD align="right" class="coverageCount">
546
<PRE class="srcLine"> <span class="comment"> 14dec1999 dl jmm snapshot</span></PRE>
553
<TD align="right" class="lineCount">
557
<TD align="right" class="coverageCount">
562
<PRE class="srcLine"> <span class="comment"> 19apr2000 dl use barrierLock</span></PRE>
569
<TD align="right" class="lineCount">
573
<TD align="right" class="coverageCount">
578
<PRE class="srcLine"> <span class="comment"> 12jan2001 dl public release</span></PRE>
585
<TD align="right" class="lineCount">
589
<TD align="right" class="coverageCount">
594
<PRE class="srcLine"> <span class="comment"> Oct2001 abergevin@pyxis-tech.com</span></PRE>
601
<TD align="right" class="lineCount">
605
<TD align="right" class="coverageCount">
610
<PRE class="srcLine"> <span class="comment"> Integrated persistence and outer algorithm support</span></PRE>
617
<TD align="right" class="lineCount">
621
<TD align="right" class="coverageCount">
626
<PRE class="srcLine"> <span class="comment">*/</span></PRE>
633
<TD align="right" class="lineCount">
637
<TD align="right" class="coverageCount">
642
<PRE class="srcLine"> <span class="keyword">package</span> com.opensymphony.oscache.base.algorithm;</PRE>
649
<TD align="right" class="lineCount">
653
<TD align="right" class="coverageCount">
658
<PRE class="srcLine"> </PRE>
665
<TD align="right" class="lineCount">
669
<TD align="right" class="coverageCount">
674
<PRE class="srcLine"> </PRE>
681
<TD align="right" class="lineCount">
685
<TD align="right" class="coverageCount">
690
<PRE class="srcLine"> <span class="comment">/** OpenSymphony BEGIN */</span></PRE>
697
<TD align="right" class="lineCount">
701
<TD align="right" class="coverageCount">
706
<PRE class="srcLine"> <span class="keyword">import</span> com.opensymphony.oscache.base.CacheEntry;</PRE>
713
<TD align="right" class="lineCount">
717
<TD align="right" class="coverageCount">
722
<PRE class="srcLine"> <span class="keyword">import</span> com.opensymphony.oscache.base.persistence.CachePersistenceException;</PRE>
729
<TD align="right" class="lineCount">
733
<TD align="right" class="coverageCount">
738
<PRE class="srcLine"> <span class="keyword">import</span> com.opensymphony.oscache.base.persistence.PersistenceListener;</PRE>
745
<TD align="right" class="lineCount">
749
<TD align="right" class="coverageCount">
754
<PRE class="srcLine"> </PRE>
761
<TD align="right" class="lineCount">
765
<TD align="right" class="coverageCount">
770
<PRE class="srcLine"> <span class="keyword">import</span> org.apache.commons.logging.Log;</PRE>
777
<TD align="right" class="lineCount">
781
<TD align="right" class="coverageCount">
786
<PRE class="srcLine"> <span class="keyword">import</span> org.apache.commons.logging.LogFactory;</PRE>
793
<TD align="right" class="lineCount">
797
<TD align="right" class="coverageCount">
802
<PRE class="srcLine"> </PRE>
809
<TD align="right" class="lineCount">
813
<TD align="right" class="coverageCount">
818
<PRE class="srcLine"> <span class="keyword">import</span> java.io.IOException;</PRE>
825
<TD align="right" class="lineCount">
829
<TD align="right" class="coverageCount">
834
<PRE class="srcLine"> <span class="keyword">import</span> java.io.Serializable;</PRE>
841
<TD align="right" class="lineCount">
845
<TD align="right" class="coverageCount">
850
<PRE class="srcLine"> </PRE>
857
<TD align="right" class="lineCount">
861
<TD align="right" class="coverageCount">
866
<PRE class="srcLine"> <span class="keyword">import</span> java.util.*;</PRE>
873
<TD align="right" class="lineCount">
877
<TD align="right" class="coverageCount">
882
<PRE class="srcLine"> </PRE>
889
<TD align="right" class="lineCount">
893
<TD align="right" class="coverageCount">
898
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
905
<TD align="right" class="lineCount">
909
<TD align="right" class="coverageCount">
914
<PRE class="srcLine"> <span class="comment"> * A version of Hashtable that supports mostly-concurrent reading, but exclusive writing.</span></PRE>
921
<TD align="right" class="lineCount">
925
<TD align="right" class="coverageCount">
930
<PRE class="srcLine"> <span class="comment"> * Because reads are not limited to periods</span></PRE>
937
<TD align="right" class="lineCount">
941
<TD align="right" class="coverageCount">
946
<PRE class="srcLine"> <span class="comment"> * without writes, a concurrent reader policy is weaker than a classic</span></PRE>
953
<TD align="right" class="lineCount">
957
<TD align="right" class="coverageCount">
962
<PRE class="srcLine"> <span class="comment"> * reader/writer policy, but is generally faster and allows more</span></PRE>
969
<TD align="right" class="lineCount">
973
<TD align="right" class="coverageCount">
978
<PRE class="srcLine"> <span class="comment"> * concurrency. This class is a good choice especially for tables that</span></PRE>
985
<TD align="right" class="lineCount">
989
<TD align="right" class="coverageCount">
994
<PRE class="srcLine"> <span class="comment"> * are mainly created by one thread during the start-up phase of a</span></PRE>
1001
<TD align="right" class="lineCount">
1005
<TD align="right" class="coverageCount">
1009
<TD class="srcLine">
1010
<PRE class="srcLine"> <span class="comment"> * program, and from then on, are mainly read (with perhaps occasional</span></PRE>
1017
<TD align="right" class="lineCount">
1021
<TD align="right" class="coverageCount">
1025
<TD class="srcLine">
1026
<PRE class="srcLine"> <span class="comment"> * additions or removals) in many threads. If you also need concurrency</span></PRE>
1033
<TD align="right" class="lineCount">
1037
<TD align="right" class="coverageCount">
1041
<TD class="srcLine">
1042
<PRE class="srcLine"> <span class="comment"> * among writes, consider instead using ConcurrentHashMap.</span></PRE>
1049
<TD align="right" class="lineCount">
1053
<TD align="right" class="coverageCount">
1057
<TD class="srcLine">
1058
<PRE class="srcLine"> <span class="comment"> * <p></span></PRE>
1065
<TD align="right" class="lineCount">
1069
<TD align="right" class="coverageCount">
1073
<TD class="srcLine">
1074
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
1081
<TD align="right" class="lineCount">
1085
<TD align="right" class="coverageCount">
1089
<TD class="srcLine">
1090
<PRE class="srcLine"> <span class="comment"> * Successful retrievals using get(key) and containsKey(key) usually</span></PRE>
1097
<TD align="right" class="lineCount">
1101
<TD align="right" class="coverageCount">
1105
<TD class="srcLine">
1106
<PRE class="srcLine"> <span class="comment"> * run without locking. Unsuccessful ones (i.e., when the key is not</span></PRE>
1113
<TD align="right" class="lineCount">
1117
<TD align="right" class="coverageCount">
1121
<TD class="srcLine">
1122
<PRE class="srcLine"> <span class="comment"> * present) do involve brief synchronization (locking). Also, the</span></PRE>
1129
<TD align="right" class="lineCount">
1133
<TD align="right" class="coverageCount">
1137
<TD class="srcLine">
1138
<PRE class="srcLine"> <span class="comment"> * size and isEmpty methods are always synchronized.</span></PRE>
1145
<TD align="right" class="lineCount">
1149
<TD align="right" class="coverageCount">
1153
<TD class="srcLine">
1154
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
1161
<TD align="right" class="lineCount">
1165
<TD align="right" class="coverageCount">
1169
<TD class="srcLine">
1170
<PRE class="srcLine"> <span class="comment"> * <p> Because retrieval operations can ordinarily overlap with</span></PRE>
1177
<TD align="right" class="lineCount">
1181
<TD align="right" class="coverageCount">
1185
<TD class="srcLine">
1186
<PRE class="srcLine"> <span class="comment"> * writing operations (i.e., put, remove, and their derivatives),</span></PRE>
1193
<TD align="right" class="lineCount">
1197
<TD align="right" class="coverageCount">
1201
<TD class="srcLine">
1202
<PRE class="srcLine"> <span class="comment"> * retrievals can only be guaranteed to return the results of the most</span></PRE>
1209
<TD align="right" class="lineCount">
1213
<TD align="right" class="coverageCount">
1217
<TD class="srcLine">
1218
<PRE class="srcLine"> <span class="comment"> * recently <em>completed</em> operations holding upon their</span></PRE>
1225
<TD align="right" class="lineCount">
1229
<TD align="right" class="coverageCount">
1233
<TD class="srcLine">
1234
<PRE class="srcLine"> <span class="comment"> * onset. Retrieval operations may or may not return results</span></PRE>
1241
<TD align="right" class="lineCount">
1245
<TD align="right" class="coverageCount">
1249
<TD class="srcLine">
1250
<PRE class="srcLine"> <span class="comment"> * reflecting in-progress writing operations. However, the retrieval</span></PRE>
1257
<TD align="right" class="lineCount">
1261
<TD align="right" class="coverageCount">
1265
<TD class="srcLine">
1266
<PRE class="srcLine"> <span class="comment"> * operations do always return consistent results -- either those</span></PRE>
1273
<TD align="right" class="lineCount">
1277
<TD align="right" class="coverageCount">
1281
<TD class="srcLine">
1282
<PRE class="srcLine"> <span class="comment"> * holding before any single modification or after it, but never a</span></PRE>
1289
<TD align="right" class="lineCount">
1293
<TD align="right" class="coverageCount">
1297
<TD class="srcLine">
1298
<PRE class="srcLine"> <span class="comment"> * nonsense result. For aggregate operations such as putAll and</span></PRE>
1305
<TD align="right" class="lineCount">
1309
<TD align="right" class="coverageCount">
1313
<TD class="srcLine">
1314
<PRE class="srcLine"> <span class="comment"> * clear, concurrent reads may reflect insertion or removal of only</span></PRE>
1321
<TD align="right" class="lineCount">
1325
<TD align="right" class="coverageCount">
1329
<TD class="srcLine">
1330
<PRE class="srcLine"> <span class="comment"> * some entries. In those rare contexts in which you use a hash table</span></PRE>
1337
<TD align="right" class="lineCount">
1341
<TD align="right" class="coverageCount">
1345
<TD class="srcLine">
1346
<PRE class="srcLine"> <span class="comment"> * to synchronize operations across threads (for example, to prevent</span></PRE>
1353
<TD align="right" class="lineCount">
1357
<TD align="right" class="coverageCount">
1361
<TD class="srcLine">
1362
<PRE class="srcLine"> <span class="comment"> * reads until after clears), you should either encase operations</span></PRE>
1369
<TD align="right" class="lineCount">
1373
<TD align="right" class="coverageCount">
1377
<TD class="srcLine">
1378
<PRE class="srcLine"> <span class="comment"> * in synchronized blocks, or instead use java.util.Hashtable.</span></PRE>
1385
<TD align="right" class="lineCount">
1389
<TD align="right" class="coverageCount">
1393
<TD class="srcLine">
1394
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
1401
<TD align="right" class="lineCount">
1405
<TD align="right" class="coverageCount">
1409
<TD class="srcLine">
1410
<PRE class="srcLine"> <span class="comment"> * <p></span></PRE>
1417
<TD align="right" class="lineCount">
1421
<TD align="right" class="coverageCount">
1425
<TD class="srcLine">
1426
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
1433
<TD align="right" class="lineCount">
1437
<TD align="right" class="coverageCount">
1441
<TD class="srcLine">
1442
<PRE class="srcLine"> <span class="comment"> * This class also supports optional guaranteed</span></PRE>
1449
<TD align="right" class="lineCount">
1453
<TD align="right" class="coverageCount">
1457
<TD class="srcLine">
1458
<PRE class="srcLine"> <span class="comment"> * exclusive reads, simply by surrounding a call within a synchronized</span></PRE>
1465
<TD align="right" class="lineCount">
1469
<TD align="right" class="coverageCount">
1473
<TD class="srcLine">
1474
<PRE class="srcLine"> <span class="comment"> * block, as in <br></span></PRE>
1481
<TD align="right" class="lineCount">
1485
<TD align="right" class="coverageCount">
1489
<TD class="srcLine">
1490
<PRE class="srcLine"> <span class="comment"> * <code>AbstractConcurrentReadCache t; ... Object v; <br></span></PRE>
1497
<TD align="right" class="lineCount">
1501
<TD align="right" class="coverageCount">
1505
<TD class="srcLine">
1506
<PRE class="srcLine"> <span class="comment"> * synchronized(t) { v = t.get(k); } </code> <br></span></PRE>
1513
<TD align="right" class="lineCount">
1517
<TD align="right" class="coverageCount">
1521
<TD class="srcLine">
1522
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
1529
<TD align="right" class="lineCount">
1533
<TD align="right" class="coverageCount">
1537
<TD class="srcLine">
1538
<PRE class="srcLine"> <span class="comment"> * But this is not usually necessary in practice. For</span></PRE>
1545
<TD align="right" class="lineCount">
1549
<TD align="right" class="coverageCount">
1553
<TD class="srcLine">
1554
<PRE class="srcLine"> <span class="comment"> * example, it is generally inefficient to write:</span></PRE>
1561
<TD align="right" class="lineCount">
1565
<TD align="right" class="coverageCount">
1569
<TD class="srcLine">
1570
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
1577
<TD align="right" class="lineCount">
1581
<TD align="right" class="coverageCount">
1585
<TD class="srcLine">
1586
<PRE class="srcLine"> <span class="comment"> * <pre></span></PRE>
1593
<TD align="right" class="lineCount">
1597
<TD align="right" class="coverageCount">
1601
<TD class="srcLine">
1602
<PRE class="srcLine"> <span class="comment"> * AbstractConcurrentReadCache t; ... // Inefficient version</span></PRE>
1609
<TD align="right" class="lineCount">
1613
<TD align="right" class="coverageCount">
1617
<TD class="srcLine">
1618
<PRE class="srcLine"> <span class="comment"> * Object key; ...</span></PRE>
1625
<TD align="right" class="lineCount">
1629
<TD align="right" class="coverageCount">
1633
<TD class="srcLine">
1634
<PRE class="srcLine"> <span class="comment"> * Object value; ...</span></PRE>
1641
<TD align="right" class="lineCount">
1645
<TD align="right" class="coverageCount">
1649
<TD class="srcLine">
1650
<PRE class="srcLine"> <span class="comment"> * synchronized(t) {</span></PRE>
1657
<TD align="right" class="lineCount">
1661
<TD align="right" class="coverageCount">
1665
<TD class="srcLine">
1666
<PRE class="srcLine"> <span class="comment"> * if (!t.containsKey(key))</span></PRE>
1673
<TD align="right" class="lineCount">
1677
<TD align="right" class="coverageCount">
1681
<TD class="srcLine">
1682
<PRE class="srcLine"> <span class="comment"> * t.put(key, value);</span></PRE>
1689
<TD align="right" class="lineCount">
1693
<TD align="right" class="coverageCount">
1697
<TD class="srcLine">
1698
<PRE class="srcLine"> <span class="comment"> * // other code if not previously present</span></PRE>
1705
<TD align="right" class="lineCount">
1709
<TD align="right" class="coverageCount">
1713
<TD class="srcLine">
1714
<PRE class="srcLine"> <span class="comment"> * }</span></PRE>
1721
<TD align="right" class="lineCount">
1725
<TD align="right" class="coverageCount">
1729
<TD class="srcLine">
1730
<PRE class="srcLine"> <span class="comment"> * else {</span></PRE>
1737
<TD align="right" class="lineCount">
1741
<TD align="right" class="coverageCount">
1745
<TD class="srcLine">
1746
<PRE class="srcLine"> <span class="comment"> * // other code if it was previously present</span></PRE>
1753
<TD align="right" class="lineCount">
1757
<TD align="right" class="coverageCount">
1761
<TD class="srcLine">
1762
<PRE class="srcLine"> <span class="comment"> * }</span></PRE>
1769
<TD align="right" class="lineCount">
1773
<TD align="right" class="coverageCount">
1777
<TD class="srcLine">
1778
<PRE class="srcLine"> <span class="comment"> * }</span></PRE>
1785
<TD align="right" class="lineCount">
1789
<TD align="right" class="coverageCount">
1793
<TD class="srcLine">
1794
<PRE class="srcLine"> <span class="comment"> *</pre></span></PRE>
1801
<TD align="right" class="lineCount">
1805
<TD align="right" class="coverageCount">
1809
<TD class="srcLine">
1810
<PRE class="srcLine"> <span class="comment"> * Instead, just take advantage of the fact that put returns</span></PRE>
1817
<TD align="right" class="lineCount">
1821
<TD align="right" class="coverageCount">
1825
<TD class="srcLine">
1826
<PRE class="srcLine"> <span class="comment"> * null if the key was not previously present:</span></PRE>
1833
<TD align="right" class="lineCount">
1837
<TD align="right" class="coverageCount">
1841
<TD class="srcLine">
1842
<PRE class="srcLine"> <span class="comment"> * <pre></span></PRE>
1849
<TD align="right" class="lineCount">
1853
<TD align="right" class="coverageCount">
1857
<TD class="srcLine">
1858
<PRE class="srcLine"> <span class="comment"> * AbstractConcurrentReadCache t; ... // Use this instead</span></PRE>
1865
<TD align="right" class="lineCount">
1869
<TD align="right" class="coverageCount">
1873
<TD class="srcLine">
1874
<PRE class="srcLine"> <span class="comment"> * Object key; ...</span></PRE>
1881
<TD align="right" class="lineCount">
1885
<TD align="right" class="coverageCount">
1889
<TD class="srcLine">
1890
<PRE class="srcLine"> <span class="comment"> * Object value; ...</span></PRE>
1897
<TD align="right" class="lineCount">
1901
<TD align="right" class="coverageCount">
1905
<TD class="srcLine">
1906
<PRE class="srcLine"> <span class="comment"> * Object oldValue = t.put(key, value);</span></PRE>
1913
<TD align="right" class="lineCount">
1917
<TD align="right" class="coverageCount">
1921
<TD class="srcLine">
1922
<PRE class="srcLine"> <span class="comment"> * if (oldValue == null) {</span></PRE>
1929
<TD align="right" class="lineCount">
1933
<TD align="right" class="coverageCount">
1937
<TD class="srcLine">
1938
<PRE class="srcLine"> <span class="comment"> * // other code if not previously present</span></PRE>
1945
<TD align="right" class="lineCount">
1949
<TD align="right" class="coverageCount">
1953
<TD class="srcLine">
1954
<PRE class="srcLine"> <span class="comment"> * }</span></PRE>
1961
<TD align="right" class="lineCount">
1965
<TD align="right" class="coverageCount">
1969
<TD class="srcLine">
1970
<PRE class="srcLine"> <span class="comment"> * else {</span></PRE>
1977
<TD align="right" class="lineCount">
1981
<TD align="right" class="coverageCount">
1985
<TD class="srcLine">
1986
<PRE class="srcLine"> <span class="comment"> * // other code if it was previously present</span></PRE>
1993
<TD align="right" class="lineCount">
1997
<TD align="right" class="coverageCount">
2001
<TD class="srcLine">
2002
<PRE class="srcLine"> <span class="comment"> * }</span></PRE>
2009
<TD align="right" class="lineCount">
2013
<TD align="right" class="coverageCount">
2017
<TD class="srcLine">
2018
<PRE class="srcLine"> <span class="comment"> *</pre></span></PRE>
2025
<TD align="right" class="lineCount">
2029
<TD align="right" class="coverageCount">
2033
<TD class="srcLine">
2034
<PRE class="srcLine"> <span class="comment"> * <p></span></PRE>
2041
<TD align="right" class="lineCount">
2045
<TD align="right" class="coverageCount">
2049
<TD class="srcLine">
2050
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
2057
<TD align="right" class="lineCount">
2061
<TD align="right" class="coverageCount">
2065
<TD class="srcLine">
2066
<PRE class="srcLine"> <span class="comment"> * Iterators and Enumerations (i.e., those returned by</span></PRE>
2073
<TD align="right" class="lineCount">
2077
<TD align="right" class="coverageCount">
2081
<TD class="srcLine">
2082
<PRE class="srcLine"> <span class="comment"> * keySet().iterator(), entrySet().iterator(), values().iterator(),</span></PRE>
2089
<TD align="right" class="lineCount">
2093
<TD align="right" class="coverageCount">
2097
<TD class="srcLine">
2098
<PRE class="srcLine"> <span class="comment"> * keys(), and elements()) return elements reflecting the state of the</span></PRE>
2105
<TD align="right" class="lineCount">
2109
<TD align="right" class="coverageCount">
2113
<TD class="srcLine">
2114
<PRE class="srcLine"> <span class="comment"> * hash table at some point at or since the creation of the</span></PRE>
2121
<TD align="right" class="lineCount">
2125
<TD align="right" class="coverageCount">
2129
<TD class="srcLine">
2130
<PRE class="srcLine"> <span class="comment"> * iterator/enumeration. They will return at most one instance of</span></PRE>
2137
<TD align="right" class="lineCount">
2141
<TD align="right" class="coverageCount">
2145
<TD class="srcLine">
2146
<PRE class="srcLine"> <span class="comment"> * each element (via next()/nextElement()), but might or might not</span></PRE>
2153
<TD align="right" class="lineCount">
2157
<TD align="right" class="coverageCount">
2161
<TD class="srcLine">
2162
<PRE class="srcLine"> <span class="comment"> * reflect puts and removes that have been processed since they were</span></PRE>
2169
<TD align="right" class="lineCount">
2173
<TD align="right" class="coverageCount">
2177
<TD class="srcLine">
2178
<PRE class="srcLine"> <span class="comment"> * created. They do <em>not</em> throw ConcurrentModificationException.</span></PRE>
2185
<TD align="right" class="lineCount">
2189
<TD align="right" class="coverageCount">
2193
<TD class="srcLine">
2194
<PRE class="srcLine"> <span class="comment"> * However, these iterators are designed to be used by only one</span></PRE>
2201
<TD align="right" class="lineCount">
2205
<TD align="right" class="coverageCount">
2209
<TD class="srcLine">
2210
<PRE class="srcLine"> <span class="comment"> * thread at a time. Sharing an iterator across multiple threads may</span></PRE>
2217
<TD align="right" class="lineCount">
2221
<TD align="right" class="coverageCount">
2225
<TD class="srcLine">
2226
<PRE class="srcLine"> <span class="comment"> * lead to unpredictable results if the table is being concurrently</span></PRE>
2233
<TD align="right" class="lineCount">
2237
<TD align="right" class="coverageCount">
2241
<TD class="srcLine">
2242
<PRE class="srcLine"> <span class="comment"> * modified. Again, you can ensure interference-free iteration by</span></PRE>
2249
<TD align="right" class="lineCount">
2253
<TD align="right" class="coverageCount">
2257
<TD class="srcLine">
2258
<PRE class="srcLine"> <span class="comment"> * enclosing the iteration in a synchronized block. <p></span></PRE>
2265
<TD align="right" class="lineCount">
2269
<TD align="right" class="coverageCount">
2273
<TD class="srcLine">
2274
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
2281
<TD align="right" class="lineCount">
2285
<TD align="right" class="coverageCount">
2289
<TD class="srcLine">
2290
<PRE class="srcLine"> <span class="comment"> * This class may be used as a direct replacement for any use of</span></PRE>
2297
<TD align="right" class="lineCount">
2301
<TD align="right" class="coverageCount">
2305
<TD class="srcLine">
2306
<PRE class="srcLine"> <span class="comment"> * java.util.Hashtable that does not depend on readers being blocked</span></PRE>
2313
<TD align="right" class="lineCount">
2317
<TD align="right" class="coverageCount">
2321
<TD class="srcLine">
2322
<PRE class="srcLine"> <span class="comment"> * during updates. Like Hashtable but unlike java.util.HashMap,</span></PRE>
2329
<TD align="right" class="lineCount">
2333
<TD align="right" class="coverageCount">
2337
<TD class="srcLine">
2338
<PRE class="srcLine"> <span class="comment"> * this class does NOT allow <tt>null</tt> to be used as a key or</span></PRE>
2345
<TD align="right" class="lineCount">
2349
<TD align="right" class="coverageCount">
2353
<TD class="srcLine">
2354
<PRE class="srcLine"> <span class="comment"> * value. This class is also typically faster than ConcurrentHashMap</span></PRE>
2361
<TD align="right" class="lineCount">
2365
<TD align="right" class="coverageCount">
2369
<TD class="srcLine">
2370
<PRE class="srcLine"> <span class="comment"> * when there is usually only one thread updating the table, but</span></PRE>
2377
<TD align="right" class="lineCount">
2381
<TD align="right" class="coverageCount">
2385
<TD class="srcLine">
2386
<PRE class="srcLine"> <span class="comment"> * possibly many retrieving values from it.</span></PRE>
2393
<TD align="right" class="lineCount">
2397
<TD align="right" class="coverageCount">
2401
<TD class="srcLine">
2402
<PRE class="srcLine"> <span class="comment"> * <p></span></PRE>
2409
<TD align="right" class="lineCount">
2413
<TD align="right" class="coverageCount">
2417
<TD class="srcLine">
2418
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
2425
<TD align="right" class="lineCount">
2429
<TD align="right" class="coverageCount">
2433
<TD class="srcLine">
2434
<PRE class="srcLine"> <span class="comment"> * Implementation note: A slightly faster implementation of</span></PRE>
2441
<TD align="right" class="lineCount">
2445
<TD align="right" class="coverageCount">
2449
<TD class="srcLine">
2450
<PRE class="srcLine"> <span class="comment"> * this class will be possible once planned Java Memory Model</span></PRE>
2457
<TD align="right" class="lineCount">
2461
<TD align="right" class="coverageCount">
2465
<TD class="srcLine">
2466
<PRE class="srcLine"> <span class="comment"> * revisions are in place.</span></PRE>
2473
<TD align="right" class="lineCount">
2477
<TD align="right" class="coverageCount">
2481
<TD class="srcLine">
2482
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
2489
<TD align="right" class="lineCount">
2493
<TD align="right" class="coverageCount">
2497
<TD class="srcLine">
2498
<PRE class="srcLine"> <span class="comment"> * <p>[<a href="http://gee.cs.oswego.edu/dl/classes/EDU/oswego/cs/dl/util/concurrent/intro.html"> Introduction to this package. </a>]</span></PRE>
2505
<TD align="right" class="lineCount">
2509
<TD align="right" class="coverageCount">
2513
<TD class="srcLine">
2514
<PRE class="srcLine"> <span class="comment"> **/</span></PRE>
2521
<TD align="right" class="lineCount">
2522
<A name="AbstractConcurrentReadCache"> 153</A>
2525
<TD align="right" class="coverageCount">
2529
<TD class="srcLineClassStart">
2530
<PRE class="srcLine"> <span class="keyword">public</span> abstract <span class="keyword">class</span> AbstractConcurrentReadCache <span class="keyword">extends</span> AbstractMap <span class="keyword">implements</span> Map, Cloneable, Serializable {</PRE>
2537
<TD align="right" class="lineCount">
2541
<TD align="right" class="coverageCount">
2545
<TD class="srcLine">
2546
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
2553
<TD align="right" class="lineCount">
2557
<TD align="right" class="coverageCount">
2561
<TD class="srcLine">
2562
<PRE class="srcLine"> <span class="comment"> * The default initial number of table slots for this table (32).</span></PRE>
2569
<TD align="right" class="lineCount">
2573
<TD align="right" class="coverageCount">
2577
<TD class="srcLine">
2578
<PRE class="srcLine"> <span class="comment"> * Used when not otherwise specified in constructor.</span></PRE>
2585
<TD align="right" class="lineCount">
2589
<TD align="right" class="coverageCount">
2593
<TD class="srcLine">
2594
<PRE class="srcLine"> <span class="comment"> **/</span></PRE>
2601
<TD align="right" class="lineCount">
2605
<TD align="right" class="coverageCount">
2609
<TD class="srcLine">
2610
<PRE class="srcLine"> <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">int</span> DEFAULT_INITIAL_CAPACITY = 32;</PRE>
2617
<TD align="right" class="lineCount">
2621
<TD align="right" class="coverageCount">
2625
<TD class="srcLine">
2626
<PRE class="srcLine"> </PRE>
2633
<TD align="right" class="lineCount">
2637
<TD align="right" class="coverageCount">
2641
<TD class="srcLine">
2642
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
2649
<TD align="right" class="lineCount">
2653
<TD align="right" class="coverageCount">
2657
<TD class="srcLine">
2658
<PRE class="srcLine"> <span class="comment"> * The minimum capacity.</span></PRE>
2665
<TD align="right" class="lineCount">
2669
<TD align="right" class="coverageCount">
2673
<TD class="srcLine">
2674
<PRE class="srcLine"> <span class="comment"> * Used if a lower value is implicitly specified</span></PRE>
2681
<TD align="right" class="lineCount">
2685
<TD align="right" class="coverageCount">
2689
<TD class="srcLine">
2690
<PRE class="srcLine"> <span class="comment"> * by either of the constructors with arguments.</span></PRE>
2697
<TD align="right" class="lineCount">
2701
<TD align="right" class="coverageCount">
2705
<TD class="srcLine">
2706
<PRE class="srcLine"> <span class="comment"> * MUST be a power of two.</span></PRE>
2713
<TD align="right" class="lineCount">
2717
<TD align="right" class="coverageCount">
2721
<TD class="srcLine">
2722
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
2729
<TD align="right" class="lineCount">
2733
<TD align="right" class="coverageCount">
2737
<TD class="srcLine">
2738
<PRE class="srcLine"> <span class="keyword">private</span> <span class="keyword">static</span> final <span class="keyword">int</span> MINIMUM_CAPACITY = 4;</PRE>
2745
<TD align="right" class="lineCount">
2749
<TD align="right" class="coverageCount">
2753
<TD class="srcLine">
2754
<PRE class="srcLine"> </PRE>
2761
<TD align="right" class="lineCount">
2765
<TD align="right" class="coverageCount">
2769
<TD class="srcLine">
2770
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
2777
<TD align="right" class="lineCount">
2781
<TD align="right" class="coverageCount">
2785
<TD class="srcLine">
2786
<PRE class="srcLine"> <span class="comment"> * The maximum capacity.</span></PRE>
2793
<TD align="right" class="lineCount">
2797
<TD align="right" class="coverageCount">
2801
<TD class="srcLine">
2802
<PRE class="srcLine"> <span class="comment"> * Used if a higher value is implicitly specified</span></PRE>
2809
<TD align="right" class="lineCount">
2813
<TD align="right" class="coverageCount">
2817
<TD class="srcLine">
2818
<PRE class="srcLine"> <span class="comment"> * by either of the constructors with arguments.</span></PRE>
2825
<TD align="right" class="lineCount">
2829
<TD align="right" class="coverageCount">
2833
<TD class="srcLine">
2834
<PRE class="srcLine"> <span class="comment"> * MUST be a power of two <= 1<<30.</span></PRE>
2841
<TD align="right" class="lineCount">
2845
<TD align="right" class="coverageCount">
2849
<TD class="srcLine">
2850
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
2857
<TD align="right" class="lineCount">
2861
<TD align="right" class="coverageCount">
2865
<TD class="srcLine">
2866
<PRE class="srcLine"> <span class="keyword">private</span> <span class="keyword">static</span> final <span class="keyword">int</span> MAXIMUM_CAPACITY = 1 << 30;</PRE>
2873
<TD align="right" class="lineCount">
2877
<TD align="right" class="coverageCount">
2881
<TD class="srcLine">
2882
<PRE class="srcLine"> </PRE>
2889
<TD align="right" class="lineCount">
2893
<TD align="right" class="coverageCount">
2897
<TD class="srcLine">
2898
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
2905
<TD align="right" class="lineCount">
2909
<TD align="right" class="coverageCount">
2913
<TD class="srcLine">
2914
<PRE class="srcLine"> <span class="comment"> * The default load factor for this table.</span></PRE>
2921
<TD align="right" class="lineCount">
2925
<TD align="right" class="coverageCount">
2929
<TD class="srcLine">
2930
<PRE class="srcLine"> <span class="comment"> * Used when not otherwise specified in constructor, the default is 0.75f.</span></PRE>
2937
<TD align="right" class="lineCount">
2941
<TD align="right" class="coverageCount">
2945
<TD class="srcLine">
2946
<PRE class="srcLine"> <span class="comment"> **/</span></PRE>
2953
<TD align="right" class="lineCount">
2957
<TD align="right" class="coverageCount">
2961
<TD class="srcLine">
2962
<PRE class="srcLine"> <span class="keyword">public</span> <span class="keyword">static</span> final <span class="keyword">float</span> DEFAULT_LOAD_FACTOR = 0.75f;</PRE>
2969
<TD align="right" class="lineCount">
2973
<TD align="right" class="coverageCount">
2977
<TD class="srcLine">
2978
<PRE class="srcLine"> </PRE>
2985
<TD align="right" class="lineCount">
2989
<TD align="right" class="coverageCount">
2993
<TD class="srcLine">
2994
<PRE class="srcLine"> <span class="comment">//OpenSymphony BEGIN (pretty long!)</span></PRE>
3001
<TD align="right" class="lineCount">
3005
<TD align="right" class="coverageCount">
3009
<TD class="srcLine">
3010
<PRE class="srcLine"> <span class="keyword">protected</span> <span class="keyword">static</span> final String NULL = <span class="string">"_nul!~"</span>;</PRE>
3017
<TD align="right" class="lineCount">
3021
<TD align="right" class="coverageCount">
3025
<TD class="srcLine">
3026
<PRE class="srcLine"> <span class="keyword">protected</span> <span class="keyword">static</span> final <span class="keyword">transient</span> Log log = LogFactory.getLog(AbstractConcurrentReadCache.<span class="keyword">class</span>);</PRE>
3033
<TD align="right" class="lineCount">
3037
<TD align="right" class="coverageCount">
3041
<TD class="srcLine">
3042
<PRE class="srcLine"> </PRE>
3049
<TD align="right" class="lineCount">
3053
<TD align="right" class="coverageCount">
3057
<TD class="srcLine">
3058
<PRE class="srcLine"> <span class="comment">/*</span></PRE>
3065
<TD align="right" class="lineCount">
3069
<TD align="right" class="coverageCount">
3073
<TD class="srcLine">
3074
<PRE class="srcLine"> <span class="comment"> The basic strategy is an optimistic-style scheme based on</span></PRE>
3081
<TD align="right" class="lineCount">
3085
<TD align="right" class="coverageCount">
3089
<TD class="srcLine">
3090
<PRE class="srcLine"> <span class="comment"> the guarantee that the hash table and its lists are always</span></PRE>
3097
<TD align="right" class="lineCount">
3101
<TD align="right" class="coverageCount">
3105
<TD class="srcLine">
3106
<PRE class="srcLine"> <span class="comment"> kept in a consistent enough state to be read without locking:</span></PRE>
3113
<TD align="right" class="lineCount">
3117
<TD align="right" class="coverageCount">
3121
<TD class="srcLine">
3122
<PRE class="srcLine"> <span class="comment"></span></PRE>
3129
<TD align="right" class="lineCount">
3133
<TD align="right" class="coverageCount">
3137
<TD class="srcLine">
3138
<PRE class="srcLine"> <span class="comment"> * Read operations first proceed without locking, by traversing the</span></PRE>
3145
<TD align="right" class="lineCount">
3149
<TD align="right" class="coverageCount">
3153
<TD class="srcLine">
3154
<PRE class="srcLine"> <span class="comment"> apparently correct list of the apparently correct bin. If an</span></PRE>
3161
<TD align="right" class="lineCount">
3165
<TD align="right" class="coverageCount">
3169
<TD class="srcLine">
3170
<PRE class="srcLine"> <span class="comment"> entry is found, but not invalidated (value field null), it is</span></PRE>
3177
<TD align="right" class="lineCount">
3181
<TD align="right" class="coverageCount">
3185
<TD class="srcLine">
3186
<PRE class="srcLine"> <span class="comment"> returned. If not found, operations must recheck (after a memory</span></PRE>
3193
<TD align="right" class="lineCount">
3197
<TD align="right" class="coverageCount">
3201
<TD class="srcLine">
3202
<PRE class="srcLine"> <span class="comment"> barrier) to make sure they are using both the right list and</span></PRE>
3209
<TD align="right" class="lineCount">
3213
<TD align="right" class="coverageCount">
3217
<TD class="srcLine">
3218
<PRE class="srcLine"> <span class="comment"> the right table (which can change under resizes). If</span></PRE>
3225
<TD align="right" class="lineCount">
3229
<TD align="right" class="coverageCount">
3233
<TD class="srcLine">
3234
<PRE class="srcLine"> <span class="comment"> invalidated, reads must acquire main update lock to wait out</span></PRE>
3241
<TD align="right" class="lineCount">
3245
<TD align="right" class="coverageCount">
3249
<TD class="srcLine">
3250
<PRE class="srcLine"> <span class="comment"> the update, and then re-traverse.</span></PRE>
3257
<TD align="right" class="lineCount">
3261
<TD align="right" class="coverageCount">
3265
<TD class="srcLine">
3266
<PRE class="srcLine"> <span class="comment"></span></PRE>
3273
<TD align="right" class="lineCount">
3277
<TD align="right" class="coverageCount">
3281
<TD class="srcLine">
3282
<PRE class="srcLine"> <span class="comment"> * All list additions are at the front of each bin, making it easy</span></PRE>
3289
<TD align="right" class="lineCount">
3293
<TD align="right" class="coverageCount">
3297
<TD class="srcLine">
3298
<PRE class="srcLine"> <span class="comment"> to check changes, and also fast to traverse. Entry next</span></PRE>
3305
<TD align="right" class="lineCount">
3309
<TD align="right" class="coverageCount">
3313
<TD class="srcLine">
3314
<PRE class="srcLine"> <span class="comment"> pointers are never assigned. Remove() builds new nodes when</span></PRE>
3321
<TD align="right" class="lineCount">
3325
<TD align="right" class="coverageCount">
3329
<TD class="srcLine">
3330
<PRE class="srcLine"> <span class="comment"> necessary to preserve this.</span></PRE>
3337
<TD align="right" class="lineCount">
3341
<TD align="right" class="coverageCount">
3345
<TD class="srcLine">
3346
<PRE class="srcLine"> <span class="comment"></span></PRE>
3353
<TD align="right" class="lineCount">
3357
<TD align="right" class="coverageCount">
3361
<TD class="srcLine">
3362
<PRE class="srcLine"> <span class="comment"> * Remove() (also clear()) invalidates removed nodes to alert read</span></PRE>
3369
<TD align="right" class="lineCount">
3373
<TD align="right" class="coverageCount">
3377
<TD class="srcLine">
3378
<PRE class="srcLine"> <span class="comment"> operations that they must wait out the full modifications.</span></PRE>
3385
<TD align="right" class="lineCount">
3389
<TD align="right" class="coverageCount">
3393
<TD class="srcLine">
3394
<PRE class="srcLine"> <span class="comment"></span></PRE>
3401
<TD align="right" class="lineCount">
3405
<TD align="right" class="coverageCount">
3409
<TD class="srcLine">
3410
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
3417
<TD align="right" class="lineCount">
3421
<TD align="right" class="coverageCount">
3425
<TD class="srcLine">
3426
<PRE class="srcLine"> </PRE>
3433
<TD align="right" class="lineCount">
3437
<TD align="right" class="coverageCount">
3441
<TD class="srcLine">
3442
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
3449
<TD align="right" class="lineCount">
3453
<TD align="right" class="coverageCount">
3457
<TD class="srcLine">
3458
<PRE class="srcLine"> <span class="comment"> * Lock used only for its memory effects.</span></PRE>
3465
<TD align="right" class="lineCount">
3469
<TD align="right" class="coverageCount">
3473
<TD class="srcLine">
3474
<PRE class="srcLine"> <span class="comment"> **/</span></PRE>
3481
<TD align="right" class="lineCount">
3485
<TD align="right" class="coverageCount">
3489
<TD class="srcLine">
3490
<PRE class="srcLine"> <span class="keyword">protected</span> final <span class="keyword">transient</span> Object barrierLock = <span class="keyword">new</span> Object();</PRE>
3497
<TD align="right" class="lineCount">
3501
<TD align="right" class="coverageCount">
3505
<TD class="srcLine">
3506
<PRE class="srcLine"> </PRE>
3513
<TD align="right" class="lineCount">
3517
<TD align="right" class="coverageCount">
3521
<TD class="srcLine">
3522
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
3529
<TD align="right" class="lineCount">
3533
<TD align="right" class="coverageCount">
3537
<TD class="srcLine">
3538
<PRE class="srcLine"> <span class="comment"> * field written to only to guarantee lock ordering.</span></PRE>
3545
<TD align="right" class="lineCount">
3549
<TD align="right" class="coverageCount">
3553
<TD class="srcLine">
3554
<PRE class="srcLine"> <span class="comment"> **/</span></PRE>
3561
<TD align="right" class="lineCount">
3565
<TD align="right" class="coverageCount">
3569
<TD class="srcLine">
3570
<PRE class="srcLine"> <span class="keyword">protected</span> <span class="keyword">transient</span> Object lastWrite;</PRE>
3577
<TD align="right" class="lineCount">
3581
<TD align="right" class="coverageCount">
3585
<TD class="srcLine">
3586
<PRE class="srcLine"> </PRE>
3593
<TD align="right" class="lineCount">
3597
<TD align="right" class="coverageCount">
3601
<TD class="srcLine">
3602
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
3609
<TD align="right" class="lineCount">
3613
<TD align="right" class="coverageCount">
3617
<TD class="srcLine">
3618
<PRE class="srcLine"> <span class="comment"> * The hash table data.</span></PRE>
3625
<TD align="right" class="lineCount">
3629
<TD align="right" class="coverageCount">
3633
<TD class="srcLine">
3634
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
3641
<TD align="right" class="lineCount">
3645
<TD align="right" class="coverageCount">
3649
<TD class="srcLine">
3650
<PRE class="srcLine"> <span class="keyword">protected</span> <span class="keyword">transient</span> Entry[] table;</PRE>
3657
<TD align="right" class="lineCount">
3661
<TD align="right" class="coverageCount">
3665
<TD class="srcLine">
3666
<PRE class="srcLine"> </PRE>
3673
<TD align="right" class="lineCount">
3677
<TD align="right" class="coverageCount">
3681
<TD class="srcLine">
3682
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
3689
<TD align="right" class="lineCount">
3693
<TD align="right" class="coverageCount">
3697
<TD class="srcLine">
3698
<PRE class="srcLine"> <span class="comment"> * The total number of mappings in the hash table.</span></PRE>
3705
<TD align="right" class="lineCount">
3709
<TD align="right" class="coverageCount">
3713
<TD class="srcLine">
3714
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
3721
<TD align="right" class="lineCount">
3725
<TD align="right" class="coverageCount">
3729
<TD class="srcLine">
3730
<PRE class="srcLine"> <span class="keyword">protected</span> <span class="keyword">transient</span> <span class="keyword">int</span> count;</PRE>
3737
<TD align="right" class="lineCount">
3741
<TD align="right" class="coverageCount">
3745
<TD class="srcLine">
3746
<PRE class="srcLine"> </PRE>
3753
<TD align="right" class="lineCount">
3757
<TD align="right" class="coverageCount">
3761
<TD class="srcLine">
3762
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
3769
<TD align="right" class="lineCount">
3773
<TD align="right" class="coverageCount">
3777
<TD class="srcLine">
3778
<PRE class="srcLine"> <span class="comment"> * Persistence listener.</span></PRE>
3785
<TD align="right" class="lineCount">
3789
<TD align="right" class="coverageCount">
3793
<TD class="srcLine">
3794
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
3801
<TD align="right" class="lineCount">
3805
<TD align="right" class="coverageCount">
3809
<TD class="srcLine">
3810
<PRE class="srcLine"> <span class="keyword">protected</span> PersistenceListener persistenceListener = <span class="keyword">null</span>;</PRE>
3817
<TD align="right" class="lineCount">
3821
<TD align="right" class="coverageCount">
3825
<TD class="srcLine">
3826
<PRE class="srcLine"> </PRE>
3833
<TD align="right" class="lineCount">
3837
<TD align="right" class="coverageCount">
3841
<TD class="srcLine">
3842
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
3849
<TD align="right" class="lineCount">
3853
<TD align="right" class="coverageCount">
3857
<TD class="srcLine">
3858
<PRE class="srcLine"> <span class="comment"> * Use memory cache or not.</span></PRE>
3865
<TD align="right" class="lineCount">
3869
<TD align="right" class="coverageCount">
3873
<TD class="srcLine">
3874
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
3881
<TD align="right" class="lineCount">
3885
<TD align="right" class="coverageCount">
3889
<TD class="srcLine">
3890
<PRE class="srcLine"> <span class="keyword">protected</span> <span class="keyword">boolean</span> memoryCaching = <span class="keyword">true</span>;</PRE>
3897
<TD align="right" class="lineCount">
3901
<TD align="right" class="coverageCount">
3905
<TD class="srcLine">
3906
<PRE class="srcLine"> </PRE>
3913
<TD align="right" class="lineCount">
3917
<TD align="right" class="coverageCount">
3921
<TD class="srcLine">
3922
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
3929
<TD align="right" class="lineCount">
3933
<TD align="right" class="coverageCount">
3937
<TD class="srcLine">
3938
<PRE class="srcLine"> <span class="comment"> * Use unlimited disk caching.</span></PRE>
3945
<TD align="right" class="lineCount">
3949
<TD align="right" class="coverageCount">
3953
<TD class="srcLine">
3954
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
3961
<TD align="right" class="lineCount">
3965
<TD align="right" class="coverageCount">
3969
<TD class="srcLine">
3970
<PRE class="srcLine"> <span class="keyword">protected</span> <span class="keyword">boolean</span> unlimitedDiskCache = <span class="keyword">false</span>;</PRE>
3977
<TD align="right" class="lineCount">
3981
<TD align="right" class="coverageCount">
3985
<TD class="srcLine">
3986
<PRE class="srcLine"> </PRE>
3993
<TD align="right" class="lineCount">
3997
<TD align="right" class="coverageCount">
4001
<TD class="srcLine">
4002
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
4009
<TD align="right" class="lineCount">
4013
<TD align="right" class="coverageCount">
4017
<TD class="srcLine">
4018
<PRE class="srcLine"> <span class="comment"> * The load factor for the hash table.</span></PRE>
4025
<TD align="right" class="lineCount">
4029
<TD align="right" class="coverageCount">
4033
<TD class="srcLine">
4034
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
4041
<TD align="right" class="lineCount">
4045
<TD align="right" class="coverageCount">
4049
<TD class="srcLine">
4050
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@serial</span></span></PRE>
4057
<TD align="right" class="lineCount">
4061
<TD align="right" class="coverageCount">
4065
<TD class="srcLine">
4066
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
4073
<TD align="right" class="lineCount">
4077
<TD align="right" class="coverageCount">
4081
<TD class="srcLine">
4082
<PRE class="srcLine"> <span class="keyword">protected</span> <span class="keyword">float</span> loadFactor;</PRE>
4089
<TD align="right" class="lineCount">
4093
<TD align="right" class="coverageCount">
4097
<TD class="srcLine">
4098
<PRE class="srcLine"> </PRE>
4105
<TD align="right" class="lineCount">
4109
<TD align="right" class="coverageCount">
4113
<TD class="srcLine">
4114
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
4121
<TD align="right" class="lineCount">
4125
<TD align="right" class="coverageCount">
4129
<TD class="srcLine">
4130
<PRE class="srcLine"> <span class="comment"> * Default cache capacity (number of entries).</span></PRE>
4137
<TD align="right" class="lineCount">
4141
<TD align="right" class="coverageCount">
4145
<TD class="srcLine">
4146
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
4153
<TD align="right" class="lineCount">
4157
<TD align="right" class="coverageCount">
4161
<TD class="srcLine">
4162
<PRE class="srcLine"> <span class="keyword">protected</span> final <span class="keyword">int</span> DEFAULT_MAX_ENTRIES = 100;</PRE>
4169
<TD align="right" class="lineCount">
4173
<TD align="right" class="coverageCount">
4177
<TD class="srcLine">
4178
<PRE class="srcLine"> </PRE>
4185
<TD align="right" class="lineCount">
4189
<TD align="right" class="coverageCount">
4193
<TD class="srcLine">
4194
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
4201
<TD align="right" class="lineCount">
4205
<TD align="right" class="coverageCount">
4209
<TD class="srcLine">
4210
<PRE class="srcLine"> <span class="comment"> * Max number of element in cache when considered unlimited.</span></PRE>
4217
<TD align="right" class="lineCount">
4221
<TD align="right" class="coverageCount">
4225
<TD class="srcLine">
4226
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
4233
<TD align="right" class="lineCount">
4237
<TD align="right" class="coverageCount">
4241
<TD class="srcLine">
4242
<PRE class="srcLine"> <span class="keyword">protected</span> final <span class="keyword">int</span> UNLIMITED = 2147483646;</PRE>
4249
<TD align="right" class="lineCount">
4253
<TD align="right" class="coverageCount">
4257
<TD class="srcLine">
4258
<PRE class="srcLine"> <span class="keyword">protected</span> <span class="keyword">transient</span> Collection values = <span class="keyword">null</span>;</PRE>
4265
<TD align="right" class="lineCount">
4269
<TD align="right" class="coverageCount">
4273
<TD class="srcLine">
4274
<PRE class="srcLine"> </PRE>
4281
<TD align="right" class="lineCount">
4285
<TD align="right" class="coverageCount">
4289
<TD class="srcLine">
4290
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
4297
<TD align="right" class="lineCount">
4301
<TD align="right" class="coverageCount">
4305
<TD class="srcLine">
4306
<PRE class="srcLine"> <span class="comment"> * A HashMap containing the group information.</span></PRE>
4313
<TD align="right" class="lineCount">
4317
<TD align="right" class="coverageCount">
4321
<TD class="srcLine">
4322
<PRE class="srcLine"> <span class="comment"> * Each entry uses the group name as the key, and holds a</span></PRE>
4329
<TD align="right" class="lineCount">
4333
<TD align="right" class="coverageCount">
4337
<TD class="srcLine">
4338
<PRE class="srcLine"> <span class="comment"> * <code>Set</code> of containing keys of all</span></PRE>
4345
<TD align="right" class="lineCount">
4349
<TD align="right" class="coverageCount">
4353
<TD class="srcLine">
4354
<PRE class="srcLine"> <span class="comment"> * the cache entries that belong to that particular group.</span></PRE>
4361
<TD align="right" class="lineCount">
4365
<TD align="right" class="coverageCount">
4369
<TD class="srcLine">
4370
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
4377
<TD align="right" class="lineCount">
4381
<TD align="right" class="coverageCount">
4385
<TD class="srcLine">
4386
<PRE class="srcLine"> <span class="keyword">protected</span> HashMap groups = <span class="keyword">null</span>;</PRE>
4393
<TD align="right" class="lineCount">
4397
<TD align="right" class="coverageCount">
4401
<TD class="srcLine">
4402
<PRE class="srcLine"> <span class="keyword">protected</span> <span class="keyword">transient</span> Set entrySet = <span class="keyword">null</span>;</PRE>
4409
<TD align="right" class="lineCount">
4413
<TD align="right" class="coverageCount">
4417
<TD class="srcLine">
4418
<PRE class="srcLine"> </PRE>
4425
<TD align="right" class="lineCount">
4429
<TD align="right" class="coverageCount">
4433
<TD class="srcLine">
4434
<PRE class="srcLine"> <span class="comment">// Views</span></PRE>
4441
<TD align="right" class="lineCount">
4445
<TD align="right" class="coverageCount">
4449
<TD class="srcLine">
4450
<PRE class="srcLine"> <span class="keyword">protected</span> <span class="keyword">transient</span> Set keySet = <span class="keyword">null</span>;</PRE>
4457
<TD align="right" class="lineCount">
4461
<TD align="right" class="coverageCount">
4465
<TD class="srcLine">
4466
<PRE class="srcLine"> </PRE>
4473
<TD align="right" class="lineCount">
4477
<TD align="right" class="coverageCount">
4481
<TD class="srcLine">
4482
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
4489
<TD align="right" class="lineCount">
4493
<TD align="right" class="coverageCount">
4497
<TD class="srcLine">
4498
<PRE class="srcLine"> <span class="comment"> * Cache capacity (number of entries).</span></PRE>
4505
<TD align="right" class="lineCount">
4509
<TD align="right" class="coverageCount">
4513
<TD class="srcLine">
4514
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
4521
<TD align="right" class="lineCount">
4525
<TD align="right" class="coverageCount">
4529
<TD class="srcLine">
4530
<PRE class="srcLine"> <span class="keyword">protected</span> <span class="keyword">int</span> maxEntries = DEFAULT_MAX_ENTRIES;</PRE>
4537
<TD align="right" class="lineCount">
4541
<TD align="right" class="coverageCount">
4545
<TD class="srcLine">
4546
<PRE class="srcLine"> </PRE>
4553
<TD align="right" class="lineCount">
4557
<TD align="right" class="coverageCount">
4561
<TD class="srcLine">
4562
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
4569
<TD align="right" class="lineCount">
4573
<TD align="right" class="coverageCount">
4577
<TD class="srcLine">
4578
<PRE class="srcLine"> <span class="comment"> * The table is rehashed when its size exceeds this threshold.</span></PRE>
4585
<TD align="right" class="lineCount">
4589
<TD align="right" class="coverageCount">
4593
<TD class="srcLine">
4594
<PRE class="srcLine"> <span class="comment"> * (The value of this field is always (int)(capacity * loadFactor).)</span></PRE>
4601
<TD align="right" class="lineCount">
4605
<TD align="right" class="coverageCount">
4609
<TD class="srcLine">
4610
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
4617
<TD align="right" class="lineCount">
4621
<TD align="right" class="coverageCount">
4625
<TD class="srcLine">
4626
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@serial</span></span></PRE>
4633
<TD align="right" class="lineCount">
4637
<TD align="right" class="coverageCount">
4641
<TD class="srcLine">
4642
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
4649
<TD align="right" class="lineCount">
4653
<TD align="right" class="coverageCount">
4657
<TD class="srcLine">
4658
<PRE class="srcLine"> <span class="keyword">protected</span> <span class="keyword">int</span> threshold;</PRE>
4665
<TD align="right" class="lineCount">
4669
<TD align="right" class="coverageCount">
4673
<TD class="srcLine">
4674
<PRE class="srcLine"> </PRE>
4681
<TD align="right" class="lineCount">
4685
<TD align="right" class="coverageCount">
4689
<TD class="srcLine">
4690
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
4697
<TD align="right" class="lineCount">
4701
<TD align="right" class="coverageCount">
4705
<TD class="srcLine">
4706
<PRE class="srcLine"> <span class="comment"> * Constructs a new, empty map with the specified initial capacity and the specified load factor.</span></PRE>
4713
<TD align="right" class="lineCount">
4717
<TD align="right" class="coverageCount">
4721
<TD class="srcLine">
4722
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
4729
<TD align="right" class="lineCount">
4733
<TD align="right" class="coverageCount">
4737
<TD class="srcLine">
4738
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@param</span> initialCapacity the initial capacity</span></PRE>
4745
<TD align="right" class="lineCount">
4749
<TD align="right" class="coverageCount">
4753
<TD class="srcLine">
4754
<PRE class="srcLine"> <span class="comment"> * The actual initial capacity is rounded to the nearest power of two.</span></PRE>
4761
<TD align="right" class="lineCount">
4765
<TD align="right" class="coverageCount">
4769
<TD class="srcLine">
4770
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@param</span> loadFactor the load factor of the AbstractConcurrentReadCache</span></PRE>
4777
<TD align="right" class="lineCount">
4781
<TD align="right" class="coverageCount">
4785
<TD class="srcLine">
4786
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@throws</span> IllegalArgumentException if the initial maximum number</span></PRE>
4793
<TD align="right" class="lineCount">
4797
<TD align="right" class="coverageCount">
4801
<TD class="srcLine">
4802
<PRE class="srcLine"> <span class="comment"> * of elements is less</span></PRE>
4809
<TD align="right" class="lineCount">
4813
<TD align="right" class="coverageCount">
4817
<TD class="srcLine">
4818
<PRE class="srcLine"> <span class="comment"> * than zero, or if the load factor is nonpositive.</span></PRE>
4825
<TD align="right" class="lineCount">
4829
<TD align="right" class="coverageCount">
4833
<TD class="srcLine">
4834
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
4841
<TD align="right" class="lineCountHilight">
4845
<TD align="right" class="lineCountHilight">
4846
<A title="Line 298: method entered 81 times."> 81</A>
4849
<TD class="srcLine">
4850
<A title="Line 298: method entered 81 times."><PRE class="srcLine"> <span class="keyword">public</span> AbstractConcurrentReadCache(<span class="keyword">int</span> initialCapacity, <span class="keyword">float</span> loadFactor) {</PRE></A>
4857
<TD align="right" class="lineCountHilight">
4861
<TD align="right" class="coverageCountHilight">
4862
<A title="Line 299: expression evaluated to true 0 times, false 81 times."> 81</A>
4865
<TD class="srcHilight">
4866
<SPAN class="srcHilight">
4867
<A title="Line 299: expression evaluated to true 0 times, false 81 times."><PRE class="srcLine"> <span class="keyword">if</span> (loadFactor <= 0) {</PRE></A>
4875
<TD align="right" class="lineCountHilight">
4879
<TD align="right" class="coverageCountHilight">
4880
<A title="Line 300: statement not executed."> 0</A>
4883
<TD class="srcHilight">
4884
<SPAN class="srcHilight">
4885
<A title="Line 300: statement not executed."><PRE class="srcLine"> <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"Illegal Load factor: "</span> + loadFactor);</PRE></A>
4893
<TD align="right" class="lineCount">
4897
<TD align="right" class="coverageCount">
4901
<TD class="srcLine">
4902
<PRE class="srcLine"> }</PRE>
4909
<TD align="right" class="lineCount">
4913
<TD align="right" class="coverageCount">
4917
<TD class="srcLine">
4918
<PRE class="srcLine"> </PRE>
4925
<TD align="right" class="lineCountHilight">
4929
<TD align="right" class="lineCountHilight">
4930
<A title="Line 303: statement executed 81 times."> 81</A>
4933
<TD class="srcLine">
4934
<A title="Line 303: statement executed 81 times."><PRE class="srcLine"> <span class="keyword">this</span>.loadFactor = loadFactor;</PRE></A>
4941
<TD align="right" class="lineCount">
4945
<TD align="right" class="coverageCount">
4949
<TD class="srcLine">
4950
<PRE class="srcLine"> </PRE>
4957
<TD align="right" class="lineCountHilight">
4961
<TD align="right" class="lineCountHilight">
4962
<A title="Line 305: statement executed 81 times."> 81</A>
4965
<TD class="srcLine">
4966
<A title="Line 305: statement executed 81 times."><PRE class="srcLine"> <span class="keyword">int</span> cap = p2capacity(initialCapacity);</PRE></A>
4973
<TD align="right" class="lineCountHilight">
4977
<TD align="right" class="lineCountHilight">
4978
<A title="Line 306: statement executed 81 times."> 81</A>
4981
<TD class="srcLine">
4982
<A title="Line 306: statement executed 81 times."><PRE class="srcLine"> table = <span class="keyword">new</span> Entry[cap];</PRE></A>
4989
<TD align="right" class="lineCountHilight">
4993
<TD align="right" class="lineCountHilight">
4994
<A title="Line 307: statement executed 81 times."> 81</A>
4997
<TD class="srcLine">
4998
<A title="Line 307: statement executed 81 times."><PRE class="srcLine"> threshold = (<span class="keyword">int</span>) (cap * loadFactor);</PRE></A>
5005
<TD align="right" class="lineCount">
5009
<TD align="right" class="coverageCount">
5013
<TD class="srcLine">
5014
<PRE class="srcLine"> }</PRE>
5021
<TD align="right" class="lineCount">
5025
<TD align="right" class="coverageCount">
5029
<TD class="srcLine">
5030
<PRE class="srcLine"> </PRE>
5037
<TD align="right" class="lineCount">
5041
<TD align="right" class="coverageCount">
5045
<TD class="srcLine">
5046
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
5053
<TD align="right" class="lineCount">
5057
<TD align="right" class="coverageCount">
5061
<TD class="srcLine">
5062
<PRE class="srcLine"> <span class="comment"> * Constructs a new, empty map with the specified initial capacity and default load factor.</span></PRE>
5069
<TD align="right" class="lineCount">
5073
<TD align="right" class="coverageCount">
5077
<TD class="srcLine">
5078
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
5085
<TD align="right" class="lineCount">
5089
<TD align="right" class="coverageCount">
5093
<TD class="srcLine">
5094
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@param</span> initialCapacity the initial capacity of the</span></PRE>
5101
<TD align="right" class="lineCount">
5105
<TD align="right" class="coverageCount">
5109
<TD class="srcLine">
5110
<PRE class="srcLine"> <span class="comment"> * AbstractConcurrentReadCache.</span></PRE>
5117
<TD align="right" class="lineCount">
5121
<TD align="right" class="coverageCount">
5125
<TD class="srcLine">
5126
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@throws</span> IllegalArgumentException if the initial maximum number</span></PRE>
5133
<TD align="right" class="lineCount">
5137
<TD align="right" class="coverageCount">
5141
<TD class="srcLine">
5142
<PRE class="srcLine"> <span class="comment"> * of elements is less</span></PRE>
5149
<TD align="right" class="lineCount">
5153
<TD align="right" class="coverageCount">
5157
<TD class="srcLine">
5158
<PRE class="srcLine"> <span class="comment"> * than zero.</span></PRE>
5165
<TD align="right" class="lineCount">
5169
<TD align="right" class="coverageCount">
5173
<TD class="srcLine">
5174
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
5181
<TD align="right" class="lineCountHilight">
5185
<TD align="right" class="coverageCountHilight">
5186
<A title="Line 319: method not entered."> 0</A>
5189
<TD class="srcHilight">
5190
<SPAN class="srcHilight">
5191
<A title="Line 319: method not entered."><PRE class="srcLine"> <span class="keyword">public</span> AbstractConcurrentReadCache(<span class="keyword">int</span> initialCapacity) {</PRE></A>
5199
<TD align="right" class="lineCountHilight">
5203
<TD align="right" class="coverageCountHilight">
5204
<A title="Line 320: statement not executed."> 0</A>
5207
<TD class="srcHilight">
5208
<SPAN class="srcHilight">
5209
<A title="Line 320: statement not executed."><PRE class="srcLine"> <span class="keyword">this</span>(initialCapacity, DEFAULT_LOAD_FACTOR);</PRE></A>
5217
<TD align="right" class="lineCount">
5221
<TD align="right" class="coverageCount">
5225
<TD class="srcLine">
5226
<PRE class="srcLine"> }</PRE>
5233
<TD align="right" class="lineCount">
5237
<TD align="right" class="coverageCount">
5241
<TD class="srcLine">
5242
<PRE class="srcLine"> </PRE>
5249
<TD align="right" class="lineCount">
5253
<TD align="right" class="coverageCount">
5257
<TD class="srcLine">
5258
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
5265
<TD align="right" class="lineCount">
5269
<TD align="right" class="coverageCount">
5273
<TD class="srcLine">
5274
<PRE class="srcLine"> <span class="comment"> * Constructs a new, empty map with a default initial capacity and load factor.</span></PRE>
5281
<TD align="right" class="lineCount">
5285
<TD align="right" class="coverageCount">
5289
<TD class="srcLine">
5290
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
5297
<TD align="right" class="lineCountHilight">
5301
<TD align="right" class="lineCountHilight">
5302
<A title="Line 326: method entered 81 times."> 81</A>
5305
<TD class="srcLine">
5306
<A title="Line 326: method entered 81 times."><PRE class="srcLine"> <span class="keyword">public</span> AbstractConcurrentReadCache() {</PRE></A>
5313
<TD align="right" class="lineCountHilight">
5317
<TD align="right" class="lineCountHilight">
5318
<A title="Line 327: statement executed 81 times."> 81</A>
5321
<TD class="srcLine">
5322
<A title="Line 327: statement executed 81 times."><PRE class="srcLine"> <span class="keyword">this</span>(DEFAULT_INITIAL_CAPACITY, DEFAULT_LOAD_FACTOR);</PRE></A>
5329
<TD align="right" class="lineCount">
5333
<TD align="right" class="coverageCount">
5337
<TD class="srcLine">
5338
<PRE class="srcLine"> }</PRE>
5345
<TD align="right" class="lineCount">
5349
<TD align="right" class="coverageCount">
5353
<TD class="srcLine">
5354
<PRE class="srcLine"> </PRE>
5361
<TD align="right" class="lineCount">
5365
<TD align="right" class="coverageCount">
5369
<TD class="srcLine">
5370
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
5377
<TD align="right" class="lineCount">
5381
<TD align="right" class="coverageCount">
5385
<TD class="srcLine">
5386
<PRE class="srcLine"> <span class="comment"> * Constructs a new map with the same mappings as the given map.</span></PRE>
5393
<TD align="right" class="lineCount">
5397
<TD align="right" class="coverageCount">
5401
<TD class="srcLine">
5402
<PRE class="srcLine"> <span class="comment"> * The map is created with a capacity of twice the number of mappings in</span></PRE>
5409
<TD align="right" class="lineCount">
5413
<TD align="right" class="coverageCount">
5417
<TD class="srcLine">
5418
<PRE class="srcLine"> <span class="comment"> * the given map or 11 (whichever is greater), and a default load factor.</span></PRE>
5425
<TD align="right" class="lineCount">
5429
<TD align="right" class="coverageCount">
5433
<TD class="srcLine">
5434
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
5441
<TD align="right" class="lineCountHilight">
5445
<TD align="right" class="coverageCountHilight">
5446
<A title="Line 335: method not entered."> 0</A>
5449
<TD class="srcHilight">
5450
<SPAN class="srcHilight">
5451
<A title="Line 335: method not entered."><PRE class="srcLine"> <span class="keyword">public</span> AbstractConcurrentReadCache(Map t) {</PRE></A>
5459
<TD align="right" class="lineCountHilight">
5463
<TD align="right" class="coverageCountHilight">
5464
<A title="Line 336: statement not executed."> 0</A>
5467
<TD class="srcHilight">
5468
<SPAN class="srcHilight">
5469
<A title="Line 336: statement not executed."><PRE class="srcLine"> <span class="keyword">this</span>(Math.max(2 * t.size(), 11), DEFAULT_LOAD_FACTOR);</PRE></A>
5477
<TD align="right" class="lineCountHilight">
5481
<TD align="right" class="coverageCountHilight">
5482
<A title="Line 337: statement not executed."> 0</A>
5485
<TD class="srcHilight">
5486
<SPAN class="srcHilight">
5487
<A title="Line 337: statement not executed."><PRE class="srcLine"> putAll(t);</PRE></A>
5495
<TD align="right" class="lineCount">
5499
<TD align="right" class="coverageCount">
5503
<TD class="srcLine">
5504
<PRE class="srcLine"> }</PRE>
5511
<TD align="right" class="lineCount">
5515
<TD align="right" class="coverageCount">
5519
<TD class="srcLine">
5520
<PRE class="srcLine"> </PRE>
5527
<TD align="right" class="lineCount">
5531
<TD align="right" class="coverageCount">
5535
<TD class="srcLine">
5536
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
5543
<TD align="right" class="lineCount">
5547
<TD align="right" class="coverageCount">
5551
<TD class="srcLine">
5552
<PRE class="srcLine"> <span class="comment"> * Returns <tt>true</tt> if this map contains no key-value mappings.</span></PRE>
5559
<TD align="right" class="lineCount">
5563
<TD align="right" class="coverageCount">
5567
<TD class="srcLine">
5568
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
5575
<TD align="right" class="lineCount">
5579
<TD align="right" class="coverageCount">
5583
<TD class="srcLine">
5584
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@return</span> <tt>true</tt> if this map contains no key-value mappings.</span></PRE>
5591
<TD align="right" class="lineCount">
5595
<TD align="right" class="coverageCount">
5599
<TD class="srcLine">
5600
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
5607
<TD align="right" class="lineCountHilight">
5611
<TD align="right" class="coverageCountHilight">
5612
<A title="Line 345: method not entered."> 0</A>
5615
<TD class="srcHilight">
5616
<SPAN class="srcHilight">
5617
<A title="Line 345: method not entered."><PRE class="srcLine"> <span class="keyword">public</span> <span class="keyword">synchronized</span> <span class="keyword">boolean</span> isEmpty() {</PRE></A>
5625
<TD align="right" class="lineCountHilight">
5629
<TD align="right" class="coverageCountHilight">
5630
<A title="Line 346: statement not executed."> 0</A>
5633
<TD class="srcHilight">
5634
<SPAN class="srcHilight">
5635
<A title="Line 346: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> count == 0;</PRE></A>
5643
<TD align="right" class="lineCount">
5647
<TD align="right" class="coverageCount">
5651
<TD class="srcLine">
5652
<PRE class="srcLine"> }</PRE>
5659
<TD align="right" class="lineCount">
5663
<TD align="right" class="coverageCount">
5667
<TD class="srcLine">
5668
<PRE class="srcLine"> </PRE>
5675
<TD align="right" class="lineCount">
5679
<TD align="right" class="coverageCount">
5683
<TD class="srcLine">
5684
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
5691
<TD align="right" class="lineCount">
5695
<TD align="right" class="coverageCount">
5699
<TD class="srcLine">
5700
<PRE class="srcLine"> <span class="comment"> * Returns a set of the cache keys that reside in a particular group.</span></PRE>
5707
<TD align="right" class="lineCount">
5711
<TD align="right" class="coverageCount">
5715
<TD class="srcLine">
5716
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
5723
<TD align="right" class="lineCount">
5727
<TD align="right" class="coverageCount">
5731
<TD class="srcLine">
5732
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@param</span> groupName The name of the group to retrieve.</span></PRE>
5739
<TD align="right" class="lineCount">
5743
<TD align="right" class="coverageCount">
5747
<TD class="srcLine">
5748
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@return</span> a set containing all of the keys of cache entries that belong</span></PRE>
5755
<TD align="right" class="lineCount">
5759
<TD align="right" class="coverageCount">
5763
<TD class="srcLine">
5764
<PRE class="srcLine"> <span class="comment"> * to this group, or <code>null</code> if the group was not found.</span></PRE>
5771
<TD align="right" class="lineCount">
5775
<TD align="right" class="coverageCount">
5779
<TD class="srcLine">
5780
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@exception</span> NullPointerException if the groupName is <code>null</code>.</span></PRE>
5787
<TD align="right" class="lineCount">
5791
<TD align="right" class="coverageCount">
5795
<TD class="srcLine">
5796
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
5803
<TD align="right" class="lineCountHilight">
5807
<TD align="right" class="lineCountHilight">
5808
<A title="Line 357: method entered 24 times."> 24</A>
5811
<TD class="srcLine">
5812
<A title="Line 357: method entered 24 times."><PRE class="srcLine"> <span class="keyword">public</span> Set getGroup(String groupName) {</PRE></A>
5819
<TD align="right" class="lineCountHilight">
5823
<TD align="right" class="coverageCountHilight">
5824
<A title="Line 358: expression evaluated to true 0 times, false 24 times."> 24</A>
5827
<TD class="srcHilight">
5828
<SPAN class="srcHilight">
5829
<A title="Line 358: expression evaluated to true 0 times, false 24 times."><PRE class="srcLine"> <span class="keyword">if</span> (log.isDebugEnabled()) {</PRE></A>
5837
<TD align="right" class="lineCountHilight">
5841
<TD align="right" class="coverageCountHilight">
5842
<A title="Line 359: statement not executed."> 0</A>
5845
<TD class="srcHilight">
5846
<SPAN class="srcHilight">
5847
<A title="Line 359: statement not executed."><PRE class="srcLine"> log.debug(<span class="string">"getGroup called (group="</span> + groupName + <span class="string">")"</span>);</PRE></A>
5855
<TD align="right" class="lineCount">
5859
<TD align="right" class="coverageCount">
5863
<TD class="srcLine">
5864
<PRE class="srcLine"> }</PRE>
5871
<TD align="right" class="lineCount">
5875
<TD align="right" class="coverageCount">
5879
<TD class="srcLine">
5880
<PRE class="srcLine"> </PRE>
5887
<TD align="right" class="lineCountHilight">
5891
<TD align="right" class="lineCountHilight">
5892
<A title="Line 362: statement executed 24 times."> 24</A>
5895
<TD class="srcLine">
5896
<A title="Line 362: statement executed 24 times."><PRE class="srcLine"> Set groupEntries = <span class="keyword">null</span>;</PRE></A>
5903
<TD align="right" class="lineCount">
5907
<TD align="right" class="coverageCount">
5911
<TD class="srcLine">
5912
<PRE class="srcLine"> </PRE>
5919
<TD align="right" class="lineCountHilight">
5923
<TD align="right" class="lineCountHilight">
5924
<A title="Line 364: statement executed 24 times."> 24</A>
5927
<TD class="srcLine">
5928
<A title="Line 364: statement executed 24 times."><PRE class="srcLine"> <span class="keyword">if</span> (memoryCaching && (groups != <span class="keyword">null</span>)) {</PRE></A>
5935
<TD align="right" class="lineCountHilight">
5939
<TD align="right" class="lineCountHilight">
5940
<A title="Line 365: statement executed 14 times."> 14</A>
5943
<TD class="srcLine">
5944
<A title="Line 365: statement executed 14 times."><PRE class="srcLine"> groupEntries = (Set) getGroupsForReading().get(groupName);</PRE></A>
5951
<TD align="right" class="lineCount">
5955
<TD align="right" class="coverageCount">
5959
<TD class="srcLine">
5960
<PRE class="srcLine"> }</PRE>
5967
<TD align="right" class="lineCount">
5971
<TD align="right" class="coverageCount">
5975
<TD class="srcLine">
5976
<PRE class="srcLine"> </PRE>
5983
<TD align="right" class="lineCountHilight">
5987
<TD align="right" class="lineCountHilight">
5988
<A title="Line 368: statement executed 24 times."> 24</A>
5991
<TD class="srcLine">
5992
<A title="Line 368: statement executed 24 times."><PRE class="srcLine"> <span class="keyword">if</span> (groupEntries == <span class="keyword">null</span>) {</PRE></A>
5999
<TD align="right" class="lineCount">
6003
<TD align="right" class="coverageCount">
6007
<TD class="srcLine">
6008
<PRE class="srcLine"> <span class="comment">// Not in the map, try the persistence layer</span></PRE>
6015
<TD align="right" class="lineCountHilight">
6019
<TD align="right" class="lineCountHilight">
6020
<A title="Line 370: statement executed 10 times."> 10</A>
6023
<TD class="srcLine">
6024
<A title="Line 370: statement executed 10 times."><PRE class="srcLine"> groupEntries = persistRetrieveGroup(groupName);</PRE></A>
6031
<TD align="right" class="lineCount">
6035
<TD align="right" class="coverageCount">
6039
<TD class="srcLine">
6040
<PRE class="srcLine"> } <span class="keyword">else</span> {</PRE>
6047
<TD align="right" class="lineCount">
6051
<TD align="right" class="coverageCount">
6055
<TD class="srcLine">
6056
<PRE class="srcLine"> <span class="comment">// We don't want to give them back the internal Set object</span></PRE>
6063
<TD align="right" class="lineCountHilight">
6067
<TD align="right" class="lineCountHilight">
6068
<A title="Line 373: statement executed 14 times."> 14</A>
6071
<TD class="srcLine">
6072
<A title="Line 373: statement executed 14 times."><PRE class="srcLine"> groupEntries = <span class="keyword">new</span> HashSet(groupEntries);</PRE></A>
6079
<TD align="right" class="lineCount">
6083
<TD align="right" class="coverageCount">
6087
<TD class="srcLine">
6088
<PRE class="srcLine"> }</PRE>
6095
<TD align="right" class="lineCount">
6099
<TD align="right" class="coverageCount">
6103
<TD class="srcLine">
6104
<PRE class="srcLine"> </PRE>
6111
<TD align="right" class="lineCountHilight">
6115
<TD align="right" class="lineCountHilight">
6116
<A title="Line 376: statement executed 24 times."> 24</A>
6119
<TD class="srcLine">
6120
<A title="Line 376: statement executed 24 times."><PRE class="srcLine"> <span class="keyword">return</span> groupEntries;</PRE></A>
6127
<TD align="right" class="lineCount">
6131
<TD align="right" class="coverageCount">
6135
<TD class="srcLine">
6136
<PRE class="srcLine"> }</PRE>
6143
<TD align="right" class="lineCount">
6147
<TD align="right" class="coverageCount">
6151
<TD class="srcLine">
6152
<PRE class="srcLine"> </PRE>
6159
<TD align="right" class="lineCount">
6163
<TD align="right" class="coverageCount">
6167
<TD class="srcLine">
6168
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
6175
<TD align="right" class="lineCount">
6179
<TD align="right" class="coverageCount">
6183
<TD class="srcLine">
6184
<PRE class="srcLine"> <span class="comment"> * Set the cache capacity</span></PRE>
6191
<TD align="right" class="lineCount">
6195
<TD align="right" class="coverageCount">
6199
<TD class="srcLine">
6200
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
6207
<TD align="right" class="lineCountHilight">
6211
<TD align="right" class="lineCountHilight">
6212
<A title="Line 382: method entered 24 times."> 24</A>
6215
<TD class="srcLine">
6216
<A title="Line 382: method entered 24 times."><PRE class="srcLine"> <span class="keyword">public</span> <span class="keyword">void</span> setMaxEntries(<span class="keyword">int</span> newLimit) {</PRE></A>
6223
<TD align="right" class="lineCountHilight">
6227
<TD align="right" class="lineCountHilight">
6228
<A title="Line 383: statement executed 24 times."> 24</A>
6231
<TD class="srcLine">
6232
<A title="Line 383: statement executed 24 times."><PRE class="srcLine"> <span class="keyword">if</span> (newLimit > 0) {</PRE></A>
6239
<TD align="right" class="lineCountHilight">
6243
<TD align="right" class="lineCountHilight">
6244
<A title="Line 384: statement executed 12 times."> 12</A>
6247
<TD class="srcLine">
6248
<A title="Line 384: statement executed 12 times."><PRE class="srcLine"> maxEntries = newLimit;</PRE></A>
6255
<TD align="right" class="lineCount">
6259
<TD align="right" class="coverageCount">
6263
<TD class="srcLine">
6264
<PRE class="srcLine"> </PRE>
6271
<TD align="right" class="lineCountHilight">
6275
<TD align="right" class="lineCountHilight">
6276
<A title="Line 386: statement executed 12 times."> 12</A>
6279
<TD class="srcLine">
6280
<A title="Line 386: statement executed 12 times."><PRE class="srcLine"> <span class="keyword">synchronized</span> (<span class="keyword">this</span>) { <span class="comment">// because remove() isn't synchronized</span></PRE></A>
6287
<TD align="right" class="lineCount">
6291
<TD align="right" class="coverageCount">
6295
<TD class="srcLine">
6296
<PRE class="srcLine"> </PRE>
6303
<TD align="right" class="lineCountHilight">
6307
<TD align="right" class="lineCountHilight">
6308
<A title="Line 388: statement executed 12 times."> 12</A>
6311
<TD class="srcLine">
6312
<A title="Line 388: statement executed 12 times."><PRE class="srcLine"> <span class="keyword">while</span> (size() > maxEntries) {</PRE></A>
6319
<TD align="right" class="lineCountHilight">
6323
<TD align="right" class="lineCountHilight">
6324
<A title="Line 389: statement executed 12 times."> 12</A>
6327
<TD class="srcLine">
6328
<A title="Line 389: statement executed 12 times."><PRE class="srcLine"> remove(removeItem(), <span class="keyword">false</span>);</PRE></A>
6335
<TD align="right" class="lineCount">
6339
<TD align="right" class="coverageCount">
6343
<TD class="srcLine">
6344
<PRE class="srcLine"> }</PRE>
6351
<TD align="right" class="lineCount">
6355
<TD align="right" class="coverageCount">
6359
<TD class="srcLine">
6360
<PRE class="srcLine"> }</PRE>
6367
<TD align="right" class="lineCount">
6371
<TD align="right" class="coverageCount">
6375
<TD class="srcLine">
6376
<PRE class="srcLine"> } <span class="keyword">else</span> {</PRE>
6383
<TD align="right" class="lineCount">
6387
<TD align="right" class="coverageCount">
6391
<TD class="srcLine">
6392
<PRE class="srcLine"> <span class="comment">// Capacity must be at least 1</span></PRE>
6399
<TD align="right" class="lineCountHilight">
6403
<TD align="right" class="lineCountHilight">
6404
<A title="Line 394: statement executed 12 times."> 12</A>
6407
<TD class="srcLine">
6408
<A title="Line 394: statement executed 12 times."><PRE class="srcLine"> <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"Cache maximum number of entries must be at least 1"</span>);</PRE></A>
6415
<TD align="right" class="lineCount">
6419
<TD align="right" class="coverageCount">
6423
<TD class="srcLine">
6424
<PRE class="srcLine"> }</PRE>
6431
<TD align="right" class="lineCount">
6435
<TD align="right" class="coverageCount">
6439
<TD class="srcLine">
6440
<PRE class="srcLine"> }</PRE>
6447
<TD align="right" class="lineCount">
6451
<TD align="right" class="coverageCount">
6455
<TD class="srcLine">
6456
<PRE class="srcLine"> </PRE>
6463
<TD align="right" class="lineCount">
6467
<TD align="right" class="coverageCount">
6471
<TD class="srcLine">
6472
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
6479
<TD align="right" class="lineCount">
6483
<TD align="right" class="coverageCount">
6487
<TD class="srcLine">
6488
<PRE class="srcLine"> <span class="comment"> * Retrieve the cache capacity (number of entries).</span></PRE>
6495
<TD align="right" class="lineCount">
6499
<TD align="right" class="coverageCount">
6503
<TD class="srcLine">
6504
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
6511
<TD align="right" class="lineCountHilight">
6515
<TD align="right" class="lineCountHilight">
6516
<A title="Line 401: method entered 24 times."> 24</A>
6519
<TD class="srcLine">
6520
<A title="Line 401: method entered 24 times."><PRE class="srcLine"> <span class="keyword">public</span> <span class="keyword">int</span> getMaxEntries() {</PRE></A>
6527
<TD align="right" class="lineCountHilight">
6531
<TD align="right" class="lineCountHilight">
6532
<A title="Line 402: statement executed 24 times."> 24</A>
6535
<TD class="srcLine">
6536
<A title="Line 402: statement executed 24 times."><PRE class="srcLine"> <span class="keyword">return</span> maxEntries;</PRE></A>
6543
<TD align="right" class="lineCount">
6547
<TD align="right" class="coverageCount">
6551
<TD class="srcLine">
6552
<PRE class="srcLine"> }</PRE>
6559
<TD align="right" class="lineCount">
6563
<TD align="right" class="coverageCount">
6567
<TD class="srcLine">
6568
<PRE class="srcLine"> </PRE>
6575
<TD align="right" class="lineCount">
6579
<TD align="right" class="coverageCount">
6583
<TD class="srcLine">
6584
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
6591
<TD align="right" class="lineCount">
6595
<TD align="right" class="coverageCount">
6599
<TD class="srcLine">
6600
<PRE class="srcLine"> <span class="comment"> * Sets the memory caching flag.</span></PRE>
6607
<TD align="right" class="lineCount">
6611
<TD align="right" class="coverageCount">
6615
<TD class="srcLine">
6616
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
6623
<TD align="right" class="lineCountHilight">
6627
<TD align="right" class="lineCountHilight">
6628
<A title="Line 408: method entered 81 times."> 81</A>
6631
<TD class="srcLine">
6632
<A title="Line 408: method entered 81 times."><PRE class="srcLine"> <span class="keyword">public</span> <span class="keyword">void</span> setMemoryCaching(<span class="keyword">boolean</span> memoryCaching) {</PRE></A>
6639
<TD align="right" class="lineCountHilight">
6643
<TD align="right" class="lineCountHilight">
6644
<A title="Line 409: statement executed 81 times."> 81</A>
6647
<TD class="srcLine">
6648
<A title="Line 409: statement executed 81 times."><PRE class="srcLine"> <span class="keyword">this</span>.memoryCaching = memoryCaching;</PRE></A>
6655
<TD align="right" class="lineCount">
6659
<TD align="right" class="coverageCount">
6663
<TD class="srcLine">
6664
<PRE class="srcLine"> }</PRE>
6671
<TD align="right" class="lineCount">
6675
<TD align="right" class="coverageCount">
6679
<TD class="srcLine">
6680
<PRE class="srcLine"> </PRE>
6687
<TD align="right" class="lineCount">
6691
<TD align="right" class="coverageCount">
6695
<TD class="srcLine">
6696
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
6703
<TD align="right" class="lineCount">
6707
<TD align="right" class="coverageCount">
6711
<TD class="srcLine">
6712
<PRE class="srcLine"> <span class="comment"> * Check if memory caching is used.</span></PRE>
6719
<TD align="right" class="lineCount">
6723
<TD align="right" class="coverageCount">
6727
<TD class="srcLine">
6728
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
6735
<TD align="right" class="lineCountHilight">
6739
<TD align="right" class="lineCountHilight">
6740
<A title="Line 415: method entered 18 times."> 18</A>
6743
<TD class="srcLine">
6744
<A title="Line 415: method entered 18 times."><PRE class="srcLine"> <span class="keyword">public</span> <span class="keyword">boolean</span> isMemoryCaching() {</PRE></A>
6751
<TD align="right" class="lineCountHilight">
6755
<TD align="right" class="lineCountHilight">
6756
<A title="Line 416: statement executed 18 times."> 18</A>
6759
<TD class="srcLine">
6760
<A title="Line 416: statement executed 18 times."><PRE class="srcLine"> <span class="keyword">return</span> memoryCaching;</PRE></A>
6767
<TD align="right" class="lineCount">
6771
<TD align="right" class="coverageCount">
6775
<TD class="srcLine">
6776
<PRE class="srcLine"> }</PRE>
6783
<TD align="right" class="lineCount">
6787
<TD align="right" class="coverageCount">
6791
<TD class="srcLine">
6792
<PRE class="srcLine"> </PRE>
6799
<TD align="right" class="lineCount">
6803
<TD align="right" class="coverageCount">
6807
<TD class="srcLine">
6808
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
6815
<TD align="right" class="lineCount">
6819
<TD align="right" class="coverageCount">
6823
<TD class="srcLine">
6824
<PRE class="srcLine"> <span class="comment"> * Set the persistence listener to use.</span></PRE>
6831
<TD align="right" class="lineCount">
6835
<TD align="right" class="coverageCount">
6839
<TD class="srcLine">
6840
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
6847
<TD align="right" class="lineCountHilight">
6851
<TD align="right" class="lineCountHilight">
6852
<A title="Line 422: method entered 52 times."> 52</A>
6855
<TD class="srcLine">
6856
<A title="Line 422: method entered 52 times."><PRE class="srcLine"> <span class="keyword">public</span> <span class="keyword">void</span> setPersistenceListener(PersistenceListener listener) {</PRE></A>
6863
<TD align="right" class="lineCountHilight">
6867
<TD align="right" class="lineCountHilight">
6868
<A title="Line 423: statement executed 52 times."> 52</A>
6871
<TD class="srcLine">
6872
<A title="Line 423: statement executed 52 times."><PRE class="srcLine"> <span class="keyword">this</span>.persistenceListener = listener;</PRE></A>
6879
<TD align="right" class="lineCount">
6883
<TD align="right" class="coverageCount">
6887
<TD class="srcLine">
6888
<PRE class="srcLine"> }</PRE>
6895
<TD align="right" class="lineCount">
6899
<TD align="right" class="coverageCount">
6903
<TD class="srcLine">
6904
<PRE class="srcLine"> </PRE>
6911
<TD align="right" class="lineCount">
6915
<TD align="right" class="coverageCount">
6919
<TD class="srcLine">
6920
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
6927
<TD align="right" class="lineCount">
6931
<TD align="right" class="coverageCount">
6935
<TD class="srcLine">
6936
<PRE class="srcLine"> <span class="comment"> * Get the persistence listener.</span></PRE>
6943
<TD align="right" class="lineCount">
6947
<TD align="right" class="coverageCount">
6951
<TD class="srcLine">
6952
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
6959
<TD align="right" class="lineCountHilight">
6963
<TD align="right" class="coverageCountHilight">
6964
<A title="Line 429: method not entered."> 0</A>
6967
<TD class="srcHilight">
6968
<SPAN class="srcHilight">
6969
<A title="Line 429: method not entered."><PRE class="srcLine"> <span class="keyword">public</span> PersistenceListener getPersistenceListener() {</PRE></A>
6977
<TD align="right" class="lineCountHilight">
6981
<TD align="right" class="coverageCountHilight">
6982
<A title="Line 430: statement not executed."> 0</A>
6985
<TD class="srcHilight">
6986
<SPAN class="srcHilight">
6987
<A title="Line 430: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> persistenceListener;</PRE></A>
6995
<TD align="right" class="lineCount">
6999
<TD align="right" class="coverageCount">
7003
<TD class="srcLine">
7004
<PRE class="srcLine"> }</PRE>
7011
<TD align="right" class="lineCount">
7015
<TD align="right" class="coverageCount">
7019
<TD class="srcLine">
7020
<PRE class="srcLine"> </PRE>
7027
<TD align="right" class="lineCount">
7031
<TD align="right" class="coverageCount">
7035
<TD class="srcLine">
7036
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
7043
<TD align="right" class="lineCount">
7047
<TD align="right" class="coverageCount">
7051
<TD class="srcLine">
7052
<PRE class="srcLine"> <span class="comment"> * Sets the unlimited disk caching flag.</span></PRE>
7059
<TD align="right" class="lineCount">
7063
<TD align="right" class="coverageCount">
7067
<TD class="srcLine">
7068
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
7075
<TD align="right" class="lineCountHilight">
7079
<TD align="right" class="lineCountHilight">
7080
<A title="Line 436: method entered 63 times."> 63</A>
7083
<TD class="srcLine">
7084
<A title="Line 436: method entered 63 times."><PRE class="srcLine"> <span class="keyword">public</span> <span class="keyword">void</span> setUnlimitedDiskCache(<span class="keyword">boolean</span> unlimitedDiskCache) {</PRE></A>
7091
<TD align="right" class="lineCountHilight">
7095
<TD align="right" class="lineCountHilight">
7096
<A title="Line 437: statement executed 63 times."> 63</A>
7099
<TD class="srcLine">
7100
<A title="Line 437: statement executed 63 times."><PRE class="srcLine"> <span class="keyword">this</span>.unlimitedDiskCache = unlimitedDiskCache;</PRE></A>
7107
<TD align="right" class="lineCount">
7111
<TD align="right" class="coverageCount">
7115
<TD class="srcLine">
7116
<PRE class="srcLine"> }</PRE>
7123
<TD align="right" class="lineCount">
7127
<TD align="right" class="coverageCount">
7131
<TD class="srcLine">
7132
<PRE class="srcLine"> </PRE>
7139
<TD align="right" class="lineCount">
7143
<TD align="right" class="coverageCount">
7147
<TD class="srcLine">
7148
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
7155
<TD align="right" class="lineCount">
7159
<TD align="right" class="coverageCount">
7163
<TD class="srcLine">
7164
<PRE class="srcLine"> <span class="comment"> * Check if we use unlimited disk cache.</span></PRE>
7171
<TD align="right" class="lineCount">
7175
<TD align="right" class="coverageCount">
7179
<TD class="srcLine">
7180
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
7187
<TD align="right" class="lineCountHilight">
7191
<TD align="right" class="coverageCountHilight">
7192
<A title="Line 443: method not entered."> 0</A>
7195
<TD class="srcHilight">
7196
<SPAN class="srcHilight">
7197
<A title="Line 443: method not entered."><PRE class="srcLine"> <span class="keyword">public</span> <span class="keyword">boolean</span> isUnlimitedDiskCache() {</PRE></A>
7205
<TD align="right" class="lineCountHilight">
7209
<TD align="right" class="coverageCountHilight">
7210
<A title="Line 444: statement not executed."> 0</A>
7213
<TD class="srcHilight">
7214
<SPAN class="srcHilight">
7215
<A title="Line 444: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> unlimitedDiskCache;</PRE></A>
7223
<TD align="right" class="lineCount">
7227
<TD align="right" class="coverageCount">
7231
<TD class="srcLine">
7232
<PRE class="srcLine"> }</PRE>
7239
<TD align="right" class="lineCount">
7243
<TD align="right" class="coverageCount">
7247
<TD class="srcLine">
7248
<PRE class="srcLine"> </PRE>
7255
<TD align="right" class="lineCount">
7259
<TD align="right" class="coverageCount">
7263
<TD class="srcLine">
7264
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
7271
<TD align="right" class="lineCount">
7275
<TD align="right" class="coverageCount">
7279
<TD class="srcLine">
7280
<PRE class="srcLine"> <span class="comment"> * Return the number of slots in this table.</span></PRE>
7287
<TD align="right" class="lineCount">
7291
<TD align="right" class="coverageCount">
7295
<TD class="srcLine">
7296
<PRE class="srcLine"> <span class="comment"> **/</span></PRE>
7303
<TD align="right" class="lineCountHilight">
7307
<TD align="right" class="coverageCountHilight">
7308
<A title="Line 450: method not entered."> 0</A>
7311
<TD class="srcHilight">
7312
<SPAN class="srcHilight">
7313
<A title="Line 450: method not entered."><PRE class="srcLine"> <span class="keyword">public</span> <span class="keyword">synchronized</span> <span class="keyword">int</span> capacity() {</PRE></A>
7321
<TD align="right" class="lineCountHilight">
7325
<TD align="right" class="coverageCountHilight">
7326
<A title="Line 451: statement not executed."> 0</A>
7329
<TD class="srcHilight">
7330
<SPAN class="srcHilight">
7331
<A title="Line 451: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> table.length;</PRE></A>
7339
<TD align="right" class="lineCount">
7343
<TD align="right" class="coverageCount">
7347
<TD class="srcLine">
7348
<PRE class="srcLine"> }</PRE>
7355
<TD align="right" class="lineCount">
7359
<TD align="right" class="coverageCount">
7363
<TD class="srcLine">
7364
<PRE class="srcLine"> </PRE>
7371
<TD align="right" class="lineCount">
7375
<TD align="right" class="coverageCount">
7379
<TD class="srcLine">
7380
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
7387
<TD align="right" class="lineCount">
7391
<TD align="right" class="coverageCount">
7395
<TD class="srcLine">
7396
<PRE class="srcLine"> <span class="comment"> * Removes all mappings from this map.</span></PRE>
7403
<TD align="right" class="lineCount">
7407
<TD align="right" class="coverageCount">
7411
<TD class="srcLine">
7412
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
7419
<TD align="right" class="lineCountHilight">
7423
<TD align="right" class="lineCountHilight">
7424
<A title="Line 457: method entered 111 times."> 111</A>
7427
<TD class="srcLine">
7428
<A title="Line 457: method entered 111 times."><PRE class="srcLine"> <span class="keyword">public</span> <span class="keyword">synchronized</span> <span class="keyword">void</span> clear() {</PRE></A>
7435
<TD align="right" class="lineCountHilight">
7439
<TD align="right" class="lineCountHilight">
7440
<A title="Line 458: statement executed 111 times."> 111</A>
7443
<TD class="srcLine">
7444
<A title="Line 458: statement executed 111 times."><PRE class="srcLine"> Entry[] tab = table;</PRE></A>
7451
<TD align="right" class="lineCount">
7455
<TD align="right" class="coverageCount">
7459
<TD class="srcLine">
7460
<PRE class="srcLine"> </PRE>
7467
<TD align="right" class="lineCountHilight">
7471
<TD align="right" class="lineCountHilight">
7472
<A title="Line 460: statement executed 111 times."> 111</A>
7475
<TD class="srcLine">
7476
<A title="Line 460: statement executed 111 times."><PRE class="srcLine"> <span class="keyword">for</span> (<span class="keyword">int</span> i = 0; i < tab.length; ++i) {</PRE></A>
7483
<TD align="right" class="lineCount">
7487
<TD align="right" class="coverageCount">
7491
<TD class="srcLine">
7492
<PRE class="srcLine"> <span class="comment">// must invalidate all to force concurrent get's to wait and then retry</span></PRE>
7499
<TD align="right" class="lineCountHilight">
7503
<TD align="right" class="lineCountHilight">
7504
<A title="Line 462: statement executed 3552 times."> 3552</A>
7507
<TD class="srcLine">
7508
<A title="Line 462: statement executed 3552 times."><PRE class="srcLine"> <span class="keyword">for</span> (Entry e = tab[i]; e != <span class="keyword">null</span>; e = e.next) {</PRE></A>
7515
<TD align="right" class="lineCountHilight">
7519
<TD align="right" class="lineCountHilight">
7520
<A title="Line 463: statement executed 117 times."> 117</A>
7523
<TD class="srcLine">
7524
<A title="Line 463: statement executed 117 times."><PRE class="srcLine"> e.value = <span class="keyword">null</span>;</PRE></A>
7531
<TD align="right" class="lineCount">
7535
<TD align="right" class="coverageCount">
7539
<TD class="srcLine">
7540
<PRE class="srcLine"> </PRE>
7547
<TD align="right" class="lineCount">
7551
<TD align="right" class="coverageCount">
7555
<TD class="srcLine">
7556
<PRE class="srcLine"> <span class="comment">/** OpenSymphony BEGIN */</span></PRE>
7563
<TD align="right" class="lineCountHilight">
7567
<TD align="right" class="lineCountHilight">
7568
<A title="Line 466: statement executed 117 times."> 117</A>
7571
<TD class="srcLine">
7572
<A title="Line 466: statement executed 117 times."><PRE class="srcLine"> itemRemoved(e.key);</PRE></A>
7579
<TD align="right" class="lineCount">
7583
<TD align="right" class="coverageCount">
7587
<TD class="srcLine">
7588
<PRE class="srcLine"> </PRE>
7595
<TD align="right" class="lineCount">
7599
<TD align="right" class="coverageCount">
7603
<TD class="srcLine">
7604
<PRE class="srcLine"> <span class="comment">/** OpenSymphony END */</span></PRE>
7611
<TD align="right" class="lineCount">
7615
<TD align="right" class="coverageCount">
7619
<TD class="srcLine">
7620
<PRE class="srcLine"> }</PRE>
7627
<TD align="right" class="lineCount">
7631
<TD align="right" class="coverageCount">
7635
<TD class="srcLine">
7636
<PRE class="srcLine"> </PRE>
7643
<TD align="right" class="lineCountHilight">
7647
<TD align="right" class="lineCountHilight">
7648
<A title="Line 471: statement executed 3552 times."> 3552</A>
7651
<TD class="srcLine">
7652
<A title="Line 471: statement executed 3552 times."><PRE class="srcLine"> tab[i] = <span class="keyword">null</span>;</PRE></A>
7659
<TD align="right" class="lineCount">
7663
<TD align="right" class="coverageCount">
7667
<TD class="srcLine">
7668
<PRE class="srcLine"> }</PRE>
7675
<TD align="right" class="lineCount">
7679
<TD align="right" class="coverageCount">
7683
<TD class="srcLine">
7684
<PRE class="srcLine"> </PRE>
7691
<TD align="right" class="lineCount">
7695
<TD align="right" class="coverageCount">
7699
<TD class="srcLine">
7700
<PRE class="srcLine"> <span class="comment">// Clean out the entire disk cache</span></PRE>
7707
<TD align="right" class="lineCountHilight">
7711
<TD align="right" class="lineCountHilight">
7712
<A title="Line 475: statement executed 111 times."> 111</A>
7715
<TD class="srcLine">
7716
<A title="Line 475: statement executed 111 times."><PRE class="srcLine"> persistClear();</PRE></A>
7723
<TD align="right" class="lineCount">
7727
<TD align="right" class="coverageCount">
7731
<TD class="srcLine">
7732
<PRE class="srcLine"> </PRE>
7739
<TD align="right" class="lineCountHilight">
7743
<TD align="right" class="lineCountHilight">
7744
<A title="Line 477: statement executed 111 times."> 111</A>
7747
<TD class="srcLine">
7748
<A title="Line 477: statement executed 111 times."><PRE class="srcLine"> count = 0;</PRE></A>
7755
<TD align="right" class="lineCountHilight">
7759
<TD align="right" class="lineCountHilight">
7760
<A title="Line 478: statement executed 111 times."> 111</A>
7763
<TD class="srcLine">
7764
<A title="Line 478: statement executed 111 times."><PRE class="srcLine"> recordModification(tab);</PRE></A>
7771
<TD align="right" class="lineCount">
7775
<TD align="right" class="coverageCount">
7779
<TD class="srcLine">
7780
<PRE class="srcLine"> }</PRE>
7787
<TD align="right" class="lineCount">
7791
<TD align="right" class="coverageCount">
7795
<TD class="srcLine">
7796
<PRE class="srcLine"> </PRE>
7803
<TD align="right" class="lineCount">
7807
<TD align="right" class="coverageCount">
7811
<TD class="srcLine">
7812
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
7819
<TD align="right" class="lineCount">
7823
<TD align="right" class="coverageCount">
7827
<TD class="srcLine">
7828
<PRE class="srcLine"> <span class="comment"> * Returns a shallow copy of this.</span></PRE>
7835
<TD align="right" class="lineCount">
7839
<TD align="right" class="coverageCount">
7843
<TD class="srcLine">
7844
<PRE class="srcLine"> <span class="comment"> * <tt>AbstractConcurrentReadCache</tt> instance: the keys and</span></PRE>
7851
<TD align="right" class="lineCount">
7855
<TD align="right" class="coverageCount">
7859
<TD class="srcLine">
7860
<PRE class="srcLine"> <span class="comment"> * values themselves are not cloned.</span></PRE>
7867
<TD align="right" class="lineCount">
7871
<TD align="right" class="coverageCount">
7875
<TD class="srcLine">
7876
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
7883
<TD align="right" class="lineCount">
7887
<TD align="right" class="coverageCount">
7891
<TD class="srcLine">
7892
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@return</span> a shallow copy of this map.</span></PRE>
7899
<TD align="right" class="lineCount">
7903
<TD align="right" class="coverageCount">
7907
<TD class="srcLine">
7908
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
7915
<TD align="right" class="lineCountHilight">
7919
<TD align="right" class="coverageCountHilight">
7920
<A title="Line 488: method not entered."> 0</A>
7923
<TD class="srcHilight">
7924
<SPAN class="srcHilight">
7925
<A title="Line 488: method not entered."><PRE class="srcLine"> <span class="keyword">public</span> <span class="keyword">synchronized</span> Object clone() {</PRE></A>
7933
<TD align="right" class="lineCountHilight">
7937
<TD align="right" class="coverageCountHilight">
7938
<A title="Line 489: statement not executed."> 0</A>
7941
<TD class="srcHilight">
7942
<SPAN class="srcHilight">
7943
<A title="Line 489: statement not executed."><PRE class="srcLine"> <span class="keyword">try</span> {</PRE></A>
7951
<TD align="right" class="lineCountHilight">
7955
<TD align="right" class="coverageCountHilight">
7956
<A title="Line 490: statement not executed."> 0</A>
7959
<TD class="srcHilight">
7960
<SPAN class="srcHilight">
7961
<A title="Line 490: statement not executed."><PRE class="srcLine"> AbstractConcurrentReadCache t = (AbstractConcurrentReadCache) <span class="keyword">super</span>.clone();</PRE></A>
7969
<TD align="right" class="lineCountHilight">
7973
<TD align="right" class="coverageCountHilight">
7974
<A title="Line 491: statement not executed."> 0</A>
7977
<TD class="srcHilight">
7978
<SPAN class="srcHilight">
7979
<A title="Line 491: statement not executed."><PRE class="srcLine"> t.keySet = <span class="keyword">null</span>;</PRE></A>
7987
<TD align="right" class="lineCountHilight">
7991
<TD align="right" class="coverageCountHilight">
7992
<A title="Line 492: statement not executed."> 0</A>
7995
<TD class="srcHilight">
7996
<SPAN class="srcHilight">
7997
<A title="Line 492: statement not executed."><PRE class="srcLine"> t.entrySet = <span class="keyword">null</span>;</PRE></A>
8005
<TD align="right" class="lineCountHilight">
8009
<TD align="right" class="coverageCountHilight">
8010
<A title="Line 493: statement not executed."> 0</A>
8013
<TD class="srcHilight">
8014
<SPAN class="srcHilight">
8015
<A title="Line 493: statement not executed."><PRE class="srcLine"> t.values = <span class="keyword">null</span>;</PRE></A>
8023
<TD align="right" class="lineCount">
8027
<TD align="right" class="coverageCount">
8031
<TD class="srcLine">
8032
<PRE class="srcLine"> </PRE>
8039
<TD align="right" class="lineCountHilight">
8043
<TD align="right" class="coverageCountHilight">
8044
<A title="Line 495: statement not executed."> 0</A>
8047
<TD class="srcHilight">
8048
<SPAN class="srcHilight">
8049
<A title="Line 495: statement not executed."><PRE class="srcLine"> Entry[] tab = table;</PRE></A>
8057
<TD align="right" class="lineCountHilight">
8061
<TD align="right" class="coverageCountHilight">
8062
<A title="Line 496: statement not executed."> 0</A>
8065
<TD class="srcHilight">
8066
<SPAN class="srcHilight">
8067
<A title="Line 496: statement not executed."><PRE class="srcLine"> t.table = <span class="keyword">new</span> Entry[tab.length];</PRE></A>
8075
<TD align="right" class="lineCount">
8079
<TD align="right" class="coverageCount">
8083
<TD class="srcLine">
8084
<PRE class="srcLine"> </PRE>
8091
<TD align="right" class="lineCountHilight">
8095
<TD align="right" class="coverageCountHilight">
8096
<A title="Line 498: statement not executed."> 0</A>
8099
<TD class="srcHilight">
8100
<SPAN class="srcHilight">
8101
<A title="Line 498: statement not executed."><PRE class="srcLine"> Entry[] ttab = t.table;</PRE></A>
8109
<TD align="right" class="lineCount">
8113
<TD align="right" class="coverageCount">
8117
<TD class="srcLine">
8118
<PRE class="srcLine"> </PRE>
8125
<TD align="right" class="lineCountHilight">
8129
<TD align="right" class="coverageCountHilight">
8130
<A title="Line 500: statement not executed."> 0</A>
8133
<TD class="srcHilight">
8134
<SPAN class="srcHilight">
8135
<A title="Line 500: statement not executed."><PRE class="srcLine"> <span class="keyword">for</span> (<span class="keyword">int</span> i = 0; i < tab.length; ++i) {</PRE></A>
8143
<TD align="right" class="lineCountHilight">
8147
<TD align="right" class="coverageCountHilight">
8148
<A title="Line 501: statement not executed."> 0</A>
8151
<TD class="srcHilight">
8152
<SPAN class="srcHilight">
8153
<A title="Line 501: statement not executed."><PRE class="srcLine"> Entry first = tab[i];</PRE></A>
8161
<TD align="right" class="lineCount">
8165
<TD align="right" class="coverageCount">
8169
<TD class="srcLine">
8170
<PRE class="srcLine"> </PRE>
8177
<TD align="right" class="lineCountHilight">
8181
<TD align="right" class="coverageCountHilight">
8182
<A title="Line 503: statement not executed."> 0</A>
8185
<TD class="srcHilight">
8186
<SPAN class="srcHilight">
8187
<A title="Line 503: statement not executed."><PRE class="srcLine"> <span class="keyword">if</span> (first != <span class="keyword">null</span>) {</PRE></A>
8195
<TD align="right" class="lineCountHilight">
8199
<TD align="right" class="coverageCountHilight">
8200
<A title="Line 504: statement not executed."> 0</A>
8203
<TD class="srcHilight">
8204
<SPAN class="srcHilight">
8205
<A title="Line 504: statement not executed."><PRE class="srcLine"> ttab[i] = (Entry) (first.clone());</PRE></A>
8213
<TD align="right" class="lineCount">
8217
<TD align="right" class="coverageCount">
8221
<TD class="srcLine">
8222
<PRE class="srcLine"> }</PRE>
8229
<TD align="right" class="lineCount">
8233
<TD align="right" class="coverageCount">
8237
<TD class="srcLine">
8238
<PRE class="srcLine"> }</PRE>
8245
<TD align="right" class="lineCount">
8249
<TD align="right" class="coverageCount">
8253
<TD class="srcLine">
8254
<PRE class="srcLine"> </PRE>
8261
<TD align="right" class="lineCountHilight">
8265
<TD align="right" class="coverageCountHilight">
8266
<A title="Line 508: statement not executed."> 0</A>
8269
<TD class="srcHilight">
8270
<SPAN class="srcHilight">
8271
<A title="Line 508: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> t;</PRE></A>
8279
<TD align="right" class="lineCount">
8283
<TD align="right" class="coverageCount">
8287
<TD class="srcLine">
8288
<PRE class="srcLine"> } <span class="keyword">catch</span> (CloneNotSupportedException e) {</PRE>
8295
<TD align="right" class="lineCount">
8299
<TD align="right" class="coverageCount">
8303
<TD class="srcLine">
8304
<PRE class="srcLine"> <span class="comment">// this shouldn't happen, since we are Cloneable</span></PRE>
8311
<TD align="right" class="lineCountHilight">
8315
<TD align="right" class="coverageCountHilight">
8316
<A title="Line 511: statement not executed."> 0</A>
8319
<TD class="srcHilight">
8320
<SPAN class="srcHilight">
8321
<A title="Line 511: statement not executed."><PRE class="srcLine"> <span class="keyword">throw</span> <span class="keyword">new</span> InternalError();</PRE></A>
8329
<TD align="right" class="lineCount">
8333
<TD align="right" class="coverageCount">
8337
<TD class="srcLine">
8338
<PRE class="srcLine"> }</PRE>
8345
<TD align="right" class="lineCount">
8349
<TD align="right" class="coverageCount">
8353
<TD class="srcLine">
8354
<PRE class="srcLine"> }</PRE>
8361
<TD align="right" class="lineCount">
8365
<TD align="right" class="coverageCount">
8369
<TD class="srcLine">
8370
<PRE class="srcLine"> </PRE>
8377
<TD align="right" class="lineCount">
8381
<TD align="right" class="coverageCount">
8385
<TD class="srcLine">
8386
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
8393
<TD align="right" class="lineCount">
8397
<TD align="right" class="coverageCount">
8401
<TD class="srcLine">
8402
<PRE class="srcLine"> <span class="comment"> * Tests if some key maps into the specified value in this table.</span></PRE>
8409
<TD align="right" class="lineCount">
8413
<TD align="right" class="coverageCount">
8417
<TD class="srcLine">
8418
<PRE class="srcLine"> <span class="comment"> * This operation is more expensive than the <code>containsKey</code></span></PRE>
8425
<TD align="right" class="lineCount">
8429
<TD align="right" class="coverageCount">
8433
<TD class="srcLine">
8434
<PRE class="srcLine"> <span class="comment"> * method.<p></span></PRE>
8441
<TD align="right" class="lineCount">
8445
<TD align="right" class="coverageCount">
8449
<TD class="srcLine">
8450
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
8457
<TD align="right" class="lineCount">
8461
<TD align="right" class="coverageCount">
8465
<TD class="srcLine">
8466
<PRE class="srcLine"> <span class="comment"> * Note that this method is identical in functionality to containsValue,</span></PRE>
8473
<TD align="right" class="lineCount">
8477
<TD align="right" class="coverageCount">
8481
<TD class="srcLine">
8482
<PRE class="srcLine"> <span class="comment"> * (which is part of the Map interface in the collections framework).</span></PRE>
8489
<TD align="right" class="lineCount">
8493
<TD align="right" class="coverageCount">
8497
<TD class="srcLine">
8498
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
8505
<TD align="right" class="lineCount">
8509
<TD align="right" class="coverageCount">
8513
<TD class="srcLine">
8514
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@param</span> value a value to search for.</span></PRE>
8521
<TD align="right" class="lineCount">
8525
<TD align="right" class="coverageCount">
8529
<TD class="srcLine">
8530
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@return</span> <code>true</code> if and only if some key maps to the</span></PRE>
8537
<TD align="right" class="lineCount">
8541
<TD align="right" class="coverageCount">
8545
<TD class="srcLine">
8546
<PRE class="srcLine"> <span class="comment"> * <code>value</code> argument in this table as</span></PRE>
8553
<TD align="right" class="lineCount">
8557
<TD align="right" class="coverageCount">
8561
<TD class="srcLine">
8562
<PRE class="srcLine"> <span class="comment"> * determined by the <tt>equals</tt> method;</span></PRE>
8569
<TD align="right" class="lineCount">
8573
<TD align="right" class="coverageCount">
8577
<TD class="srcLine">
8578
<PRE class="srcLine"> <span class="comment"> * <code>false</code> otherwise.</span></PRE>
8585
<TD align="right" class="lineCount">
8589
<TD align="right" class="coverageCount">
8593
<TD class="srcLine">
8594
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@exception</span> NullPointerException if the value is <code>null</code>.</span></PRE>
8601
<TD align="right" class="lineCount">
8605
<TD align="right" class="coverageCount">
8609
<TD class="srcLine">
8610
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@see</span> #containsKey(Object)</span></PRE>
8617
<TD align="right" class="lineCount">
8621
<TD align="right" class="coverageCount">
8625
<TD class="srcLine">
8626
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@see</span> #containsValue(Object)</span></PRE>
8633
<TD align="right" class="lineCount">
8637
<TD align="right" class="coverageCount">
8641
<TD class="srcLine">
8642
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@see</span> Map</span></PRE>
8649
<TD align="right" class="lineCount">
8653
<TD align="right" class="coverageCount">
8657
<TD class="srcLine">
8658
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
8665
<TD align="right" class="lineCountHilight">
8669
<TD align="right" class="coverageCountHilight">
8670
<A title="Line 533: method not entered."> 0</A>
8673
<TD class="srcHilight">
8674
<SPAN class="srcHilight">
8675
<A title="Line 533: method not entered."><PRE class="srcLine"> <span class="keyword">public</span> <span class="keyword">boolean</span> contains(Object value) {</PRE></A>
8683
<TD align="right" class="lineCountHilight">
8687
<TD align="right" class="coverageCountHilight">
8688
<A title="Line 534: statement not executed."> 0</A>
8691
<TD class="srcHilight">
8692
<SPAN class="srcHilight">
8693
<A title="Line 534: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> containsValue(value);</PRE></A>
8701
<TD align="right" class="lineCount">
8705
<TD align="right" class="coverageCount">
8709
<TD class="srcLine">
8710
<PRE class="srcLine"> }</PRE>
8717
<TD align="right" class="lineCount">
8721
<TD align="right" class="coverageCount">
8725
<TD class="srcLine">
8726
<PRE class="srcLine"> </PRE>
8733
<TD align="right" class="lineCount">
8737
<TD align="right" class="coverageCount">
8741
<TD class="srcLine">
8742
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
8749
<TD align="right" class="lineCount">
8753
<TD align="right" class="coverageCount">
8757
<TD class="srcLine">
8758
<PRE class="srcLine"> <span class="comment"> * Tests if the specified object is a key in this table.</span></PRE>
8765
<TD align="right" class="lineCount">
8769
<TD align="right" class="coverageCount">
8773
<TD class="srcLine">
8774
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
8781
<TD align="right" class="lineCount">
8785
<TD align="right" class="coverageCount">
8789
<TD class="srcLine">
8790
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@param</span> key possible key.</span></PRE>
8797
<TD align="right" class="lineCount">
8801
<TD align="right" class="coverageCount">
8805
<TD class="srcLine">
8806
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@return</span> <code>true</code> if and only if the specified object</span></PRE>
8813
<TD align="right" class="lineCount">
8817
<TD align="right" class="coverageCount">
8821
<TD class="srcLine">
8822
<PRE class="srcLine"> <span class="comment"> * is a key in this table, as determined by the</span></PRE>
8829
<TD align="right" class="lineCount">
8833
<TD align="right" class="coverageCount">
8837
<TD class="srcLine">
8838
<PRE class="srcLine"> <span class="comment"> * <tt>equals</tt> method; <code>false</code> otherwise.</span></PRE>
8845
<TD align="right" class="lineCount">
8849
<TD align="right" class="coverageCount">
8853
<TD class="srcLine">
8854
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@exception</span> NullPointerException if the key is</span></PRE>
8861
<TD align="right" class="lineCount">
8865
<TD align="right" class="coverageCount">
8869
<TD class="srcLine">
8870
<PRE class="srcLine"> <span class="comment"> * <code>null</code>.</span></PRE>
8877
<TD align="right" class="lineCount">
8881
<TD align="right" class="coverageCount">
8885
<TD class="srcLine">
8886
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@see</span> #contains(Object)</span></PRE>
8893
<TD align="right" class="lineCount">
8897
<TD align="right" class="coverageCount">
8901
<TD class="srcLine">
8902
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
8909
<TD align="right" class="lineCountHilight">
8913
<TD align="right" class="lineCountHilight">
8914
<A title="Line 548: method entered 18 times."> 18</A>
8917
<TD class="srcLine">
8918
<A title="Line 548: method entered 18 times."><PRE class="srcLine"> <span class="keyword">public</span> <span class="keyword">boolean</span> containsKey(Object key) {</PRE></A>
8925
<TD align="right" class="lineCountHilight">
8929
<TD align="right" class="lineCountHilight">
8930
<A title="Line 549: statement executed 18 times."> 18</A>
8933
<TD class="srcLine">
8934
<A title="Line 549: statement executed 18 times."><PRE class="srcLine"> <span class="keyword">return</span> get(key) != <span class="keyword">null</span>;</PRE></A>
8941
<TD align="right" class="lineCount">
8945
<TD align="right" class="coverageCount">
8949
<TD class="srcLine">
8950
<PRE class="srcLine"> </PRE>
8957
<TD align="right" class="lineCount">
8961
<TD align="right" class="coverageCount">
8965
<TD class="srcLine">
8966
<PRE class="srcLine"> <span class="comment">/** OpenSymphony BEGIN */</span></PRE>
8973
<TD align="right" class="lineCount">
8977
<TD align="right" class="coverageCount">
8981
<TD class="srcLine">
8982
<PRE class="srcLine"> </PRE>
8989
<TD align="right" class="lineCount">
8993
<TD align="right" class="coverageCount">
8997
<TD class="srcLine">
8998
<PRE class="srcLine"> <span class="comment">// TODO: Also check the persistence?</span></PRE>
9005
<TD align="right" class="lineCount">
9009
<TD align="right" class="coverageCount">
9013
<TD class="srcLine">
9014
<PRE class="srcLine"> </PRE>
9021
<TD align="right" class="lineCount">
9025
<TD align="right" class="coverageCount">
9029
<TD class="srcLine">
9030
<PRE class="srcLine"> <span class="comment">/** OpenSymphony END */</span></PRE>
9037
<TD align="right" class="lineCount">
9041
<TD align="right" class="coverageCount">
9045
<TD class="srcLine">
9046
<PRE class="srcLine"> }</PRE>
9053
<TD align="right" class="lineCount">
9057
<TD align="right" class="coverageCount">
9061
<TD class="srcLine">
9062
<PRE class="srcLine"> </PRE>
9069
<TD align="right" class="lineCount">
9073
<TD align="right" class="coverageCount">
9077
<TD class="srcLine">
9078
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
9085
<TD align="right" class="lineCount">
9089
<TD align="right" class="coverageCount">
9093
<TD class="srcLine">
9094
<PRE class="srcLine"> <span class="comment"> * Returns <tt>true</tt> if this map maps one or more keys to the</span></PRE>
9101
<TD align="right" class="lineCount">
9105
<TD align="right" class="coverageCount">
9109
<TD class="srcLine">
9110
<PRE class="srcLine"> <span class="comment"> * specified value. Note: This method requires a full internal</span></PRE>
9117
<TD align="right" class="lineCount">
9121
<TD align="right" class="coverageCount">
9125
<TD class="srcLine">
9126
<PRE class="srcLine"> <span class="comment"> * traversal of the hash table, and so is much slower than</span></PRE>
9133
<TD align="right" class="lineCount">
9137
<TD align="right" class="coverageCount">
9141
<TD class="srcLine">
9142
<PRE class="srcLine"> <span class="comment"> * method <tt>containsKey</tt>.</span></PRE>
9149
<TD align="right" class="lineCount">
9153
<TD align="right" class="coverageCount">
9157
<TD class="srcLine">
9158
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
9165
<TD align="right" class="lineCount">
9169
<TD align="right" class="coverageCount">
9173
<TD class="srcLine">
9174
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@param</span> value value whose presence in this map is to be tested.</span></PRE>
9181
<TD align="right" class="lineCount">
9185
<TD align="right" class="coverageCount">
9189
<TD class="srcLine">
9190
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@return</span> <tt>true</tt> if this map maps one or more keys to the</span></PRE>
9197
<TD align="right" class="lineCount">
9201
<TD align="right" class="coverageCount">
9205
<TD class="srcLine">
9206
<PRE class="srcLine"> <span class="comment"> * specified value.</span></PRE>
9213
<TD align="right" class="lineCount">
9217
<TD align="right" class="coverageCount">
9221
<TD class="srcLine">
9222
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@exception</span> NullPointerException if the value is <code>null</code>.</span></PRE>
9229
<TD align="right" class="lineCount">
9233
<TD align="right" class="coverageCount">
9237
<TD class="srcLine">
9238
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
9245
<TD align="right" class="lineCountHilight">
9249
<TD align="right" class="coverageCountHilight">
9250
<A title="Line 569: method not entered."> 0</A>
9253
<TD class="srcHilight">
9254
<SPAN class="srcHilight">
9255
<A title="Line 569: method not entered."><PRE class="srcLine"> <span class="keyword">public</span> <span class="keyword">boolean</span> containsValue(Object value) {</PRE></A>
9263
<TD align="right" class="lineCountHilight">
9267
<TD align="right" class="coverageCountHilight">
9268
<A title="Line 570: statement not executed."> 0</A>
9271
<TD class="srcHilight">
9272
<SPAN class="srcHilight">
9273
<A title="Line 570: statement not executed."><PRE class="srcLine"> <span class="keyword">if</span> (value == <span class="keyword">null</span>) {</PRE></A>
9281
<TD align="right" class="lineCountHilight">
9285
<TD align="right" class="coverageCountHilight">
9286
<A title="Line 571: statement not executed."> 0</A>
9289
<TD class="srcHilight">
9290
<SPAN class="srcHilight">
9291
<A title="Line 571: statement not executed."><PRE class="srcLine"> <span class="keyword">throw</span> <span class="keyword">new</span> NullPointerException();</PRE></A>
9299
<TD align="right" class="lineCount">
9303
<TD align="right" class="coverageCount">
9307
<TD class="srcLine">
9308
<PRE class="srcLine"> }</PRE>
9315
<TD align="right" class="lineCount">
9319
<TD align="right" class="coverageCount">
9323
<TD class="srcLine">
9324
<PRE class="srcLine"> </PRE>
9331
<TD align="right" class="lineCountHilight">
9335
<TD align="right" class="coverageCountHilight">
9336
<A title="Line 574: statement not executed."> 0</A>
9339
<TD class="srcHilight">
9340
<SPAN class="srcHilight">
9341
<A title="Line 574: statement not executed."><PRE class="srcLine"> Entry[] tab = getTableForReading();</PRE></A>
9349
<TD align="right" class="lineCount">
9353
<TD align="right" class="coverageCount">
9357
<TD class="srcLine">
9358
<PRE class="srcLine"> </PRE>
9365
<TD align="right" class="lineCountHilight">
9369
<TD align="right" class="coverageCountHilight">
9370
<A title="Line 576: statement not executed."> 0</A>
9373
<TD class="srcHilight">
9374
<SPAN class="srcHilight">
9375
<A title="Line 576: statement not executed."><PRE class="srcLine"> <span class="keyword">for</span> (<span class="keyword">int</span> i = 0; i < tab.length; ++i) {</PRE></A>
9383
<TD align="right" class="lineCountHilight">
9387
<TD align="right" class="coverageCountHilight">
9388
<A title="Line 577: statement not executed."> 0</A>
9391
<TD class="srcHilight">
9392
<SPAN class="srcHilight">
9393
<A title="Line 577: statement not executed."><PRE class="srcLine"> <span class="keyword">for</span> (Entry e = tab[i]; e != <span class="keyword">null</span>; e = e.next) {</PRE></A>
9401
<TD align="right" class="lineCountHilight">
9405
<TD align="right" class="coverageCountHilight">
9406
<A title="Line 578: statement not executed."> 0</A>
9409
<TD class="srcHilight">
9410
<SPAN class="srcHilight">
9411
<A title="Line 578: statement not executed."><PRE class="srcLine"> Object v = e.value;</PRE></A>
9419
<TD align="right" class="lineCount">
9423
<TD align="right" class="coverageCount">
9427
<TD class="srcLine">
9428
<PRE class="srcLine"> </PRE>
9435
<TD align="right" class="lineCountHilight">
9439
<TD align="right" class="coverageCountHilight">
9440
<A title="Line 580: statement not executed."> 0</A>
9443
<TD class="srcHilight">
9444
<SPAN class="srcHilight">
9445
<A title="Line 580: statement not executed."><PRE class="srcLine"> <span class="keyword">if</span> ((v != <span class="keyword">null</span>) && value.equals(v)) {</PRE></A>
9453
<TD align="right" class="lineCountHilight">
9457
<TD align="right" class="coverageCountHilight">
9458
<A title="Line 581: statement not executed."> 0</A>
9461
<TD class="srcHilight">
9462
<SPAN class="srcHilight">
9463
<A title="Line 581: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> <span class="keyword">true</span>;</PRE></A>
9471
<TD align="right" class="lineCount">
9475
<TD align="right" class="coverageCount">
9479
<TD class="srcLine">
9480
<PRE class="srcLine"> }</PRE>
9487
<TD align="right" class="lineCount">
9491
<TD align="right" class="coverageCount">
9495
<TD class="srcLine">
9496
<PRE class="srcLine"> }</PRE>
9503
<TD align="right" class="lineCount">
9507
<TD align="right" class="coverageCount">
9511
<TD class="srcLine">
9512
<PRE class="srcLine"> }</PRE>
9519
<TD align="right" class="lineCount">
9523
<TD align="right" class="coverageCount">
9527
<TD class="srcLine">
9528
<PRE class="srcLine"> </PRE>
9535
<TD align="right" class="lineCountHilight">
9539
<TD align="right" class="coverageCountHilight">
9540
<A title="Line 586: statement not executed."> 0</A>
9543
<TD class="srcHilight">
9544
<SPAN class="srcHilight">
9545
<A title="Line 586: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> <span class="keyword">false</span>;</PRE></A>
9553
<TD align="right" class="lineCount">
9557
<TD align="right" class="coverageCount">
9561
<TD class="srcLine">
9562
<PRE class="srcLine"> }</PRE>
9569
<TD align="right" class="lineCount">
9573
<TD align="right" class="coverageCount">
9577
<TD class="srcLine">
9578
<PRE class="srcLine"> </PRE>
9585
<TD align="right" class="lineCount">
9589
<TD align="right" class="coverageCount">
9593
<TD class="srcLine">
9594
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
9601
<TD align="right" class="lineCount">
9605
<TD align="right" class="coverageCount">
9609
<TD class="srcLine">
9610
<PRE class="srcLine"> <span class="comment"> * Returns an enumeration of the values in this table.</span></PRE>
9617
<TD align="right" class="lineCount">
9621
<TD align="right" class="coverageCount">
9625
<TD class="srcLine">
9626
<PRE class="srcLine"> <span class="comment"> * Use the Enumeration methods on the returned object to fetch the elements</span></PRE>
9633
<TD align="right" class="lineCount">
9637
<TD align="right" class="coverageCount">
9641
<TD class="srcLine">
9642
<PRE class="srcLine"> <span class="comment"> * sequentially.</span></PRE>
9649
<TD align="right" class="lineCount">
9653
<TD align="right" class="coverageCount">
9657
<TD class="srcLine">
9658
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
9665
<TD align="right" class="lineCount">
9669
<TD align="right" class="coverageCount">
9673
<TD class="srcLine">
9674
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@return</span> an enumeration of the values in this table.</span></PRE>
9681
<TD align="right" class="lineCount">
9685
<TD align="right" class="coverageCount">
9689
<TD class="srcLine">
9690
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@see</span> java.util.Enumeration</span></PRE>
9697
<TD align="right" class="lineCount">
9701
<TD align="right" class="coverageCount">
9705
<TD class="srcLine">
9706
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@see</span> #keys()</span></PRE>
9713
<TD align="right" class="lineCount">
9717
<TD align="right" class="coverageCount">
9721
<TD class="srcLine">
9722
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@see</span> #values()</span></PRE>
9729
<TD align="right" class="lineCount">
9733
<TD align="right" class="coverageCount">
9737
<TD class="srcLine">
9738
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@see</span> Map</span></PRE>
9745
<TD align="right" class="lineCount">
9749
<TD align="right" class="coverageCount">
9753
<TD class="srcLine">
9754
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
9761
<TD align="right" class="lineCountHilight">
9765
<TD align="right" class="coverageCountHilight">
9766
<A title="Line 600: method not entered."> 0</A>
9769
<TD class="srcHilight">
9770
<SPAN class="srcHilight">
9771
<A title="Line 600: method not entered."><PRE class="srcLine"> <span class="keyword">public</span> Enumeration elements() {</PRE></A>
9779
<TD align="right" class="lineCountHilight">
9783
<TD align="right" class="coverageCountHilight">
9784
<A title="Line 601: statement not executed."> 0</A>
9787
<TD class="srcHilight">
9788
<SPAN class="srcHilight">
9789
<A title="Line 601: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> <span class="keyword">new</span> ValueIterator();</PRE></A>
9797
<TD align="right" class="lineCount">
9801
<TD align="right" class="coverageCount">
9805
<TD class="srcLine">
9806
<PRE class="srcLine"> }</PRE>
9813
<TD align="right" class="lineCount">
9817
<TD align="right" class="coverageCount">
9821
<TD class="srcLine">
9822
<PRE class="srcLine"> </PRE>
9829
<TD align="right" class="lineCount">
9833
<TD align="right" class="coverageCount">
9837
<TD class="srcLine">
9838
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
9845
<TD align="right" class="lineCount">
9849
<TD align="right" class="coverageCount">
9853
<TD class="srcLine">
9854
<PRE class="srcLine"> <span class="comment"> * Returns a collection view of the mappings contained in this map.</span></PRE>
9861
<TD align="right" class="lineCount">
9865
<TD align="right" class="coverageCount">
9869
<TD class="srcLine">
9870
<PRE class="srcLine"> <span class="comment"> * Each element in the returned collection is a <tt>Map.Entry</tt>. The</span></PRE>
9877
<TD align="right" class="lineCount">
9881
<TD align="right" class="coverageCount">
9885
<TD class="srcLine">
9886
<PRE class="srcLine"> <span class="comment"> * collection is backed by the map, so changes to the map are reflected in</span></PRE>
9893
<TD align="right" class="lineCount">
9897
<TD align="right" class="coverageCount">
9901
<TD class="srcLine">
9902
<PRE class="srcLine"> <span class="comment"> * the collection, and vice-versa. The collection supports element</span></PRE>
9909
<TD align="right" class="lineCount">
9913
<TD align="right" class="coverageCount">
9917
<TD class="srcLine">
9918
<PRE class="srcLine"> <span class="comment"> * removal, which removes the corresponding mapping from the map, via the</span></PRE>
9925
<TD align="right" class="lineCount">
9929
<TD align="right" class="coverageCount">
9933
<TD class="srcLine">
9934
<PRE class="srcLine"> <span class="comment"> * <tt>Iterator.remove</tt>, <tt>Collection.remove</tt>,</span></PRE>
9941
<TD align="right" class="lineCount">
9945
<TD align="right" class="coverageCount">
9949
<TD class="srcLine">
9950
<PRE class="srcLine"> <span class="comment"> * <tt>removeAll</tt>, <tt>retainAll</tt>, and <tt>clear</tt> operations.</span></PRE>
9957
<TD align="right" class="lineCount">
9961
<TD align="right" class="coverageCount">
9965
<TD class="srcLine">
9966
<PRE class="srcLine"> <span class="comment"> * It does not support the <tt>add</tt> or <tt>addAll</tt> operations.</span></PRE>
9973
<TD align="right" class="lineCount">
9977
<TD align="right" class="coverageCount">
9981
<TD class="srcLine">
9982
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
9989
<TD align="right" class="lineCount">
9993
<TD align="right" class="coverageCount">
9997
<TD class="srcLine">
9998
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@return</span> a collection view of the mappings contained in this map.</span></PRE>
10005
<TD align="right" class="lineCount">
10009
<TD align="right" class="coverageCount">
10013
<TD class="srcLine">
10014
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
10021
<TD align="right" class="lineCountHilight">
10025
<TD align="right" class="lineCountHilight">
10026
<A title="Line 616: method entered 18 times."> 18</A>
10029
<TD class="srcLine">
10030
<A title="Line 616: method entered 18 times."><PRE class="srcLine"> <span class="keyword">public</span> Set entrySet() {</PRE></A>
10037
<TD align="right" class="lineCountHilight">
10041
<TD align="right" class="lineCountHilight">
10042
<A title="Line 617: statement executed 18 times."> 18</A>
10045
<TD class="srcLine">
10046
<A title="Line 617: statement executed 18 times."><PRE class="srcLine"> Set es = entrySet;</PRE></A>
10053
<TD align="right" class="lineCount">
10057
<TD align="right" class="coverageCount">
10061
<TD class="srcLine">
10062
<PRE class="srcLine"> </PRE>
10069
<TD align="right" class="lineCountHilight">
10073
<TD align="right" class="coverageCountHilight">
10074
<A title="Line 619: expression evaluated to true 0 times, false 18 times."> 18</A>
10077
<TD class="srcHilight">
10078
<SPAN class="srcHilight">
10079
<A title="Line 619: expression evaluated to true 0 times, false 18 times."><PRE class="srcLine"> <span class="keyword">if</span> (es != <span class="keyword">null</span>) {</PRE></A>
10087
<TD align="right" class="lineCountHilight">
10091
<TD align="right" class="coverageCountHilight">
10092
<A title="Line 620: statement not executed."> 0</A>
10095
<TD class="srcHilight">
10096
<SPAN class="srcHilight">
10097
<A title="Line 620: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> es;</PRE></A>
10105
<TD align="right" class="lineCount">
10109
<TD align="right" class="coverageCount">
10113
<TD class="srcLine">
10114
<PRE class="srcLine"> } <span class="keyword">else</span> {</PRE>
10121
<TD align="right" class="lineCountHilight">
10125
<TD align="right" class="lineCountHilight">
10126
<A title="Line 622: statement executed 18 times."> 18</A>
10129
<TD class="srcLine">
10130
<A title="Line 622: statement executed 18 times."><PRE class="srcLine"> <span class="keyword">return</span> entrySet = <span class="keyword">new</span> AbstractSet() {</PRE></A>
10137
<TD align="right" class="lineCountHilight">
10141
<TD align="right" class="lineCountHilight">
10142
<A title="Line 623: method entered 18 times."> 18</A>
10145
<TD class="srcLine">
10146
<A title="Line 623: method entered 18 times."><PRE class="srcLine"> <span class="keyword">public</span> Iterator iterator() {</PRE></A>
10153
<TD align="right" class="lineCountHilight">
10157
<TD align="right" class="lineCountHilight">
10158
<A title="Line 624: statement executed 18 times."> 18</A>
10161
<TD class="srcLine">
10162
<A title="Line 624: statement executed 18 times."><PRE class="srcLine"> <span class="keyword">return</span> <span class="keyword">new</span> HashIterator();</PRE></A>
10169
<TD align="right" class="lineCount">
10173
<TD align="right" class="coverageCount">
10177
<TD class="srcLine">
10178
<PRE class="srcLine"> }</PRE>
10185
<TD align="right" class="lineCount">
10189
<TD align="right" class="coverageCount">
10193
<TD class="srcLine">
10194
<PRE class="srcLine"> </PRE>
10201
<TD align="right" class="lineCountHilight">
10205
<TD align="right" class="coverageCountHilight">
10206
<A title="Line 627: method not entered."> 0</A>
10209
<TD class="srcHilight">
10210
<SPAN class="srcHilight">
10211
<A title="Line 627: method not entered."><PRE class="srcLine"> <span class="keyword">public</span> <span class="keyword">boolean</span> contains(Object o) {</PRE></A>
10219
<TD align="right" class="lineCountHilight">
10223
<TD align="right" class="coverageCountHilight">
10224
<A title="Line 628: statement not executed."> 0</A>
10227
<TD class="srcHilight">
10228
<SPAN class="srcHilight">
10229
<A title="Line 628: statement not executed."><PRE class="srcLine"> <span class="keyword">if</span> (!(o <span class="keyword">instanceof</span> Map.Entry)) {</PRE></A>
10237
<TD align="right" class="lineCountHilight">
10241
<TD align="right" class="coverageCountHilight">
10242
<A title="Line 629: statement not executed."> 0</A>
10245
<TD class="srcHilight">
10246
<SPAN class="srcHilight">
10247
<A title="Line 629: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> <span class="keyword">false</span>;</PRE></A>
10255
<TD align="right" class="lineCount">
10259
<TD align="right" class="coverageCount">
10263
<TD class="srcLine">
10264
<PRE class="srcLine"> }</PRE>
10271
<TD align="right" class="lineCount">
10275
<TD align="right" class="coverageCount">
10279
<TD class="srcLine">
10280
<PRE class="srcLine"> </PRE>
10287
<TD align="right" class="lineCountHilight">
10291
<TD align="right" class="coverageCountHilight">
10292
<A title="Line 632: statement not executed."> 0</A>
10295
<TD class="srcHilight">
10296
<SPAN class="srcHilight">
10297
<A title="Line 632: statement not executed."><PRE class="srcLine"> Map.Entry entry = (Map.Entry) o;</PRE></A>
10305
<TD align="right" class="lineCountHilight">
10309
<TD align="right" class="coverageCountHilight">
10310
<A title="Line 633: statement not executed."> 0</A>
10313
<TD class="srcHilight">
10314
<SPAN class="srcHilight">
10315
<A title="Line 633: statement not executed."><PRE class="srcLine"> Object key = entry.getKey();</PRE></A>
10323
<TD align="right" class="lineCountHilight">
10327
<TD align="right" class="coverageCountHilight">
10328
<A title="Line 634: statement not executed."> 0</A>
10331
<TD class="srcHilight">
10332
<SPAN class="srcHilight">
10333
<A title="Line 634: statement not executed."><PRE class="srcLine"> Object v = AbstractConcurrentReadCache.<span class="keyword">this</span>.get(key);</PRE></A>
10341
<TD align="right" class="lineCount">
10345
<TD align="right" class="coverageCount">
10349
<TD class="srcLine">
10350
<PRE class="srcLine"> </PRE>
10357
<TD align="right" class="lineCountHilight">
10361
<TD align="right" class="coverageCountHilight">
10362
<A title="Line 636: statement not executed."> 0</A>
10365
<TD class="srcHilight">
10366
<SPAN class="srcHilight">
10367
<A title="Line 636: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> (v != <span class="keyword">null</span>) && v.equals(entry.getValue());</PRE></A>
10375
<TD align="right" class="lineCount">
10379
<TD align="right" class="coverageCount">
10383
<TD class="srcLine">
10384
<PRE class="srcLine"> }</PRE>
10391
<TD align="right" class="lineCount">
10395
<TD align="right" class="coverageCount">
10399
<TD class="srcLine">
10400
<PRE class="srcLine"> </PRE>
10407
<TD align="right" class="lineCountHilight">
10411
<TD align="right" class="coverageCountHilight">
10412
<A title="Line 639: method not entered."> 0</A>
10415
<TD class="srcHilight">
10416
<SPAN class="srcHilight">
10417
<A title="Line 639: method not entered."><PRE class="srcLine"> <span class="keyword">public</span> <span class="keyword">boolean</span> remove(Object o) {</PRE></A>
10425
<TD align="right" class="lineCountHilight">
10429
<TD align="right" class="coverageCountHilight">
10430
<A title="Line 640: statement not executed."> 0</A>
10433
<TD class="srcHilight">
10434
<SPAN class="srcHilight">
10435
<A title="Line 640: statement not executed."><PRE class="srcLine"> <span class="keyword">if</span> (!(o <span class="keyword">instanceof</span> Map.Entry)) {</PRE></A>
10443
<TD align="right" class="lineCountHilight">
10447
<TD align="right" class="coverageCountHilight">
10448
<A title="Line 641: statement not executed."> 0</A>
10451
<TD class="srcHilight">
10452
<SPAN class="srcHilight">
10453
<A title="Line 641: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> <span class="keyword">false</span>;</PRE></A>
10461
<TD align="right" class="lineCount">
10465
<TD align="right" class="coverageCount">
10469
<TD class="srcLine">
10470
<PRE class="srcLine"> }</PRE>
10477
<TD align="right" class="lineCount">
10481
<TD align="right" class="coverageCount">
10485
<TD class="srcLine">
10486
<PRE class="srcLine"> </PRE>
10493
<TD align="right" class="lineCountHilight">
10497
<TD align="right" class="coverageCountHilight">
10498
<A title="Line 644: statement not executed."> 0</A>
10501
<TD class="srcHilight">
10502
<SPAN class="srcHilight">
10503
<A title="Line 644: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> AbstractConcurrentReadCache.<span class="keyword">this</span>.findAndRemoveEntry((Map.Entry) o);</PRE></A>
10511
<TD align="right" class="lineCount">
10515
<TD align="right" class="coverageCount">
10519
<TD class="srcLine">
10520
<PRE class="srcLine"> }</PRE>
10527
<TD align="right" class="lineCount">
10531
<TD align="right" class="coverageCount">
10535
<TD class="srcLine">
10536
<PRE class="srcLine"> </PRE>
10543
<TD align="right" class="lineCountHilight">
10547
<TD align="right" class="coverageCountHilight">
10548
<A title="Line 647: method not entered."> 0</A>
10551
<TD class="srcHilight">
10552
<SPAN class="srcHilight">
10553
<A title="Line 647: method not entered."><PRE class="srcLine"> <span class="keyword">public</span> <span class="keyword">int</span> size() {</PRE></A>
10561
<TD align="right" class="lineCountHilight">
10565
<TD align="right" class="coverageCountHilight">
10566
<A title="Line 648: statement not executed."> 0</A>
10569
<TD class="srcHilight">
10570
<SPAN class="srcHilight">
10571
<A title="Line 648: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> AbstractConcurrentReadCache.<span class="keyword">this</span>.size();</PRE></A>
10579
<TD align="right" class="lineCount">
10583
<TD align="right" class="coverageCount">
10587
<TD class="srcLine">
10588
<PRE class="srcLine"> }</PRE>
10595
<TD align="right" class="lineCount">
10599
<TD align="right" class="coverageCount">
10603
<TD class="srcLine">
10604
<PRE class="srcLine"> </PRE>
10611
<TD align="right" class="lineCountHilight">
10615
<TD align="right" class="coverageCountHilight">
10616
<A title="Line 651: method not entered."> 0</A>
10619
<TD class="srcHilight">
10620
<SPAN class="srcHilight">
10621
<A title="Line 651: method not entered."><PRE class="srcLine"> <span class="keyword">public</span> <span class="keyword">void</span> clear() {</PRE></A>
10629
<TD align="right" class="lineCountHilight">
10633
<TD align="right" class="coverageCountHilight">
10634
<A title="Line 652: statement not executed."> 0</A>
10637
<TD class="srcHilight">
10638
<SPAN class="srcHilight">
10639
<A title="Line 652: statement not executed."><PRE class="srcLine"> AbstractConcurrentReadCache.<span class="keyword">this</span>.clear();</PRE></A>
10647
<TD align="right" class="lineCount">
10651
<TD align="right" class="coverageCount">
10655
<TD class="srcLine">
10656
<PRE class="srcLine"> }</PRE>
10663
<TD align="right" class="lineCount">
10667
<TD align="right" class="coverageCount">
10671
<TD class="srcLine">
10672
<PRE class="srcLine"> };</PRE>
10679
<TD align="right" class="lineCount">
10683
<TD align="right" class="coverageCount">
10687
<TD class="srcLine">
10688
<PRE class="srcLine"> }</PRE>
10695
<TD align="right" class="lineCount">
10699
<TD align="right" class="coverageCount">
10703
<TD class="srcLine">
10704
<PRE class="srcLine"> }</PRE>
10711
<TD align="right" class="lineCount">
10715
<TD align="right" class="coverageCount">
10719
<TD class="srcLine">
10720
<PRE class="srcLine"> </PRE>
10727
<TD align="right" class="lineCount">
10731
<TD align="right" class="coverageCount">
10735
<TD class="srcLine">
10736
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
10743
<TD align="right" class="lineCount">
10747
<TD align="right" class="coverageCount">
10751
<TD class="srcLine">
10752
<PRE class="srcLine"> <span class="comment"> * Returns the value to which the specified key is mapped in this table.</span></PRE>
10759
<TD align="right" class="lineCount">
10763
<TD align="right" class="coverageCount">
10767
<TD class="srcLine">
10768
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
10775
<TD align="right" class="lineCount">
10779
<TD align="right" class="coverageCount">
10783
<TD class="srcLine">
10784
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@param</span> key a key in the table.</span></PRE>
10791
<TD align="right" class="lineCount">
10795
<TD align="right" class="coverageCount">
10799
<TD class="srcLine">
10800
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@return</span> the value to which the key is mapped in this table;</span></PRE>
10807
<TD align="right" class="lineCount">
10811
<TD align="right" class="coverageCount">
10815
<TD class="srcLine">
10816
<PRE class="srcLine"> <span class="comment"> * <code>null</code> if the key is not mapped to any value in</span></PRE>
10823
<TD align="right" class="lineCount">
10827
<TD align="right" class="coverageCount">
10831
<TD class="srcLine">
10832
<PRE class="srcLine"> <span class="comment"> * this table.</span></PRE>
10839
<TD align="right" class="lineCount">
10843
<TD align="right" class="coverageCount">
10847
<TD class="srcLine">
10848
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@exception</span> NullPointerException if the key is</span></PRE>
10855
<TD align="right" class="lineCount">
10859
<TD align="right" class="coverageCount">
10863
<TD class="srcLine">
10864
<PRE class="srcLine"> <span class="comment"> * <code>null</code>.</span></PRE>
10871
<TD align="right" class="lineCount">
10875
<TD align="right" class="coverageCount">
10879
<TD class="srcLine">
10880
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@see</span> #put(Object, Object)</span></PRE>
10887
<TD align="right" class="lineCount">
10891
<TD align="right" class="coverageCount">
10895
<TD class="srcLine">
10896
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
10903
<TD align="right" class="lineCountHilight">
10907
<TD align="right" class="lineCountHilight">
10908
<A title="Line 669: method entered 644 times."> 644</A>
10911
<TD class="srcLine">
10912
<A title="Line 669: method entered 644 times."><PRE class="srcLine"> <span class="keyword">public</span> Object get(Object key) {</PRE></A>
10919
<TD align="right" class="lineCountHilight">
10923
<TD align="right" class="coverageCountHilight">
10924
<A title="Line 670: expression evaluated to true 0 times, false 644 times."> 644</A>
10927
<TD class="srcHilight">
10928
<SPAN class="srcHilight">
10929
<A title="Line 670: expression evaluated to true 0 times, false 644 times."><PRE class="srcLine"> <span class="keyword">if</span> (log.isDebugEnabled()) {</PRE></A>
10937
<TD align="right" class="lineCountHilight">
10941
<TD align="right" class="coverageCountHilight">
10942
<A title="Line 671: statement not executed."> 0</A>
10945
<TD class="srcHilight">
10946
<SPAN class="srcHilight">
10947
<A title="Line 671: statement not executed."><PRE class="srcLine"> log.debug(<span class="string">"get called (key="</span> + key + <span class="string">")"</span>);</PRE></A>
10955
<TD align="right" class="lineCount">
10959
<TD align="right" class="coverageCount">
10963
<TD class="srcLine">
10964
<PRE class="srcLine"> }</PRE>
10971
<TD align="right" class="lineCount">
10975
<TD align="right" class="coverageCount">
10979
<TD class="srcLine">
10980
<PRE class="srcLine"> </PRE>
10987
<TD align="right" class="lineCount">
10991
<TD align="right" class="coverageCount">
10995
<TD class="srcLine">
10996
<PRE class="srcLine"> <span class="comment">// throw null pointer exception if key null</span></PRE>
11003
<TD align="right" class="lineCountHilight">
11007
<TD align="right" class="lineCountHilight">
11008
<A title="Line 675: statement executed 644 times."> 644</A>
11011
<TD class="srcLine">
11012
<A title="Line 675: statement executed 644 times."><PRE class="srcLine"> <span class="keyword">int</span> hash = hash(key);</PRE></A>
11019
<TD align="right" class="lineCount">
11023
<TD align="right" class="coverageCount">
11027
<TD class="srcLine">
11028
<PRE class="srcLine"> </PRE>
11035
<TD align="right" class="lineCount">
11039
<TD align="right" class="coverageCount">
11043
<TD class="srcLine">
11044
<PRE class="srcLine"> <span class="comment">/*</span></PRE>
11051
<TD align="right" class="lineCount">
11055
<TD align="right" class="coverageCount">
11059
<TD class="srcLine">
11060
<PRE class="srcLine"> <span class="comment"> Start off at the apparently correct bin. If entry is found, we</span></PRE>
11067
<TD align="right" class="lineCount">
11071
<TD align="right" class="coverageCount">
11075
<TD class="srcLine">
11076
<PRE class="srcLine"> <span class="comment"> need to check after a barrier anyway. If not found, we need a</span></PRE>
11083
<TD align="right" class="lineCount">
11087
<TD align="right" class="coverageCount">
11091
<TD class="srcLine">
11092
<PRE class="srcLine"> <span class="comment"> barrier to check if we are actually in right bin. So either</span></PRE>
11099
<TD align="right" class="lineCount">
11103
<TD align="right" class="coverageCount">
11107
<TD class="srcLine">
11108
<PRE class="srcLine"> <span class="comment"> way, we encounter only one barrier unless we need to retry.</span></PRE>
11115
<TD align="right" class="lineCount">
11119
<TD align="right" class="coverageCount">
11123
<TD class="srcLine">
11124
<PRE class="srcLine"> <span class="comment"> And we only need to fully synchronize if there have been</span></PRE>
11131
<TD align="right" class="lineCount">
11135
<TD align="right" class="coverageCount">
11139
<TD class="srcLine">
11140
<PRE class="srcLine"> <span class="comment"> concurrent modifications.</span></PRE>
11147
<TD align="right" class="lineCount">
11151
<TD align="right" class="coverageCount">
11155
<TD class="srcLine">
11156
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
11163
<TD align="right" class="lineCountHilight">
11167
<TD align="right" class="lineCountHilight">
11168
<A title="Line 685: statement executed 626 times."> 626</A>
11171
<TD class="srcLine">
11172
<A title="Line 685: statement executed 626 times."><PRE class="srcLine"> Entry[] tab = table;</PRE></A>
11179
<TD align="right" class="lineCountHilight">
11183
<TD align="right" class="lineCountHilight">
11184
<A title="Line 686: statement executed 626 times."> 626</A>
11187
<TD class="srcLine">
11188
<A title="Line 686: statement executed 626 times."><PRE class="srcLine"> <span class="keyword">int</span> index = hash & (tab.length - 1);</PRE></A>
11195
<TD align="right" class="lineCountHilight">
11199
<TD align="right" class="lineCountHilight">
11200
<A title="Line 687: statement executed 626 times."> 626</A>
11203
<TD class="srcLine">
11204
<A title="Line 687: statement executed 626 times."><PRE class="srcLine"> Entry first = tab[index];</PRE></A>
11211
<TD align="right" class="lineCountHilight">
11215
<TD align="right" class="lineCountHilight">
11216
<A title="Line 688: statement executed 626 times."> 626</A>
11219
<TD class="srcLine">
11220
<A title="Line 688: statement executed 626 times."><PRE class="srcLine"> Entry e = first;</PRE></A>
11227
<TD align="right" class="lineCount">
11231
<TD align="right" class="coverageCount">
11235
<TD class="srcLine">
11236
<PRE class="srcLine"> </PRE>
11243
<TD align="right" class="lineCountHilight">
11247
<TD align="right" class="lineCountHilight">
11248
<A title="Line 690: statement executed 626 times."> 626</A>
11251
<TD class="srcLine">
11252
<A title="Line 690: statement executed 626 times."><PRE class="srcLine"> <span class="keyword">for</span> (;;) {</PRE></A>
11259
<TD align="right" class="lineCountHilight">
11263
<TD align="right" class="lineCountHilight">
11264
<A title="Line 691: statement executed 675 times."> 675</A>
11267
<TD class="srcLine">
11268
<A title="Line 691: statement executed 675 times."><PRE class="srcLine"> <span class="keyword">if</span> (e == <span class="keyword">null</span>) {</PRE></A>
11275
<TD align="right" class="lineCount">
11279
<TD align="right" class="coverageCount">
11283
<TD class="srcLine">
11284
<PRE class="srcLine"> <span class="comment">// If key apparently not there, check to</span></PRE>
11291
<TD align="right" class="lineCount">
11295
<TD align="right" class="coverageCount">
11299
<TD class="srcLine">
11300
<PRE class="srcLine"> <span class="comment">// make sure this was a valid read</span></PRE>
11307
<TD align="right" class="lineCountHilight">
11311
<TD align="right" class="lineCountHilight">
11312
<A title="Line 694: statement executed 218 times."> 218</A>
11315
<TD class="srcLine">
11316
<A title="Line 694: statement executed 218 times."><PRE class="srcLine"> tab = getTableForReading();</PRE></A>
11323
<TD align="right" class="lineCount">
11327
<TD align="right" class="coverageCount">
11331
<TD class="srcLine">
11332
<PRE class="srcLine"> </PRE>
11339
<TD align="right" class="lineCountHilight">
11343
<TD align="right" class="coverageCountHilight">
11344
<A title="Line 696: expression evaluated to true 218 times, false 0 times."> 218</A>
11347
<TD class="srcHilight">
11348
<SPAN class="srcHilight">
11349
<A title="Line 696: expression evaluated to true 218 times, false 0 times."><PRE class="srcLine"> <span class="keyword">if</span> (first == tab[index]) {</PRE></A>
11357
<TD align="right" class="lineCount">
11361
<TD align="right" class="coverageCount">
11365
<TD class="srcLine">
11366
<PRE class="srcLine"> <span class="comment">/** OpenSymphony BEGIN */</span></PRE>
11373
<TD align="right" class="lineCount">
11377
<TD align="right" class="coverageCount">
11381
<TD class="srcLine">
11382
<PRE class="srcLine"> </PRE>
11389
<TD align="right" class="lineCount">
11393
<TD align="right" class="coverageCount">
11397
<TD class="srcLine">
11398
<PRE class="srcLine"> <span class="comment">/* Previous code</span></PRE>
11405
<TD align="right" class="lineCount">
11409
<TD align="right" class="coverageCount">
11413
<TD class="srcLine">
11414
<PRE class="srcLine"> <span class="comment"> return null;*/</span></PRE>
11421
<TD align="right" class="lineCount">
11425
<TD align="right" class="coverageCount">
11429
<TD class="srcLine">
11430
<PRE class="srcLine"> </PRE>
11437
<TD align="right" class="lineCount">
11441
<TD align="right" class="coverageCount">
11445
<TD class="srcLine">
11446
<PRE class="srcLine"> <span class="comment">// Not in the table, try persistence</span></PRE>
11453
<TD align="right" class="lineCountHilight">
11457
<TD align="right" class="lineCountHilight">
11458
<A title="Line 703: statement executed 218 times."> 218</A>
11461
<TD class="srcLine">
11462
<A title="Line 703: statement executed 218 times."><PRE class="srcLine"> Object value = persistRetrieve(key);</PRE></A>
11469
<TD align="right" class="lineCount">
11473
<TD align="right" class="coverageCount">
11477
<TD class="srcLine">
11478
<PRE class="srcLine"> </PRE>
11485
<TD align="right" class="lineCountHilight">
11489
<TD align="right" class="lineCountHilight">
11490
<A title="Line 705: statement executed 218 times."> 218</A>
11493
<TD class="srcLine">
11494
<A title="Line 705: statement executed 218 times."><PRE class="srcLine"> <span class="keyword">if</span> (value != <span class="keyword">null</span>) {</PRE></A>
11501
<TD align="right" class="lineCount">
11505
<TD align="right" class="coverageCount">
11509
<TD class="srcLine">
11510
<PRE class="srcLine"> <span class="comment">// Update the map, but don't persist the data</span></PRE>
11517
<TD align="right" class="lineCountHilight">
11521
<TD align="right" class="lineCountHilight">
11522
<A title="Line 707: statement executed 27 times."> 27</A>
11525
<TD class="srcLine">
11526
<A title="Line 707: statement executed 27 times."><PRE class="srcLine"> put(key, value, <span class="keyword">false</span>);</PRE></A>
11533
<TD align="right" class="lineCount">
11537
<TD align="right" class="coverageCount">
11541
<TD class="srcLine">
11542
<PRE class="srcLine"> }</PRE>
11549
<TD align="right" class="lineCount">
11553
<TD align="right" class="coverageCount">
11557
<TD class="srcLine">
11558
<PRE class="srcLine"> </PRE>
11565
<TD align="right" class="lineCountHilight">
11569
<TD align="right" class="lineCountHilight">
11570
<A title="Line 710: statement executed 218 times."> 218</A>
11573
<TD class="srcLine">
11574
<A title="Line 710: statement executed 218 times."><PRE class="srcLine"> <span class="keyword">return</span> value;</PRE></A>
11581
<TD align="right" class="lineCount">
11585
<TD align="right" class="coverageCount">
11589
<TD class="srcLine">
11590
<PRE class="srcLine"> </PRE>
11597
<TD align="right" class="lineCount">
11601
<TD align="right" class="coverageCount">
11605
<TD class="srcLine">
11606
<PRE class="srcLine"> <span class="comment">/** OpenSymphony END */</span></PRE>
11613
<TD align="right" class="lineCount">
11617
<TD align="right" class="coverageCount">
11621
<TD class="srcLine">
11622
<PRE class="srcLine"> } <span class="keyword">else</span> {</PRE>
11629
<TD align="right" class="lineCount">
11633
<TD align="right" class="coverageCount">
11637
<TD class="srcLine">
11638
<PRE class="srcLine"> <span class="comment">// Wrong list -- must restart traversal at new first</span></PRE>
11645
<TD align="right" class="lineCountHilight">
11649
<TD align="right" class="coverageCountHilight">
11650
<A title="Line 715: statement not executed."> 0</A>
11653
<TD class="srcHilight">
11654
<SPAN class="srcHilight">
11655
<A title="Line 715: statement not executed."><PRE class="srcLine"> e = first = tab[index = hash & (tab.length - 1)];</PRE></A>
11663
<TD align="right" class="lineCount">
11667
<TD align="right" class="coverageCount">
11671
<TD class="srcLine">
11672
<PRE class="srcLine"> }</PRE>
11679
<TD align="right" class="lineCount">
11683
<TD align="right" class="coverageCount">
11687
<TD class="srcLine">
11688
<PRE class="srcLine"> }</PRE>
11695
<TD align="right" class="lineCount">
11699
<TD align="right" class="coverageCount">
11703
<TD class="srcLine">
11704
<PRE class="srcLine"> <span class="comment">// checking for pointer equality first wins in most applications</span></PRE>
11711
<TD align="right" class="lineCountHilight">
11715
<TD align="right" class="lineCountHilight">
11716
<A title="Line 719: statement executed 457 times."> 457</A>
11719
<TD class="srcLine">
11720
<A title="Line 719: statement executed 457 times."><PRE class="srcLine"> <span class="keyword">else</span> <span class="keyword">if</span> ((key == e.key) || ((e.hash == hash) && key.equals(e.key))) {</PRE></A>
11727
<TD align="right" class="lineCountHilight">
11731
<TD align="right" class="lineCountHilight">
11732
<A title="Line 720: statement executed 408 times."> 408</A>
11735
<TD class="srcLine">
11736
<A title="Line 720: statement executed 408 times."><PRE class="srcLine"> Object value = e.value;</PRE></A>
11743
<TD align="right" class="lineCount">
11747
<TD align="right" class="coverageCount">
11751
<TD class="srcLine">
11752
<PRE class="srcLine"> </PRE>
11759
<TD align="right" class="lineCountHilight">
11763
<TD align="right" class="coverageCountHilight">
11764
<A title="Line 722: expression evaluated to true 408 times, false 0 times."> 408</A>
11767
<TD class="srcHilight">
11768
<SPAN class="srcHilight">
11769
<A title="Line 722: expression evaluated to true 408 times, false 0 times."><PRE class="srcLine"> <span class="keyword">if</span> (value != <span class="keyword">null</span>) {</PRE></A>
11777
<TD align="right" class="lineCount">
11781
<TD align="right" class="coverageCount">
11785
<TD class="srcLine">
11786
<PRE class="srcLine"> <span class="comment">/** OpenSymphony BEGIN */</span></PRE>
11793
<TD align="right" class="lineCount">
11797
<TD align="right" class="coverageCount">
11801
<TD class="srcLine">
11802
<PRE class="srcLine"> </PRE>
11809
<TD align="right" class="lineCount">
11813
<TD align="right" class="coverageCount">
11817
<TD class="srcLine">
11818
<PRE class="srcLine"> <span class="comment">/* Previous code</span></PRE>
11825
<TD align="right" class="lineCount">
11829
<TD align="right" class="coverageCount">
11833
<TD class="srcLine">
11834
<PRE class="srcLine"> <span class="comment"> return value;*/</span></PRE>
11841
<TD align="right" class="lineCountHilight">
11845
<TD align="right" class="lineCountHilight">
11846
<A title="Line 727: statement executed 408 times."> 408</A>
11849
<TD class="srcLine">
11850
<A title="Line 727: statement executed 408 times."><PRE class="srcLine"> <span class="keyword">if</span> (NULL.equals(value)) {</PRE></A>
11857
<TD align="right" class="lineCount">
11861
<TD align="right" class="coverageCount">
11865
<TD class="srcLine">
11866
<PRE class="srcLine"> <span class="comment">// Memory cache disable, use disk</span></PRE>
11873
<TD align="right" class="lineCountHilight">
11877
<TD align="right" class="lineCountHilight">
11878
<A title="Line 729: statement executed 122 times."> 122</A>
11881
<TD class="srcLine">
11882
<A title="Line 729: statement executed 122 times."><PRE class="srcLine"> value = persistRetrieve(e.key);</PRE></A>
11889
<TD align="right" class="lineCount">
11893
<TD align="right" class="coverageCount">
11897
<TD class="srcLine">
11898
<PRE class="srcLine"> </PRE>
11905
<TD align="right" class="lineCountHilight">
11909
<TD align="right" class="coverageCountHilight">
11910
<A title="Line 731: expression evaluated to true 122 times, false 0 times."> 122</A>
11913
<TD class="srcHilight">
11914
<SPAN class="srcHilight">
11915
<A title="Line 731: expression evaluated to true 122 times, false 0 times."><PRE class="srcLine"> <span class="keyword">if</span> (value != <span class="keyword">null</span>) {</PRE></A>
11923
<TD align="right" class="lineCountHilight">
11927
<TD align="right" class="lineCountHilight">
11928
<A title="Line 732: statement executed 122 times."> 122</A>
11931
<TD class="srcLine">
11932
<A title="Line 732: statement executed 122 times."><PRE class="srcLine"> itemRetrieved(key);</PRE></A>
11939
<TD align="right" class="lineCount">
11943
<TD align="right" class="coverageCount">
11947
<TD class="srcLine">
11948
<PRE class="srcLine"> }</PRE>
11955
<TD align="right" class="lineCount">
11959
<TD align="right" class="coverageCount">
11963
<TD class="srcLine">
11964
<PRE class="srcLine"> </PRE>
11971
<TD align="right" class="lineCountHilight">
11975
<TD align="right" class="lineCountHilight">
11976
<A title="Line 735: statement executed 122 times."> 122</A>
11979
<TD class="srcLine">
11980
<A title="Line 735: statement executed 122 times."><PRE class="srcLine"> <span class="keyword">return</span> value; <span class="comment">// fix [CACHE-13]</span></PRE></A>
11987
<TD align="right" class="lineCount">
11991
<TD align="right" class="coverageCount">
11995
<TD class="srcLine">
11996
<PRE class="srcLine"> } <span class="keyword">else</span> {</PRE>
12003
<TD align="right" class="lineCountHilight">
12007
<TD align="right" class="lineCountHilight">
12008
<A title="Line 737: statement executed 286 times."> 286</A>
12011
<TD class="srcLine">
12012
<A title="Line 737: statement executed 286 times."><PRE class="srcLine"> itemRetrieved(key);</PRE></A>
12019
<TD align="right" class="lineCount">
12023
<TD align="right" class="coverageCount">
12027
<TD class="srcLine">
12028
<PRE class="srcLine"> </PRE>
12035
<TD align="right" class="lineCountHilight">
12039
<TD align="right" class="lineCountHilight">
12040
<A title="Line 739: statement executed 286 times."> 286</A>
12043
<TD class="srcLine">
12044
<A title="Line 739: statement executed 286 times."><PRE class="srcLine"> <span class="keyword">return</span> value;</PRE></A>
12051
<TD align="right" class="lineCount">
12055
<TD align="right" class="coverageCount">
12059
<TD class="srcLine">
12060
<PRE class="srcLine"> }</PRE>
12067
<TD align="right" class="lineCount">
12071
<TD align="right" class="coverageCount">
12075
<TD class="srcLine">
12076
<PRE class="srcLine"> </PRE>
12083
<TD align="right" class="lineCount">
12087
<TD align="right" class="coverageCount">
12091
<TD class="srcLine">
12092
<PRE class="srcLine"> <span class="comment">/** OpenSymphony END */</span></PRE>
12099
<TD align="right" class="lineCount">
12103
<TD align="right" class="coverageCount">
12107
<TD class="srcLine">
12108
<PRE class="srcLine"> }</PRE>
12115
<TD align="right" class="lineCount">
12119
<TD align="right" class="coverageCount">
12123
<TD class="srcLine">
12124
<PRE class="srcLine"> </PRE>
12131
<TD align="right" class="lineCount">
12135
<TD align="right" class="coverageCount">
12139
<TD class="srcLine">
12140
<PRE class="srcLine"> <span class="comment">// Entry was invalidated during deletion. But it could</span></PRE>
12147
<TD align="right" class="lineCount">
12151
<TD align="right" class="coverageCount">
12155
<TD class="srcLine">
12156
<PRE class="srcLine"> <span class="comment">// have been re-inserted, so we must retraverse.</span></PRE>
12163
<TD align="right" class="lineCount">
12167
<TD align="right" class="coverageCount">
12171
<TD class="srcLine">
12172
<PRE class="srcLine"> <span class="comment">// To avoid useless contention, get lock to wait out modifications</span></PRE>
12179
<TD align="right" class="lineCount">
12183
<TD align="right" class="coverageCount">
12187
<TD class="srcLine">
12188
<PRE class="srcLine"> <span class="comment">// before retraversing.</span></PRE>
12195
<TD align="right" class="lineCountHilight">
12199
<TD align="right" class="coverageCountHilight">
12200
<A title="Line 749: statement not executed."> 0</A>
12203
<TD class="srcHilight">
12204
<SPAN class="srcHilight">
12205
<A title="Line 749: statement not executed."><PRE class="srcLine"> <span class="keyword">synchronized</span> (<span class="keyword">this</span>) {</PRE></A>
12213
<TD align="right" class="lineCountHilight">
12217
<TD align="right" class="coverageCountHilight">
12218
<A title="Line 750: statement not executed."> 0</A>
12221
<TD class="srcHilight">
12222
<SPAN class="srcHilight">
12223
<A title="Line 750: statement not executed."><PRE class="srcLine"> tab = table;</PRE></A>
12231
<TD align="right" class="lineCount">
12235
<TD align="right" class="coverageCount">
12239
<TD class="srcLine">
12240
<PRE class="srcLine"> }</PRE>
12247
<TD align="right" class="lineCount">
12251
<TD align="right" class="coverageCount">
12255
<TD class="srcLine">
12256
<PRE class="srcLine"> </PRE>
12263
<TD align="right" class="lineCountHilight">
12267
<TD align="right" class="coverageCountHilight">
12268
<A title="Line 753: statement not executed."> 0</A>
12271
<TD class="srcHilight">
12272
<SPAN class="srcHilight">
12273
<A title="Line 753: statement not executed."><PRE class="srcLine"> e = first = tab[index = hash & (tab.length - 1)];</PRE></A>
12281
<TD align="right" class="lineCount">
12285
<TD align="right" class="coverageCount">
12289
<TD class="srcLine">
12290
<PRE class="srcLine"> } <span class="keyword">else</span> {</PRE>
12297
<TD align="right" class="lineCountHilight">
12301
<TD align="right" class="lineCountHilight">
12302
<A title="Line 755: statement executed 49 times."> 49</A>
12305
<TD class="srcLine">
12306
<A title="Line 755: statement executed 49 times."><PRE class="srcLine"> e = e.next;</PRE></A>
12313
<TD align="right" class="lineCount">
12317
<TD align="right" class="coverageCount">
12321
<TD class="srcLine">
12322
<PRE class="srcLine"> }</PRE>
12329
<TD align="right" class="lineCount">
12333
<TD align="right" class="coverageCount">
12337
<TD class="srcLine">
12338
<PRE class="srcLine"> }</PRE>
12345
<TD align="right" class="lineCount">
12349
<TD align="right" class="coverageCount">
12353
<TD class="srcLine">
12354
<PRE class="srcLine"> }</PRE>
12361
<TD align="right" class="lineCount">
12365
<TD align="right" class="coverageCount">
12369
<TD class="srcLine">
12370
<PRE class="srcLine"> </PRE>
12377
<TD align="right" class="lineCount">
12381
<TD align="right" class="coverageCount">
12385
<TD class="srcLine">
12386
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
12393
<TD align="right" class="lineCount">
12397
<TD align="right" class="coverageCount">
12401
<TD class="srcLine">
12402
<PRE class="srcLine"> <span class="comment"> * Returns a set view of the keys contained in this map.</span></PRE>
12409
<TD align="right" class="lineCount">
12413
<TD align="right" class="coverageCount">
12417
<TD class="srcLine">
12418
<PRE class="srcLine"> <span class="comment"> * The set is backed by the map, so changes to the map are reflected in the set, and</span></PRE>
12425
<TD align="right" class="lineCount">
12429
<TD align="right" class="coverageCount">
12433
<TD class="srcLine">
12434
<PRE class="srcLine"> <span class="comment"> * vice-versa. The set supports element removal, which removes the</span></PRE>
12441
<TD align="right" class="lineCount">
12445
<TD align="right" class="coverageCount">
12449
<TD class="srcLine">
12450
<PRE class="srcLine"> <span class="comment"> * corresponding mapping from this map, via the <tt>Iterator.remove</tt>,</span></PRE>
12457
<TD align="right" class="lineCount">
12461
<TD align="right" class="coverageCount">
12465
<TD class="srcLine">
12466
<PRE class="srcLine"> <span class="comment"> * <tt>Set.remove</tt>, <tt>removeAll</tt>, <tt>retainAll</tt>, and</span></PRE>
12473
<TD align="right" class="lineCount">
12477
<TD align="right" class="coverageCount">
12481
<TD class="srcLine">
12482
<PRE class="srcLine"> <span class="comment"> * <tt>clear</tt> operations. It does not support the <tt>add</tt> or</span></PRE>
12489
<TD align="right" class="lineCount">
12493
<TD align="right" class="coverageCount">
12497
<TD class="srcLine">
12498
<PRE class="srcLine"> <span class="comment"> * <tt>addAll</tt> operations.</span></PRE>
12505
<TD align="right" class="lineCount">
12509
<TD align="right" class="coverageCount">
12513
<TD class="srcLine">
12514
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
12521
<TD align="right" class="lineCount">
12525
<TD align="right" class="coverageCount">
12529
<TD class="srcLine">
12530
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@return</span> a set view of the keys contained in this map.</span></PRE>
12537
<TD align="right" class="lineCount">
12541
<TD align="right" class="coverageCount">
12545
<TD class="srcLine">
12546
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
12553
<TD align="right" class="lineCountHilight">
12557
<TD align="right" class="lineCountHilight">
12558
<A title="Line 771: method entered 18 times."> 18</A>
12561
<TD class="srcLine">
12562
<A title="Line 771: method entered 18 times."><PRE class="srcLine"> <span class="keyword">public</span> Set keySet() {</PRE></A>
12569
<TD align="right" class="lineCountHilight">
12573
<TD align="right" class="lineCountHilight">
12574
<A title="Line 772: statement executed 18 times."> 18</A>
12577
<TD class="srcLine">
12578
<A title="Line 772: statement executed 18 times."><PRE class="srcLine"> Set ks = keySet;</PRE></A>
12585
<TD align="right" class="lineCount">
12589
<TD align="right" class="coverageCount">
12593
<TD class="srcLine">
12594
<PRE class="srcLine"> </PRE>
12601
<TD align="right" class="lineCountHilight">
12605
<TD align="right" class="lineCountHilight">
12606
<A title="Line 774: statement executed 18 times."> 18</A>
12609
<TD class="srcLine">
12610
<A title="Line 774: statement executed 18 times."><PRE class="srcLine"> <span class="keyword">if</span> (ks != <span class="keyword">null</span>) {</PRE></A>
12617
<TD align="right" class="lineCountHilight">
12621
<TD align="right" class="lineCountHilight">
12622
<A title="Line 775: statement executed 6 times."> 6</A>
12625
<TD class="srcLine">
12626
<A title="Line 775: statement executed 6 times."><PRE class="srcLine"> <span class="keyword">return</span> ks;</PRE></A>
12633
<TD align="right" class="lineCount">
12637
<TD align="right" class="coverageCount">
12641
<TD class="srcLine">
12642
<PRE class="srcLine"> } <span class="keyword">else</span> {</PRE>
12649
<TD align="right" class="lineCountHilight">
12653
<TD align="right" class="lineCountHilight">
12654
<A title="Line 777: statement executed 12 times."> 12</A>
12657
<TD class="srcLine">
12658
<A title="Line 777: statement executed 12 times."><PRE class="srcLine"> <span class="keyword">return</span> keySet = <span class="keyword">new</span> AbstractSet() {</PRE></A>
12665
<TD align="right" class="lineCountHilight">
12669
<TD align="right" class="lineCountHilight">
12670
<A title="Line 778: method entered 18 times."> 18</A>
12673
<TD class="srcLine">
12674
<A title="Line 778: method entered 18 times."><PRE class="srcLine"> <span class="keyword">public</span> Iterator iterator() {</PRE></A>
12681
<TD align="right" class="lineCountHilight">
12685
<TD align="right" class="lineCountHilight">
12686
<A title="Line 779: statement executed 18 times."> 18</A>
12689
<TD class="srcLine">
12690
<A title="Line 779: statement executed 18 times."><PRE class="srcLine"> <span class="keyword">return</span> <span class="keyword">new</span> KeyIterator();</PRE></A>
12697
<TD align="right" class="lineCount">
12701
<TD align="right" class="coverageCount">
12705
<TD class="srcLine">
12706
<PRE class="srcLine"> }</PRE>
12713
<TD align="right" class="lineCount">
12717
<TD align="right" class="coverageCount">
12721
<TD class="srcLine">
12722
<PRE class="srcLine"> </PRE>
12729
<TD align="right" class="lineCountHilight">
12733
<TD align="right" class="coverageCountHilight">
12734
<A title="Line 782: method not entered."> 0</A>
12737
<TD class="srcHilight">
12738
<SPAN class="srcHilight">
12739
<A title="Line 782: method not entered."><PRE class="srcLine"> <span class="keyword">public</span> <span class="keyword">int</span> size() {</PRE></A>
12747
<TD align="right" class="lineCountHilight">
12751
<TD align="right" class="coverageCountHilight">
12752
<A title="Line 783: statement not executed."> 0</A>
12755
<TD class="srcHilight">
12756
<SPAN class="srcHilight">
12757
<A title="Line 783: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> AbstractConcurrentReadCache.<span class="keyword">this</span>.size();</PRE></A>
12765
<TD align="right" class="lineCount">
12769
<TD align="right" class="coverageCount">
12773
<TD class="srcLine">
12774
<PRE class="srcLine"> }</PRE>
12781
<TD align="right" class="lineCount">
12785
<TD align="right" class="coverageCount">
12789
<TD class="srcLine">
12790
<PRE class="srcLine"> </PRE>
12797
<TD align="right" class="lineCountHilight">
12801
<TD align="right" class="coverageCountHilight">
12802
<A title="Line 786: method not entered."> 0</A>
12805
<TD class="srcHilight">
12806
<SPAN class="srcHilight">
12807
<A title="Line 786: method not entered."><PRE class="srcLine"> <span class="keyword">public</span> <span class="keyword">boolean</span> contains(Object o) {</PRE></A>
12815
<TD align="right" class="lineCountHilight">
12819
<TD align="right" class="coverageCountHilight">
12820
<A title="Line 787: statement not executed."> 0</A>
12823
<TD class="srcHilight">
12824
<SPAN class="srcHilight">
12825
<A title="Line 787: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> AbstractConcurrentReadCache.<span class="keyword">this</span>.containsKey(o);</PRE></A>
12833
<TD align="right" class="lineCount">
12837
<TD align="right" class="coverageCount">
12841
<TD class="srcLine">
12842
<PRE class="srcLine"> }</PRE>
12849
<TD align="right" class="lineCount">
12853
<TD align="right" class="coverageCount">
12857
<TD class="srcLine">
12858
<PRE class="srcLine"> </PRE>
12865
<TD align="right" class="lineCountHilight">
12869
<TD align="right" class="coverageCountHilight">
12870
<A title="Line 790: method not entered."> 0</A>
12873
<TD class="srcHilight">
12874
<SPAN class="srcHilight">
12875
<A title="Line 790: method not entered."><PRE class="srcLine"> <span class="keyword">public</span> <span class="keyword">boolean</span> remove(Object o) {</PRE></A>
12883
<TD align="right" class="lineCountHilight">
12887
<TD align="right" class="coverageCountHilight">
12888
<A title="Line 791: statement not executed."> 0</A>
12891
<TD class="srcHilight">
12892
<SPAN class="srcHilight">
12893
<A title="Line 791: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> AbstractConcurrentReadCache.<span class="keyword">this</span>.remove(o) != <span class="keyword">null</span>;</PRE></A>
12901
<TD align="right" class="lineCount">
12905
<TD align="right" class="coverageCount">
12909
<TD class="srcLine">
12910
<PRE class="srcLine"> }</PRE>
12917
<TD align="right" class="lineCount">
12921
<TD align="right" class="coverageCount">
12925
<TD class="srcLine">
12926
<PRE class="srcLine"> </PRE>
12933
<TD align="right" class="lineCountHilight">
12937
<TD align="right" class="coverageCountHilight">
12938
<A title="Line 794: method not entered."> 0</A>
12941
<TD class="srcHilight">
12942
<SPAN class="srcHilight">
12943
<A title="Line 794: method not entered."><PRE class="srcLine"> <span class="keyword">public</span> <span class="keyword">void</span> clear() {</PRE></A>
12951
<TD align="right" class="lineCountHilight">
12955
<TD align="right" class="coverageCountHilight">
12956
<A title="Line 795: statement not executed."> 0</A>
12959
<TD class="srcHilight">
12960
<SPAN class="srcHilight">
12961
<A title="Line 795: statement not executed."><PRE class="srcLine"> AbstractConcurrentReadCache.<span class="keyword">this</span>.clear();</PRE></A>
12969
<TD align="right" class="lineCount">
12973
<TD align="right" class="coverageCount">
12977
<TD class="srcLine">
12978
<PRE class="srcLine"> }</PRE>
12985
<TD align="right" class="lineCount">
12989
<TD align="right" class="coverageCount">
12993
<TD class="srcLine">
12994
<PRE class="srcLine"> };</PRE>
13001
<TD align="right" class="lineCount">
13005
<TD align="right" class="coverageCount">
13009
<TD class="srcLine">
13010
<PRE class="srcLine"> }</PRE>
13017
<TD align="right" class="lineCount">
13021
<TD align="right" class="coverageCount">
13025
<TD class="srcLine">
13026
<PRE class="srcLine"> }</PRE>
13033
<TD align="right" class="lineCount">
13037
<TD align="right" class="coverageCount">
13041
<TD class="srcLine">
13042
<PRE class="srcLine"> </PRE>
13049
<TD align="right" class="lineCount">
13053
<TD align="right" class="coverageCount">
13057
<TD class="srcLine">
13058
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
13065
<TD align="right" class="lineCount">
13069
<TD align="right" class="coverageCount">
13073
<TD class="srcLine">
13074
<PRE class="srcLine"> <span class="comment"> * Returns an enumeration of the keys in this table.</span></PRE>
13081
<TD align="right" class="lineCount">
13085
<TD align="right" class="coverageCount">
13089
<TD class="srcLine">
13090
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
13097
<TD align="right" class="lineCount">
13101
<TD align="right" class="coverageCount">
13105
<TD class="srcLine">
13106
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@return</span> an enumeration of the keys in this table.</span></PRE>
13113
<TD align="right" class="lineCount">
13117
<TD align="right" class="coverageCount">
13121
<TD class="srcLine">
13122
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@see</span> Enumeration</span></PRE>
13129
<TD align="right" class="lineCount">
13133
<TD align="right" class="coverageCount">
13137
<TD class="srcLine">
13138
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@see</span> #elements()</span></PRE>
13145
<TD align="right" class="lineCount">
13149
<TD align="right" class="coverageCount">
13153
<TD class="srcLine">
13154
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@see</span> #keySet()</span></PRE>
13161
<TD align="right" class="lineCount">
13165
<TD align="right" class="coverageCount">
13169
<TD class="srcLine">
13170
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@see</span> Map</span></PRE>
13177
<TD align="right" class="lineCount">
13181
<TD align="right" class="coverageCount">
13185
<TD class="srcLine">
13186
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
13193
<TD align="right" class="lineCountHilight">
13197
<TD align="right" class="coverageCountHilight">
13198
<A title="Line 810: method not entered."> 0</A>
13201
<TD class="srcHilight">
13202
<SPAN class="srcHilight">
13203
<A title="Line 810: method not entered."><PRE class="srcLine"> <span class="keyword">public</span> Enumeration keys() {</PRE></A>
13211
<TD align="right" class="lineCountHilight">
13215
<TD align="right" class="coverageCountHilight">
13216
<A title="Line 811: statement not executed."> 0</A>
13219
<TD class="srcHilight">
13220
<SPAN class="srcHilight">
13221
<A title="Line 811: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> <span class="keyword">new</span> KeyIterator();</PRE></A>
13229
<TD align="right" class="lineCount">
13233
<TD align="right" class="coverageCount">
13237
<TD class="srcLine">
13238
<PRE class="srcLine"> }</PRE>
13245
<TD align="right" class="lineCount">
13249
<TD align="right" class="coverageCount">
13253
<TD class="srcLine">
13254
<PRE class="srcLine"> </PRE>
13261
<TD align="right" class="lineCount">
13265
<TD align="right" class="coverageCount">
13269
<TD class="srcLine">
13270
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
13277
<TD align="right" class="lineCount">
13281
<TD align="right" class="coverageCount">
13285
<TD class="srcLine">
13286
<PRE class="srcLine"> <span class="comment"> * Return the load factor</span></PRE>
13293
<TD align="right" class="lineCount">
13297
<TD align="right" class="coverageCount">
13301
<TD class="srcLine">
13302
<PRE class="srcLine"> <span class="comment"> **/</span></PRE>
13309
<TD align="right" class="lineCountHilight">
13313
<TD align="right" class="coverageCountHilight">
13314
<A title="Line 817: method not entered."> 0</A>
13317
<TD class="srcHilight">
13318
<SPAN class="srcHilight">
13319
<A title="Line 817: method not entered."><PRE class="srcLine"> <span class="keyword">public</span> <span class="keyword">float</span> loadFactor() {</PRE></A>
13327
<TD align="right" class="lineCountHilight">
13331
<TD align="right" class="coverageCountHilight">
13332
<A title="Line 818: statement not executed."> 0</A>
13335
<TD class="srcHilight">
13336
<SPAN class="srcHilight">
13337
<A title="Line 818: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> loadFactor;</PRE></A>
13345
<TD align="right" class="lineCount">
13349
<TD align="right" class="coverageCount">
13353
<TD class="srcLine">
13354
<PRE class="srcLine"> }</PRE>
13361
<TD align="right" class="lineCount">
13365
<TD align="right" class="coverageCount">
13369
<TD class="srcLine">
13370
<PRE class="srcLine"> </PRE>
13377
<TD align="right" class="lineCount">
13381
<TD align="right" class="coverageCount">
13385
<TD class="srcLine">
13386
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
13393
<TD align="right" class="lineCount">
13397
<TD align="right" class="coverageCount">
13401
<TD class="srcLine">
13402
<PRE class="srcLine"> <span class="comment"> * Maps the specified <code>key</code> to the specified <code>value</code> in this table.</span></PRE>
13409
<TD align="right" class="lineCount">
13413
<TD align="right" class="coverageCount">
13417
<TD class="srcLine">
13418
<PRE class="srcLine"> <span class="comment"> * Neither the key nor the</span></PRE>
13425
<TD align="right" class="lineCount">
13429
<TD align="right" class="coverageCount">
13433
<TD class="srcLine">
13434
<PRE class="srcLine"> <span class="comment"> * value can be <code>null</code>. <p></span></PRE>
13441
<TD align="right" class="lineCount">
13445
<TD align="right" class="coverageCount">
13449
<TD class="srcLine">
13450
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
13457
<TD align="right" class="lineCount">
13461
<TD align="right" class="coverageCount">
13465
<TD class="srcLine">
13466
<PRE class="srcLine"> <span class="comment"> * The value can be retrieved by calling the <code>get</code> method</span></PRE>
13473
<TD align="right" class="lineCount">
13477
<TD align="right" class="coverageCount">
13481
<TD class="srcLine">
13482
<PRE class="srcLine"> <span class="comment"> * with a key that is equal to the original key.</span></PRE>
13489
<TD align="right" class="lineCount">
13493
<TD align="right" class="coverageCount">
13497
<TD class="srcLine">
13498
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
13505
<TD align="right" class="lineCount">
13509
<TD align="right" class="coverageCount">
13513
<TD class="srcLine">
13514
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@param</span> key the table key.</span></PRE>
13521
<TD align="right" class="lineCount">
13525
<TD align="right" class="coverageCount">
13529
<TD class="srcLine">
13530
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@param</span> value the value.</span></PRE>
13537
<TD align="right" class="lineCount">
13541
<TD align="right" class="coverageCount">
13545
<TD class="srcLine">
13546
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@return</span> the previous value of the specified key in this table,</span></PRE>
13553
<TD align="right" class="lineCount">
13557
<TD align="right" class="coverageCount">
13561
<TD class="srcLine">
13562
<PRE class="srcLine"> <span class="comment"> * or <code>null</code> if it did not have one.</span></PRE>
13569
<TD align="right" class="lineCount">
13573
<TD align="right" class="coverageCount">
13577
<TD class="srcLine">
13578
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@exception</span> NullPointerException if the key or value is</span></PRE>
13585
<TD align="right" class="lineCount">
13589
<TD align="right" class="coverageCount">
13593
<TD class="srcLine">
13594
<PRE class="srcLine"> <span class="comment"> * <code>null</code>.</span></PRE>
13601
<TD align="right" class="lineCount">
13605
<TD align="right" class="coverageCount">
13609
<TD class="srcLine">
13610
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@see</span> Object#equals(Object)</span></PRE>
13617
<TD align="right" class="lineCount">
13621
<TD align="right" class="coverageCount">
13625
<TD class="srcLine">
13626
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@see</span> #get(Object)</span></PRE>
13633
<TD align="right" class="lineCount">
13637
<TD align="right" class="coverageCount">
13641
<TD class="srcLine">
13642
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
13649
<TD align="right" class="lineCount">
13653
<TD align="right" class="coverageCount">
13657
<TD class="srcLine">
13658
<PRE class="srcLine"> <span class="comment">/** OpenSymphony BEGIN */</span></PRE>
13665
<TD align="right" class="lineCountHilight">
13669
<TD align="right" class="lineCountHilight">
13670
<A title="Line 839: method entered 408 times."> 408</A>
13673
<TD class="srcLine">
13674
<A title="Line 839: method entered 408 times."><PRE class="srcLine"> <span class="keyword">public</span> Object put(Object key, Object value) {</PRE></A>
13681
<TD align="right" class="lineCount">
13685
<TD align="right" class="coverageCount">
13689
<TD class="srcLine">
13690
<PRE class="srcLine"> <span class="comment">// Call the internal put using persistance</span></PRE>
13697
<TD align="right" class="lineCountHilight">
13701
<TD align="right" class="lineCountHilight">
13702
<A title="Line 841: statement executed 408 times."> 408</A>
13705
<TD class="srcLine">
13706
<A title="Line 841: statement executed 408 times."><PRE class="srcLine"> <span class="keyword">return</span> put(key, value, <span class="keyword">true</span>);</PRE></A>
13713
<TD align="right" class="lineCount">
13717
<TD align="right" class="coverageCount">
13721
<TD class="srcLine">
13722
<PRE class="srcLine"> }</PRE>
13729
<TD align="right" class="lineCount">
13733
<TD align="right" class="coverageCount">
13737
<TD class="srcLine">
13738
<PRE class="srcLine"> </PRE>
13745
<TD align="right" class="lineCount">
13749
<TD align="right" class="coverageCount">
13753
<TD class="srcLine">
13754
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
13761
<TD align="right" class="lineCount">
13765
<TD align="right" class="coverageCount">
13769
<TD class="srcLine">
13770
<PRE class="srcLine"> <span class="comment"> * Copies all of the mappings from the specified map to this one.</span></PRE>
13777
<TD align="right" class="lineCount">
13781
<TD align="right" class="coverageCount">
13785
<TD class="srcLine">
13786
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
13793
<TD align="right" class="lineCount">
13797
<TD align="right" class="coverageCount">
13801
<TD class="srcLine">
13802
<PRE class="srcLine"> <span class="comment"> * These mappings replace any mappings that this map had for any of the</span></PRE>
13809
<TD align="right" class="lineCount">
13813
<TD align="right" class="coverageCount">
13817
<TD class="srcLine">
13818
<PRE class="srcLine"> <span class="comment"> * keys currently in the specified Map.</span></PRE>
13825
<TD align="right" class="lineCount">
13829
<TD align="right" class="coverageCount">
13833
<TD class="srcLine">
13834
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
13841
<TD align="right" class="lineCount">
13845
<TD align="right" class="coverageCount">
13849
<TD class="srcLine">
13850
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@param</span> t Mappings to be stored in this map.</span></PRE>
13857
<TD align="right" class="lineCount">
13861
<TD align="right" class="coverageCount">
13865
<TD class="srcLine">
13866
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
13873
<TD align="right" class="lineCountHilight">
13877
<TD align="right" class="coverageCountHilight">
13878
<A title="Line 852: method not entered."> 0</A>
13881
<TD class="srcHilight">
13882
<SPAN class="srcHilight">
13883
<A title="Line 852: method not entered."><PRE class="srcLine"> <span class="keyword">public</span> <span class="keyword">synchronized</span> <span class="keyword">void</span> putAll(Map t) {</PRE></A>
13891
<TD align="right" class="lineCountHilight">
13895
<TD align="right" class="coverageCountHilight">
13896
<A title="Line 853: statement not executed."> 0</A>
13899
<TD class="srcHilight">
13900
<SPAN class="srcHilight">
13901
<A title="Line 853: statement not executed."><PRE class="srcLine"> <span class="keyword">for</span> (Iterator it = t.entrySet().iterator(); it.hasNext();) {</PRE></A>
13909
<TD align="right" class="lineCountHilight">
13913
<TD align="right" class="coverageCountHilight">
13914
<A title="Line 854: statement not executed."> 0</A>
13917
<TD class="srcHilight">
13918
<SPAN class="srcHilight">
13919
<A title="Line 854: statement not executed."><PRE class="srcLine"> Map.Entry entry = (Map.Entry) it.next();</PRE></A>
13927
<TD align="right" class="lineCountHilight">
13931
<TD align="right" class="coverageCountHilight">
13932
<A title="Line 855: statement not executed."> 0</A>
13935
<TD class="srcHilight">
13936
<SPAN class="srcHilight">
13937
<A title="Line 855: statement not executed."><PRE class="srcLine"> Object key = entry.getKey();</PRE></A>
13945
<TD align="right" class="lineCountHilight">
13949
<TD align="right" class="coverageCountHilight">
13950
<A title="Line 856: statement not executed."> 0</A>
13953
<TD class="srcHilight">
13954
<SPAN class="srcHilight">
13955
<A title="Line 856: statement not executed."><PRE class="srcLine"> Object value = entry.getValue();</PRE></A>
13963
<TD align="right" class="lineCountHilight">
13967
<TD align="right" class="coverageCountHilight">
13968
<A title="Line 857: statement not executed."> 0</A>
13971
<TD class="srcHilight">
13972
<SPAN class="srcHilight">
13973
<A title="Line 857: statement not executed."><PRE class="srcLine"> put(key, value);</PRE></A>
13981
<TD align="right" class="lineCount">
13985
<TD align="right" class="coverageCount">
13989
<TD class="srcLine">
13990
<PRE class="srcLine"> }</PRE>
13997
<TD align="right" class="lineCount">
14001
<TD align="right" class="coverageCount">
14005
<TD class="srcLine">
14006
<PRE class="srcLine"> }</PRE>
14013
<TD align="right" class="lineCount">
14017
<TD align="right" class="coverageCount">
14021
<TD class="srcLine">
14022
<PRE class="srcLine"> </PRE>
14029
<TD align="right" class="lineCount">
14033
<TD align="right" class="coverageCount">
14037
<TD class="srcLine">
14038
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
14045
<TD align="right" class="lineCount">
14049
<TD align="right" class="coverageCount">
14053
<TD class="srcLine">
14054
<PRE class="srcLine"> <span class="comment"> * Removes the key (and its corresponding value) from this table.</span></PRE>
14061
<TD align="right" class="lineCount">
14065
<TD align="right" class="coverageCount">
14069
<TD class="srcLine">
14070
<PRE class="srcLine"> <span class="comment"> * This method does nothing if the key is not in the table.</span></PRE>
14077
<TD align="right" class="lineCount">
14081
<TD align="right" class="coverageCount">
14085
<TD class="srcLine">
14086
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
14093
<TD align="right" class="lineCount">
14097
<TD align="right" class="coverageCount">
14101
<TD class="srcLine">
14102
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@param</span> key the key that needs to be removed.</span></PRE>
14109
<TD align="right" class="lineCount">
14113
<TD align="right" class="coverageCount">
14117
<TD class="srcLine">
14118
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@return</span> the value to which the key had been mapped in this table,</span></PRE>
14125
<TD align="right" class="lineCount">
14129
<TD align="right" class="coverageCount">
14133
<TD class="srcLine">
14134
<PRE class="srcLine"> <span class="comment"> * or <code>null</code> if the key did not have a mapping.</span></PRE>
14141
<TD align="right" class="lineCount">
14145
<TD align="right" class="coverageCount">
14149
<TD class="srcLine">
14150
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@exception</span> NullPointerException if the key is</span></PRE>
14157
<TD align="right" class="lineCount">
14161
<TD align="right" class="coverageCount">
14165
<TD class="srcLine">
14166
<PRE class="srcLine"> <span class="comment"> * <code>null</code>.</span></PRE>
14173
<TD align="right" class="lineCount">
14177
<TD align="right" class="coverageCount">
14181
<TD class="srcLine">
14182
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
14189
<TD align="right" class="lineCount">
14193
<TD align="right" class="coverageCount">
14197
<TD class="srcLine">
14198
<PRE class="srcLine"> <span class="comment">/** OpenSymphony BEGIN */</span></PRE>
14205
<TD align="right" class="lineCountHilight">
14209
<TD align="right" class="lineCountHilight">
14210
<A title="Line 872: method entered 18 times."> 18</A>
14213
<TD class="srcLine">
14214
<A title="Line 872: method entered 18 times."><PRE class="srcLine"> <span class="keyword">public</span> Object remove(Object key) {</PRE></A>
14221
<TD align="right" class="lineCountHilight">
14225
<TD align="right" class="lineCountHilight">
14226
<A title="Line 873: statement executed 18 times."> 18</A>
14229
<TD class="srcLine">
14230
<A title="Line 873: statement executed 18 times."><PRE class="srcLine"> <span class="keyword">return</span> remove(key, <span class="keyword">true</span>);</PRE></A>
14237
<TD align="right" class="lineCount">
14241
<TD align="right" class="coverageCount">
14245
<TD class="srcLine">
14246
<PRE class="srcLine"> }</PRE>
14253
<TD align="right" class="lineCount">
14257
<TD align="right" class="coverageCount">
14261
<TD class="srcLine">
14262
<PRE class="srcLine"> </PRE>
14269
<TD align="right" class="lineCount">
14273
<TD align="right" class="coverageCount">
14277
<TD class="srcLine">
14278
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
14285
<TD align="right" class="lineCount">
14289
<TD align="right" class="coverageCount">
14293
<TD class="srcLine">
14294
<PRE class="srcLine"> <span class="comment"> * Returns the total number of cache entries held in this map.</span></PRE>
14301
<TD align="right" class="lineCount">
14305
<TD align="right" class="coverageCount">
14309
<TD class="srcLine">
14310
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
14317
<TD align="right" class="lineCount">
14321
<TD align="right" class="coverageCount">
14325
<TD class="srcLine">
14326
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@return</span> the number of key-value mappings in this map.</span></PRE>
14333
<TD align="right" class="lineCount">
14337
<TD align="right" class="coverageCount">
14341
<TD class="srcLine">
14342
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
14349
<TD align="right" class="lineCountHilight">
14353
<TD align="right" class="lineCountHilight">
14354
<A title="Line 881: method entered 419 times."> 419</A>
14357
<TD class="srcLine">
14358
<A title="Line 881: method entered 419 times."><PRE class="srcLine"> <span class="keyword">public</span> <span class="keyword">synchronized</span> <span class="keyword">int</span> size() {</PRE></A>
14365
<TD align="right" class="lineCountHilight">
14369
<TD align="right" class="lineCountHilight">
14370
<A title="Line 882: statement executed 419 times."> 419</A>
14373
<TD class="srcLine">
14374
<A title="Line 882: statement executed 419 times."><PRE class="srcLine"> <span class="keyword">return</span> count;</PRE></A>
14381
<TD align="right" class="lineCount">
14385
<TD align="right" class="coverageCount">
14389
<TD class="srcLine">
14390
<PRE class="srcLine"> }</PRE>
14397
<TD align="right" class="lineCount">
14401
<TD align="right" class="coverageCount">
14405
<TD class="srcLine">
14406
<PRE class="srcLine"> </PRE>
14413
<TD align="right" class="lineCount">
14417
<TD align="right" class="coverageCount">
14421
<TD class="srcLine">
14422
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
14429
<TD align="right" class="lineCount">
14433
<TD align="right" class="coverageCount">
14437
<TD class="srcLine">
14438
<PRE class="srcLine"> <span class="comment"> * Returns a collection view of the values contained in this map.</span></PRE>
14445
<TD align="right" class="lineCount">
14449
<TD align="right" class="coverageCount">
14453
<TD class="srcLine">
14454
<PRE class="srcLine"> <span class="comment"> * The collection is backed by the map, so changes to the map are reflected in</span></PRE>
14461
<TD align="right" class="lineCount">
14465
<TD align="right" class="coverageCount">
14469
<TD class="srcLine">
14470
<PRE class="srcLine"> <span class="comment"> * the collection, and vice-versa. The collection supports element</span></PRE>
14477
<TD align="right" class="lineCount">
14481
<TD align="right" class="coverageCount">
14485
<TD class="srcLine">
14486
<PRE class="srcLine"> <span class="comment"> * removal, which removes the corresponding mapping from this map, via the</span></PRE>
14493
<TD align="right" class="lineCount">
14497
<TD align="right" class="coverageCount">
14501
<TD class="srcLine">
14502
<PRE class="srcLine"> <span class="comment"> * <tt>Iterator.remove</tt>, <tt>Collection.remove</tt>,</span></PRE>
14509
<TD align="right" class="lineCount">
14513
<TD align="right" class="coverageCount">
14517
<TD class="srcLine">
14518
<PRE class="srcLine"> <span class="comment"> * <tt>removeAll</tt>, <tt>retainAll</tt>, and <tt>clear</tt> operations.</span></PRE>
14525
<TD align="right" class="lineCount">
14529
<TD align="right" class="coverageCount">
14533
<TD class="srcLine">
14534
<PRE class="srcLine"> <span class="comment"> * It does not support the <tt>add</tt> or <tt>addAll</tt> operations.</span></PRE>
14541
<TD align="right" class="lineCount">
14545
<TD align="right" class="coverageCount">
14549
<TD class="srcLine">
14550
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
14557
<TD align="right" class="lineCount">
14561
<TD align="right" class="coverageCount">
14565
<TD class="srcLine">
14566
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@return</span> a collection view of the values contained in this map.</span></PRE>
14573
<TD align="right" class="lineCount">
14577
<TD align="right" class="coverageCount">
14581
<TD class="srcLine">
14582
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
14589
<TD align="right" class="lineCountHilight">
14593
<TD align="right" class="coverageCountHilight">
14594
<A title="Line 896: method not entered."> 0</A>
14597
<TD class="srcHilight">
14598
<SPAN class="srcHilight">
14599
<A title="Line 896: method not entered."><PRE class="srcLine"> <span class="keyword">public</span> Collection values() {</PRE></A>
14607
<TD align="right" class="lineCountHilight">
14611
<TD align="right" class="coverageCountHilight">
14612
<A title="Line 897: statement not executed."> 0</A>
14615
<TD class="srcHilight">
14616
<SPAN class="srcHilight">
14617
<A title="Line 897: statement not executed."><PRE class="srcLine"> Collection vs = values;</PRE></A>
14625
<TD align="right" class="lineCount">
14629
<TD align="right" class="coverageCount">
14633
<TD class="srcLine">
14634
<PRE class="srcLine"> </PRE>
14641
<TD align="right" class="lineCountHilight">
14645
<TD align="right" class="coverageCountHilight">
14646
<A title="Line 899: statement not executed."> 0</A>
14649
<TD class="srcHilight">
14650
<SPAN class="srcHilight">
14651
<A title="Line 899: statement not executed."><PRE class="srcLine"> <span class="keyword">if</span> (vs != <span class="keyword">null</span>) {</PRE></A>
14659
<TD align="right" class="lineCountHilight">
14663
<TD align="right" class="coverageCountHilight">
14664
<A title="Line 900: statement not executed."> 0</A>
14667
<TD class="srcHilight">
14668
<SPAN class="srcHilight">
14669
<A title="Line 900: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> vs;</PRE></A>
14677
<TD align="right" class="lineCount">
14681
<TD align="right" class="coverageCount">
14685
<TD class="srcLine">
14686
<PRE class="srcLine"> } <span class="keyword">else</span> {</PRE>
14693
<TD align="right" class="lineCountHilight">
14697
<TD align="right" class="coverageCountHilight">
14698
<A title="Line 902: statement not executed."> 0</A>
14701
<TD class="srcHilight">
14702
<SPAN class="srcHilight">
14703
<A title="Line 902: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> values = <span class="keyword">new</span> AbstractCollection() {</PRE></A>
14711
<TD align="right" class="lineCountHilight">
14715
<TD align="right" class="coverageCountHilight">
14716
<A title="Line 903: method not entered."> 0</A>
14719
<TD class="srcHilight">
14720
<SPAN class="srcHilight">
14721
<A title="Line 903: method not entered."><PRE class="srcLine"> <span class="keyword">public</span> Iterator iterator() {</PRE></A>
14729
<TD align="right" class="lineCountHilight">
14733
<TD align="right" class="coverageCountHilight">
14734
<A title="Line 904: statement not executed."> 0</A>
14737
<TD class="srcHilight">
14738
<SPAN class="srcHilight">
14739
<A title="Line 904: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> <span class="keyword">new</span> ValueIterator();</PRE></A>
14747
<TD align="right" class="lineCount">
14751
<TD align="right" class="coverageCount">
14755
<TD class="srcLine">
14756
<PRE class="srcLine"> }</PRE>
14763
<TD align="right" class="lineCount">
14767
<TD align="right" class="coverageCount">
14771
<TD class="srcLine">
14772
<PRE class="srcLine"> </PRE>
14779
<TD align="right" class="lineCountHilight">
14783
<TD align="right" class="coverageCountHilight">
14784
<A title="Line 907: method not entered."> 0</A>
14787
<TD class="srcHilight">
14788
<SPAN class="srcHilight">
14789
<A title="Line 907: method not entered."><PRE class="srcLine"> <span class="keyword">public</span> <span class="keyword">int</span> size() {</PRE></A>
14797
<TD align="right" class="lineCountHilight">
14801
<TD align="right" class="coverageCountHilight">
14802
<A title="Line 908: statement not executed."> 0</A>
14805
<TD class="srcHilight">
14806
<SPAN class="srcHilight">
14807
<A title="Line 908: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> AbstractConcurrentReadCache.<span class="keyword">this</span>.size();</PRE></A>
14815
<TD align="right" class="lineCount">
14819
<TD align="right" class="coverageCount">
14823
<TD class="srcLine">
14824
<PRE class="srcLine"> }</PRE>
14831
<TD align="right" class="lineCount">
14835
<TD align="right" class="coverageCount">
14839
<TD class="srcLine">
14840
<PRE class="srcLine"> </PRE>
14847
<TD align="right" class="lineCountHilight">
14851
<TD align="right" class="coverageCountHilight">
14852
<A title="Line 911: method not entered."> 0</A>
14855
<TD class="srcHilight">
14856
<SPAN class="srcHilight">
14857
<A title="Line 911: method not entered."><PRE class="srcLine"> <span class="keyword">public</span> <span class="keyword">boolean</span> contains(Object o) {</PRE></A>
14865
<TD align="right" class="lineCountHilight">
14869
<TD align="right" class="coverageCountHilight">
14870
<A title="Line 912: statement not executed."> 0</A>
14873
<TD class="srcHilight">
14874
<SPAN class="srcHilight">
14875
<A title="Line 912: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> AbstractConcurrentReadCache.<span class="keyword">this</span>.containsValue(o);</PRE></A>
14883
<TD align="right" class="lineCount">
14887
<TD align="right" class="coverageCount">
14891
<TD class="srcLine">
14892
<PRE class="srcLine"> }</PRE>
14899
<TD align="right" class="lineCount">
14903
<TD align="right" class="coverageCount">
14907
<TD class="srcLine">
14908
<PRE class="srcLine"> </PRE>
14915
<TD align="right" class="lineCountHilight">
14919
<TD align="right" class="coverageCountHilight">
14920
<A title="Line 915: method not entered."> 0</A>
14923
<TD class="srcHilight">
14924
<SPAN class="srcHilight">
14925
<A title="Line 915: method not entered."><PRE class="srcLine"> <span class="keyword">public</span> <span class="keyword">void</span> clear() {</PRE></A>
14933
<TD align="right" class="lineCountHilight">
14937
<TD align="right" class="coverageCountHilight">
14938
<A title="Line 916: statement not executed."> 0</A>
14941
<TD class="srcHilight">
14942
<SPAN class="srcHilight">
14943
<A title="Line 916: statement not executed."><PRE class="srcLine"> AbstractConcurrentReadCache.<span class="keyword">this</span>.clear();</PRE></A>
14951
<TD align="right" class="lineCount">
14955
<TD align="right" class="coverageCount">
14959
<TD class="srcLine">
14960
<PRE class="srcLine"> }</PRE>
14967
<TD align="right" class="lineCount">
14971
<TD align="right" class="coverageCount">
14975
<TD class="srcLine">
14976
<PRE class="srcLine"> };</PRE>
14983
<TD align="right" class="lineCount">
14987
<TD align="right" class="coverageCount">
14991
<TD class="srcLine">
14992
<PRE class="srcLine"> }</PRE>
14999
<TD align="right" class="lineCount">
15003
<TD align="right" class="coverageCount">
15007
<TD class="srcLine">
15008
<PRE class="srcLine"> }</PRE>
15015
<TD align="right" class="lineCount">
15019
<TD align="right" class="coverageCount">
15023
<TD class="srcLine">
15024
<PRE class="srcLine"> </PRE>
15031
<TD align="right" class="lineCount">
15035
<TD align="right" class="coverageCount">
15039
<TD class="srcLine">
15040
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
15047
<TD align="right" class="lineCount">
15051
<TD align="right" class="coverageCount">
15055
<TD class="srcLine">
15056
<PRE class="srcLine"> <span class="comment"> * Get ref to groups.</span></PRE>
15063
<TD align="right" class="lineCount">
15067
<TD align="right" class="coverageCount">
15071
<TD class="srcLine">
15072
<PRE class="srcLine"> <span class="comment"> * The reference and the cells it</span></PRE>
15079
<TD align="right" class="lineCount">
15083
<TD align="right" class="coverageCount">
15087
<TD class="srcLine">
15088
<PRE class="srcLine"> <span class="comment"> * accesses will be at least as fresh as from last</span></PRE>
15095
<TD align="right" class="lineCount">
15099
<TD align="right" class="coverageCount">
15103
<TD class="srcLine">
15104
<PRE class="srcLine"> <span class="comment"> * use of barrierLock</span></PRE>
15111
<TD align="right" class="lineCount">
15115
<TD align="right" class="coverageCount">
15119
<TD class="srcLine">
15120
<PRE class="srcLine"> <span class="comment"> **/</span></PRE>
15127
<TD align="right" class="lineCountHilight">
15131
<TD align="right" class="lineCountHilight">
15132
<A title="Line 928: method entered 14 times."> 14</A>
15135
<TD class="srcLine">
15136
<A title="Line 928: method entered 14 times."><PRE class="srcLine"> <span class="keyword">protected</span> final Map getGroupsForReading() {</PRE></A>
15143
<TD align="right" class="lineCountHilight">
15147
<TD align="right" class="lineCountHilight">
15148
<A title="Line 929: statement executed 14 times."> 14</A>
15151
<TD class="srcLine">
15152
<A title="Line 929: statement executed 14 times."><PRE class="srcLine"> <span class="keyword">synchronized</span> (barrierLock) {</PRE></A>
15159
<TD align="right" class="lineCountHilight">
15163
<TD align="right" class="lineCountHilight">
15164
<A title="Line 930: statement executed 14 times."> 14</A>
15167
<TD class="srcLine">
15168
<A title="Line 930: statement executed 14 times."><PRE class="srcLine"> <span class="keyword">return</span> groups;</PRE></A>
15175
<TD align="right" class="lineCount">
15179
<TD align="right" class="coverageCount">
15183
<TD class="srcLine">
15184
<PRE class="srcLine"> }</PRE>
15191
<TD align="right" class="lineCount">
15195
<TD align="right" class="coverageCount">
15199
<TD class="srcLine">
15200
<PRE class="srcLine"> }</PRE>
15207
<TD align="right" class="lineCount">
15211
<TD align="right" class="coverageCount">
15215
<TD class="srcLine">
15216
<PRE class="srcLine"> </PRE>
15223
<TD align="right" class="lineCount">
15227
<TD align="right" class="coverageCount">
15231
<TD class="srcLine">
15232
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
15239
<TD align="right" class="lineCount">
15243
<TD align="right" class="coverageCount">
15247
<TD class="srcLine">
15248
<PRE class="srcLine"> <span class="comment"> * Get ref to table; the reference and the cells it</span></PRE>
15255
<TD align="right" class="lineCount">
15259
<TD align="right" class="coverageCount">
15263
<TD class="srcLine">
15264
<PRE class="srcLine"> <span class="comment"> * accesses will be at least as fresh as from last</span></PRE>
15271
<TD align="right" class="lineCount">
15275
<TD align="right" class="coverageCount">
15279
<TD class="srcLine">
15280
<PRE class="srcLine"> <span class="comment"> * use of barrierLock</span></PRE>
15287
<TD align="right" class="lineCount">
15291
<TD align="right" class="coverageCount">
15295
<TD class="srcLine">
15296
<PRE class="srcLine"> <span class="comment"> **/</span></PRE>
15303
<TD align="right" class="lineCountHilight">
15307
<TD align="right" class="lineCountHilight">
15308
<A title="Line 939: method entered 254 times."> 254</A>
15311
<TD class="srcLine">
15312
<A title="Line 939: method entered 254 times."><PRE class="srcLine"> <span class="keyword">protected</span> final Entry[] getTableForReading() {</PRE></A>
15319
<TD align="right" class="lineCountHilight">
15323
<TD align="right" class="lineCountHilight">
15324
<A title="Line 940: statement executed 254 times."> 254</A>
15327
<TD class="srcLine">
15328
<A title="Line 940: statement executed 254 times."><PRE class="srcLine"> <span class="keyword">synchronized</span> (barrierLock) {</PRE></A>
15335
<TD align="right" class="lineCountHilight">
15339
<TD align="right" class="lineCountHilight">
15340
<A title="Line 941: statement executed 254 times."> 254</A>
15343
<TD class="srcLine">
15344
<A title="Line 941: statement executed 254 times."><PRE class="srcLine"> <span class="keyword">return</span> table;</PRE></A>
15351
<TD align="right" class="lineCount">
15355
<TD align="right" class="coverageCount">
15359
<TD class="srcLine">
15360
<PRE class="srcLine"> }</PRE>
15367
<TD align="right" class="lineCount">
15371
<TD align="right" class="coverageCount">
15375
<TD class="srcLine">
15376
<PRE class="srcLine"> }</PRE>
15383
<TD align="right" class="lineCount">
15387
<TD align="right" class="coverageCount">
15391
<TD class="srcLine">
15392
<PRE class="srcLine"> </PRE>
15399
<TD align="right" class="lineCount">
15403
<TD align="right" class="coverageCount">
15407
<TD class="srcLine">
15408
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
15415
<TD align="right" class="lineCount">
15419
<TD align="right" class="coverageCount">
15423
<TD class="srcLine">
15424
<PRE class="srcLine"> <span class="comment"> * Force a memory synchronization that will cause</span></PRE>
15431
<TD align="right" class="lineCount">
15435
<TD align="right" class="coverageCount">
15439
<TD class="srcLine">
15440
<PRE class="srcLine"> <span class="comment"> * all readers to see table. Call only when already</span></PRE>
15447
<TD align="right" class="lineCount">
15451
<TD align="right" class="coverageCount">
15455
<TD class="srcLine">
15456
<PRE class="srcLine"> <span class="comment"> * holding main synch lock.</span></PRE>
15463
<TD align="right" class="lineCount">
15467
<TD align="right" class="coverageCount">
15471
<TD class="srcLine">
15472
<PRE class="srcLine"> <span class="comment"> **/</span></PRE>
15479
<TD align="right" class="lineCountHilight">
15483
<TD align="right" class="lineCountHilight">
15484
<A title="Line 950: method entered 482 times."> 482</A>
15487
<TD class="srcLine">
15488
<A title="Line 950: method entered 482 times."><PRE class="srcLine"> <span class="keyword">protected</span> final <span class="keyword">void</span> recordModification(Object x) {</PRE></A>
15495
<TD align="right" class="lineCountHilight">
15499
<TD align="right" class="lineCountHilight">
15500
<A title="Line 951: statement executed 482 times."> 482</A>
15503
<TD class="srcLine">
15504
<A title="Line 951: statement executed 482 times."><PRE class="srcLine"> <span class="keyword">synchronized</span> (barrierLock) {</PRE></A>
15511
<TD align="right" class="lineCountHilight">
15515
<TD align="right" class="lineCountHilight">
15516
<A title="Line 952: statement executed 482 times."> 482</A>
15519
<TD class="srcLine">
15520
<A title="Line 952: statement executed 482 times."><PRE class="srcLine"> lastWrite = x;</PRE></A>
15527
<TD align="right" class="lineCount">
15531
<TD align="right" class="coverageCount">
15535
<TD class="srcLine">
15536
<PRE class="srcLine"> }</PRE>
15543
<TD align="right" class="lineCount">
15547
<TD align="right" class="coverageCount">
15551
<TD class="srcLine">
15552
<PRE class="srcLine"> }</PRE>
15559
<TD align="right" class="lineCount">
15563
<TD align="right" class="coverageCount">
15567
<TD class="srcLine">
15568
<PRE class="srcLine"> </PRE>
15575
<TD align="right" class="lineCount">
15579
<TD align="right" class="coverageCount">
15583
<TD class="srcLine">
15584
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
15591
<TD align="right" class="lineCount">
15595
<TD align="right" class="coverageCount">
15599
<TD class="srcLine">
15600
<PRE class="srcLine"> <span class="comment"> * Helper method for entrySet remove.</span></PRE>
15607
<TD align="right" class="lineCount">
15611
<TD align="right" class="coverageCount">
15615
<TD class="srcLine">
15616
<PRE class="srcLine"> <span class="comment"> **/</span></PRE>
15623
<TD align="right" class="lineCountHilight">
15627
<TD align="right" class="coverageCountHilight">
15628
<A title="Line 959: method not entered."> 0</A>
15631
<TD class="srcHilight">
15632
<SPAN class="srcHilight">
15633
<A title="Line 959: method not entered."><PRE class="srcLine"> <span class="keyword">protected</span> <span class="keyword">synchronized</span> <span class="keyword">boolean</span> findAndRemoveEntry(Map.Entry entry) {</PRE></A>
15641
<TD align="right" class="lineCountHilight">
15645
<TD align="right" class="coverageCountHilight">
15646
<A title="Line 960: statement not executed."> 0</A>
15649
<TD class="srcHilight">
15650
<SPAN class="srcHilight">
15651
<A title="Line 960: statement not executed."><PRE class="srcLine"> Object key = entry.getKey();</PRE></A>
15659
<TD align="right" class="lineCountHilight">
15663
<TD align="right" class="coverageCountHilight">
15664
<A title="Line 961: statement not executed."> 0</A>
15667
<TD class="srcHilight">
15668
<SPAN class="srcHilight">
15669
<A title="Line 961: statement not executed."><PRE class="srcLine"> Object v = get(key);</PRE></A>
15677
<TD align="right" class="lineCount">
15681
<TD align="right" class="coverageCount">
15685
<TD class="srcLine">
15686
<PRE class="srcLine"> </PRE>
15693
<TD align="right" class="lineCountHilight">
15697
<TD align="right" class="coverageCountHilight">
15698
<A title="Line 963: statement not executed."> 0</A>
15701
<TD class="srcHilight">
15702
<SPAN class="srcHilight">
15703
<A title="Line 963: statement not executed."><PRE class="srcLine"> <span class="keyword">if</span> ((v != <span class="keyword">null</span>) && v.equals(entry.getValue())) {</PRE></A>
15711
<TD align="right" class="lineCountHilight">
15715
<TD align="right" class="coverageCountHilight">
15716
<A title="Line 964: statement not executed."> 0</A>
15719
<TD class="srcHilight">
15720
<SPAN class="srcHilight">
15721
<A title="Line 964: statement not executed."><PRE class="srcLine"> remove(key);</PRE></A>
15729
<TD align="right" class="lineCount">
15733
<TD align="right" class="coverageCount">
15737
<TD class="srcLine">
15738
<PRE class="srcLine"> </PRE>
15745
<TD align="right" class="lineCountHilight">
15749
<TD align="right" class="coverageCountHilight">
15750
<A title="Line 966: statement not executed."> 0</A>
15753
<TD class="srcHilight">
15754
<SPAN class="srcHilight">
15755
<A title="Line 966: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> <span class="keyword">true</span>;</PRE></A>
15763
<TD align="right" class="lineCount">
15767
<TD align="right" class="coverageCount">
15771
<TD class="srcLine">
15772
<PRE class="srcLine"> } <span class="keyword">else</span> {</PRE>
15779
<TD align="right" class="lineCountHilight">
15783
<TD align="right" class="coverageCountHilight">
15784
<A title="Line 968: statement not executed."> 0</A>
15787
<TD class="srcHilight">
15788
<SPAN class="srcHilight">
15789
<A title="Line 968: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> <span class="keyword">false</span>;</PRE></A>
15797
<TD align="right" class="lineCount">
15801
<TD align="right" class="coverageCount">
15805
<TD class="srcLine">
15806
<PRE class="srcLine"> }</PRE>
15813
<TD align="right" class="lineCount">
15817
<TD align="right" class="coverageCount">
15821
<TD class="srcLine">
15822
<PRE class="srcLine"> }</PRE>
15829
<TD align="right" class="lineCount">
15833
<TD align="right" class="coverageCount">
15837
<TD class="srcLine">
15838
<PRE class="srcLine"> </PRE>
15845
<TD align="right" class="lineCount">
15849
<TD align="right" class="coverageCount">
15853
<TD class="srcLine">
15854
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
15861
<TD align="right" class="lineCount">
15865
<TD align="right" class="coverageCount">
15869
<TD class="srcLine">
15870
<PRE class="srcLine"> <span class="comment"> * Remove an object from the persistence.</span></PRE>
15877
<TD align="right" class="lineCount">
15881
<TD align="right" class="coverageCount">
15885
<TD class="srcLine">
15886
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@param</span> key The key of the object to remove</span></PRE>
15893
<TD align="right" class="lineCount">
15897
<TD align="right" class="coverageCount">
15901
<TD class="srcLine">
15902
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
15909
<TD align="right" class="lineCountHilight">
15913
<TD align="right" class="lineCountHilight">
15914
<A title="Line 976: method entered 36 times."> 36</A>
15917
<TD class="srcLine">
15918
<A title="Line 976: method entered 36 times."><PRE class="srcLine"> <span class="keyword">protected</span> <span class="keyword">void</span> persistRemove(Object key) {</PRE></A>
15925
<TD align="right" class="lineCountHilight">
15929
<TD align="right" class="coverageCountHilight">
15930
<A title="Line 977: expression evaluated to true 0 times, false 36 times."> 36</A>
15933
<TD class="srcHilight">
15934
<SPAN class="srcHilight">
15935
<A title="Line 977: expression evaluated to true 0 times, false 36 times."><PRE class="srcLine"> <span class="keyword">if</span> (log.isDebugEnabled()) {</PRE></A>
15943
<TD align="right" class="lineCountHilight">
15947
<TD align="right" class="coverageCountHilight">
15948
<A title="Line 978: statement not executed."> 0</A>
15951
<TD class="srcHilight">
15952
<SPAN class="srcHilight">
15953
<A title="Line 978: statement not executed."><PRE class="srcLine"> log.debug(<span class="string">"PersistRemove called (key="</span> + key + <span class="string">")"</span>);</PRE></A>
15961
<TD align="right" class="lineCount">
15965
<TD align="right" class="coverageCount">
15969
<TD class="srcLine">
15970
<PRE class="srcLine"> }</PRE>
15977
<TD align="right" class="lineCount">
15981
<TD align="right" class="coverageCount">
15985
<TD class="srcLine">
15986
<PRE class="srcLine"> </PRE>
15993
<TD align="right" class="lineCountHilight">
15997
<TD align="right" class="coverageCountHilight">
15998
<A title="Line 981: expression evaluated to true 0 times, false 36 times."> 36</A>
16001
<TD class="srcHilight">
16002
<SPAN class="srcHilight">
16003
<A title="Line 981: expression evaluated to true 0 times, false 36 times."><PRE class="srcLine"> <span class="keyword">if</span> (persistenceListener != <span class="keyword">null</span>) {</PRE></A>
16011
<TD align="right" class="lineCountHilight">
16015
<TD align="right" class="coverageCountHilight">
16016
<A title="Line 982: statement not executed."> 0</A>
16019
<TD class="srcHilight">
16020
<SPAN class="srcHilight">
16021
<A title="Line 982: statement not executed."><PRE class="srcLine"> <span class="keyword">try</span> {</PRE></A>
16029
<TD align="right" class="lineCountHilight">
16033
<TD align="right" class="coverageCountHilight">
16034
<A title="Line 983: statement not executed."> 0</A>
16037
<TD class="srcHilight">
16038
<SPAN class="srcHilight">
16039
<A title="Line 983: statement not executed."><PRE class="srcLine"> persistenceListener.remove((String) key);</PRE></A>
16047
<TD align="right" class="lineCount">
16051
<TD align="right" class="coverageCount">
16055
<TD class="srcLine">
16056
<PRE class="srcLine"> } <span class="keyword">catch</span> (CachePersistenceException e) {</PRE>
16063
<TD align="right" class="lineCountHilight">
16067
<TD align="right" class="coverageCountHilight">
16068
<A title="Line 985: statement not executed."> 0</A>
16071
<TD class="srcHilight">
16072
<SPAN class="srcHilight">
16073
<A title="Line 985: statement not executed."><PRE class="srcLine"> log.error(<span class="string">"[oscache] Exception removing cache entry with key '"</span> + key + <span class="string">"' from persistence"</span>, e);</PRE></A>
16081
<TD align="right" class="lineCount">
16085
<TD align="right" class="coverageCount">
16089
<TD class="srcLine">
16090
<PRE class="srcLine"> }</PRE>
16097
<TD align="right" class="lineCount">
16101
<TD align="right" class="coverageCount">
16105
<TD class="srcLine">
16106
<PRE class="srcLine"> }</PRE>
16113
<TD align="right" class="lineCount">
16117
<TD align="right" class="coverageCount">
16121
<TD class="srcLine">
16122
<PRE class="srcLine"> }</PRE>
16129
<TD align="right" class="lineCount">
16133
<TD align="right" class="coverageCount">
16137
<TD class="srcLine">
16138
<PRE class="srcLine"> </PRE>
16145
<TD align="right" class="lineCount">
16149
<TD align="right" class="coverageCount">
16153
<TD class="srcLine">
16154
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
16161
<TD align="right" class="lineCount">
16165
<TD align="right" class="coverageCount">
16169
<TD class="srcLine">
16170
<PRE class="srcLine"> <span class="comment"> * Removes a cache group using the persistence listener.</span></PRE>
16177
<TD align="right" class="lineCount">
16181
<TD align="right" class="coverageCount">
16185
<TD class="srcLine">
16186
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@param</span> groupName The name of the group to remove</span></PRE>
16193
<TD align="right" class="lineCount">
16197
<TD align="right" class="coverageCount">
16201
<TD class="srcLine">
16202
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
16209
<TD align="right" class="lineCountHilight">
16213
<TD align="right" class="coverageCountHilight">
16214
<A title="Line 994: method not entered."> 0</A>
16217
<TD class="srcHilight">
16218
<SPAN class="srcHilight">
16219
<A title="Line 994: method not entered."><PRE class="srcLine"> <span class="keyword">protected</span> <span class="keyword">void</span> persistRemoveGroup(String groupName) {</PRE></A>
16227
<TD align="right" class="lineCountHilight">
16231
<TD align="right" class="coverageCountHilight">
16232
<A title="Line 995: statement not executed."> 0</A>
16235
<TD class="srcHilight">
16236
<SPAN class="srcHilight">
16237
<A title="Line 995: statement not executed."><PRE class="srcLine"> <span class="keyword">if</span> (log.isDebugEnabled()) {</PRE></A>
16245
<TD align="right" class="lineCountHilight">
16249
<TD align="right" class="coverageCountHilight">
16250
<A title="Line 996: statement not executed."> 0</A>
16253
<TD class="srcHilight">
16254
<SPAN class="srcHilight">
16255
<A title="Line 996: statement not executed."><PRE class="srcLine"> log.debug(<span class="string">"persistRemoveGroup called (groupName="</span> + groupName + <span class="string">")"</span>);</PRE></A>
16263
<TD align="right" class="lineCount">
16267
<TD align="right" class="coverageCount">
16271
<TD class="srcLine">
16272
<PRE class="srcLine"> }</PRE>
16279
<TD align="right" class="lineCount">
16283
<TD align="right" class="coverageCount">
16287
<TD class="srcLine">
16288
<PRE class="srcLine"> </PRE>
16295
<TD align="right" class="lineCountHilight">
16299
<TD align="right" class="coverageCountHilight">
16300
<A title="Line 999: statement not executed."> 0</A>
16303
<TD class="srcHilight">
16304
<SPAN class="srcHilight">
16305
<A title="Line 999: statement not executed."><PRE class="srcLine"> <span class="keyword">if</span> (persistenceListener != <span class="keyword">null</span>) {</PRE></A>
16313
<TD align="right" class="lineCountHilight">
16317
<TD align="right" class="coverageCountHilight">
16318
<A title="Line 1000: statement not executed."> 0</A>
16321
<TD class="srcHilight">
16322
<SPAN class="srcHilight">
16323
<A title="Line 1000: statement not executed."><PRE class="srcLine"> <span class="keyword">try</span> {</PRE></A>
16331
<TD align="right" class="lineCountHilight">
16335
<TD align="right" class="coverageCountHilight">
16336
<A title="Line 1001: statement not executed."> 0</A>
16339
<TD class="srcHilight">
16340
<SPAN class="srcHilight">
16341
<A title="Line 1001: statement not executed."><PRE class="srcLine"> persistenceListener.removeGroup(groupName);</PRE></A>
16349
<TD align="right" class="lineCount">
16353
<TD align="right" class="coverageCount">
16357
<TD class="srcLine">
16358
<PRE class="srcLine"> } <span class="keyword">catch</span> (CachePersistenceException e) {</PRE>
16365
<TD align="right" class="lineCountHilight">
16369
<TD align="right" class="coverageCountHilight">
16370
<A title="Line 1003: statement not executed."> 0</A>
16373
<TD class="srcHilight">
16374
<SPAN class="srcHilight">
16375
<A title="Line 1003: statement not executed."><PRE class="srcLine"> log.error(<span class="string">"[oscache] Exception removing group "</span> + groupName, e);</PRE></A>
16383
<TD align="right" class="lineCount">
16387
<TD align="right" class="coverageCount">
16391
<TD class="srcLine">
16392
<PRE class="srcLine"> }</PRE>
16399
<TD align="right" class="lineCount">
16403
<TD align="right" class="coverageCount">
16407
<TD class="srcLine">
16408
<PRE class="srcLine"> }</PRE>
16415
<TD align="right" class="lineCount">
16419
<TD align="right" class="coverageCount">
16423
<TD class="srcLine">
16424
<PRE class="srcLine"> }</PRE>
16431
<TD align="right" class="lineCount">
16435
<TD align="right" class="coverageCount">
16439
<TD class="srcLine">
16440
<PRE class="srcLine"> </PRE>
16447
<TD align="right" class="lineCount">
16451
<TD align="right" class="coverageCount">
16455
<TD class="srcLine">
16456
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
16463
<TD align="right" class="lineCount">
16467
<TD align="right" class="coverageCount">
16471
<TD class="srcLine">
16472
<PRE class="srcLine"> <span class="comment"> * Retrieve an object from the persistence listener.</span></PRE>
16479
<TD align="right" class="lineCount">
16483
<TD align="right" class="coverageCount">
16487
<TD class="srcLine">
16488
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@param</span> key The key of the object to retrieve</span></PRE>
16495
<TD align="right" class="lineCount">
16499
<TD align="right" class="coverageCount">
16503
<TD class="srcLine">
16504
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
16511
<TD align="right" class="lineCountHilight">
16515
<TD align="right" class="lineCountHilight">
16516
<A title="Line 1012: method entered 340 times."> 340</A>
16519
<TD class="srcLine">
16520
<A title="Line 1012: method entered 340 times."><PRE class="srcLine"> <span class="keyword">protected</span> Object persistRetrieve(Object key) {</PRE></A>
16527
<TD align="right" class="lineCountHilight">
16531
<TD align="right" class="coverageCountHilight">
16532
<A title="Line 1013: expression evaluated to true 0 times, false 340 times."> 340</A>
16535
<TD class="srcHilight">
16536
<SPAN class="srcHilight">
16537
<A title="Line 1013: expression evaluated to true 0 times, false 340 times."><PRE class="srcLine"> <span class="keyword">if</span> (log.isDebugEnabled()) {</PRE></A>
16545
<TD align="right" class="lineCountHilight">
16549
<TD align="right" class="coverageCountHilight">
16550
<A title="Line 1014: statement not executed."> 0</A>
16553
<TD class="srcHilight">
16554
<SPAN class="srcHilight">
16555
<A title="Line 1014: statement not executed."><PRE class="srcLine"> log.debug(<span class="string">"persistRetrieve called (key="</span> + key + <span class="string">")"</span>);</PRE></A>
16563
<TD align="right" class="lineCount">
16567
<TD align="right" class="coverageCount">
16571
<TD class="srcLine">
16572
<PRE class="srcLine"> }</PRE>
16579
<TD align="right" class="lineCount">
16583
<TD align="right" class="coverageCount">
16587
<TD class="srcLine">
16588
<PRE class="srcLine"> </PRE>
16595
<TD align="right" class="lineCountHilight">
16599
<TD align="right" class="lineCountHilight">
16600
<A title="Line 1017: statement executed 340 times."> 340</A>
16603
<TD class="srcLine">
16604
<A title="Line 1017: statement executed 340 times."><PRE class="srcLine"> Object entry = <span class="keyword">null</span>;</PRE></A>
16611
<TD align="right" class="lineCount">
16615
<TD align="right" class="coverageCount">
16619
<TD class="srcLine">
16620
<PRE class="srcLine"> </PRE>
16627
<TD align="right" class="lineCountHilight">
16631
<TD align="right" class="lineCountHilight">
16632
<A title="Line 1019: statement executed 340 times."> 340</A>
16635
<TD class="srcLine">
16636
<A title="Line 1019: statement executed 340 times."><PRE class="srcLine"> <span class="keyword">if</span> (persistenceListener != <span class="keyword">null</span>) {</PRE></A>
16643
<TD align="right" class="lineCountHilight">
16647
<TD align="right" class="lineCountHilight">
16648
<A title="Line 1020: statement executed 269 times."> 269</A>
16651
<TD class="srcLine">
16652
<A title="Line 1020: statement executed 269 times."><PRE class="srcLine"> <span class="keyword">try</span> {</PRE></A>
16659
<TD align="right" class="lineCountHilight">
16663
<TD align="right" class="lineCountHilight">
16664
<A title="Line 1021: statement executed 269 times."> 269</A>
16667
<TD class="srcLine">
16668
<A title="Line 1021: statement executed 269 times."><PRE class="srcLine"> entry = persistenceListener.retrieve((String) key);</PRE></A>
16675
<TD align="right" class="lineCount">
16679
<TD align="right" class="coverageCount">
16683
<TD class="srcLine">
16684
<PRE class="srcLine"> } <span class="keyword">catch</span> (CachePersistenceException e) {</PRE>
16691
<TD align="right" class="lineCount">
16695
<TD align="right" class="coverageCount">
16699
<TD class="srcLine">
16700
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
16707
<TD align="right" class="lineCount">
16711
<TD align="right" class="coverageCount">
16715
<TD class="srcLine">
16716
<PRE class="srcLine"> <span class="comment"> * It is normal that we get an exception occasionally.</span></PRE>
16723
<TD align="right" class="lineCount">
16727
<TD align="right" class="coverageCount">
16731
<TD class="srcLine">
16732
<PRE class="srcLine"> <span class="comment"> * It happens when the item is invalidated (written or removed)</span></PRE>
16739
<TD align="right" class="lineCount">
16743
<TD align="right" class="coverageCount">
16747
<TD class="srcLine">
16748
<PRE class="srcLine"> <span class="comment"> * during read. The logic is constructed so that read is retried.</span></PRE>
16755
<TD align="right" class="lineCount">
16759
<TD align="right" class="coverageCount">
16763
<TD class="srcLine">
16764
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
16771
<TD align="right" class="lineCount">
16775
<TD align="right" class="coverageCount">
16779
<TD class="srcLine">
16780
<PRE class="srcLine"> }</PRE>
16787
<TD align="right" class="lineCount">
16791
<TD align="right" class="coverageCount">
16795
<TD class="srcLine">
16796
<PRE class="srcLine"> }</PRE>
16803
<TD align="right" class="lineCount">
16807
<TD align="right" class="coverageCount">
16811
<TD class="srcLine">
16812
<PRE class="srcLine"> </PRE>
16819
<TD align="right" class="lineCountHilight">
16823
<TD align="right" class="lineCountHilight">
16824
<A title="Line 1031: statement executed 340 times."> 340</A>
16827
<TD class="srcLine">
16828
<A title="Line 1031: statement executed 340 times."><PRE class="srcLine"> <span class="keyword">return</span> entry;</PRE></A>
16835
<TD align="right" class="lineCount">
16839
<TD align="right" class="coverageCount">
16843
<TD class="srcLine">
16844
<PRE class="srcLine"> }</PRE>
16851
<TD align="right" class="lineCount">
16855
<TD align="right" class="coverageCount">
16859
<TD class="srcLine">
16860
<PRE class="srcLine"> </PRE>
16867
<TD align="right" class="lineCount">
16871
<TD align="right" class="coverageCount">
16875
<TD class="srcLine">
16876
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
16883
<TD align="right" class="lineCount">
16887
<TD align="right" class="coverageCount">
16891
<TD class="srcLine">
16892
<PRE class="srcLine"> <span class="comment"> * Retrieves a cache group using the persistence listener.</span></PRE>
16899
<TD align="right" class="lineCount">
16903
<TD align="right" class="coverageCount">
16907
<TD class="srcLine">
16908
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@param</span> groupName The name of the group to retrieve</span></PRE>
16915
<TD align="right" class="lineCount">
16919
<TD align="right" class="coverageCount">
16923
<TD class="srcLine">
16924
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
16931
<TD align="right" class="lineCountHilight">
16935
<TD align="right" class="lineCountHilight">
16936
<A title="Line 1038: method entered 107 times."> 107</A>
16939
<TD class="srcLine">
16940
<A title="Line 1038: method entered 107 times."><PRE class="srcLine"> <span class="keyword">protected</span> Set persistRetrieveGroup(String groupName) {</PRE></A>
16947
<TD align="right" class="lineCountHilight">
16951
<TD align="right" class="coverageCountHilight">
16952
<A title="Line 1039: expression evaluated to true 0 times, false 107 times."> 107</A>
16955
<TD class="srcHilight">
16956
<SPAN class="srcHilight">
16957
<A title="Line 1039: expression evaluated to true 0 times, false 107 times."><PRE class="srcLine"> <span class="keyword">if</span> (log.isDebugEnabled()) {</PRE></A>
16965
<TD align="right" class="lineCountHilight">
16969
<TD align="right" class="coverageCountHilight">
16970
<A title="Line 1040: statement not executed."> 0</A>
16973
<TD class="srcHilight">
16974
<SPAN class="srcHilight">
16975
<A title="Line 1040: statement not executed."><PRE class="srcLine"> log.debug(<span class="string">"persistRetrieveGroup called (groupName="</span> + groupName + <span class="string">")"</span>);</PRE></A>
16983
<TD align="right" class="lineCount">
16987
<TD align="right" class="coverageCount">
16991
<TD class="srcLine">
16992
<PRE class="srcLine"> }</PRE>
16999
<TD align="right" class="lineCount">
17003
<TD align="right" class="coverageCount">
17007
<TD class="srcLine">
17008
<PRE class="srcLine"> </PRE>
17015
<TD align="right" class="lineCountHilight">
17019
<TD align="right" class="lineCountHilight">
17020
<A title="Line 1043: statement executed 107 times."> 107</A>
17023
<TD class="srcLine">
17024
<A title="Line 1043: statement executed 107 times."><PRE class="srcLine"> <span class="keyword">if</span> (persistenceListener != <span class="keyword">null</span>) {</PRE></A>
17031
<TD align="right" class="lineCountHilight">
17035
<TD align="right" class="lineCountHilight">
17036
<A title="Line 1044: statement executed 77 times."> 77</A>
17039
<TD class="srcLine">
17040
<A title="Line 1044: statement executed 77 times."><PRE class="srcLine"> <span class="keyword">try</span> {</PRE></A>
17047
<TD align="right" class="lineCountHilight">
17051
<TD align="right" class="lineCountHilight">
17052
<A title="Line 1045: statement executed 77 times."> 77</A>
17055
<TD class="srcLine">
17056
<A title="Line 1045: statement executed 77 times."><PRE class="srcLine"> <span class="keyword">return</span> persistenceListener.retrieveGroup(groupName);</PRE></A>
17063
<TD align="right" class="lineCount">
17067
<TD align="right" class="coverageCount">
17071
<TD class="srcLine">
17072
<PRE class="srcLine"> } <span class="keyword">catch</span> (CachePersistenceException e) {</PRE>
17079
<TD align="right" class="lineCountHilight">
17083
<TD align="right" class="coverageCountHilight">
17084
<A title="Line 1047: statement not executed."> 0</A>
17087
<TD class="srcHilight">
17088
<SPAN class="srcHilight">
17089
<A title="Line 1047: statement not executed."><PRE class="srcLine"> log.error(<span class="string">"[oscache] Exception retrieving group "</span> + groupName, e);</PRE></A>
17097
<TD align="right" class="lineCount">
17101
<TD align="right" class="coverageCount">
17105
<TD class="srcLine">
17106
<PRE class="srcLine"> }</PRE>
17113
<TD align="right" class="lineCount">
17117
<TD align="right" class="coverageCount">
17121
<TD class="srcLine">
17122
<PRE class="srcLine"> }</PRE>
17129
<TD align="right" class="lineCount">
17133
<TD align="right" class="coverageCount">
17137
<TD class="srcLine">
17138
<PRE class="srcLine"> </PRE>
17145
<TD align="right" class="lineCountHilight">
17149
<TD align="right" class="lineCountHilight">
17150
<A title="Line 1051: statement executed 30 times."> 30</A>
17153
<TD class="srcLine">
17154
<A title="Line 1051: statement executed 30 times."><PRE class="srcLine"> <span class="keyword">return</span> <span class="keyword">null</span>;</PRE></A>
17161
<TD align="right" class="lineCount">
17165
<TD align="right" class="coverageCount">
17169
<TD class="srcLine">
17170
<PRE class="srcLine"> }</PRE>
17177
<TD align="right" class="lineCount">
17181
<TD align="right" class="coverageCount">
17185
<TD class="srcLine">
17186
<PRE class="srcLine"> </PRE>
17193
<TD align="right" class="lineCount">
17197
<TD align="right" class="coverageCount">
17201
<TD class="srcLine">
17202
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
17209
<TD align="right" class="lineCount">
17213
<TD align="right" class="coverageCount">
17217
<TD class="srcLine">
17218
<PRE class="srcLine"> <span class="comment"> * Store an object in the cache using the persistence listener.</span></PRE>
17225
<TD align="right" class="lineCount">
17229
<TD align="right" class="coverageCount">
17233
<TD class="srcLine">
17234
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@param</span> key The object key</span></PRE>
17241
<TD align="right" class="lineCount">
17245
<TD align="right" class="coverageCount">
17249
<TD class="srcLine">
17250
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@param</span> obj The object to store</span></PRE>
17257
<TD align="right" class="lineCount">
17261
<TD align="right" class="coverageCount">
17265
<TD class="srcLine">
17266
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
17273
<TD align="right" class="lineCountHilight">
17277
<TD align="right" class="lineCountHilight">
17278
<A title="Line 1059: method entered 390 times."> 390</A>
17281
<TD class="srcLine">
17282
<A title="Line 1059: method entered 390 times."><PRE class="srcLine"> <span class="keyword">protected</span> <span class="keyword">void</span> persistStore(Object key, Object obj) {</PRE></A>
17289
<TD align="right" class="lineCountHilight">
17293
<TD align="right" class="coverageCountHilight">
17294
<A title="Line 1060: expression evaluated to true 0 times, false 390 times."> 390</A>
17297
<TD class="srcHilight">
17298
<SPAN class="srcHilight">
17299
<A title="Line 1060: expression evaluated to true 0 times, false 390 times."><PRE class="srcLine"> <span class="keyword">if</span> (log.isDebugEnabled()) {</PRE></A>
17307
<TD align="right" class="lineCountHilight">
17311
<TD align="right" class="coverageCountHilight">
17312
<A title="Line 1061: statement not executed."> 0</A>
17315
<TD class="srcHilight">
17316
<SPAN class="srcHilight">
17317
<A title="Line 1061: statement not executed."><PRE class="srcLine"> log.debug(<span class="string">"persistStore called (key="</span> + key + <span class="string">")"</span>);</PRE></A>
17325
<TD align="right" class="lineCount">
17329
<TD align="right" class="coverageCount">
17333
<TD class="srcLine">
17334
<PRE class="srcLine"> }</PRE>
17341
<TD align="right" class="lineCount">
17345
<TD align="right" class="coverageCount">
17349
<TD class="srcLine">
17350
<PRE class="srcLine"> </PRE>
17357
<TD align="right" class="lineCountHilight">
17361
<TD align="right" class="lineCountHilight">
17362
<A title="Line 1064: statement executed 390 times."> 390</A>
17365
<TD class="srcLine">
17366
<A title="Line 1064: statement executed 390 times."><PRE class="srcLine"> <span class="keyword">if</span> (persistenceListener != <span class="keyword">null</span>) {</PRE></A>
17373
<TD align="right" class="lineCountHilight">
17377
<TD align="right" class="lineCountHilight">
17378
<A title="Line 1065: statement executed 161 times."> 161</A>
17381
<TD class="srcLine">
17382
<A title="Line 1065: statement executed 161 times."><PRE class="srcLine"> <span class="keyword">try</span> {</PRE></A>
17389
<TD align="right" class="lineCountHilight">
17393
<TD align="right" class="lineCountHilight">
17394
<A title="Line 1066: statement executed 161 times."> 161</A>
17397
<TD class="srcLine">
17398
<A title="Line 1066: statement executed 161 times."><PRE class="srcLine"> persistenceListener.store((String) key, obj);</PRE></A>
17405
<TD align="right" class="lineCount">
17409
<TD align="right" class="coverageCount">
17413
<TD class="srcLine">
17414
<PRE class="srcLine"> } <span class="keyword">catch</span> (CachePersistenceException e) {</PRE>
17421
<TD align="right" class="lineCountHilight">
17425
<TD align="right" class="coverageCountHilight">
17426
<A title="Line 1068: statement not executed."> 0</A>
17429
<TD class="srcHilight">
17430
<SPAN class="srcHilight">
17431
<A title="Line 1068: statement not executed."><PRE class="srcLine"> log.error(<span class="string">"[oscache] Exception persisting "</span> + key, e);</PRE></A>
17439
<TD align="right" class="lineCount">
17443
<TD align="right" class="coverageCount">
17447
<TD class="srcLine">
17448
<PRE class="srcLine"> }</PRE>
17455
<TD align="right" class="lineCount">
17459
<TD align="right" class="coverageCount">
17463
<TD class="srcLine">
17464
<PRE class="srcLine"> }</PRE>
17471
<TD align="right" class="lineCount">
17475
<TD align="right" class="coverageCount">
17479
<TD class="srcLine">
17480
<PRE class="srcLine"> }</PRE>
17487
<TD align="right" class="lineCount">
17491
<TD align="right" class="coverageCount">
17495
<TD class="srcLine">
17496
<PRE class="srcLine"> </PRE>
17503
<TD align="right" class="lineCount">
17507
<TD align="right" class="coverageCount">
17511
<TD class="srcLine">
17512
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
17519
<TD align="right" class="lineCount">
17523
<TD align="right" class="coverageCount">
17527
<TD class="srcLine">
17528
<PRE class="srcLine"> <span class="comment"> * Creates or Updates a cache group using the persistence listener.</span></PRE>
17535
<TD align="right" class="lineCount">
17539
<TD align="right" class="coverageCount">
17543
<TD class="srcLine">
17544
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@param</span> groupName The name of the group to update</span></PRE>
17551
<TD align="right" class="lineCount">
17555
<TD align="right" class="coverageCount">
17559
<TD class="srcLine">
17560
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@param</span> group The entries for the group</span></PRE>
17567
<TD align="right" class="lineCount">
17571
<TD align="right" class="coverageCount">
17575
<TD class="srcLine">
17576
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
17583
<TD align="right" class="lineCountHilight">
17587
<TD align="right" class="lineCountHilight">
17588
<A title="Line 1078: method entered 97 times."> 97</A>
17591
<TD class="srcLine">
17592
<A title="Line 1078: method entered 97 times."><PRE class="srcLine"> <span class="keyword">protected</span> <span class="keyword">void</span> persistStoreGroup(String groupName, Set group) {</PRE></A>
17599
<TD align="right" class="lineCountHilight">
17603
<TD align="right" class="coverageCountHilight">
17604
<A title="Line 1079: expression evaluated to true 0 times, false 97 times."> 97</A>
17607
<TD class="srcHilight">
17608
<SPAN class="srcHilight">
17609
<A title="Line 1079: expression evaluated to true 0 times, false 97 times."><PRE class="srcLine"> <span class="keyword">if</span> (log.isDebugEnabled()) {</PRE></A>
17617
<TD align="right" class="lineCountHilight">
17621
<TD align="right" class="coverageCountHilight">
17622
<A title="Line 1080: statement not executed."> 0</A>
17625
<TD class="srcHilight">
17626
<SPAN class="srcHilight">
17627
<A title="Line 1080: statement not executed."><PRE class="srcLine"> log.debug(<span class="string">"persistStoreGroup called (groupName="</span> + groupName + <span class="string">")"</span>);</PRE></A>
17635
<TD align="right" class="lineCount">
17639
<TD align="right" class="coverageCount">
17643
<TD class="srcLine">
17644
<PRE class="srcLine"> }</PRE>
17651
<TD align="right" class="lineCount">
17655
<TD align="right" class="coverageCount">
17659
<TD class="srcLine">
17660
<PRE class="srcLine"> </PRE>
17667
<TD align="right" class="lineCountHilight">
17671
<TD align="right" class="lineCountHilight">
17672
<A title="Line 1083: statement executed 97 times."> 97</A>
17675
<TD class="srcLine">
17676
<A title="Line 1083: statement executed 97 times."><PRE class="srcLine"> <span class="keyword">if</span> (persistenceListener != <span class="keyword">null</span>) {</PRE></A>
17683
<TD align="right" class="lineCountHilight">
17687
<TD align="right" class="lineCountHilight">
17688
<A title="Line 1084: statement executed 68 times."> 68</A>
17691
<TD class="srcLine">
17692
<A title="Line 1084: statement executed 68 times."><PRE class="srcLine"> <span class="keyword">try</span> {</PRE></A>
17699
<TD align="right" class="lineCountHilight">
17703
<TD align="right" class="coverageCountHilight">
17704
<A title="Line 1085: expression evaluated to true 0 times, false 68 times."> 68</A>
17707
<TD class="srcHilight">
17708
<SPAN class="srcHilight">
17709
<A title="Line 1085: expression evaluated to true 0 times, false 68 times."><PRE class="srcLine"> <span class="keyword">if</span> ((group == <span class="keyword">null</span>) || group.isEmpty()) {</PRE></A>
17717
<TD align="right" class="lineCountHilight">
17721
<TD align="right" class="coverageCountHilight">
17722
<A title="Line 1086: statement not executed."> 0</A>
17725
<TD class="srcHilight">
17726
<SPAN class="srcHilight">
17727
<A title="Line 1086: statement not executed."><PRE class="srcLine"> persistenceListener.removeGroup(groupName);</PRE></A>
17735
<TD align="right" class="lineCount">
17739
<TD align="right" class="coverageCount">
17743
<TD class="srcLine">
17744
<PRE class="srcLine"> } <span class="keyword">else</span> {</PRE>
17751
<TD align="right" class="lineCountHilight">
17755
<TD align="right" class="lineCountHilight">
17756
<A title="Line 1088: statement executed 68 times."> 68</A>
17759
<TD class="srcLine">
17760
<A title="Line 1088: statement executed 68 times."><PRE class="srcLine"> persistenceListener.storeGroup(groupName, group);</PRE></A>
17767
<TD align="right" class="lineCount">
17771
<TD align="right" class="coverageCount">
17775
<TD class="srcLine">
17776
<PRE class="srcLine"> }</PRE>
17783
<TD align="right" class="lineCount">
17787
<TD align="right" class="coverageCount">
17791
<TD class="srcLine">
17792
<PRE class="srcLine"> } <span class="keyword">catch</span> (CachePersistenceException e) {</PRE>
17799
<TD align="right" class="lineCountHilight">
17803
<TD align="right" class="coverageCountHilight">
17804
<A title="Line 1091: statement not executed."> 0</A>
17807
<TD class="srcHilight">
17808
<SPAN class="srcHilight">
17809
<A title="Line 1091: statement not executed."><PRE class="srcLine"> log.error(<span class="string">"[oscache] Exception persisting group "</span> + groupName, e);</PRE></A>
17817
<TD align="right" class="lineCount">
17821
<TD align="right" class="coverageCount">
17825
<TD class="srcLine">
17826
<PRE class="srcLine"> }</PRE>
17833
<TD align="right" class="lineCount">
17837
<TD align="right" class="coverageCount">
17841
<TD class="srcLine">
17842
<PRE class="srcLine"> }</PRE>
17849
<TD align="right" class="lineCount">
17853
<TD align="right" class="coverageCount">
17857
<TD class="srcLine">
17858
<PRE class="srcLine"> }</PRE>
17865
<TD align="right" class="lineCount">
17869
<TD align="right" class="coverageCount">
17873
<TD class="srcLine">
17874
<PRE class="srcLine"> </PRE>
17881
<TD align="right" class="lineCount">
17885
<TD align="right" class="coverageCount">
17889
<TD class="srcLine">
17890
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
17897
<TD align="right" class="lineCount">
17901
<TD align="right" class="coverageCount">
17905
<TD class="srcLine">
17906
<PRE class="srcLine"> <span class="comment"> * Removes the entire cache from persistent storage.</span></PRE>
17913
<TD align="right" class="lineCount">
17917
<TD align="right" class="coverageCount">
17921
<TD class="srcLine">
17922
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
17929
<TD align="right" class="lineCountHilight">
17933
<TD align="right" class="lineCountHilight">
17934
<A title="Line 1099: method entered 111 times."> 111</A>
17937
<TD class="srcLine">
17938
<A title="Line 1099: method entered 111 times."><PRE class="srcLine"> <span class="keyword">protected</span> <span class="keyword">void</span> persistClear() {</PRE></A>
17945
<TD align="right" class="lineCountHilight">
17949
<TD align="right" class="coverageCountHilight">
17950
<A title="Line 1100: expression evaluated to true 0 times, false 111 times."> 111</A>
17953
<TD class="srcHilight">
17954
<SPAN class="srcHilight">
17955
<A title="Line 1100: expression evaluated to true 0 times, false 111 times."><PRE class="srcLine"> <span class="keyword">if</span> (log.isDebugEnabled()) {</PRE></A>
17963
<TD align="right" class="lineCountHilight">
17967
<TD align="right" class="coverageCountHilight">
17968
<A title="Line 1101: statement not executed."> 0</A>
17971
<TD class="srcHilight">
17972
<SPAN class="srcHilight">
17973
<A title="Line 1101: statement not executed."><PRE class="srcLine"> log.debug(<span class="string">"persistClear called"</span>);</PRE></A>
17981
<TD align="right" class="lineCount">
17985
<TD align="right" class="coverageCount">
17989
<TD class="srcLine">
17990
<PRE class="srcLine"> ;</PRE>
17997
<TD align="right" class="lineCount">
18001
<TD align="right" class="coverageCount">
18005
<TD class="srcLine">
18006
<PRE class="srcLine"> }</PRE>
18013
<TD align="right" class="lineCount">
18017
<TD align="right" class="coverageCount">
18021
<TD class="srcLine">
18022
<PRE class="srcLine"> </PRE>
18029
<TD align="right" class="lineCountHilight">
18033
<TD align="right" class="lineCountHilight">
18034
<A title="Line 1105: statement executed 111 times."> 111</A>
18037
<TD class="srcLine">
18038
<A title="Line 1105: statement executed 111 times."><PRE class="srcLine"> <span class="keyword">if</span> (persistenceListener != <span class="keyword">null</span>) {</PRE></A>
18045
<TD align="right" class="lineCountHilight">
18049
<TD align="right" class="lineCountHilight">
18050
<A title="Line 1106: statement executed 6 times."> 6</A>
18053
<TD class="srcLine">
18054
<A title="Line 1106: statement executed 6 times."><PRE class="srcLine"> <span class="keyword">try</span> {</PRE></A>
18061
<TD align="right" class="lineCountHilight">
18065
<TD align="right" class="lineCountHilight">
18066
<A title="Line 1107: statement executed 6 times."> 6</A>
18069
<TD class="srcLine">
18070
<A title="Line 1107: statement executed 6 times."><PRE class="srcLine"> persistenceListener.clear();</PRE></A>
18077
<TD align="right" class="lineCount">
18081
<TD align="right" class="coverageCount">
18085
<TD class="srcLine">
18086
<PRE class="srcLine"> } <span class="keyword">catch</span> (CachePersistenceException e) {</PRE>
18093
<TD align="right" class="lineCountHilight">
18097
<TD align="right" class="coverageCountHilight">
18098
<A title="Line 1109: statement not executed."> 0</A>
18101
<TD class="srcHilight">
18102
<SPAN class="srcHilight">
18103
<A title="Line 1109: statement not executed."><PRE class="srcLine"> log.error(<span class="string">"[oscache] Exception clearing persistent cache"</span>, e);</PRE></A>
18111
<TD align="right" class="lineCount">
18115
<TD align="right" class="coverageCount">
18119
<TD class="srcLine">
18120
<PRE class="srcLine"> }</PRE>
18127
<TD align="right" class="lineCount">
18131
<TD align="right" class="coverageCount">
18135
<TD class="srcLine">
18136
<PRE class="srcLine"> }</PRE>
18143
<TD align="right" class="lineCount">
18147
<TD align="right" class="coverageCount">
18151
<TD class="srcLine">
18152
<PRE class="srcLine"> }</PRE>
18159
<TD align="right" class="lineCount">
18163
<TD align="right" class="coverageCount">
18167
<TD class="srcLine">
18168
<PRE class="srcLine"> </PRE>
18175
<TD align="right" class="lineCount">
18179
<TD align="right" class="coverageCount">
18183
<TD class="srcLine">
18184
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
18191
<TD align="right" class="lineCount">
18195
<TD align="right" class="coverageCount">
18199
<TD class="srcLine">
18200
<PRE class="srcLine"> <span class="comment"> * Notify the underlying implementation that an item was put in the cache.</span></PRE>
18207
<TD align="right" class="lineCount">
18211
<TD align="right" class="coverageCount">
18215
<TD class="srcLine">
18216
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
18223
<TD align="right" class="lineCount">
18227
<TD align="right" class="coverageCount">
18231
<TD class="srcLine">
18232
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@param</span> key The cache key of the item that was put.</span></PRE>
18239
<TD align="right" class="lineCount">
18243
<TD align="right" class="coverageCount">
18247
<TD class="srcLine">
18248
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
18255
<TD align="right" class="lineCount">
18259
<TD align="right" class="coverageCount">
18263
<TD class="srcLine">
18264
<PRE class="srcLine"> <span class="keyword">protected</span> abstract <span class="keyword">void</span> itemPut(Object key);</PRE>
18271
<TD align="right" class="lineCount">
18275
<TD align="right" class="coverageCount">
18279
<TD class="srcLine">
18280
<PRE class="srcLine"> </PRE>
18287
<TD align="right" class="lineCount">
18291
<TD align="right" class="coverageCount">
18295
<TD class="srcLine">
18296
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
18303
<TD align="right" class="lineCount">
18307
<TD align="right" class="coverageCount">
18311
<TD class="srcLine">
18312
<PRE class="srcLine"> <span class="comment"> * Notify any underlying algorithm that an item has been retrieved from the cache.</span></PRE>
18319
<TD align="right" class="lineCount">
18323
<TD align="right" class="coverageCount">
18327
<TD class="srcLine">
18328
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
18335
<TD align="right" class="lineCount">
18339
<TD align="right" class="coverageCount">
18343
<TD class="srcLine">
18344
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@param</span> key The cache key of the item that was retrieved.</span></PRE>
18351
<TD align="right" class="lineCount">
18355
<TD align="right" class="coverageCount">
18359
<TD class="srcLine">
18360
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
18367
<TD align="right" class="lineCount">
18371
<TD align="right" class="coverageCount">
18375
<TD class="srcLine">
18376
<PRE class="srcLine"> <span class="keyword">protected</span> abstract <span class="keyword">void</span> itemRetrieved(Object key);</PRE>
18383
<TD align="right" class="lineCount">
18387
<TD align="right" class="coverageCount">
18391
<TD class="srcLine">
18392
<PRE class="srcLine"> </PRE>
18399
<TD align="right" class="lineCount">
18403
<TD align="right" class="coverageCount">
18407
<TD class="srcLine">
18408
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
18415
<TD align="right" class="lineCount">
18419
<TD align="right" class="coverageCount">
18423
<TD class="srcLine">
18424
<PRE class="srcLine"> <span class="comment"> * Notify the underlying implementation that an item was removed from the cache.</span></PRE>
18431
<TD align="right" class="lineCount">
18435
<TD align="right" class="coverageCount">
18439
<TD class="srcLine">
18440
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
18447
<TD align="right" class="lineCount">
18451
<TD align="right" class="coverageCount">
18455
<TD class="srcLine">
18456
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@param</span> key The cache key of the item that was removed.</span></PRE>
18463
<TD align="right" class="lineCount">
18467
<TD align="right" class="coverageCount">
18471
<TD class="srcLine">
18472
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
18479
<TD align="right" class="lineCount">
18483
<TD align="right" class="coverageCount">
18487
<TD class="srcLine">
18488
<PRE class="srcLine"> <span class="keyword">protected</span> abstract <span class="keyword">void</span> itemRemoved(Object key);</PRE>
18495
<TD align="right" class="lineCount">
18499
<TD align="right" class="coverageCount">
18503
<TD class="srcLine">
18504
<PRE class="srcLine"> </PRE>
18511
<TD align="right" class="lineCount">
18515
<TD align="right" class="coverageCount">
18519
<TD class="srcLine">
18520
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
18527
<TD align="right" class="lineCount">
18531
<TD align="right" class="coverageCount">
18535
<TD class="srcLine">
18536
<PRE class="srcLine"> <span class="comment"> * The cache has reached its cacpacity and an item needs to be removed.</span></PRE>
18543
<TD align="right" class="lineCount">
18547
<TD align="right" class="coverageCount">
18551
<TD class="srcLine">
18552
<PRE class="srcLine"> <span class="comment"> * (typically according to an algorithm such as LRU or FIFO).</span></PRE>
18559
<TD align="right" class="lineCount">
18563
<TD align="right" class="coverageCount">
18567
<TD class="srcLine">
18568
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
18575
<TD align="right" class="lineCount">
18579
<TD align="right" class="coverageCount">
18583
<TD class="srcLine">
18584
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@return</span> The key of whichever item was removed.</span></PRE>
18591
<TD align="right" class="lineCount">
18595
<TD align="right" class="coverageCount">
18599
<TD class="srcLine">
18600
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
18607
<TD align="right" class="lineCount">
18611
<TD align="right" class="coverageCount">
18615
<TD class="srcLine">
18616
<PRE class="srcLine"> <span class="keyword">protected</span> abstract Object removeItem();</PRE>
18623
<TD align="right" class="lineCount">
18627
<TD align="right" class="coverageCount">
18631
<TD class="srcLine">
18632
<PRE class="srcLine"> </PRE>
18639
<TD align="right" class="lineCount">
18643
<TD align="right" class="coverageCount">
18647
<TD class="srcLine">
18648
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
18655
<TD align="right" class="lineCount">
18659
<TD align="right" class="coverageCount">
18663
<TD class="srcLine">
18664
<PRE class="srcLine"> <span class="comment"> * Reconstitute the <tt>AbstractConcurrentReadCache</tt>.</span></PRE>
18671
<TD align="right" class="lineCount">
18675
<TD align="right" class="coverageCount">
18679
<TD class="srcLine">
18680
<PRE class="srcLine"> <span class="comment"> * instance from a stream (i.e.,</span></PRE>
18687
<TD align="right" class="lineCount">
18691
<TD align="right" class="coverageCount">
18695
<TD class="srcLine">
18696
<PRE class="srcLine"> <span class="comment"> * deserialize it).</span></PRE>
18703
<TD align="right" class="lineCount">
18707
<TD align="right" class="coverageCount">
18711
<TD class="srcLine">
18712
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
18719
<TD align="right" class="lineCountHilight">
18723
<TD align="right" class="coverageCountHilight">
18724
<A title="Line 1148: method not entered."> 0</A>
18727
<TD class="srcHilight">
18728
<SPAN class="srcHilight">
18729
<A title="Line 1148: method not entered."><PRE class="srcLine"> <span class="keyword">protected</span> <span class="keyword">synchronized</span> <span class="keyword">void</span> readObject(java.io.ObjectInputStream s) <span class="keyword">throws</span> IOException, ClassNotFoundException {</PRE></A>
18737
<TD align="right" class="lineCount">
18741
<TD align="right" class="coverageCount">
18745
<TD class="srcLine">
18746
<PRE class="srcLine"> <span class="comment">// Read in the threshold, loadfactor, and any hidden stuff</span></PRE>
18753
<TD align="right" class="lineCountHilight">
18757
<TD align="right" class="coverageCountHilight">
18758
<A title="Line 1150: statement not executed."> 0</A>
18761
<TD class="srcHilight">
18762
<SPAN class="srcHilight">
18763
<A title="Line 1150: statement not executed."><PRE class="srcLine"> s.defaultReadObject();</PRE></A>
18771
<TD align="right" class="lineCount">
18775
<TD align="right" class="coverageCount">
18779
<TD class="srcLine">
18780
<PRE class="srcLine"> </PRE>
18787
<TD align="right" class="lineCount">
18791
<TD align="right" class="coverageCount">
18795
<TD class="srcLine">
18796
<PRE class="srcLine"> <span class="comment">// Read in number of buckets and allocate the bucket array;</span></PRE>
18803
<TD align="right" class="lineCountHilight">
18807
<TD align="right" class="coverageCountHilight">
18808
<A title="Line 1153: statement not executed."> 0</A>
18811
<TD class="srcHilight">
18812
<SPAN class="srcHilight">
18813
<A title="Line 1153: statement not executed."><PRE class="srcLine"> <span class="keyword">int</span> numBuckets = s.readInt();</PRE></A>
18821
<TD align="right" class="lineCountHilight">
18825
<TD align="right" class="coverageCountHilight">
18826
<A title="Line 1154: statement not executed."> 0</A>
18829
<TD class="srcHilight">
18830
<SPAN class="srcHilight">
18831
<A title="Line 1154: statement not executed."><PRE class="srcLine"> table = <span class="keyword">new</span> Entry[numBuckets];</PRE></A>
18839
<TD align="right" class="lineCount">
18843
<TD align="right" class="coverageCount">
18847
<TD class="srcLine">
18848
<PRE class="srcLine"> </PRE>
18855
<TD align="right" class="lineCount">
18859
<TD align="right" class="coverageCount">
18863
<TD class="srcLine">
18864
<PRE class="srcLine"> <span class="comment">// Read in size (number of Mappings)</span></PRE>
18871
<TD align="right" class="lineCountHilight">
18875
<TD align="right" class="coverageCountHilight">
18876
<A title="Line 1157: statement not executed."> 0</A>
18879
<TD class="srcHilight">
18880
<SPAN class="srcHilight">
18881
<A title="Line 1157: statement not executed."><PRE class="srcLine"> <span class="keyword">int</span> size = s.readInt();</PRE></A>
18889
<TD align="right" class="lineCount">
18893
<TD align="right" class="coverageCount">
18897
<TD class="srcLine">
18898
<PRE class="srcLine"> </PRE>
18905
<TD align="right" class="lineCount">
18909
<TD align="right" class="coverageCount">
18913
<TD class="srcLine">
18914
<PRE class="srcLine"> <span class="comment">// Read the keys and values, and put the mappings in the table</span></PRE>
18921
<TD align="right" class="lineCountHilight">
18925
<TD align="right" class="coverageCountHilight">
18926
<A title="Line 1160: statement not executed."> 0</A>
18929
<TD class="srcHilight">
18930
<SPAN class="srcHilight">
18931
<A title="Line 1160: statement not executed."><PRE class="srcLine"> <span class="keyword">for</span> (<span class="keyword">int</span> i = 0; i < size; i++) {</PRE></A>
18939
<TD align="right" class="lineCountHilight">
18943
<TD align="right" class="coverageCountHilight">
18944
<A title="Line 1161: statement not executed."> 0</A>
18947
<TD class="srcHilight">
18948
<SPAN class="srcHilight">
18949
<A title="Line 1161: statement not executed."><PRE class="srcLine"> Object key = s.readObject();</PRE></A>
18957
<TD align="right" class="lineCountHilight">
18961
<TD align="right" class="coverageCountHilight">
18962
<A title="Line 1162: statement not executed."> 0</A>
18965
<TD class="srcHilight">
18966
<SPAN class="srcHilight">
18967
<A title="Line 1162: statement not executed."><PRE class="srcLine"> Object value = s.readObject();</PRE></A>
18975
<TD align="right" class="lineCountHilight">
18979
<TD align="right" class="coverageCountHilight">
18980
<A title="Line 1163: statement not executed."> 0</A>
18983
<TD class="srcHilight">
18984
<SPAN class="srcHilight">
18985
<A title="Line 1163: statement not executed."><PRE class="srcLine"> put(key, value);</PRE></A>
18993
<TD align="right" class="lineCount">
18997
<TD align="right" class="coverageCount">
19001
<TD class="srcLine">
19002
<PRE class="srcLine"> }</PRE>
19009
<TD align="right" class="lineCount">
19013
<TD align="right" class="coverageCount">
19017
<TD class="srcLine">
19018
<PRE class="srcLine"> }</PRE>
19025
<TD align="right" class="lineCount">
19029
<TD align="right" class="coverageCount">
19033
<TD class="srcLine">
19034
<PRE class="srcLine"> </PRE>
19041
<TD align="right" class="lineCount">
19045
<TD align="right" class="coverageCount">
19049
<TD class="srcLine">
19050
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
19057
<TD align="right" class="lineCount">
19061
<TD align="right" class="coverageCount">
19065
<TD class="srcLine">
19066
<PRE class="srcLine"> <span class="comment"> * Rehashes the contents of this map into a new table with a larger capacity.</span></PRE>
19073
<TD align="right" class="lineCount">
19077
<TD align="right" class="coverageCount">
19081
<TD class="srcLine">
19082
<PRE class="srcLine"> <span class="comment"> * This method is called automatically when the</span></PRE>
19089
<TD align="right" class="lineCount">
19093
<TD align="right" class="coverageCount">
19097
<TD class="srcLine">
19098
<PRE class="srcLine"> <span class="comment"> * number of keys in this map exceeds its capacity and load factor.</span></PRE>
19105
<TD align="right" class="lineCount">
19109
<TD align="right" class="coverageCount">
19113
<TD class="srcLine">
19114
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
19121
<TD align="right" class="lineCountHilight">
19125
<TD align="right" class="lineCountHilight">
19126
<A title="Line 1172: method entered 3 times."> 3</A>
19129
<TD class="srcLine">
19130
<A title="Line 1172: method entered 3 times."><PRE class="srcLine"> <span class="keyword">protected</span> <span class="keyword">void</span> rehash() {</PRE></A>
19137
<TD align="right" class="lineCountHilight">
19141
<TD align="right" class="lineCountHilight">
19142
<A title="Line 1173: statement executed 3 times."> 3</A>
19145
<TD class="srcLine">
19146
<A title="Line 1173: statement executed 3 times."><PRE class="srcLine"> Entry[] oldMap = table;</PRE></A>
19153
<TD align="right" class="lineCountHilight">
19157
<TD align="right" class="lineCountHilight">
19158
<A title="Line 1174: statement executed 3 times."> 3</A>
19161
<TD class="srcLine">
19162
<A title="Line 1174: statement executed 3 times."><PRE class="srcLine"> <span class="keyword">int</span> oldCapacity = oldMap.length;</PRE></A>
19169
<TD align="right" class="lineCount">
19173
<TD align="right" class="coverageCount">
19177
<TD class="srcLine">
19178
<PRE class="srcLine"> </PRE>
19185
<TD align="right" class="lineCountHilight">
19189
<TD align="right" class="coverageCountHilight">
19190
<A title="Line 1176: expression evaluated to true 0 times, false 3 times."> 3</A>
19193
<TD class="srcHilight">
19194
<SPAN class="srcHilight">
19195
<A title="Line 1176: expression evaluated to true 0 times, false 3 times."><PRE class="srcLine"> <span class="keyword">if</span> (oldCapacity >= MAXIMUM_CAPACITY) {</PRE></A>
19203
<TD align="right" class="lineCountHilight">
19207
<TD align="right" class="coverageCountHilight">
19208
<A title="Line 1177: statement not executed."> 0</A>
19211
<TD class="srcHilight">
19212
<SPAN class="srcHilight">
19213
<A title="Line 1177: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span>;</PRE></A>
19221
<TD align="right" class="lineCount">
19225
<TD align="right" class="coverageCount">
19229
<TD class="srcLine">
19230
<PRE class="srcLine"> }</PRE>
19237
<TD align="right" class="lineCount">
19241
<TD align="right" class="coverageCount">
19245
<TD class="srcLine">
19246
<PRE class="srcLine"> </PRE>
19253
<TD align="right" class="lineCountHilight">
19257
<TD align="right" class="lineCountHilight">
19258
<A title="Line 1180: statement executed 3 times."> 3</A>
19261
<TD class="srcLine">
19262
<A title="Line 1180: statement executed 3 times."><PRE class="srcLine"> <span class="keyword">int</span> newCapacity = oldCapacity << 1;</PRE></A>
19269
<TD align="right" class="lineCountHilight">
19273
<TD align="right" class="lineCountHilight">
19274
<A title="Line 1181: statement executed 3 times."> 3</A>
19277
<TD class="srcLine">
19278
<A title="Line 1181: statement executed 3 times."><PRE class="srcLine"> Entry[] newMap = <span class="keyword">new</span> Entry[newCapacity];</PRE></A>
19285
<TD align="right" class="lineCountHilight">
19289
<TD align="right" class="lineCountHilight">
19290
<A title="Line 1182: statement executed 3 times."> 3</A>
19293
<TD class="srcLine">
19294
<A title="Line 1182: statement executed 3 times."><PRE class="srcLine"> threshold = (<span class="keyword">int</span>) (newCapacity * loadFactor);</PRE></A>
19301
<TD align="right" class="lineCount">
19305
<TD align="right" class="coverageCount">
19309
<TD class="srcLine">
19310
<PRE class="srcLine"> </PRE>
19317
<TD align="right" class="lineCount">
19321
<TD align="right" class="coverageCount">
19325
<TD class="srcLine">
19326
<PRE class="srcLine"> <span class="comment">/*</span></PRE>
19333
<TD align="right" class="lineCount">
19337
<TD align="right" class="coverageCount">
19341
<TD class="srcLine">
19342
<PRE class="srcLine"> <span class="comment"> We need to guarantee that any existing reads of oldMap can</span></PRE>
19349
<TD align="right" class="lineCount">
19353
<TD align="right" class="coverageCount">
19357
<TD class="srcLine">
19358
<PRE class="srcLine"> <span class="comment"> proceed. So we cannot yet null out each oldMap bin.</span></PRE>
19365
<TD align="right" class="lineCount">
19369
<TD align="right" class="coverageCount">
19373
<TD class="srcLine">
19374
<PRE class="srcLine"> <span class="comment"></span></PRE>
19381
<TD align="right" class="lineCount">
19385
<TD align="right" class="coverageCount">
19389
<TD class="srcLine">
19390
<PRE class="srcLine"> <span class="comment"> Because we are using power-of-two expansion, the elements</span></PRE>
19397
<TD align="right" class="lineCount">
19401
<TD align="right" class="coverageCount">
19405
<TD class="srcLine">
19406
<PRE class="srcLine"> <span class="comment"> from each bin must either stay at same index, or move</span></PRE>
19413
<TD align="right" class="lineCount">
19417
<TD align="right" class="coverageCount">
19421
<TD class="srcLine">
19422
<PRE class="srcLine"> <span class="comment"> to oldCapacity+index. We also minimize new node creation by</span></PRE>
19429
<TD align="right" class="lineCount">
19433
<TD align="right" class="coverageCount">
19437
<TD class="srcLine">
19438
<PRE class="srcLine"> <span class="comment"> catching cases where old nodes can be reused because their</span></PRE>
19445
<TD align="right" class="lineCount">
19449
<TD align="right" class="coverageCount">
19453
<TD class="srcLine">
19454
<PRE class="srcLine"> <span class="comment"> .next fields won't change. (This is checked only for sequences</span></PRE>
19461
<TD align="right" class="lineCount">
19465
<TD align="right" class="coverageCount">
19469
<TD class="srcLine">
19470
<PRE class="srcLine"> <span class="comment"> of one and two. It is not worth checking longer ones.)</span></PRE>
19477
<TD align="right" class="lineCount">
19481
<TD align="right" class="coverageCount">
19485
<TD class="srcLine">
19486
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
19493
<TD align="right" class="lineCountHilight">
19497
<TD align="right" class="lineCountHilight">
19498
<A title="Line 1195: statement executed 3 times."> 3</A>
19501
<TD class="srcLine">
19502
<A title="Line 1195: statement executed 3 times."><PRE class="srcLine"> <span class="keyword">for</span> (<span class="keyword">int</span> i = 0; i < oldCapacity; ++i) {</PRE></A>
19509
<TD align="right" class="lineCountHilight">
19513
<TD align="right" class="lineCountHilight">
19514
<A title="Line 1196: statement executed 96 times."> 96</A>
19517
<TD class="srcLine">
19518
<A title="Line 1196: statement executed 96 times."><PRE class="srcLine"> Entry l = <span class="keyword">null</span>;</PRE></A>
19525
<TD align="right" class="lineCountHilight">
19529
<TD align="right" class="lineCountHilight">
19530
<A title="Line 1197: statement executed 96 times."> 96</A>
19533
<TD class="srcLine">
19534
<A title="Line 1197: statement executed 96 times."><PRE class="srcLine"> Entry h = <span class="keyword">null</span>;</PRE></A>
19541
<TD align="right" class="lineCountHilight">
19545
<TD align="right" class="lineCountHilight">
19546
<A title="Line 1198: statement executed 96 times."> 96</A>
19549
<TD class="srcLine">
19550
<A title="Line 1198: statement executed 96 times."><PRE class="srcLine"> Entry e = oldMap[i];</PRE></A>
19557
<TD align="right" class="lineCount">
19561
<TD align="right" class="coverageCount">
19565
<TD class="srcLine">
19566
<PRE class="srcLine"> </PRE>
19573
<TD align="right" class="lineCountHilight">
19577
<TD align="right" class="lineCountHilight">
19578
<A title="Line 1200: statement executed 96 times."> 96</A>
19581
<TD class="srcLine">
19582
<A title="Line 1200: statement executed 96 times."><PRE class="srcLine"> <span class="keyword">while</span> (e != <span class="keyword">null</span>) {</PRE></A>
19589
<TD align="right" class="lineCountHilight">
19593
<TD align="right" class="lineCountHilight">
19594
<A title="Line 1201: statement executed 67 times."> 67</A>
19597
<TD class="srcLine">
19598
<A title="Line 1201: statement executed 67 times."><PRE class="srcLine"> <span class="keyword">int</span> hash = e.hash;</PRE></A>
19605
<TD align="right" class="lineCountHilight">
19609
<TD align="right" class="lineCountHilight">
19610
<A title="Line 1202: statement executed 67 times."> 67</A>
19613
<TD class="srcLine">
19614
<A title="Line 1202: statement executed 67 times."><PRE class="srcLine"> Entry next = e.next;</PRE></A>
19621
<TD align="right" class="lineCount">
19625
<TD align="right" class="coverageCount">
19629
<TD class="srcLine">
19630
<PRE class="srcLine"> </PRE>
19637
<TD align="right" class="lineCountHilight">
19641
<TD align="right" class="lineCountHilight">
19642
<A title="Line 1204: statement executed 67 times."> 67</A>
19645
<TD class="srcLine">
19646
<A title="Line 1204: statement executed 67 times."><PRE class="srcLine"> <span class="keyword">if</span> ((hash & oldCapacity) == 0) {</PRE></A>
19653
<TD align="right" class="lineCount">
19657
<TD align="right" class="coverageCount">
19661
<TD class="srcLine">
19662
<PRE class="srcLine"> <span class="comment">// stays at newMap[i]</span></PRE>
19669
<TD align="right" class="lineCountHilight">
19673
<TD align="right" class="lineCountHilight">
19674
<A title="Line 1206: statement executed 23 times."> 23</A>
19677
<TD class="srcLine">
19678
<A title="Line 1206: statement executed 23 times."><PRE class="srcLine"> <span class="keyword">if</span> (l == <span class="keyword">null</span>) {</PRE></A>
19685
<TD align="right" class="lineCount">
19689
<TD align="right" class="coverageCount">
19693
<TD class="srcLine">
19694
<PRE class="srcLine"> <span class="comment">// try to reuse node</span></PRE>
19701
<TD align="right" class="lineCountHilight">
19705
<TD align="right" class="lineCountHilight">
19706
<A title="Line 1208: statement executed 22 times."> 22</A>
19709
<TD class="srcLine">
19710
<A title="Line 1208: statement executed 22 times."><PRE class="srcLine"> <span class="keyword">if</span> ((next == <span class="keyword">null</span>) || ((next.next == <span class="keyword">null</span>) && ((next.hash & oldCapacity) == 0))) {</PRE></A>
19717
<TD align="right" class="lineCountHilight">
19721
<TD align="right" class="lineCountHilight">
19722
<A title="Line 1209: statement executed 14 times."> 14</A>
19725
<TD class="srcLine">
19726
<A title="Line 1209: statement executed 14 times."><PRE class="srcLine"> l = e;</PRE></A>
19733
<TD align="right" class="lineCount">
19737
<TD align="right" class="coverageCount">
19741
<TD class="srcLine">
19742
<PRE class="srcLine"> </PRE>
19749
<TD align="right" class="lineCountHilight">
19753
<TD align="right" class="lineCountHilight">
19754
<A title="Line 1211: statement executed 14 times."> 14</A>
19757
<TD class="srcLine">
19758
<A title="Line 1211: statement executed 14 times."><PRE class="srcLine"> <span class="keyword">break</span>;</PRE></A>
19765
<TD align="right" class="lineCount">
19769
<TD align="right" class="coverageCount">
19773
<TD class="srcLine">
19774
<PRE class="srcLine"> }</PRE>
19781
<TD align="right" class="lineCount">
19785
<TD align="right" class="coverageCount">
19789
<TD class="srcLine">
19790
<PRE class="srcLine"> }</PRE>
19797
<TD align="right" class="lineCount">
19801
<TD align="right" class="coverageCount">
19805
<TD class="srcLine">
19806
<PRE class="srcLine"> </PRE>
19813
<TD align="right" class="lineCountHilight">
19817
<TD align="right" class="lineCountHilight">
19818
<A title="Line 1215: statement executed 9 times."> 9</A>
19821
<TD class="srcLine">
19822
<A title="Line 1215: statement executed 9 times."><PRE class="srcLine"> l = <span class="keyword">new</span> Entry(hash, e.key, e.value, l);</PRE></A>
19829
<TD align="right" class="lineCount">
19833
<TD align="right" class="coverageCount">
19837
<TD class="srcLine">
19838
<PRE class="srcLine"> } <span class="keyword">else</span> {</PRE>
19845
<TD align="right" class="lineCount">
19849
<TD align="right" class="coverageCount">
19853
<TD class="srcLine">
19854
<PRE class="srcLine"> <span class="comment">// moves to newMap[oldCapacity+i]</span></PRE>
19861
<TD align="right" class="lineCountHilight">
19865
<TD align="right" class="lineCountHilight">
19866
<A title="Line 1218: statement executed 44 times."> 44</A>
19869
<TD class="srcLine">
19870
<A title="Line 1218: statement executed 44 times."><PRE class="srcLine"> <span class="keyword">if</span> (h == <span class="keyword">null</span>) {</PRE></A>
19877
<TD align="right" class="lineCountHilight">
19881
<TD align="right" class="lineCountHilight">
19882
<A title="Line 1219: statement executed 41 times."> 41</A>
19885
<TD class="srcLine">
19886
<A title="Line 1219: statement executed 41 times."><PRE class="srcLine"> <span class="keyword">if</span> ((next == <span class="keyword">null</span>) || ((next.next == <span class="keyword">null</span>) && ((next.hash & oldCapacity) != 0))) {</PRE></A>
19893
<TD align="right" class="lineCountHilight">
19897
<TD align="right" class="lineCountHilight">
19898
<A title="Line 1220: statement executed 36 times."> 36</A>
19901
<TD class="srcLine">
19902
<A title="Line 1220: statement executed 36 times."><PRE class="srcLine"> h = e;</PRE></A>
19909
<TD align="right" class="lineCount">
19913
<TD align="right" class="coverageCount">
19917
<TD class="srcLine">
19918
<PRE class="srcLine"> </PRE>
19925
<TD align="right" class="lineCountHilight">
19929
<TD align="right" class="lineCountHilight">
19930
<A title="Line 1222: statement executed 36 times."> 36</A>
19933
<TD class="srcLine">
19934
<A title="Line 1222: statement executed 36 times."><PRE class="srcLine"> <span class="keyword">break</span>;</PRE></A>
19941
<TD align="right" class="lineCount">
19945
<TD align="right" class="coverageCount">
19949
<TD class="srcLine">
19950
<PRE class="srcLine"> }</PRE>
19957
<TD align="right" class="lineCount">
19961
<TD align="right" class="coverageCount">
19965
<TD class="srcLine">
19966
<PRE class="srcLine"> }</PRE>
19973
<TD align="right" class="lineCount">
19977
<TD align="right" class="coverageCount">
19981
<TD class="srcLine">
19982
<PRE class="srcLine"> </PRE>
19989
<TD align="right" class="lineCountHilight">
19993
<TD align="right" class="lineCountHilight">
19994
<A title="Line 1226: statement executed 8 times."> 8</A>
19997
<TD class="srcLine">
19998
<A title="Line 1226: statement executed 8 times."><PRE class="srcLine"> h = <span class="keyword">new</span> Entry(hash, e.key, e.value, h);</PRE></A>
20005
<TD align="right" class="lineCount">
20009
<TD align="right" class="coverageCount">
20013
<TD class="srcLine">
20014
<PRE class="srcLine"> }</PRE>
20021
<TD align="right" class="lineCount">
20025
<TD align="right" class="coverageCount">
20029
<TD class="srcLine">
20030
<PRE class="srcLine"> </PRE>
20037
<TD align="right" class="lineCountHilight">
20041
<TD align="right" class="lineCountHilight">
20042
<A title="Line 1229: statement executed 17 times."> 17</A>
20045
<TD class="srcLine">
20046
<A title="Line 1229: statement executed 17 times."><PRE class="srcLine"> e = next;</PRE></A>
20053
<TD align="right" class="lineCount">
20057
<TD align="right" class="coverageCount">
20061
<TD class="srcLine">
20062
<PRE class="srcLine"> }</PRE>
20069
<TD align="right" class="lineCount">
20073
<TD align="right" class="coverageCount">
20077
<TD class="srcLine">
20078
<PRE class="srcLine"> </PRE>
20085
<TD align="right" class="lineCountHilight">
20089
<TD align="right" class="lineCountHilight">
20090
<A title="Line 1232: statement executed 96 times."> 96</A>
20093
<TD class="srcLine">
20094
<A title="Line 1232: statement executed 96 times."><PRE class="srcLine"> newMap[i] = l;</PRE></A>
20101
<TD align="right" class="lineCountHilight">
20105
<TD align="right" class="lineCountHilight">
20106
<A title="Line 1233: statement executed 96 times."> 96</A>
20109
<TD class="srcLine">
20110
<A title="Line 1233: statement executed 96 times."><PRE class="srcLine"> newMap[oldCapacity + i] = h;</PRE></A>
20117
<TD align="right" class="lineCount">
20121
<TD align="right" class="coverageCount">
20125
<TD class="srcLine">
20126
<PRE class="srcLine"> }</PRE>
20133
<TD align="right" class="lineCount">
20137
<TD align="right" class="coverageCount">
20141
<TD class="srcLine">
20142
<PRE class="srcLine"> </PRE>
20149
<TD align="right" class="lineCountHilight">
20153
<TD align="right" class="lineCountHilight">
20154
<A title="Line 1236: statement executed 3 times."> 3</A>
20157
<TD class="srcLine">
20158
<A title="Line 1236: statement executed 3 times."><PRE class="srcLine"> table = newMap;</PRE></A>
20165
<TD align="right" class="lineCountHilight">
20169
<TD align="right" class="lineCountHilight">
20170
<A title="Line 1237: statement executed 3 times."> 3</A>
20173
<TD class="srcLine">
20174
<A title="Line 1237: statement executed 3 times."><PRE class="srcLine"> recordModification(newMap);</PRE></A>
20181
<TD align="right" class="lineCount">
20185
<TD align="right" class="coverageCount">
20189
<TD class="srcLine">
20190
<PRE class="srcLine"> }</PRE>
20197
<TD align="right" class="lineCount">
20201
<TD align="right" class="coverageCount">
20205
<TD class="srcLine">
20206
<PRE class="srcLine"> </PRE>
20213
<TD align="right" class="lineCount">
20217
<TD align="right" class="coverageCount">
20221
<TD class="srcLine">
20222
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
20229
<TD align="right" class="lineCount">
20233
<TD align="right" class="coverageCount">
20237
<TD class="srcLine">
20238
<PRE class="srcLine"> <span class="comment"> * Continuation of put(), called only when synch lock is</span></PRE>
20245
<TD align="right" class="lineCount">
20249
<TD align="right" class="coverageCount">
20253
<TD class="srcLine">
20254
<PRE class="srcLine"> <span class="comment"> * held and interference has been detected.</span></PRE>
20261
<TD align="right" class="lineCount">
20265
<TD align="right" class="coverageCount">
20269
<TD class="srcLine">
20270
<PRE class="srcLine"> <span class="comment"> **/</span></PRE>
20277
<TD align="right" class="lineCount">
20281
<TD align="right" class="coverageCount">
20285
<TD class="srcLine">
20286
<PRE class="srcLine"> <span class="comment">/** OpenSymphony BEGIN */</span></PRE>
20293
<TD align="right" class="lineCount">
20297
<TD align="right" class="coverageCount">
20301
<TD class="srcLine">
20302
<PRE class="srcLine"> </PRE>
20309
<TD align="right" class="lineCount">
20313
<TD align="right" class="coverageCount">
20317
<TD class="srcLine">
20318
<PRE class="srcLine"> <span class="comment">/* Previous code</span></PRE>
20325
<TD align="right" class="lineCount">
20329
<TD align="right" class="coverageCount">
20333
<TD class="srcLine">
20334
<PRE class="srcLine"> <span class="comment"> protected Object sput(Object key, Object value, int hash) {*/</span></PRE>
20341
<TD align="right" class="lineCountHilight">
20345
<TD align="right" class="lineCountHilight">
20346
<A title="Line 1248: method entered 5 times."> 5</A>
20349
<TD class="srcLine">
20350
<A title="Line 1248: method entered 5 times."><PRE class="srcLine"> <span class="keyword">protected</span> Object sput(Object key, Object value, <span class="keyword">int</span> hash, <span class="keyword">boolean</span> persist) {</PRE></A>
20357
<TD align="right" class="lineCount">
20361
<TD align="right" class="coverageCount">
20365
<TD class="srcLine">
20366
<PRE class="srcLine"> <span class="comment">/** OpenSymphony END */</span></PRE>
20373
<TD align="right" class="lineCountHilight">
20377
<TD align="right" class="lineCountHilight">
20378
<A title="Line 1250: statement executed 5 times."> 5</A>
20381
<TD class="srcLine">
20382
<A title="Line 1250: statement executed 5 times."><PRE class="srcLine"> Entry[] tab = table;</PRE></A>
20389
<TD align="right" class="lineCountHilight">
20393
<TD align="right" class="lineCountHilight">
20394
<A title="Line 1251: statement executed 5 times."> 5</A>
20397
<TD class="srcLine">
20398
<A title="Line 1251: statement executed 5 times."><PRE class="srcLine"> <span class="keyword">int</span> index = hash & (tab.length - 1);</PRE></A>
20405
<TD align="right" class="lineCountHilight">
20409
<TD align="right" class="lineCountHilight">
20410
<A title="Line 1252: statement executed 5 times."> 5</A>
20413
<TD class="srcLine">
20414
<A title="Line 1252: statement executed 5 times."><PRE class="srcLine"> Entry first = tab[index];</PRE></A>
20421
<TD align="right" class="lineCountHilight">
20425
<TD align="right" class="lineCountHilight">
20426
<A title="Line 1253: statement executed 5 times."> 5</A>
20429
<TD class="srcLine">
20430
<A title="Line 1253: statement executed 5 times."><PRE class="srcLine"> Entry e = first;</PRE></A>
20437
<TD align="right" class="lineCount">
20441
<TD align="right" class="coverageCount">
20445
<TD class="srcLine">
20446
<PRE class="srcLine"> </PRE>
20453
<TD align="right" class="lineCountHilight">
20457
<TD align="right" class="lineCountHilight">
20458
<A title="Line 1255: statement executed 5 times."> 5</A>
20461
<TD class="srcLine">
20462
<A title="Line 1255: statement executed 5 times."><PRE class="srcLine"> <span class="keyword">for</span> (;;) {</PRE></A>
20469
<TD align="right" class="lineCountHilight">
20473
<TD align="right" class="lineCountHilight">
20474
<A title="Line 1256: statement executed 10 times."> 10</A>
20477
<TD class="srcLine">
20478
<A title="Line 1256: statement executed 10 times."><PRE class="srcLine"> <span class="keyword">if</span> (e == <span class="keyword">null</span>) {</PRE></A>
20485
<TD align="right" class="lineCount">
20489
<TD align="right" class="coverageCount">
20493
<TD class="srcLine">
20494
<PRE class="srcLine"> <span class="comment">/** OpenSymphony BEGIN */</span></PRE>
20501
<TD align="right" class="lineCount">
20505
<TD align="right" class="coverageCount">
20509
<TD class="srcLine">
20510
<PRE class="srcLine"> </PRE>
20517
<TD align="right" class="lineCount">
20521
<TD align="right" class="coverageCount">
20525
<TD class="srcLine">
20526
<PRE class="srcLine"> <span class="comment">// Previous code</span></PRE>
20533
<TD align="right" class="lineCount">
20537
<TD align="right" class="coverageCount">
20541
<TD class="srcLine">
20542
<PRE class="srcLine"> <span class="comment">// Entry newEntry = new Entry(hash, key, value, first);</span></PRE>
20549
<TD align="right" class="lineCountHilight">
20553
<TD align="right" class="lineCountHilight">
20554
<A title="Line 1261: statement executed 5 times."> 5</A>
20557
<TD class="srcLine">
20558
<A title="Line 1261: statement executed 5 times."><PRE class="srcLine"> Entry newEntry;</PRE></A>
20565
<TD align="right" class="lineCount">
20569
<TD align="right" class="coverageCount">
20573
<TD class="srcLine">
20574
<PRE class="srcLine"> </PRE>
20581
<TD align="right" class="lineCountHilight">
20585
<TD align="right" class="lineCountHilight">
20586
<A title="Line 1263: statement executed 5 times."> 5</A>
20589
<TD class="srcLine">
20590
<A title="Line 1263: statement executed 5 times."><PRE class="srcLine"> <span class="keyword">if</span> (memoryCaching) {</PRE></A>
20597
<TD align="right" class="lineCountHilight">
20601
<TD align="right" class="lineCountHilight">
20602
<A title="Line 1264: statement executed 3 times."> 3</A>
20605
<TD class="srcLine">
20606
<A title="Line 1264: statement executed 3 times."><PRE class="srcLine"> newEntry = <span class="keyword">new</span> Entry(hash, key, value, first);</PRE></A>
20613
<TD align="right" class="lineCount">
20617
<TD align="right" class="coverageCount">
20621
<TD class="srcLine">
20622
<PRE class="srcLine"> } <span class="keyword">else</span> {</PRE>
20629
<TD align="right" class="lineCountHilight">
20633
<TD align="right" class="lineCountHilight">
20634
<A title="Line 1266: statement executed 2 times."> 2</A>
20637
<TD class="srcLine">
20638
<A title="Line 1266: statement executed 2 times."><PRE class="srcLine"> newEntry = <span class="keyword">new</span> Entry(hash, key, NULL, first);</PRE></A>
20645
<TD align="right" class="lineCount">
20649
<TD align="right" class="coverageCount">
20653
<TD class="srcLine">
20654
<PRE class="srcLine"> }</PRE>
20661
<TD align="right" class="lineCount">
20665
<TD align="right" class="coverageCount">
20669
<TD class="srcLine">
20670
<PRE class="srcLine"> </PRE>
20677
<TD align="right" class="lineCountHilight">
20681
<TD align="right" class="lineCountHilight">
20682
<A title="Line 1269: statement executed 5 times."> 5</A>
20685
<TD class="srcLine">
20686
<A title="Line 1269: statement executed 5 times."><PRE class="srcLine"> itemPut(key);</PRE></A>
20693
<TD align="right" class="lineCount">
20697
<TD align="right" class="coverageCount">
20701
<TD class="srcLine">
20702
<PRE class="srcLine"> </PRE>
20709
<TD align="right" class="lineCount">
20713
<TD align="right" class="coverageCount">
20717
<TD class="srcLine">
20718
<PRE class="srcLine"> <span class="comment">// Persist if required</span></PRE>
20725
<TD align="right" class="lineCountHilight">
20729
<TD align="right" class="coverageCountHilight">
20730
<A title="Line 1272: expression evaluated to true 5 times, false 0 times."> 5</A>
20733
<TD class="srcHilight">
20734
<SPAN class="srcHilight">
20735
<A title="Line 1272: expression evaluated to true 5 times, false 0 times."><PRE class="srcLine"> <span class="keyword">if</span> (persist) {</PRE></A>
20743
<TD align="right" class="lineCountHilight">
20747
<TD align="right" class="lineCountHilight">
20748
<A title="Line 1273: statement executed 5 times."> 5</A>
20751
<TD class="srcLine">
20752
<A title="Line 1273: statement executed 5 times."><PRE class="srcLine"> persistStore(key, value);</PRE></A>
20759
<TD align="right" class="lineCount">
20763
<TD align="right" class="coverageCount">
20767
<TD class="srcLine">
20768
<PRE class="srcLine"> }</PRE>
20775
<TD align="right" class="lineCount">
20779
<TD align="right" class="coverageCount">
20783
<TD class="srcLine">
20784
<PRE class="srcLine"> </PRE>
20791
<TD align="right" class="lineCount">
20795
<TD align="right" class="coverageCount">
20799
<TD class="srcLine">
20800
<PRE class="srcLine"> <span class="comment">// If we have a CacheEntry, update the group lookups</span></PRE>
20807
<TD align="right" class="lineCountHilight">
20811
<TD align="right" class="coverageCountHilight">
20812
<A title="Line 1277: expression evaluated to true 5 times, false 0 times."> 5</A>
20815
<TD class="srcHilight">
20816
<SPAN class="srcHilight">
20817
<A title="Line 1277: expression evaluated to true 5 times, false 0 times."><PRE class="srcLine"> <span class="keyword">if</span> (value <span class="keyword">instanceof</span> CacheEntry) {</PRE></A>
20825
<TD align="right" class="lineCountHilight">
20829
<TD align="right" class="lineCountHilight">
20830
<A title="Line 1278: statement executed 5 times."> 5</A>
20833
<TD class="srcLine">
20834
<A title="Line 1278: statement executed 5 times."><PRE class="srcLine"> updateGroups(<span class="keyword">null</span>, (CacheEntry) value, persist);</PRE></A>
20841
<TD align="right" class="lineCount">
20845
<TD align="right" class="coverageCount">
20849
<TD class="srcLine">
20850
<PRE class="srcLine"> }</PRE>
20857
<TD align="right" class="lineCount">
20861
<TD align="right" class="coverageCount">
20865
<TD class="srcLine">
20866
<PRE class="srcLine"> </PRE>
20873
<TD align="right" class="lineCount">
20877
<TD align="right" class="coverageCount">
20881
<TD class="srcLine">
20882
<PRE class="srcLine"> <span class="comment">/** OpenSymphony END */</span></PRE>
20889
<TD align="right" class="lineCountHilight">
20893
<TD align="right" class="lineCountHilight">
20894
<A title="Line 1282: statement executed 5 times."> 5</A>
20897
<TD class="srcLine">
20898
<A title="Line 1282: statement executed 5 times."><PRE class="srcLine"> tab[index] = newEntry;</PRE></A>
20905
<TD align="right" class="lineCount">
20909
<TD align="right" class="coverageCount">
20913
<TD class="srcLine">
20914
<PRE class="srcLine"> </PRE>
20921
<TD align="right" class="lineCountHilight">
20925
<TD align="right" class="lineCountHilight">
20926
<A title="Line 1284: statement executed 5 times."> 5</A>
20929
<TD class="srcLine">
20930
<A title="Line 1284: statement executed 5 times."><PRE class="srcLine"> <span class="keyword">if</span> (++count >= threshold) {</PRE></A>
20937
<TD align="right" class="lineCountHilight">
20941
<TD align="right" class="lineCountHilight">
20942
<A title="Line 1285: statement executed 1 time."> 1</A>
20945
<TD class="srcLine">
20946
<A title="Line 1285: statement executed 1 time."><PRE class="srcLine"> rehash();</PRE></A>
20953
<TD align="right" class="lineCount">
20957
<TD align="right" class="coverageCount">
20961
<TD class="srcLine">
20962
<PRE class="srcLine"> } <span class="keyword">else</span> {</PRE>
20969
<TD align="right" class="lineCountHilight">
20973
<TD align="right" class="lineCountHilight">
20974
<A title="Line 1287: statement executed 4 times."> 4</A>
20977
<TD class="srcLine">
20978
<A title="Line 1287: statement executed 4 times."><PRE class="srcLine"> recordModification(newEntry);</PRE></A>
20985
<TD align="right" class="lineCount">
20989
<TD align="right" class="coverageCount">
20993
<TD class="srcLine">
20994
<PRE class="srcLine"> }</PRE>
21001
<TD align="right" class="lineCount">
21005
<TD align="right" class="coverageCount">
21009
<TD class="srcLine">
21010
<PRE class="srcLine"> </PRE>
21017
<TD align="right" class="lineCountHilight">
21021
<TD align="right" class="lineCountHilight">
21022
<A title="Line 1290: statement executed 5 times."> 5</A>
21025
<TD class="srcLine">
21026
<A title="Line 1290: statement executed 5 times."><PRE class="srcLine"> <span class="keyword">return</span> <span class="keyword">null</span>;</PRE></A>
21033
<TD align="right" class="lineCountHilight">
21037
<TD align="right" class="coverageCountHilight">
21038
<A title="Line 1291: expression evaluated to true 0 times, false 5 times."> 5</A>
21041
<TD class="srcHilight">
21042
<SPAN class="srcHilight">
21043
<A title="Line 1291: expression evaluated to true 0 times, false 5 times."><PRE class="srcLine"> } <span class="keyword">else</span> <span class="keyword">if</span> ((key == e.key) || ((e.hash == hash) && key.equals(e.key))) {</PRE></A>
21051
<TD align="right" class="lineCountHilight">
21055
<TD align="right" class="coverageCountHilight">
21056
<A title="Line 1292: statement not executed."> 0</A>
21059
<TD class="srcHilight">
21060
<SPAN class="srcHilight">
21061
<A title="Line 1292: statement not executed."><PRE class="srcLine"> Object oldValue = e.value;</PRE></A>
21069
<TD align="right" class="lineCount">
21073
<TD align="right" class="coverageCount">
21077
<TD class="srcLine">
21078
<PRE class="srcLine"> </PRE>
21085
<TD align="right" class="lineCount">
21089
<TD align="right" class="coverageCount">
21093
<TD class="srcLine">
21094
<PRE class="srcLine"> <span class="comment">/** OpenSymphony BEGIN */</span></PRE>
21101
<TD align="right" class="lineCount">
21105
<TD align="right" class="coverageCount">
21109
<TD class="srcLine">
21110
<PRE class="srcLine"> </PRE>
21117
<TD align="right" class="lineCount">
21121
<TD align="right" class="coverageCount">
21125
<TD class="srcLine">
21126
<PRE class="srcLine"> <span class="comment">/* Previous code</span></PRE>
21133
<TD align="right" class="lineCount">
21137
<TD align="right" class="coverageCount">
21141
<TD class="srcLine">
21142
<PRE class="srcLine"> <span class="comment"> e.value = value; */</span></PRE>
21149
<TD align="right" class="lineCountHilight">
21153
<TD align="right" class="coverageCountHilight">
21154
<A title="Line 1298: statement not executed."> 0</A>
21157
<TD class="srcHilight">
21158
<SPAN class="srcHilight">
21159
<A title="Line 1298: statement not executed."><PRE class="srcLine"> <span class="keyword">if</span> (memoryCaching) {</PRE></A>
21167
<TD align="right" class="lineCountHilight">
21171
<TD align="right" class="coverageCountHilight">
21172
<A title="Line 1299: statement not executed."> 0</A>
21175
<TD class="srcHilight">
21176
<SPAN class="srcHilight">
21177
<A title="Line 1299: statement not executed."><PRE class="srcLine"> e.value = value;</PRE></A>
21185
<TD align="right" class="lineCount">
21189
<TD align="right" class="coverageCount">
21193
<TD class="srcLine">
21194
<PRE class="srcLine"> }</PRE>
21201
<TD align="right" class="lineCount">
21205
<TD align="right" class="coverageCount">
21209
<TD class="srcLine">
21210
<PRE class="srcLine"> </PRE>
21217
<TD align="right" class="lineCountHilight">
21221
<TD align="right" class="coverageCountHilight">
21222
<A title="Line 1302: statement not executed."> 0</A>
21225
<TD class="srcHilight">
21226
<SPAN class="srcHilight">
21227
<A title="Line 1302: statement not executed."><PRE class="srcLine"> <span class="keyword">if</span> (persist) {</PRE></A>
21235
<TD align="right" class="lineCountHilight">
21239
<TD align="right" class="coverageCountHilight">
21240
<A title="Line 1303: statement not executed."> 0</A>
21243
<TD class="srcHilight">
21244
<SPAN class="srcHilight">
21245
<A title="Line 1303: statement not executed."><PRE class="srcLine"> persistStore(key, value);</PRE></A>
21253
<TD align="right" class="lineCount">
21257
<TD align="right" class="coverageCount">
21261
<TD class="srcLine">
21262
<PRE class="srcLine"> }</PRE>
21269
<TD align="right" class="lineCount">
21273
<TD align="right" class="coverageCount">
21277
<TD class="srcLine">
21278
<PRE class="srcLine"> </PRE>
21285
<TD align="right" class="lineCountHilight">
21289
<TD align="right" class="coverageCountHilight">
21290
<A title="Line 1306: statement not executed."> 0</A>
21293
<TD class="srcHilight">
21294
<SPAN class="srcHilight">
21295
<A title="Line 1306: statement not executed."><PRE class="srcLine"> updateGroups(oldValue, value, persist);</PRE></A>
21303
<TD align="right" class="lineCount">
21307
<TD align="right" class="coverageCount">
21311
<TD class="srcLine">
21312
<PRE class="srcLine"> </PRE>
21319
<TD align="right" class="lineCountHilight">
21323
<TD align="right" class="coverageCountHilight">
21324
<A title="Line 1308: statement not executed."> 0</A>
21327
<TD class="srcHilight">
21328
<SPAN class="srcHilight">
21329
<A title="Line 1308: statement not executed."><PRE class="srcLine"> itemPut(key);</PRE></A>
21337
<TD align="right" class="lineCount">
21341
<TD align="right" class="coverageCount">
21345
<TD class="srcLine">
21346
<PRE class="srcLine"> </PRE>
21353
<TD align="right" class="lineCount">
21357
<TD align="right" class="coverageCount">
21361
<TD class="srcLine">
21362
<PRE class="srcLine"> <span class="comment">/** OpenSymphony END */</span></PRE>
21369
<TD align="right" class="lineCountHilight">
21373
<TD align="right" class="coverageCountHilight">
21374
<A title="Line 1311: statement not executed."> 0</A>
21377
<TD class="srcHilight">
21378
<SPAN class="srcHilight">
21379
<A title="Line 1311: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> oldValue;</PRE></A>
21387
<TD align="right" class="lineCount">
21391
<TD align="right" class="coverageCount">
21395
<TD class="srcLine">
21396
<PRE class="srcLine"> } <span class="keyword">else</span> {</PRE>
21403
<TD align="right" class="lineCountHilight">
21407
<TD align="right" class="lineCountHilight">
21408
<A title="Line 1313: statement executed 5 times."> 5</A>
21411
<TD class="srcLine">
21412
<A title="Line 1313: statement executed 5 times."><PRE class="srcLine"> e = e.next;</PRE></A>
21419
<TD align="right" class="lineCount">
21423
<TD align="right" class="coverageCount">
21427
<TD class="srcLine">
21428
<PRE class="srcLine"> }</PRE>
21435
<TD align="right" class="lineCount">
21439
<TD align="right" class="coverageCount">
21443
<TD class="srcLine">
21444
<PRE class="srcLine"> }</PRE>
21451
<TD align="right" class="lineCount">
21455
<TD align="right" class="coverageCount">
21459
<TD class="srcLine">
21460
<PRE class="srcLine"> }</PRE>
21467
<TD align="right" class="lineCount">
21471
<TD align="right" class="coverageCount">
21475
<TD class="srcLine">
21476
<PRE class="srcLine"> </PRE>
21483
<TD align="right" class="lineCount">
21487
<TD align="right" class="coverageCount">
21491
<TD class="srcLine">
21492
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
21499
<TD align="right" class="lineCount">
21503
<TD align="right" class="coverageCount">
21507
<TD class="srcLine">
21508
<PRE class="srcLine"> <span class="comment"> * Continuation of remove(), called only when synch lock is</span></PRE>
21515
<TD align="right" class="lineCount">
21519
<TD align="right" class="coverageCount">
21523
<TD class="srcLine">
21524
<PRE class="srcLine"> <span class="comment"> * held and interference has been detected.</span></PRE>
21531
<TD align="right" class="lineCount">
21535
<TD align="right" class="coverageCount">
21539
<TD class="srcLine">
21540
<PRE class="srcLine"> <span class="comment"> **/</span></PRE>
21547
<TD align="right" class="lineCount">
21551
<TD align="right" class="coverageCount">
21555
<TD class="srcLine">
21556
<PRE class="srcLine"> <span class="comment">/** OpenSymphony BEGIN */</span></PRE>
21563
<TD align="right" class="lineCount">
21567
<TD align="right" class="coverageCount">
21571
<TD class="srcLine">
21572
<PRE class="srcLine"> </PRE>
21579
<TD align="right" class="lineCount">
21583
<TD align="right" class="coverageCount">
21587
<TD class="srcLine">
21588
<PRE class="srcLine"> <span class="comment">/* Previous code</span></PRE>
21595
<TD align="right" class="lineCount">
21599
<TD align="right" class="coverageCount">
21603
<TD class="srcLine">
21604
<PRE class="srcLine"> <span class="comment"> protected Object sremove(Object key, int hash) { */</span></PRE>
21611
<TD align="right" class="lineCountHilight">
21615
<TD align="right" class="coverageCountHilight">
21616
<A title="Line 1326: method not entered."> 0</A>
21619
<TD class="srcHilight">
21620
<SPAN class="srcHilight">
21621
<A title="Line 1326: method not entered."><PRE class="srcLine"> <span class="keyword">protected</span> Object sremove(Object key, <span class="keyword">int</span> hash, <span class="keyword">boolean</span> invokeAlgorithm) {</PRE></A>
21629
<TD align="right" class="lineCount">
21633
<TD align="right" class="coverageCount">
21637
<TD class="srcLine">
21638
<PRE class="srcLine"> <span class="comment">/** OpenSymphony END */</span></PRE>
21645
<TD align="right" class="lineCountHilight">
21649
<TD align="right" class="coverageCountHilight">
21650
<A title="Line 1328: statement not executed."> 0</A>
21653
<TD class="srcHilight">
21654
<SPAN class="srcHilight">
21655
<A title="Line 1328: statement not executed."><PRE class="srcLine"> Entry[] tab = table;</PRE></A>
21663
<TD align="right" class="lineCountHilight">
21667
<TD align="right" class="coverageCountHilight">
21668
<A title="Line 1329: statement not executed."> 0</A>
21671
<TD class="srcHilight">
21672
<SPAN class="srcHilight">
21673
<A title="Line 1329: statement not executed."><PRE class="srcLine"> <span class="keyword">int</span> index = hash & (tab.length - 1);</PRE></A>
21681
<TD align="right" class="lineCountHilight">
21685
<TD align="right" class="coverageCountHilight">
21686
<A title="Line 1330: statement not executed."> 0</A>
21689
<TD class="srcHilight">
21690
<SPAN class="srcHilight">
21691
<A title="Line 1330: statement not executed."><PRE class="srcLine"> Entry first = tab[index];</PRE></A>
21699
<TD align="right" class="lineCountHilight">
21703
<TD align="right" class="coverageCountHilight">
21704
<A title="Line 1331: statement not executed."> 0</A>
21707
<TD class="srcHilight">
21708
<SPAN class="srcHilight">
21709
<A title="Line 1331: statement not executed."><PRE class="srcLine"> Entry e = first;</PRE></A>
21717
<TD align="right" class="lineCount">
21721
<TD align="right" class="coverageCount">
21725
<TD class="srcLine">
21726
<PRE class="srcLine"> </PRE>
21733
<TD align="right" class="lineCountHilight">
21737
<TD align="right" class="coverageCountHilight">
21738
<A title="Line 1333: statement not executed."> 0</A>
21741
<TD class="srcHilight">
21742
<SPAN class="srcHilight">
21743
<A title="Line 1333: statement not executed."><PRE class="srcLine"> <span class="keyword">for</span> (;;) {</PRE></A>
21751
<TD align="right" class="lineCountHilight">
21755
<TD align="right" class="coverageCountHilight">
21756
<A title="Line 1334: statement not executed."> 0</A>
21759
<TD class="srcHilight">
21760
<SPAN class="srcHilight">
21761
<A title="Line 1334: statement not executed."><PRE class="srcLine"> <span class="keyword">if</span> (e == <span class="keyword">null</span>) {</PRE></A>
21769
<TD align="right" class="lineCountHilight">
21773
<TD align="right" class="coverageCountHilight">
21774
<A title="Line 1335: statement not executed."> 0</A>
21777
<TD class="srcHilight">
21778
<SPAN class="srcHilight">
21779
<A title="Line 1335: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> <span class="keyword">null</span>;</PRE></A>
21787
<TD align="right" class="lineCountHilight">
21791
<TD align="right" class="coverageCountHilight">
21792
<A title="Line 1336: statement not executed."> 0</A>
21795
<TD class="srcHilight">
21796
<SPAN class="srcHilight">
21797
<A title="Line 1336: statement not executed."><PRE class="srcLine"> } <span class="keyword">else</span> <span class="keyword">if</span> ((key == e.key) || ((e.hash == hash) && key.equals(e.key))) {</PRE></A>
21805
<TD align="right" class="lineCountHilight">
21809
<TD align="right" class="coverageCountHilight">
21810
<A title="Line 1337: statement not executed."> 0</A>
21813
<TD class="srcHilight">
21814
<SPAN class="srcHilight">
21815
<A title="Line 1337: statement not executed."><PRE class="srcLine"> Object oldValue = e.value;</PRE></A>
21823
<TD align="right" class="lineCountHilight">
21827
<TD align="right" class="coverageCountHilight">
21828
<A title="Line 1338: statement not executed."> 0</A>
21831
<TD class="srcHilight">
21832
<SPAN class="srcHilight">
21833
<A title="Line 1338: statement not executed."><PRE class="srcLine"> e.value = <span class="keyword">null</span>;</PRE></A>
21841
<TD align="right" class="lineCountHilight">
21845
<TD align="right" class="coverageCountHilight">
21846
<A title="Line 1339: statement not executed."> 0</A>
21849
<TD class="srcHilight">
21850
<SPAN class="srcHilight">
21851
<A title="Line 1339: statement not executed."><PRE class="srcLine"> count--;</PRE></A>
21859
<TD align="right" class="lineCount">
21863
<TD align="right" class="coverageCount">
21867
<TD class="srcLine">
21868
<PRE class="srcLine"> </PRE>
21875
<TD align="right" class="lineCount">
21879
<TD align="right" class="coverageCount">
21883
<TD class="srcLine">
21884
<PRE class="srcLine"> <span class="comment">/** OpenSymphony BEGIN */</span></PRE>
21891
<TD align="right" class="lineCountHilight">
21895
<TD align="right" class="coverageCountHilight">
21896
<A title="Line 1342: statement not executed."> 0</A>
21899
<TD class="srcHilight">
21900
<SPAN class="srcHilight">
21901
<A title="Line 1342: statement not executed."><PRE class="srcLine"> <span class="keyword">if</span> (!unlimitedDiskCache) {</PRE></A>
21909
<TD align="right" class="lineCountHilight">
21913
<TD align="right" class="coverageCountHilight">
21914
<A title="Line 1343: statement not executed."> 0</A>
21917
<TD class="srcHilight">
21918
<SPAN class="srcHilight">
21919
<A title="Line 1343: statement not executed."><PRE class="srcLine"> persistRemove(e.key);</PRE></A>
21927
<TD align="right" class="lineCount">
21931
<TD align="right" class="coverageCount">
21935
<TD class="srcLine">
21936
<PRE class="srcLine"> }</PRE>
21943
<TD align="right" class="lineCount">
21947
<TD align="right" class="coverageCount">
21951
<TD class="srcLine">
21952
<PRE class="srcLine"> </PRE>
21959
<TD align="right" class="lineCountHilight">
21963
<TD align="right" class="coverageCountHilight">
21964
<A title="Line 1346: statement not executed."> 0</A>
21967
<TD class="srcHilight">
21968
<SPAN class="srcHilight">
21969
<A title="Line 1346: statement not executed."><PRE class="srcLine"> <span class="keyword">if</span> (invokeAlgorithm) {</PRE></A>
21977
<TD align="right" class="lineCountHilight">
21981
<TD align="right" class="coverageCountHilight">
21982
<A title="Line 1347: statement not executed."> 0</A>
21985
<TD class="srcHilight">
21986
<SPAN class="srcHilight">
21987
<A title="Line 1347: statement not executed."><PRE class="srcLine"> itemRemoved(key);</PRE></A>
21995
<TD align="right" class="lineCount">
21999
<TD align="right" class="coverageCount">
22003
<TD class="srcLine">
22004
<PRE class="srcLine"> }</PRE>
22011
<TD align="right" class="lineCount">
22015
<TD align="right" class="coverageCount">
22019
<TD class="srcLine">
22020
<PRE class="srcLine"> </PRE>
22027
<TD align="right" class="lineCount">
22031
<TD align="right" class="coverageCount">
22035
<TD class="srcLine">
22036
<PRE class="srcLine"> <span class="comment">/** OpenSymphony END */</span></PRE>
22043
<TD align="right" class="lineCountHilight">
22047
<TD align="right" class="coverageCountHilight">
22048
<A title="Line 1351: statement not executed."> 0</A>
22051
<TD class="srcHilight">
22052
<SPAN class="srcHilight">
22053
<A title="Line 1351: statement not executed."><PRE class="srcLine"> Entry head = e.next;</PRE></A>
22061
<TD align="right" class="lineCount">
22065
<TD align="right" class="coverageCount">
22069
<TD class="srcLine">
22070
<PRE class="srcLine"> </PRE>
22077
<TD align="right" class="lineCountHilight">
22081
<TD align="right" class="coverageCountHilight">
22082
<A title="Line 1353: statement not executed."> 0</A>
22085
<TD class="srcHilight">
22086
<SPAN class="srcHilight">
22087
<A title="Line 1353: statement not executed."><PRE class="srcLine"> <span class="keyword">for</span> (Entry p = first; p != e; p = p.next) {</PRE></A>
22095
<TD align="right" class="lineCountHilight">
22099
<TD align="right" class="coverageCountHilight">
22100
<A title="Line 1354: statement not executed."> 0</A>
22103
<TD class="srcHilight">
22104
<SPAN class="srcHilight">
22105
<A title="Line 1354: statement not executed."><PRE class="srcLine"> head = <span class="keyword">new</span> Entry(p.hash, p.key, p.value, head);</PRE></A>
22113
<TD align="right" class="lineCount">
22117
<TD align="right" class="coverageCount">
22121
<TD class="srcLine">
22122
<PRE class="srcLine"> }</PRE>
22129
<TD align="right" class="lineCount">
22133
<TD align="right" class="coverageCount">
22137
<TD class="srcLine">
22138
<PRE class="srcLine"> </PRE>
22145
<TD align="right" class="lineCountHilight">
22149
<TD align="right" class="coverageCountHilight">
22150
<A title="Line 1357: statement not executed."> 0</A>
22153
<TD class="srcHilight">
22154
<SPAN class="srcHilight">
22155
<A title="Line 1357: statement not executed."><PRE class="srcLine"> tab[index] = head;</PRE></A>
22163
<TD align="right" class="lineCountHilight">
22167
<TD align="right" class="coverageCountHilight">
22168
<A title="Line 1358: statement not executed."> 0</A>
22171
<TD class="srcHilight">
22172
<SPAN class="srcHilight">
22173
<A title="Line 1358: statement not executed."><PRE class="srcLine"> recordModification(head);</PRE></A>
22181
<TD align="right" class="lineCount">
22185
<TD align="right" class="coverageCount">
22189
<TD class="srcLine">
22190
<PRE class="srcLine"> </PRE>
22197
<TD align="right" class="lineCountHilight">
22201
<TD align="right" class="coverageCountHilight">
22202
<A title="Line 1360: statement not executed."> 0</A>
22205
<TD class="srcHilight">
22206
<SPAN class="srcHilight">
22207
<A title="Line 1360: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> oldValue;</PRE></A>
22215
<TD align="right" class="lineCount">
22219
<TD align="right" class="coverageCount">
22223
<TD class="srcLine">
22224
<PRE class="srcLine"> } <span class="keyword">else</span> {</PRE>
22231
<TD align="right" class="lineCountHilight">
22235
<TD align="right" class="coverageCountHilight">
22236
<A title="Line 1362: statement not executed."> 0</A>
22239
<TD class="srcHilight">
22240
<SPAN class="srcHilight">
22241
<A title="Line 1362: statement not executed."><PRE class="srcLine"> e = e.next;</PRE></A>
22249
<TD align="right" class="lineCount">
22253
<TD align="right" class="coverageCount">
22257
<TD class="srcLine">
22258
<PRE class="srcLine"> }</PRE>
22265
<TD align="right" class="lineCount">
22269
<TD align="right" class="coverageCount">
22273
<TD class="srcLine">
22274
<PRE class="srcLine"> }</PRE>
22281
<TD align="right" class="lineCount">
22285
<TD align="right" class="coverageCount">
22289
<TD class="srcLine">
22290
<PRE class="srcLine"> }</PRE>
22297
<TD align="right" class="lineCount">
22301
<TD align="right" class="coverageCount">
22305
<TD class="srcLine">
22306
<PRE class="srcLine"> </PRE>
22313
<TD align="right" class="lineCount">
22317
<TD align="right" class="coverageCount">
22321
<TD class="srcLine">
22322
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
22329
<TD align="right" class="lineCount">
22333
<TD align="right" class="coverageCount">
22337
<TD class="srcLine">
22338
<PRE class="srcLine"> <span class="comment"> * Save the state of the <tt>AbstractConcurrentReadCache</tt> instance to a stream.</span></PRE>
22345
<TD align="right" class="lineCount">
22349
<TD align="right" class="coverageCount">
22353
<TD class="srcLine">
22354
<PRE class="srcLine"> <span class="comment"> * (i.e., serialize it).</span></PRE>
22361
<TD align="right" class="lineCount">
22365
<TD align="right" class="coverageCount">
22369
<TD class="srcLine">
22370
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
22377
<TD align="right" class="lineCount">
22381
<TD align="right" class="coverageCount">
22385
<TD class="srcLine">
22386
<PRE class="srcLine"> <span class="comment"> * @serialData The <i>capacity</i> of the</span></PRE>
22393
<TD align="right" class="lineCount">
22397
<TD align="right" class="coverageCount">
22401
<TD class="srcLine">
22402
<PRE class="srcLine"> <span class="comment"> * AbstractConcurrentReadCache (the length of the</span></PRE>
22409
<TD align="right" class="lineCount">
22413
<TD align="right" class="coverageCount">
22417
<TD class="srcLine">
22418
<PRE class="srcLine"> <span class="comment"> * bucket array) is emitted (int), followed by the</span></PRE>
22425
<TD align="right" class="lineCount">
22429
<TD align="right" class="coverageCount">
22433
<TD class="srcLine">
22434
<PRE class="srcLine"> <span class="comment"> * <i>size</i> of the AbstractConcurrentReadCache (the number of key-value</span></PRE>
22441
<TD align="right" class="lineCount">
22445
<TD align="right" class="coverageCount">
22449
<TD class="srcLine">
22450
<PRE class="srcLine"> <span class="comment"> * mappings), followed by the key (Object) and value (Object)</span></PRE>
22457
<TD align="right" class="lineCount">
22461
<TD align="right" class="coverageCount">
22465
<TD class="srcLine">
22466
<PRE class="srcLine"> <span class="comment"> * for each key-value mapping represented by the AbstractConcurrentReadCache</span></PRE>
22473
<TD align="right" class="lineCount">
22477
<TD align="right" class="coverageCount">
22481
<TD class="srcLine">
22482
<PRE class="srcLine"> <span class="comment"> * The key-value mappings are emitted in no particular order.</span></PRE>
22489
<TD align="right" class="lineCount">
22493
<TD align="right" class="coverageCount">
22497
<TD class="srcLine">
22498
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
22505
<TD align="right" class="lineCountHilight">
22509
<TD align="right" class="coverageCountHilight">
22510
<A title="Line 1379: method not entered."> 0</A>
22513
<TD class="srcHilight">
22514
<SPAN class="srcHilight">
22515
<A title="Line 1379: method not entered."><PRE class="srcLine"> <span class="keyword">protected</span> <span class="keyword">synchronized</span> <span class="keyword">void</span> writeObject(java.io.ObjectOutputStream s) <span class="keyword">throws</span> IOException {</PRE></A>
22523
<TD align="right" class="lineCount">
22527
<TD align="right" class="coverageCount">
22531
<TD class="srcLine">
22532
<PRE class="srcLine"> <span class="comment">// Write out the threshold, loadfactor, and any hidden stuff</span></PRE>
22539
<TD align="right" class="lineCountHilight">
22543
<TD align="right" class="coverageCountHilight">
22544
<A title="Line 1381: statement not executed."> 0</A>
22547
<TD class="srcHilight">
22548
<SPAN class="srcHilight">
22549
<A title="Line 1381: statement not executed."><PRE class="srcLine"> s.defaultWriteObject();</PRE></A>
22557
<TD align="right" class="lineCount">
22561
<TD align="right" class="coverageCount">
22565
<TD class="srcLine">
22566
<PRE class="srcLine"> </PRE>
22573
<TD align="right" class="lineCount">
22577
<TD align="right" class="coverageCount">
22581
<TD class="srcLine">
22582
<PRE class="srcLine"> <span class="comment">// Write out number of buckets</span></PRE>
22589
<TD align="right" class="lineCountHilight">
22593
<TD align="right" class="coverageCountHilight">
22594
<A title="Line 1384: statement not executed."> 0</A>
22597
<TD class="srcHilight">
22598
<SPAN class="srcHilight">
22599
<A title="Line 1384: statement not executed."><PRE class="srcLine"> s.writeInt(table.length);</PRE></A>
22607
<TD align="right" class="lineCount">
22611
<TD align="right" class="coverageCount">
22615
<TD class="srcLine">
22616
<PRE class="srcLine"> </PRE>
22623
<TD align="right" class="lineCount">
22627
<TD align="right" class="coverageCount">
22631
<TD class="srcLine">
22632
<PRE class="srcLine"> <span class="comment">// Write out size (number of Mappings)</span></PRE>
22639
<TD align="right" class="lineCountHilight">
22643
<TD align="right" class="coverageCountHilight">
22644
<A title="Line 1387: statement not executed."> 0</A>
22647
<TD class="srcHilight">
22648
<SPAN class="srcHilight">
22649
<A title="Line 1387: statement not executed."><PRE class="srcLine"> s.writeInt(count);</PRE></A>
22657
<TD align="right" class="lineCount">
22661
<TD align="right" class="coverageCount">
22665
<TD class="srcLine">
22666
<PRE class="srcLine"> </PRE>
22673
<TD align="right" class="lineCount">
22677
<TD align="right" class="coverageCount">
22681
<TD class="srcLine">
22682
<PRE class="srcLine"> <span class="comment">// Write out keys and values (alternating)</span></PRE>
22689
<TD align="right" class="lineCountHilight">
22693
<TD align="right" class="coverageCountHilight">
22694
<A title="Line 1390: statement not executed."> 0</A>
22697
<TD class="srcHilight">
22698
<SPAN class="srcHilight">
22699
<A title="Line 1390: statement not executed."><PRE class="srcLine"> <span class="keyword">for</span> (<span class="keyword">int</span> index = table.length - 1; index >= 0; index--) {</PRE></A>
22707
<TD align="right" class="lineCountHilight">
22711
<TD align="right" class="coverageCountHilight">
22712
<A title="Line 1391: statement not executed."> 0</A>
22715
<TD class="srcHilight">
22716
<SPAN class="srcHilight">
22717
<A title="Line 1391: statement not executed."><PRE class="srcLine"> Entry entry = table[index];</PRE></A>
22725
<TD align="right" class="lineCount">
22729
<TD align="right" class="coverageCount">
22733
<TD class="srcLine">
22734
<PRE class="srcLine"> </PRE>
22741
<TD align="right" class="lineCountHilight">
22745
<TD align="right" class="coverageCountHilight">
22746
<A title="Line 1393: statement not executed."> 0</A>
22749
<TD class="srcHilight">
22750
<SPAN class="srcHilight">
22751
<A title="Line 1393: statement not executed."><PRE class="srcLine"> <span class="keyword">while</span> (entry != <span class="keyword">null</span>) {</PRE></A>
22759
<TD align="right" class="lineCountHilight">
22763
<TD align="right" class="coverageCountHilight">
22764
<A title="Line 1394: statement not executed."> 0</A>
22767
<TD class="srcHilight">
22768
<SPAN class="srcHilight">
22769
<A title="Line 1394: statement not executed."><PRE class="srcLine"> s.writeObject(entry.key);</PRE></A>
22777
<TD align="right" class="lineCountHilight">
22781
<TD align="right" class="coverageCountHilight">
22782
<A title="Line 1395: statement not executed."> 0</A>
22785
<TD class="srcHilight">
22786
<SPAN class="srcHilight">
22787
<A title="Line 1395: statement not executed."><PRE class="srcLine"> s.writeObject(entry.value);</PRE></A>
22795
<TD align="right" class="lineCountHilight">
22799
<TD align="right" class="coverageCountHilight">
22800
<A title="Line 1396: statement not executed."> 0</A>
22803
<TD class="srcHilight">
22804
<SPAN class="srcHilight">
22805
<A title="Line 1396: statement not executed."><PRE class="srcLine"> entry = entry.next;</PRE></A>
22813
<TD align="right" class="lineCount">
22817
<TD align="right" class="coverageCount">
22821
<TD class="srcLine">
22822
<PRE class="srcLine"> }</PRE>
22829
<TD align="right" class="lineCount">
22833
<TD align="right" class="coverageCount">
22837
<TD class="srcLine">
22838
<PRE class="srcLine"> }</PRE>
22845
<TD align="right" class="lineCount">
22849
<TD align="right" class="coverageCount">
22853
<TD class="srcLine">
22854
<PRE class="srcLine"> }</PRE>
22861
<TD align="right" class="lineCount">
22865
<TD align="right" class="coverageCount">
22869
<TD class="srcLine">
22870
<PRE class="srcLine"> </PRE>
22877
<TD align="right" class="lineCount">
22881
<TD align="right" class="coverageCount">
22885
<TD class="srcLine">
22886
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
22893
<TD align="right" class="lineCount">
22897
<TD align="right" class="coverageCount">
22901
<TD class="srcLine">
22902
<PRE class="srcLine"> <span class="comment"> * Return hash code for Object x.</span></PRE>
22909
<TD align="right" class="lineCount">
22913
<TD align="right" class="coverageCount">
22917
<TD class="srcLine">
22918
<PRE class="srcLine"> <span class="comment"> * Since we are using power-of-two</span></PRE>
22925
<TD align="right" class="lineCount">
22929
<TD align="right" class="coverageCount">
22933
<TD class="srcLine">
22934
<PRE class="srcLine"> <span class="comment"> * tables, it is worth the effort to improve hashcode via</span></PRE>
22941
<TD align="right" class="lineCount">
22945
<TD align="right" class="coverageCount">
22949
<TD class="srcLine">
22950
<PRE class="srcLine"> <span class="comment"> * the same multiplicative scheme as used in IdentityHashMap.</span></PRE>
22957
<TD align="right" class="lineCount">
22961
<TD align="right" class="coverageCount">
22965
<TD class="srcLine">
22966
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
22973
<TD align="right" class="lineCountHilight">
22977
<TD align="right" class="lineCountHilight">
22978
<A title="Line 1407: method entered 1097 times."> 1097</A>
22981
<TD class="srcLine">
22982
<A title="Line 1407: method entered 1097 times."><PRE class="srcLine"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">int</span> hash(Object x) {</PRE></A>
22989
<TD align="right" class="lineCountHilight">
22993
<TD align="right" class="lineCountHilight">
22994
<A title="Line 1408: statement executed 1097 times."> 1097</A>
22997
<TD class="srcLine">
22998
<A title="Line 1408: statement executed 1097 times."><PRE class="srcLine"> <span class="keyword">int</span> h = x.hashCode();</PRE></A>
23005
<TD align="right" class="lineCount">
23009
<TD align="right" class="coverageCount">
23013
<TD class="srcLine">
23014
<PRE class="srcLine"> </PRE>
23021
<TD align="right" class="lineCount">
23025
<TD align="right" class="coverageCount">
23029
<TD class="srcLine">
23030
<PRE class="srcLine"> <span class="comment">// Multiply by 127 (quickly, via shifts), and mix in some high</span></PRE>
23037
<TD align="right" class="lineCount">
23041
<TD align="right" class="coverageCount">
23045
<TD class="srcLine">
23046
<PRE class="srcLine"> <span class="comment">// bits to help guard against bunching of codes that are</span></PRE>
23053
<TD align="right" class="lineCount">
23057
<TD align="right" class="coverageCount">
23061
<TD class="srcLine">
23062
<PRE class="srcLine"> <span class="comment">// consecutive or equally spaced.</span></PRE>
23069
<TD align="right" class="lineCountHilight">
23073
<TD align="right" class="lineCountHilight">
23074
<A title="Line 1413: statement executed 1079 times."> 1079</A>
23077
<TD class="srcLine">
23078
<A title="Line 1413: statement executed 1079 times."><PRE class="srcLine"> <span class="keyword">return</span> ((h << 7) - h + (h >>> 9) + (h >>> 17));</PRE></A>
23085
<TD align="right" class="lineCount">
23089
<TD align="right" class="coverageCount">
23093
<TD class="srcLine">
23094
<PRE class="srcLine"> }</PRE>
23101
<TD align="right" class="lineCount">
23105
<TD align="right" class="coverageCount">
23109
<TD class="srcLine">
23110
<PRE class="srcLine"> </PRE>
23117
<TD align="right" class="lineCount">
23121
<TD align="right" class="coverageCount">
23125
<TD class="srcLine">
23126
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
23133
<TD align="right" class="lineCount">
23137
<TD align="right" class="coverageCount">
23141
<TD class="srcLine">
23142
<PRE class="srcLine"> <span class="comment"> * Add this cache key to the groups specified groups.</span></PRE>
23149
<TD align="right" class="lineCount">
23153
<TD align="right" class="coverageCount">
23157
<TD class="srcLine">
23158
<PRE class="srcLine"> <span class="comment"> * We have to treat the</span></PRE>
23165
<TD align="right" class="lineCount">
23169
<TD align="right" class="coverageCount">
23173
<TD class="srcLine">
23174
<PRE class="srcLine"> <span class="comment"> * memory and disk group mappings seperately so they remain valid for their</span></PRE>
23181
<TD align="right" class="lineCount">
23185
<TD align="right" class="coverageCount">
23189
<TD class="srcLine">
23190
<PRE class="srcLine"> <span class="comment"> * corresponding memory/disk caches. (eg if mem is limited to 100 entries</span></PRE>
23197
<TD align="right" class="lineCount">
23201
<TD align="right" class="coverageCount">
23205
<TD class="srcLine">
23206
<PRE class="srcLine"> <span class="comment"> * and disk is unlimited, the group mappings will be different).</span></PRE>
23213
<TD align="right" class="lineCount">
23217
<TD align="right" class="coverageCount">
23221
<TD class="srcLine">
23222
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
23229
<TD align="right" class="lineCount">
23233
<TD align="right" class="coverageCount">
23237
<TD class="srcLine">
23238
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@param</span> key The cache key that we are ading to the groups.</span></PRE>
23245
<TD align="right" class="lineCount">
23249
<TD align="right" class="coverageCount">
23253
<TD class="srcLine">
23254
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@param</span> newGroups the set of groups we want to add this cache entry to.</span></PRE>
23261
<TD align="right" class="lineCount">
23265
<TD align="right" class="coverageCount">
23269
<TD class="srcLine">
23270
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@param</span> persist A flag to indicate whether the keys should be added to</span></PRE>
23277
<TD align="right" class="lineCount">
23281
<TD align="right" class="coverageCount">
23285
<TD class="srcLine">
23286
<PRE class="srcLine"> <span class="comment"> * the persistent cache layer.</span></PRE>
23293
<TD align="right" class="lineCount">
23297
<TD align="right" class="coverageCount">
23301
<TD class="srcLine">
23302
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
23309
<TD align="right" class="lineCountHilight">
23313
<TD align="right" class="lineCountHilight">
23314
<A title="Line 1428: method entered 104 times."> 104</A>
23317
<TD class="srcLine">
23318
<A title="Line 1428: method entered 104 times."><PRE class="srcLine"> <span class="keyword">private</span> <span class="keyword">void</span> addGroupMappings(String key, Set newGroups, <span class="keyword">boolean</span> persist) {</PRE></A>
23325
<TD align="right" class="lineCount">
23329
<TD align="right" class="coverageCount">
23333
<TD class="srcLine">
23334
<PRE class="srcLine"> <span class="comment">// Add this CacheEntry to the groups that it is now a member of</span></PRE>
23341
<TD align="right" class="lineCountHilight">
23345
<TD align="right" class="lineCountHilight">
23346
<A title="Line 1430: statement executed 104 times."> 104</A>
23349
<TD class="srcLine">
23350
<A title="Line 1430: statement executed 104 times."><PRE class="srcLine"> <span class="keyword">for</span> (Iterator it = newGroups.iterator(); it.hasNext();) {</PRE></A>
23357
<TD align="right" class="lineCountHilight">
23361
<TD align="right" class="lineCountHilight">
23362
<A title="Line 1431: statement executed 127 times."> 127</A>
23365
<TD class="srcLine">
23366
<A title="Line 1431: statement executed 127 times."><PRE class="srcLine"> String groupName = (String) it.next();</PRE></A>
23373
<TD align="right" class="lineCount">
23377
<TD align="right" class="coverageCount">
23381
<TD class="srcLine">
23382
<PRE class="srcLine"> </PRE>
23389
<TD align="right" class="lineCount">
23393
<TD align="right" class="coverageCount">
23397
<TD class="srcLine">
23398
<PRE class="srcLine"> <span class="comment">// Update the in-memory groups</span></PRE>
23405
<TD align="right" class="lineCountHilight">
23409
<TD align="right" class="lineCountHilight">
23410
<A title="Line 1434: statement executed 127 times."> 127</A>
23413
<TD class="srcLine">
23414
<A title="Line 1434: statement executed 127 times."><PRE class="srcLine"> <span class="keyword">if</span> (memoryCaching) {</PRE></A>
23421
<TD align="right" class="lineCountHilight">
23425
<TD align="right" class="lineCountHilight">
23426
<A title="Line 1435: statement executed 61 times."> 61</A>
23429
<TD class="srcLine">
23430
<A title="Line 1435: statement executed 61 times."><PRE class="srcLine"> <span class="keyword">if</span> (groups == <span class="keyword">null</span>) {</PRE></A>
23437
<TD align="right" class="lineCountHilight">
23441
<TD align="right" class="lineCountHilight">
23442
<A title="Line 1436: statement executed 6 times."> 6</A>
23445
<TD class="srcLine">
23446
<A title="Line 1436: statement executed 6 times."><PRE class="srcLine"> groups = <span class="keyword">new</span> HashMap();</PRE></A>
23453
<TD align="right" class="lineCount">
23457
<TD align="right" class="coverageCount">
23461
<TD class="srcLine">
23462
<PRE class="srcLine"> }</PRE>
23469
<TD align="right" class="lineCount">
23473
<TD align="right" class="coverageCount">
23477
<TD class="srcLine">
23478
<PRE class="srcLine"> </PRE>
23485
<TD align="right" class="lineCountHilight">
23489
<TD align="right" class="lineCountHilight">
23490
<A title="Line 1439: statement executed 61 times."> 61</A>
23493
<TD class="srcLine">
23494
<A title="Line 1439: statement executed 61 times."><PRE class="srcLine"> Set memoryGroup = (Set) groups.get(groupName);</PRE></A>
23501
<TD align="right" class="lineCount">
23505
<TD align="right" class="coverageCount">
23509
<TD class="srcLine">
23510
<PRE class="srcLine"> </PRE>
23517
<TD align="right" class="lineCountHilight">
23521
<TD align="right" class="lineCountHilight">
23522
<A title="Line 1441: statement executed 61 times."> 61</A>
23525
<TD class="srcLine">
23526
<A title="Line 1441: statement executed 61 times."><PRE class="srcLine"> <span class="keyword">if</span> (memoryGroup == <span class="keyword">null</span>) {</PRE></A>
23533
<TD align="right" class="lineCountHilight">
23537
<TD align="right" class="lineCountHilight">
23538
<A title="Line 1442: statement executed 18 times."> 18</A>
23541
<TD class="srcLine">
23542
<A title="Line 1442: statement executed 18 times."><PRE class="srcLine"> memoryGroup = <span class="keyword">new</span> HashSet();</PRE></A>
23549
<TD align="right" class="lineCountHilight">
23553
<TD align="right" class="lineCountHilight">
23554
<A title="Line 1443: statement executed 18 times."> 18</A>
23557
<TD class="srcLine">
23558
<A title="Line 1443: statement executed 18 times."><PRE class="srcLine"> groups.put(groupName, memoryGroup);</PRE></A>
23565
<TD align="right" class="lineCount">
23569
<TD align="right" class="coverageCount">
23573
<TD class="srcLine">
23574
<PRE class="srcLine"> }</PRE>
23581
<TD align="right" class="lineCount">
23585
<TD align="right" class="coverageCount">
23589
<TD class="srcLine">
23590
<PRE class="srcLine"> </PRE>
23597
<TD align="right" class="lineCountHilight">
23601
<TD align="right" class="lineCountHilight">
23602
<A title="Line 1446: statement executed 61 times."> 61</A>
23605
<TD class="srcLine">
23606
<A title="Line 1446: statement executed 61 times."><PRE class="srcLine"> memoryGroup.add(key);</PRE></A>
23613
<TD align="right" class="lineCount">
23617
<TD align="right" class="coverageCount">
23621
<TD class="srcLine">
23622
<PRE class="srcLine"> }</PRE>
23629
<TD align="right" class="lineCount">
23633
<TD align="right" class="coverageCount">
23637
<TD class="srcLine">
23638
<PRE class="srcLine"> </PRE>
23645
<TD align="right" class="lineCount">
23649
<TD align="right" class="coverageCount">
23653
<TD class="srcLine">
23654
<PRE class="srcLine"> <span class="comment">// Update the persistent group maps</span></PRE>
23661
<TD align="right" class="lineCountHilight">
23665
<TD align="right" class="lineCountHilight">
23666
<A title="Line 1450: statement executed 127 times."> 127</A>
23669
<TD class="srcLine">
23670
<A title="Line 1450: statement executed 127 times."><PRE class="srcLine"> <span class="keyword">if</span> (persist) {</PRE></A>
23677
<TD align="right" class="lineCountHilight">
23681
<TD align="right" class="lineCountHilight">
23682
<A title="Line 1451: statement executed 97 times."> 97</A>
23685
<TD class="srcLine">
23686
<A title="Line 1451: statement executed 97 times."><PRE class="srcLine"> Set persistentGroup = persistRetrieveGroup(groupName);</PRE></A>
23693
<TD align="right" class="lineCount">
23697
<TD align="right" class="coverageCount">
23701
<TD class="srcLine">
23702
<PRE class="srcLine"> </PRE>
23709
<TD align="right" class="lineCountHilight">
23713
<TD align="right" class="lineCountHilight">
23714
<A title="Line 1453: statement executed 97 times."> 97</A>
23717
<TD class="srcLine">
23718
<A title="Line 1453: statement executed 97 times."><PRE class="srcLine"> <span class="keyword">if</span> (persistentGroup == <span class="keyword">null</span>) {</PRE></A>
23725
<TD align="right" class="lineCountHilight">
23729
<TD align="right" class="lineCountHilight">
23730
<A title="Line 1454: statement executed 35 times."> 35</A>
23733
<TD class="srcLine">
23734
<A title="Line 1454: statement executed 35 times."><PRE class="srcLine"> persistentGroup = <span class="keyword">new</span> HashSet();</PRE></A>
23741
<TD align="right" class="lineCount">
23745
<TD align="right" class="coverageCount">
23749
<TD class="srcLine">
23750
<PRE class="srcLine"> }</PRE>
23757
<TD align="right" class="lineCount">
23761
<TD align="right" class="coverageCount">
23765
<TD class="srcLine">
23766
<PRE class="srcLine"> </PRE>
23773
<TD align="right" class="lineCountHilight">
23777
<TD align="right" class="lineCountHilight">
23778
<A title="Line 1457: statement executed 97 times."> 97</A>
23781
<TD class="srcLine">
23782
<A title="Line 1457: statement executed 97 times."><PRE class="srcLine"> persistentGroup.add(key);</PRE></A>
23789
<TD align="right" class="lineCountHilight">
23793
<TD align="right" class="lineCountHilight">
23794
<A title="Line 1458: statement executed 97 times."> 97</A>
23797
<TD class="srcLine">
23798
<A title="Line 1458: statement executed 97 times."><PRE class="srcLine"> persistStoreGroup(groupName, persistentGroup);</PRE></A>
23805
<TD align="right" class="lineCount">
23809
<TD align="right" class="coverageCount">
23813
<TD class="srcLine">
23814
<PRE class="srcLine"> }</PRE>
23821
<TD align="right" class="lineCount">
23825
<TD align="right" class="coverageCount">
23829
<TD class="srcLine">
23830
<PRE class="srcLine"> }</PRE>
23837
<TD align="right" class="lineCount">
23841
<TD align="right" class="coverageCount">
23845
<TD class="srcLine">
23846
<PRE class="srcLine"> }</PRE>
23853
<TD align="right" class="lineCount">
23857
<TD align="right" class="coverageCount">
23861
<TD class="srcLine">
23862
<PRE class="srcLine"> </PRE>
23869
<TD align="right" class="lineCount">
23873
<TD align="right" class="coverageCount">
23877
<TD class="srcLine">
23878
<PRE class="srcLine"> <span class="comment">/** OpenSymphony END (pretty long!) */</span></PRE>
23885
<TD align="right" class="lineCount">
23889
<TD align="right" class="coverageCount">
23893
<TD class="srcLine">
23894
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
23901
<TD align="right" class="lineCount">
23905
<TD align="right" class="coverageCount">
23909
<TD class="srcLine">
23910
<PRE class="srcLine"> <span class="comment"> * Returns the appropriate capacity (power of two) for the specified</span></PRE>
23917
<TD align="right" class="lineCount">
23921
<TD align="right" class="coverageCount">
23925
<TD class="srcLine">
23926
<PRE class="srcLine"> <span class="comment"> * initial capacity argument.</span></PRE>
23933
<TD align="right" class="lineCount">
23937
<TD align="right" class="coverageCount">
23941
<TD class="srcLine">
23942
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
23949
<TD align="right" class="lineCountHilight">
23953
<TD align="right" class="lineCountHilight">
23954
<A title="Line 1468: method entered 81 times."> 81</A>
23957
<TD class="srcLine">
23958
<A title="Line 1468: method entered 81 times."><PRE class="srcLine"> <span class="keyword">private</span> <span class="keyword">int</span> p2capacity(<span class="keyword">int</span> initialCapacity) {</PRE></A>
23965
<TD align="right" class="lineCountHilight">
23969
<TD align="right" class="lineCountHilight">
23970
<A title="Line 1469: statement executed 81 times."> 81</A>
23973
<TD class="srcLine">
23974
<A title="Line 1469: statement executed 81 times."><PRE class="srcLine"> <span class="keyword">int</span> cap = initialCapacity;</PRE></A>
23981
<TD align="right" class="lineCount">
23985
<TD align="right" class="coverageCount">
23989
<TD class="srcLine">
23990
<PRE class="srcLine"> </PRE>
23997
<TD align="right" class="lineCount">
24001
<TD align="right" class="coverageCount">
24005
<TD class="srcLine">
24006
<PRE class="srcLine"> <span class="comment">// Compute the appropriate capacity</span></PRE>
24013
<TD align="right" class="lineCountHilight">
24017
<TD align="right" class="lineCountHilight">
24018
<A title="Line 1472: statement executed 81 times."> 81</A>
24021
<TD class="srcLine">
24022
<A title="Line 1472: statement executed 81 times."><PRE class="srcLine"> <span class="keyword">int</span> result;</PRE></A>
24029
<TD align="right" class="lineCount">
24033
<TD align="right" class="coverageCount">
24037
<TD class="srcLine">
24038
<PRE class="srcLine"> </PRE>
24045
<TD align="right" class="lineCountHilight">
24049
<TD align="right" class="coverageCountHilight">
24050
<A title="Line 1474: expression evaluated to true 0 times, false 81 times."> 81</A>
24053
<TD class="srcHilight">
24054
<SPAN class="srcHilight">
24055
<A title="Line 1474: expression evaluated to true 0 times, false 81 times."><PRE class="srcLine"> <span class="keyword">if</span> ((cap > MAXIMUM_CAPACITY) || (cap < 0)) {</PRE></A>
24063
<TD align="right" class="lineCountHilight">
24067
<TD align="right" class="coverageCountHilight">
24068
<A title="Line 1475: statement not executed."> 0</A>
24071
<TD class="srcHilight">
24072
<SPAN class="srcHilight">
24073
<A title="Line 1475: statement not executed."><PRE class="srcLine"> result = MAXIMUM_CAPACITY;</PRE></A>
24081
<TD align="right" class="lineCount">
24085
<TD align="right" class="coverageCount">
24089
<TD class="srcLine">
24090
<PRE class="srcLine"> } <span class="keyword">else</span> {</PRE>
24097
<TD align="right" class="lineCountHilight">
24101
<TD align="right" class="lineCountHilight">
24102
<A title="Line 1477: statement executed 81 times."> 81</A>
24105
<TD class="srcLine">
24106
<A title="Line 1477: statement executed 81 times."><PRE class="srcLine"> result = MINIMUM_CAPACITY;</PRE></A>
24113
<TD align="right" class="lineCount">
24117
<TD align="right" class="coverageCount">
24121
<TD class="srcLine">
24122
<PRE class="srcLine"> </PRE>
24129
<TD align="right" class="lineCountHilight">
24133
<TD align="right" class="lineCountHilight">
24134
<A title="Line 1479: statement executed 81 times."> 81</A>
24137
<TD class="srcLine">
24138
<A title="Line 1479: statement executed 81 times."><PRE class="srcLine"> <span class="keyword">while</span> (result < cap) {</PRE></A>
24145
<TD align="right" class="lineCountHilight">
24149
<TD align="right" class="lineCountHilight">
24150
<A title="Line 1480: statement executed 243 times."> 243</A>
24153
<TD class="srcLine">
24154
<A title="Line 1480: statement executed 243 times."><PRE class="srcLine"> result <<= 1;</PRE></A>
24161
<TD align="right" class="lineCount">
24165
<TD align="right" class="coverageCount">
24169
<TD class="srcLine">
24170
<PRE class="srcLine"> }</PRE>
24177
<TD align="right" class="lineCount">
24181
<TD align="right" class="coverageCount">
24185
<TD class="srcLine">
24186
<PRE class="srcLine"> }</PRE>
24193
<TD align="right" class="lineCount">
24197
<TD align="right" class="coverageCount">
24201
<TD class="srcLine">
24202
<PRE class="srcLine"> </PRE>
24209
<TD align="right" class="lineCountHilight">
24213
<TD align="right" class="lineCountHilight">
24214
<A title="Line 1484: statement executed 81 times."> 81</A>
24217
<TD class="srcLine">
24218
<A title="Line 1484: statement executed 81 times."><PRE class="srcLine"> <span class="keyword">return</span> result;</PRE></A>
24225
<TD align="right" class="lineCount">
24229
<TD align="right" class="coverageCount">
24233
<TD class="srcLine">
24234
<PRE class="srcLine"> }</PRE>
24241
<TD align="right" class="lineCount">
24245
<TD align="right" class="coverageCount">
24249
<TD class="srcLine">
24250
<PRE class="srcLine"> </PRE>
24257
<TD align="right" class="lineCount">
24261
<TD align="right" class="coverageCount">
24265
<TD class="srcLine">
24266
<PRE class="srcLine"> <span class="comment">/* Previous code</span></PRE>
24273
<TD align="right" class="lineCount">
24277
<TD align="right" class="coverageCount">
24281
<TD class="srcLine">
24282
<PRE class="srcLine"> <span class="comment"> public Object put(Object key, Object value)*/</span></PRE>
24289
<TD align="right" class="lineCountHilight">
24293
<TD align="right" class="lineCountHilight">
24294
<A title="Line 1489: method entered 435 times."> 435</A>
24297
<TD class="srcLine">
24298
<A title="Line 1489: method entered 435 times."><PRE class="srcLine"> <span class="keyword">private</span> Object put(Object key, Object value, <span class="keyword">boolean</span> persist) {</PRE></A>
24305
<TD align="right" class="lineCount">
24309
<TD align="right" class="coverageCount">
24313
<TD class="srcLine">
24314
<PRE class="srcLine"> <span class="comment">/** OpenSymphony END */</span></PRE>
24321
<TD align="right" class="lineCountHilight">
24325
<TD align="right" class="lineCountHilight">
24326
<A title="Line 1491: statement executed 435 times."> 435</A>
24329
<TD class="srcLine">
24330
<A title="Line 1491: statement executed 435 times."><PRE class="srcLine"> <span class="keyword">if</span> (value == <span class="keyword">null</span>) {</PRE></A>
24337
<TD align="right" class="lineCountHilight">
24341
<TD align="right" class="lineCountHilight">
24342
<A title="Line 1492: statement executed 18 times."> 18</A>
24345
<TD class="srcLine">
24346
<A title="Line 1492: statement executed 18 times."><PRE class="srcLine"> <span class="keyword">throw</span> <span class="keyword">new</span> NullPointerException();</PRE></A>
24353
<TD align="right" class="lineCount">
24357
<TD align="right" class="coverageCount">
24361
<TD class="srcLine">
24362
<PRE class="srcLine"> }</PRE>
24369
<TD align="right" class="lineCount">
24373
<TD align="right" class="coverageCount">
24377
<TD class="srcLine">
24378
<PRE class="srcLine"> </PRE>
24385
<TD align="right" class="lineCountHilight">
24389
<TD align="right" class="lineCountHilight">
24390
<A title="Line 1495: statement executed 417 times."> 417</A>
24393
<TD class="srcLine">
24394
<A title="Line 1495: statement executed 417 times."><PRE class="srcLine"> <span class="keyword">int</span> hash = hash(key);</PRE></A>
24401
<TD align="right" class="lineCountHilight">
24405
<TD align="right" class="lineCountHilight">
24406
<A title="Line 1496: statement executed 417 times."> 417</A>
24409
<TD class="srcLine">
24410
<A title="Line 1496: statement executed 417 times."><PRE class="srcLine"> Entry[] tab = table;</PRE></A>
24417
<TD align="right" class="lineCountHilight">
24421
<TD align="right" class="lineCountHilight">
24422
<A title="Line 1497: statement executed 417 times."> 417</A>
24425
<TD class="srcLine">
24426
<A title="Line 1497: statement executed 417 times."><PRE class="srcLine"> <span class="keyword">int</span> index = hash & (tab.length - 1);</PRE></A>
24433
<TD align="right" class="lineCountHilight">
24437
<TD align="right" class="lineCountHilight">
24438
<A title="Line 1498: statement executed 417 times."> 417</A>
24441
<TD class="srcLine">
24442
<A title="Line 1498: statement executed 417 times."><PRE class="srcLine"> Entry first = tab[index];</PRE></A>
24449
<TD align="right" class="lineCountHilight">
24453
<TD align="right" class="lineCountHilight">
24454
<A title="Line 1499: statement executed 417 times."> 417</A>
24457
<TD class="srcLine">
24458
<A title="Line 1499: statement executed 417 times."><PRE class="srcLine"> Entry e = first;</PRE></A>
24465
<TD align="right" class="lineCount">
24469
<TD align="right" class="coverageCount">
24473
<TD class="srcLine">
24474
<PRE class="srcLine"> </PRE>
24481
<TD align="right" class="lineCountHilight">
24485
<TD align="right" class="lineCountHilight">
24486
<A title="Line 1501: statement executed 417 times."> 417</A>
24489
<TD class="srcLine">
24490
<A title="Line 1501: statement executed 417 times."><PRE class="srcLine"> <span class="keyword">for</span> (;;) {</PRE></A>
24497
<TD align="right" class="lineCountHilight">
24501
<TD align="right" class="lineCountHilight">
24502
<A title="Line 1502: statement executed 455 times."> 455</A>
24505
<TD class="srcLine">
24506
<A title="Line 1502: statement executed 455 times."><PRE class="srcLine"> <span class="keyword">if</span> (e == <span class="keyword">null</span>) {</PRE></A>
24513
<TD align="right" class="lineCountHilight">
24517
<TD align="right" class="lineCountHilight">
24518
<A title="Line 1503: statement executed 335 times."> 335</A>
24521
<TD class="srcLine">
24522
<A title="Line 1503: statement executed 335 times."><PRE class="srcLine"> <span class="keyword">synchronized</span> (<span class="keyword">this</span>) {</PRE></A>
24529
<TD align="right" class="lineCountHilight">
24533
<TD align="right" class="lineCountHilight">
24534
<A title="Line 1504: statement executed 335 times."> 335</A>
24537
<TD class="srcLine">
24538
<A title="Line 1504: statement executed 335 times."><PRE class="srcLine"> tab = table;</PRE></A>
24545
<TD align="right" class="lineCount">
24549
<TD align="right" class="coverageCount">
24553
<TD class="srcLine">
24554
<PRE class="srcLine"> </PRE>
24561
<TD align="right" class="lineCount">
24565
<TD align="right" class="coverageCount">
24569
<TD class="srcLine">
24570
<PRE class="srcLine"> <span class="comment">/** OpenSymphony BEGIN */</span></PRE>
24577
<TD align="right" class="lineCount">
24581
<TD align="right" class="coverageCount">
24585
<TD class="srcLine">
24586
<PRE class="srcLine"> </PRE>
24593
<TD align="right" class="lineCount">
24597
<TD align="right" class="coverageCount">
24601
<TD class="srcLine">
24602
<PRE class="srcLine"> <span class="comment">// Previous code</span></PRE>
24609
<TD align="right" class="lineCount">
24613
<TD align="right" class="coverageCount">
24617
<TD class="srcLine">
24618
<PRE class="srcLine"> </PRE>
24625
<TD align="right" class="lineCount">
24629
<TD align="right" class="coverageCount">
24633
<TD class="srcLine">
24634
<PRE class="srcLine"> <span class="comment">/* if (first == tab[index]) {</span></PRE>
24641
<TD align="right" class="lineCount">
24645
<TD align="right" class="coverageCount">
24649
<TD class="srcLine">
24650
<PRE class="srcLine"> <span class="comment"> // Add to front of list</span></PRE>
24657
<TD align="right" class="lineCount">
24661
<TD align="right" class="coverageCount">
24665
<TD class="srcLine">
24666
<PRE class="srcLine"> <span class="comment"> Entry newEntry = new Entry(hash, key, value, first);</span></PRE>
24673
<TD align="right" class="lineCount">
24677
<TD align="right" class="coverageCount">
24681
<TD class="srcLine">
24682
<PRE class="srcLine"> <span class="comment"> tab[index] = newEntry;</span></PRE>
24689
<TD align="right" class="lineCount">
24693
<TD align="right" class="coverageCount">
24697
<TD class="srcLine">
24698
<PRE class="srcLine"> <span class="comment"> if (++count >= threshold) rehash();</span></PRE>
24705
<TD align="right" class="lineCount">
24709
<TD align="right" class="coverageCount">
24713
<TD class="srcLine">
24714
<PRE class="srcLine"> <span class="comment"> else recordModification(newEntry);</span></PRE>
24721
<TD align="right" class="lineCount">
24725
<TD align="right" class="coverageCount">
24729
<TD class="srcLine">
24730
<PRE class="srcLine"> <span class="comment"> return null; */</span></PRE>
24737
<TD align="right" class="lineCount">
24741
<TD align="right" class="coverageCount">
24745
<TD class="srcLine">
24746
<PRE class="srcLine"> </PRE>
24753
<TD align="right" class="lineCount">
24757
<TD align="right" class="coverageCount">
24761
<TD class="srcLine">
24762
<PRE class="srcLine"> <span class="comment">// Remove an item if the cache is full</span></PRE>
24769
<TD align="right" class="lineCountHilight">
24773
<TD align="right" class="lineCountHilight">
24774
<A title="Line 1519: statement executed 335 times."> 335</A>
24777
<TD class="srcLine">
24778
<A title="Line 1519: statement executed 335 times."><PRE class="srcLine"> <span class="keyword">if</span> (size() >= maxEntries) {</PRE></A>
24785
<TD align="right" class="lineCountHilight">
24789
<TD align="right" class="lineCountHilight">
24790
<A title="Line 1520: statement executed 6 times."> 6</A>
24793
<TD class="srcLine">
24794
<A title="Line 1520: statement executed 6 times."><PRE class="srcLine"> remove(removeItem(), <span class="keyword">false</span>);</PRE></A>
24801
<TD align="right" class="lineCount">
24805
<TD align="right" class="coverageCount">
24809
<TD class="srcLine">
24810
<PRE class="srcLine"> }</PRE>
24817
<TD align="right" class="lineCount">
24821
<TD align="right" class="coverageCount">
24825
<TD class="srcLine">
24826
<PRE class="srcLine"> </PRE>
24833
<TD align="right" class="lineCountHilight">
24837
<TD align="right" class="lineCountHilight">
24838
<A title="Line 1523: statement executed 335 times."> 335</A>
24841
<TD class="srcLine">
24842
<A title="Line 1523: statement executed 335 times."><PRE class="srcLine"> <span class="keyword">if</span> (first == tab[index]) {</PRE></A>
24849
<TD align="right" class="lineCount">
24853
<TD align="right" class="coverageCount">
24857
<TD class="srcLine">
24858
<PRE class="srcLine"> <span class="comment">// Add to front of list</span></PRE>
24865
<TD align="right" class="lineCountHilight">
24869
<TD align="right" class="lineCountHilight">
24870
<A title="Line 1525: statement executed 330 times."> 330</A>
24873
<TD class="srcLine">
24874
<A title="Line 1525: statement executed 330 times."><PRE class="srcLine"> Entry newEntry = <span class="keyword">null</span>;</PRE></A>
24881
<TD align="right" class="lineCount">
24885
<TD align="right" class="coverageCount">
24889
<TD class="srcLine">
24890
<PRE class="srcLine"> </PRE>
24897
<TD align="right" class="lineCountHilight">
24901
<TD align="right" class="lineCountHilight">
24902
<A title="Line 1527: statement executed 330 times."> 330</A>
24905
<TD class="srcLine">
24906
<A title="Line 1527: statement executed 330 times."><PRE class="srcLine"> <span class="keyword">if</span> (memoryCaching) {</PRE></A>
24913
<TD align="right" class="lineCountHilight">
24917
<TD align="right" class="lineCountHilight">
24918
<A title="Line 1528: statement executed 266 times."> 266</A>
24921
<TD class="srcLine">
24922
<A title="Line 1528: statement executed 266 times."><PRE class="srcLine"> newEntry = <span class="keyword">new</span> Entry(hash, key, value, first);</PRE></A>
24929
<TD align="right" class="lineCount">
24933
<TD align="right" class="coverageCount">
24937
<TD class="srcLine">
24938
<PRE class="srcLine"> } <span class="keyword">else</span> {</PRE>
24945
<TD align="right" class="lineCountHilight">
24949
<TD align="right" class="lineCountHilight">
24950
<A title="Line 1530: statement executed 64 times."> 64</A>
24953
<TD class="srcLine">
24954
<A title="Line 1530: statement executed 64 times."><PRE class="srcLine"> newEntry = <span class="keyword">new</span> Entry(hash, key, NULL, first);</PRE></A>
24961
<TD align="right" class="lineCount">
24965
<TD align="right" class="coverageCount">
24969
<TD class="srcLine">
24970
<PRE class="srcLine"> }</PRE>
24977
<TD align="right" class="lineCount">
24981
<TD align="right" class="coverageCount">
24985
<TD class="srcLine">
24986
<PRE class="srcLine"> </PRE>
24993
<TD align="right" class="lineCountHilight">
24997
<TD align="right" class="lineCountHilight">
24998
<A title="Line 1533: statement executed 330 times."> 330</A>
25001
<TD class="srcLine">
25002
<A title="Line 1533: statement executed 330 times."><PRE class="srcLine"> tab[index] = newEntry;</PRE></A>
25009
<TD align="right" class="lineCountHilight">
25013
<TD align="right" class="lineCountHilight">
25014
<A title="Line 1534: statement executed 330 times."> 330</A>
25017
<TD class="srcLine">
25018
<A title="Line 1534: statement executed 330 times."><PRE class="srcLine"> itemPut(key);</PRE></A>
25025
<TD align="right" class="lineCount">
25029
<TD align="right" class="coverageCount">
25033
<TD class="srcLine">
25034
<PRE class="srcLine"> </PRE>
25041
<TD align="right" class="lineCount">
25045
<TD align="right" class="coverageCount">
25049
<TD class="srcLine">
25050
<PRE class="srcLine"> <span class="comment">// Persist if required</span></PRE>
25057
<TD align="right" class="lineCountHilight">
25061
<TD align="right" class="lineCountHilight">
25062
<A title="Line 1537: statement executed 330 times."> 330</A>
25065
<TD class="srcLine">
25066
<A title="Line 1537: statement executed 330 times."><PRE class="srcLine"> <span class="keyword">if</span> (persist) {</PRE></A>
25073
<TD align="right" class="lineCountHilight">
25077
<TD align="right" class="lineCountHilight">
25078
<A title="Line 1538: statement executed 303 times."> 303</A>
25081
<TD class="srcLine">
25082
<A title="Line 1538: statement executed 303 times."><PRE class="srcLine"> persistStore(key, value);</PRE></A>
25089
<TD align="right" class="lineCount">
25093
<TD align="right" class="coverageCount">
25097
<TD class="srcLine">
25098
<PRE class="srcLine"> }</PRE>
25105
<TD align="right" class="lineCount">
25109
<TD align="right" class="coverageCount">
25113
<TD class="srcLine">
25114
<PRE class="srcLine"> </PRE>
25121
<TD align="right" class="lineCount">
25125
<TD align="right" class="coverageCount">
25129
<TD class="srcLine">
25130
<PRE class="srcLine"> <span class="comment">// If we have a CacheEntry, update the group lookups</span></PRE>
25137
<TD align="right" class="lineCountHilight">
25141
<TD align="right" class="lineCountHilight">
25142
<A title="Line 1542: statement executed 330 times."> 330</A>
25145
<TD class="srcLine">
25146
<A title="Line 1542: statement executed 330 times."><PRE class="srcLine"> <span class="keyword">if</span> (value <span class="keyword">instanceof</span> CacheEntry) {</PRE></A>
25153
<TD align="right" class="lineCountHilight">
25157
<TD align="right" class="lineCountHilight">
25158
<A title="Line 1543: statement executed 186 times."> 186</A>
25161
<TD class="srcLine">
25162
<A title="Line 1543: statement executed 186 times."><PRE class="srcLine"> updateGroups(<span class="keyword">null</span>, (CacheEntry) value, persist);</PRE></A>
25169
<TD align="right" class="lineCount">
25173
<TD align="right" class="coverageCount">
25177
<TD class="srcLine">
25178
<PRE class="srcLine"> }</PRE>
25185
<TD align="right" class="lineCount">
25189
<TD align="right" class="coverageCount">
25193
<TD class="srcLine">
25194
<PRE class="srcLine"> </PRE>
25201
<TD align="right" class="lineCountHilight">
25205
<TD align="right" class="lineCountHilight">
25206
<A title="Line 1546: statement executed 330 times."> 330</A>
25209
<TD class="srcLine">
25210
<A title="Line 1546: statement executed 330 times."><PRE class="srcLine"> <span class="keyword">if</span> (++count >= threshold) {</PRE></A>
25217
<TD align="right" class="lineCountHilight">
25221
<TD align="right" class="lineCountHilight">
25222
<A title="Line 1547: statement executed 2 times."> 2</A>
25225
<TD class="srcLine">
25226
<A title="Line 1547: statement executed 2 times."><PRE class="srcLine"> rehash();</PRE></A>
25233
<TD align="right" class="lineCount">
25237
<TD align="right" class="coverageCount">
25241
<TD class="srcLine">
25242
<PRE class="srcLine"> } <span class="keyword">else</span> {</PRE>
25249
<TD align="right" class="lineCountHilight">
25253
<TD align="right" class="lineCountHilight">
25254
<A title="Line 1549: statement executed 328 times."> 328</A>
25257
<TD class="srcLine">
25258
<A title="Line 1549: statement executed 328 times."><PRE class="srcLine"> recordModification(newEntry);</PRE></A>
25265
<TD align="right" class="lineCount">
25269
<TD align="right" class="coverageCount">
25273
<TD class="srcLine">
25274
<PRE class="srcLine"> }</PRE>
25281
<TD align="right" class="lineCount">
25285
<TD align="right" class="coverageCount">
25289
<TD class="srcLine">
25290
<PRE class="srcLine"> </PRE>
25297
<TD align="right" class="lineCountHilight">
25301
<TD align="right" class="lineCountHilight">
25302
<A title="Line 1552: statement executed 330 times."> 330</A>
25305
<TD class="srcLine">
25306
<A title="Line 1552: statement executed 330 times."><PRE class="srcLine"> <span class="keyword">return</span> newEntry;</PRE></A>
25313
<TD align="right" class="lineCount">
25317
<TD align="right" class="coverageCount">
25321
<TD class="srcLine">
25322
<PRE class="srcLine"> </PRE>
25329
<TD align="right" class="lineCount">
25333
<TD align="right" class="coverageCount">
25337
<TD class="srcLine">
25338
<PRE class="srcLine"> <span class="comment">/** OpenSymphony END */</span></PRE>
25345
<TD align="right" class="lineCount">
25349
<TD align="right" class="coverageCount">
25353
<TD class="srcLine">
25354
<PRE class="srcLine"> } <span class="keyword">else</span> {</PRE>
25361
<TD align="right" class="lineCount">
25365
<TD align="right" class="coverageCount">
25369
<TD class="srcLine">
25370
<PRE class="srcLine"> <span class="comment">// wrong list -- retry</span></PRE>
25377
<TD align="right" class="lineCount">
25381
<TD align="right" class="coverageCount">
25385
<TD class="srcLine">
25386
<PRE class="srcLine"> </PRE>
25393
<TD align="right" class="lineCount">
25397
<TD align="right" class="coverageCount">
25401
<TD class="srcLine">
25402
<PRE class="srcLine"> <span class="comment">/** OpenSymphony BEGIN */</span></PRE>
25409
<TD align="right" class="lineCount">
25413
<TD align="right" class="coverageCount">
25417
<TD class="srcLine">
25418
<PRE class="srcLine"> </PRE>
25425
<TD align="right" class="lineCount">
25429
<TD align="right" class="coverageCount">
25433
<TD class="srcLine">
25434
<PRE class="srcLine"> <span class="comment">/* Previous code</span></PRE>
25441
<TD align="right" class="lineCount">
25445
<TD align="right" class="coverageCount">
25449
<TD class="srcLine">
25450
<PRE class="srcLine"> <span class="comment"> return sput(key, value, hash);*/</span></PRE>
25457
<TD align="right" class="lineCountHilight">
25461
<TD align="right" class="lineCountHilight">
25462
<A title="Line 1562: statement executed 5 times."> 5</A>
25465
<TD class="srcLine">
25466
<A title="Line 1562: statement executed 5 times."><PRE class="srcLine"> <span class="keyword">return</span> sput(key, value, hash, persist);</PRE></A>
25473
<TD align="right" class="lineCount">
25477
<TD align="right" class="coverageCount">
25481
<TD class="srcLine">
25482
<PRE class="srcLine"> </PRE>
25489
<TD align="right" class="lineCount">
25493
<TD align="right" class="coverageCount">
25497
<TD class="srcLine">
25498
<PRE class="srcLine"> <span class="comment">/** OpenSymphony END */</span></PRE>
25505
<TD align="right" class="lineCount">
25509
<TD align="right" class="coverageCount">
25513
<TD class="srcLine">
25514
<PRE class="srcLine"> }</PRE>
25521
<TD align="right" class="lineCount">
25525
<TD align="right" class="coverageCount">
25529
<TD class="srcLine">
25530
<PRE class="srcLine"> }</PRE>
25537
<TD align="right" class="lineCountHilight">
25541
<TD align="right" class="lineCountHilight">
25542
<A title="Line 1567: statement executed 120 times."> 120</A>
25545
<TD class="srcLine">
25546
<A title="Line 1567: statement executed 120 times."><PRE class="srcLine"> } <span class="keyword">else</span> <span class="keyword">if</span> ((key == e.key) || ((e.hash == hash) && key.equals(e.key))) {</PRE></A>
25553
<TD align="right" class="lineCount">
25557
<TD align="right" class="coverageCount">
25561
<TD class="srcLine">
25562
<PRE class="srcLine"> <span class="comment">// synch to avoid race with remove and to</span></PRE>
25569
<TD align="right" class="lineCount">
25573
<TD align="right" class="coverageCount">
25577
<TD class="srcLine">
25578
<PRE class="srcLine"> <span class="comment">// ensure proper serialization of multiple replaces</span></PRE>
25585
<TD align="right" class="lineCountHilight">
25589
<TD align="right" class="lineCountHilight">
25590
<A title="Line 1570: statement executed 82 times."> 82</A>
25593
<TD class="srcLine">
25594
<A title="Line 1570: statement executed 82 times."><PRE class="srcLine"> <span class="keyword">synchronized</span> (<span class="keyword">this</span>) {</PRE></A>
25601
<TD align="right" class="lineCountHilight">
25605
<TD align="right" class="lineCountHilight">
25606
<A title="Line 1571: statement executed 82 times."> 82</A>
25609
<TD class="srcLine">
25610
<A title="Line 1571: statement executed 82 times."><PRE class="srcLine"> tab = table;</PRE></A>
25617
<TD align="right" class="lineCount">
25621
<TD align="right" class="coverageCount">
25625
<TD class="srcLine">
25626
<PRE class="srcLine"> </PRE>
25633
<TD align="right" class="lineCountHilight">
25637
<TD align="right" class="lineCountHilight">
25638
<A title="Line 1573: statement executed 82 times."> 82</A>
25641
<TD class="srcLine">
25642
<A title="Line 1573: statement executed 82 times."><PRE class="srcLine"> Object oldValue = e.value;</PRE></A>
25649
<TD align="right" class="lineCount">
25653
<TD align="right" class="coverageCount">
25657
<TD class="srcLine">
25658
<PRE class="srcLine"> </PRE>
25665
<TD align="right" class="lineCountHilight">
25669
<TD align="right" class="coverageCountHilight">
25670
<A title="Line 1575: expression evaluated to true 82 times, false 0 times."> 82</A>
25673
<TD class="srcHilight">
25674
<SPAN class="srcHilight">
25675
<A title="Line 1575: expression evaluated to true 82 times, false 0 times."><PRE class="srcLine"> <span class="keyword">if</span> ((first == tab[index]) && (oldValue != <span class="keyword">null</span>)) {</PRE></A>
25683
<TD align="right" class="lineCount">
25687
<TD align="right" class="coverageCount">
25691
<TD class="srcLine">
25692
<PRE class="srcLine"> <span class="comment">/** OpenSymphony BEGIN */</span></PRE>
25699
<TD align="right" class="lineCount">
25703
<TD align="right" class="coverageCount">
25707
<TD class="srcLine">
25708
<PRE class="srcLine"> </PRE>
25715
<TD align="right" class="lineCount">
25719
<TD align="right" class="coverageCount">
25723
<TD class="srcLine">
25724
<PRE class="srcLine"> <span class="comment">/* Previous code</span></PRE>
25731
<TD align="right" class="lineCount">
25735
<TD align="right" class="coverageCount">
25739
<TD class="srcLine">
25740
<PRE class="srcLine"> <span class="comment"> e.value = value;</span></PRE>
25747
<TD align="right" class="lineCount">
25751
<TD align="right" class="coverageCount">
25755
<TD class="srcLine">
25756
<PRE class="srcLine"> <span class="comment"> return oldValue; */</span></PRE>
25763
<TD align="right" class="lineCountHilight">
25767
<TD align="right" class="lineCountHilight">
25768
<A title="Line 1581: statement executed 82 times."> 82</A>
25771
<TD class="srcLine">
25772
<A title="Line 1581: statement executed 82 times."><PRE class="srcLine"> <span class="keyword">if</span> (memoryCaching) {</PRE></A>
25779
<TD align="right" class="lineCountHilight">
25783
<TD align="right" class="lineCountHilight">
25784
<A title="Line 1582: statement executed 51 times."> 51</A>
25787
<TD class="srcLine">
25788
<A title="Line 1582: statement executed 51 times."><PRE class="srcLine"> e.value = value;</PRE></A>
25795
<TD align="right" class="lineCount">
25799
<TD align="right" class="coverageCount">
25803
<TD class="srcLine">
25804
<PRE class="srcLine"> }</PRE>
25811
<TD align="right" class="lineCount">
25815
<TD align="right" class="coverageCount">
25819
<TD class="srcLine">
25820
<PRE class="srcLine"> </PRE>
25827
<TD align="right" class="lineCountHilight">
25831
<TD align="right" class="coverageCountHilight">
25832
<A title="Line 1585: expression evaluated to true 82 times, false 0 times."> 82</A>
25835
<TD class="srcHilight">
25836
<SPAN class="srcHilight">
25837
<A title="Line 1585: expression evaluated to true 82 times, false 0 times."><PRE class="srcLine"> <span class="keyword">if</span> (persist) {</PRE></A>
25845
<TD align="right" class="lineCountHilight">
25849
<TD align="right" class="lineCountHilight">
25850
<A title="Line 1586: statement executed 82 times."> 82</A>
25853
<TD class="srcLine">
25854
<A title="Line 1586: statement executed 82 times."><PRE class="srcLine"> persistStore(key, value);</PRE></A>
25861
<TD align="right" class="lineCount">
25865
<TD align="right" class="coverageCount">
25869
<TD class="srcLine">
25870
<PRE class="srcLine"> }</PRE>
25877
<TD align="right" class="lineCount">
25881
<TD align="right" class="coverageCount">
25885
<TD class="srcLine">
25886
<PRE class="srcLine"> </PRE>
25893
<TD align="right" class="lineCountHilight">
25897
<TD align="right" class="lineCountHilight">
25898
<A title="Line 1589: statement executed 82 times."> 82</A>
25901
<TD class="srcLine">
25902
<A title="Line 1589: statement executed 82 times."><PRE class="srcLine"> updateGroups(oldValue, value, persist);</PRE></A>
25909
<TD align="right" class="lineCountHilight">
25913
<TD align="right" class="lineCountHilight">
25914
<A title="Line 1590: statement executed 82 times."> 82</A>
25917
<TD class="srcLine">
25918
<A title="Line 1590: statement executed 82 times."><PRE class="srcLine"> itemPut(key);</PRE></A>
25925
<TD align="right" class="lineCount">
25929
<TD align="right" class="coverageCount">
25933
<TD class="srcLine">
25934
<PRE class="srcLine"> </PRE>
25941
<TD align="right" class="lineCountHilight">
25945
<TD align="right" class="lineCountHilight">
25946
<A title="Line 1592: statement executed 82 times."> 82</A>
25949
<TD class="srcLine">
25950
<A title="Line 1592: statement executed 82 times."><PRE class="srcLine"> <span class="keyword">return</span> oldValue;</PRE></A>
25957
<TD align="right" class="lineCount">
25961
<TD align="right" class="coverageCount">
25965
<TD class="srcLine">
25966
<PRE class="srcLine"> </PRE>
25973
<TD align="right" class="lineCount">
25977
<TD align="right" class="coverageCount">
25981
<TD class="srcLine">
25982
<PRE class="srcLine"> <span class="comment">/** OpenSymphony END */</span></PRE>
25989
<TD align="right" class="lineCount">
25993
<TD align="right" class="coverageCount">
25997
<TD class="srcLine">
25998
<PRE class="srcLine"> } <span class="keyword">else</span> {</PRE>
26005
<TD align="right" class="lineCount">
26009
<TD align="right" class="coverageCount">
26013
<TD class="srcLine">
26014
<PRE class="srcLine"> <span class="comment">// retry if wrong list or lost race against concurrent remove</span></PRE>
26021
<TD align="right" class="lineCount">
26025
<TD align="right" class="coverageCount">
26029
<TD class="srcLine">
26030
<PRE class="srcLine"> </PRE>
26037
<TD align="right" class="lineCount">
26041
<TD align="right" class="coverageCount">
26045
<TD class="srcLine">
26046
<PRE class="srcLine"> <span class="comment">/** OpenSymphony BEGIN */</span></PRE>
26053
<TD align="right" class="lineCount">
26057
<TD align="right" class="coverageCount">
26061
<TD class="srcLine">
26062
<PRE class="srcLine"> </PRE>
26069
<TD align="right" class="lineCount">
26073
<TD align="right" class="coverageCount">
26077
<TD class="srcLine">
26078
<PRE class="srcLine"> <span class="comment">/* Previous code</span></PRE>
26085
<TD align="right" class="lineCount">
26089
<TD align="right" class="coverageCount">
26093
<TD class="srcLine">
26094
<PRE class="srcLine"> <span class="comment"> return sput(key, value, hash);*/</span></PRE>
26101
<TD align="right" class="lineCountHilight">
26105
<TD align="right" class="coverageCountHilight">
26106
<A title="Line 1602: statement not executed."> 0</A>
26109
<TD class="srcHilight">
26110
<SPAN class="srcHilight">
26111
<A title="Line 1602: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> sput(key, value, hash, persist);</PRE></A>
26119
<TD align="right" class="lineCount">
26123
<TD align="right" class="coverageCount">
26127
<TD class="srcLine">
26128
<PRE class="srcLine"> </PRE>
26135
<TD align="right" class="lineCount">
26139
<TD align="right" class="coverageCount">
26143
<TD class="srcLine">
26144
<PRE class="srcLine"> <span class="comment">/** OpenSymphony END */</span></PRE>
26151
<TD align="right" class="lineCount">
26155
<TD align="right" class="coverageCount">
26159
<TD class="srcLine">
26160
<PRE class="srcLine"> }</PRE>
26167
<TD align="right" class="lineCount">
26171
<TD align="right" class="coverageCount">
26175
<TD class="srcLine">
26176
<PRE class="srcLine"> }</PRE>
26183
<TD align="right" class="lineCount">
26187
<TD align="right" class="coverageCount">
26191
<TD class="srcLine">
26192
<PRE class="srcLine"> } <span class="keyword">else</span> {</PRE>
26199
<TD align="right" class="lineCountHilight">
26203
<TD align="right" class="lineCountHilight">
26204
<A title="Line 1608: statement executed 38 times."> 38</A>
26207
<TD class="srcLine">
26208
<A title="Line 1608: statement executed 38 times."><PRE class="srcLine"> e = e.next;</PRE></A>
26215
<TD align="right" class="lineCount">
26219
<TD align="right" class="coverageCount">
26223
<TD class="srcLine">
26224
<PRE class="srcLine"> }</PRE>
26231
<TD align="right" class="lineCount">
26235
<TD align="right" class="coverageCount">
26239
<TD class="srcLine">
26240
<PRE class="srcLine"> }</PRE>
26247
<TD align="right" class="lineCount">
26251
<TD align="right" class="coverageCount">
26255
<TD class="srcLine">
26256
<PRE class="srcLine"> }</PRE>
26263
<TD align="right" class="lineCount">
26267
<TD align="right" class="coverageCount">
26271
<TD class="srcLine">
26272
<PRE class="srcLine"> </PRE>
26279
<TD align="right" class="lineCountHilight">
26283
<TD align="right" class="lineCountHilight">
26284
<A title="Line 1613: method entered 36 times."> 36</A>
26287
<TD class="srcLine">
26288
<A title="Line 1613: method entered 36 times."><PRE class="srcLine"> <span class="keyword">private</span> Object remove(Object key, <span class="keyword">boolean</span> invokeAlgorithm)</PRE></A>
26295
<TD align="right" class="lineCount">
26299
<TD align="right" class="coverageCount">
26303
<TD class="srcLine">
26304
<PRE class="srcLine"> <span class="comment">/* Previous code</span></PRE>
26311
<TD align="right" class="lineCount">
26315
<TD align="right" class="coverageCount">
26319
<TD class="srcLine">
26320
<PRE class="srcLine"> <span class="comment"> public Object remove(Object key) */</span></PRE>
26327
<TD align="right" class="lineCount">
26331
<TD align="right" class="coverageCount">
26335
<TD class="srcLine">
26336
<PRE class="srcLine"> </PRE>
26343
<TD align="right" class="lineCount">
26347
<TD align="right" class="coverageCount">
26351
<TD class="srcLine">
26352
<PRE class="srcLine"> <span class="comment">/** OpenSymphony END */</span> {</PRE>
26359
<TD align="right" class="lineCount">
26363
<TD align="right" class="coverageCount">
26367
<TD class="srcLine">
26368
<PRE class="srcLine"> <span class="comment">/*</span></PRE>
26375
<TD align="right" class="lineCount">
26379
<TD align="right" class="coverageCount">
26383
<TD class="srcLine">
26384
<PRE class="srcLine"> <span class="comment"> Strategy:</span></PRE>
26391
<TD align="right" class="lineCount">
26395
<TD align="right" class="coverageCount">
26399
<TD class="srcLine">
26400
<PRE class="srcLine"> <span class="comment"></span></PRE>
26407
<TD align="right" class="lineCount">
26411
<TD align="right" class="coverageCount">
26415
<TD class="srcLine">
26416
<PRE class="srcLine"> <span class="comment"> Find the entry, then</span></PRE>
26423
<TD align="right" class="lineCount">
26427
<TD align="right" class="coverageCount">
26431
<TD class="srcLine">
26432
<PRE class="srcLine"> <span class="comment"> 1. Set value field to null, to force get() to retry</span></PRE>
26439
<TD align="right" class="lineCount">
26443
<TD align="right" class="coverageCount">
26447
<TD class="srcLine">
26448
<PRE class="srcLine"> <span class="comment"> 2. Rebuild the list without this entry.</span></PRE>
26455
<TD align="right" class="lineCount">
26459
<TD align="right" class="coverageCount">
26463
<TD class="srcLine">
26464
<PRE class="srcLine"> <span class="comment"> All entries following removed node can stay in list, but</span></PRE>
26471
<TD align="right" class="lineCount">
26475
<TD align="right" class="coverageCount">
26479
<TD class="srcLine">
26480
<PRE class="srcLine"> <span class="comment"> all preceeding ones need to be cloned. Traversals rely</span></PRE>
26487
<TD align="right" class="lineCount">
26491
<TD align="right" class="coverageCount">
26495
<TD class="srcLine">
26496
<PRE class="srcLine"> <span class="comment"> on this strategy to ensure that elements will not be</span></PRE>
26503
<TD align="right" class="lineCount">
26507
<TD align="right" class="coverageCount">
26511
<TD class="srcLine">
26512
<PRE class="srcLine"> <span class="comment"> repeated during iteration.</span></PRE>
26519
<TD align="right" class="lineCount">
26523
<TD align="right" class="coverageCount">
26527
<TD class="srcLine">
26528
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
26535
<TD align="right" class="lineCount">
26539
<TD align="right" class="coverageCount">
26543
<TD class="srcLine">
26544
<PRE class="srcLine"> </PRE>
26551
<TD align="right" class="lineCount">
26555
<TD align="right" class="coverageCount">
26559
<TD class="srcLine">
26560
<PRE class="srcLine"> <span class="comment">/** OpenSymphony BEGIN */</span></PRE>
26567
<TD align="right" class="lineCountHilight">
26571
<TD align="right" class="coverageCountHilight">
26572
<A title="Line 1631: expression evaluated to true 0 times, false 36 times."> 36</A>
26575
<TD class="srcHilight">
26576
<SPAN class="srcHilight">
26577
<A title="Line 1631: expression evaluated to true 0 times, false 36 times."><PRE class="srcLine"> <span class="keyword">if</span> (key == <span class="keyword">null</span>) {</PRE></A>
26585
<TD align="right" class="lineCountHilight">
26589
<TD align="right" class="coverageCountHilight">
26590
<A title="Line 1632: statement not executed."> 0</A>
26593
<TD class="srcHilight">
26594
<SPAN class="srcHilight">
26595
<A title="Line 1632: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> <span class="keyword">null</span>;</PRE></A>
26603
<TD align="right" class="lineCount">
26607
<TD align="right" class="coverageCount">
26611
<TD class="srcLine">
26612
<PRE class="srcLine"> }</PRE>
26619
<TD align="right" class="lineCount">
26623
<TD align="right" class="coverageCount">
26627
<TD class="srcLine">
26628
<PRE class="srcLine"> </PRE>
26635
<TD align="right" class="lineCount">
26639
<TD align="right" class="coverageCount">
26643
<TD class="srcLine">
26644
<PRE class="srcLine"> <span class="comment">/** OpenSymphony END */</span></PRE>
26651
<TD align="right" class="lineCountHilight">
26655
<TD align="right" class="lineCountHilight">
26656
<A title="Line 1636: statement executed 36 times."> 36</A>
26659
<TD class="srcLine">
26660
<A title="Line 1636: statement executed 36 times."><PRE class="srcLine"> <span class="keyword">int</span> hash = hash(key);</PRE></A>
26667
<TD align="right" class="lineCountHilight">
26671
<TD align="right" class="lineCountHilight">
26672
<A title="Line 1637: statement executed 36 times."> 36</A>
26675
<TD class="srcLine">
26676
<A title="Line 1637: statement executed 36 times."><PRE class="srcLine"> Entry[] tab = table;</PRE></A>
26683
<TD align="right" class="lineCountHilight">
26687
<TD align="right" class="lineCountHilight">
26688
<A title="Line 1638: statement executed 36 times."> 36</A>
26691
<TD class="srcLine">
26692
<A title="Line 1638: statement executed 36 times."><PRE class="srcLine"> <span class="keyword">int</span> index = hash & (tab.length - 1);</PRE></A>
26699
<TD align="right" class="lineCountHilight">
26703
<TD align="right" class="lineCountHilight">
26704
<A title="Line 1639: statement executed 36 times."> 36</A>
26707
<TD class="srcLine">
26708
<A title="Line 1639: statement executed 36 times."><PRE class="srcLine"> Entry first = tab[index];</PRE></A>
26715
<TD align="right" class="lineCountHilight">
26719
<TD align="right" class="lineCountHilight">
26720
<A title="Line 1640: statement executed 36 times."> 36</A>
26723
<TD class="srcLine">
26724
<A title="Line 1640: statement executed 36 times."><PRE class="srcLine"> Entry e = first;</PRE></A>
26731
<TD align="right" class="lineCount">
26735
<TD align="right" class="coverageCount">
26739
<TD class="srcLine">
26740
<PRE class="srcLine"> </PRE>
26747
<TD align="right" class="lineCountHilight">
26751
<TD align="right" class="lineCountHilight">
26752
<A title="Line 1642: statement executed 36 times."> 36</A>
26755
<TD class="srcLine">
26756
<A title="Line 1642: statement executed 36 times."><PRE class="srcLine"> <span class="keyword">for</span> (;;) {</PRE></A>
26763
<TD align="right" class="lineCountHilight">
26767
<TD align="right" class="coverageCountHilight">
26768
<A title="Line 1643: expression evaluated to true 0 times, false 36 times."> 36</A>
26771
<TD class="srcHilight">
26772
<SPAN class="srcHilight">
26773
<A title="Line 1643: expression evaluated to true 0 times, false 36 times."><PRE class="srcLine"> <span class="keyword">if</span> (e == <span class="keyword">null</span>) {</PRE></A>
26781
<TD align="right" class="lineCountHilight">
26785
<TD align="right" class="coverageCountHilight">
26786
<A title="Line 1644: statement not executed."> 0</A>
26789
<TD class="srcHilight">
26790
<SPAN class="srcHilight">
26791
<A title="Line 1644: statement not executed."><PRE class="srcLine"> tab = getTableForReading();</PRE></A>
26799
<TD align="right" class="lineCount">
26803
<TD align="right" class="coverageCount">
26807
<TD class="srcLine">
26808
<PRE class="srcLine"> </PRE>
26815
<TD align="right" class="lineCountHilight">
26819
<TD align="right" class="coverageCountHilight">
26820
<A title="Line 1646: statement not executed."> 0</A>
26823
<TD class="srcHilight">
26824
<SPAN class="srcHilight">
26825
<A title="Line 1646: statement not executed."><PRE class="srcLine"> <span class="keyword">if</span> (first == tab[index]) {</PRE></A>
26833
<TD align="right" class="lineCountHilight">
26837
<TD align="right" class="coverageCountHilight">
26838
<A title="Line 1647: statement not executed."> 0</A>
26841
<TD class="srcHilight">
26842
<SPAN class="srcHilight">
26843
<A title="Line 1647: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> <span class="keyword">null</span>;</PRE></A>
26851
<TD align="right" class="lineCount">
26855
<TD align="right" class="coverageCount">
26859
<TD class="srcLine">
26860
<PRE class="srcLine"> } <span class="keyword">else</span> {</PRE>
26867
<TD align="right" class="lineCount">
26871
<TD align="right" class="coverageCount">
26875
<TD class="srcLine">
26876
<PRE class="srcLine"> <span class="comment">// Wrong list -- must restart traversal at new first</span></PRE>
26883
<TD align="right" class="lineCount">
26887
<TD align="right" class="coverageCount">
26891
<TD class="srcLine">
26892
<PRE class="srcLine"> </PRE>
26899
<TD align="right" class="lineCount">
26903
<TD align="right" class="coverageCount">
26907
<TD class="srcLine">
26908
<PRE class="srcLine"> <span class="comment">/** OpenSymphony BEGIN */</span></PRE>
26915
<TD align="right" class="lineCount">
26919
<TD align="right" class="coverageCount">
26923
<TD class="srcLine">
26924
<PRE class="srcLine"> </PRE>
26931
<TD align="right" class="lineCount">
26935
<TD align="right" class="coverageCount">
26939
<TD class="srcLine">
26940
<PRE class="srcLine"> <span class="comment">/* Previous Code</span></PRE>
26947
<TD align="right" class="lineCount">
26951
<TD align="right" class="coverageCount">
26955
<TD class="srcLine">
26956
<PRE class="srcLine"> <span class="comment"> return sremove(key, hash); */</span></PRE>
26963
<TD align="right" class="lineCountHilight">
26967
<TD align="right" class="coverageCountHilight">
26968
<A title="Line 1655: statement not executed."> 0</A>
26971
<TD class="srcHilight">
26972
<SPAN class="srcHilight">
26973
<A title="Line 1655: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> sremove(key, hash, invokeAlgorithm);</PRE></A>
26981
<TD align="right" class="lineCount">
26985
<TD align="right" class="coverageCount">
26989
<TD class="srcLine">
26990
<PRE class="srcLine"> </PRE>
26997
<TD align="right" class="lineCount">
27001
<TD align="right" class="coverageCount">
27005
<TD class="srcLine">
27006
<PRE class="srcLine"> <span class="comment">/** OpenSymphony END */</span></PRE>
27013
<TD align="right" class="lineCount">
27017
<TD align="right" class="coverageCount">
27021
<TD class="srcLine">
27022
<PRE class="srcLine"> }</PRE>
27029
<TD align="right" class="lineCountHilight">
27033
<TD align="right" class="coverageCountHilight">
27034
<A title="Line 1659: expression evaluated to true 36 times, false 0 times."> 36</A>
27037
<TD class="srcHilight">
27038
<SPAN class="srcHilight">
27039
<A title="Line 1659: expression evaluated to true 36 times, false 0 times."><PRE class="srcLine"> } <span class="keyword">else</span> <span class="keyword">if</span> ((key == e.key) || ((e.hash == hash) && key.equals(e.key))) {</PRE></A>
27047
<TD align="right" class="lineCountHilight">
27051
<TD align="right" class="lineCountHilight">
27052
<A title="Line 1660: statement executed 36 times."> 36</A>
27055
<TD class="srcLine">
27056
<A title="Line 1660: statement executed 36 times."><PRE class="srcLine"> <span class="keyword">synchronized</span> (<span class="keyword">this</span>) {</PRE></A>
27063
<TD align="right" class="lineCountHilight">
27067
<TD align="right" class="lineCountHilight">
27068
<A title="Line 1661: statement executed 36 times."> 36</A>
27071
<TD class="srcLine">
27072
<A title="Line 1661: statement executed 36 times."><PRE class="srcLine"> tab = table;</PRE></A>
27079
<TD align="right" class="lineCount">
27083
<TD align="right" class="coverageCount">
27087
<TD class="srcLine">
27088
<PRE class="srcLine"> </PRE>
27095
<TD align="right" class="lineCountHilight">
27099
<TD align="right" class="lineCountHilight">
27100
<A title="Line 1663: statement executed 36 times."> 36</A>
27103
<TD class="srcLine">
27104
<A title="Line 1663: statement executed 36 times."><PRE class="srcLine"> Object oldValue = e.value;</PRE></A>
27111
<TD align="right" class="lineCount">
27115
<TD align="right" class="coverageCount">
27119
<TD class="srcLine">
27120
<PRE class="srcLine"> </PRE>
27127
<TD align="right" class="lineCount">
27131
<TD align="right" class="coverageCount">
27135
<TD class="srcLine">
27136
<PRE class="srcLine"> <span class="comment">// re-find under synch if wrong list</span></PRE>
27143
<TD align="right" class="lineCountHilight">
27147
<TD align="right" class="coverageCountHilight">
27148
<A title="Line 1666: expression evaluated to true 0 times, false 36 times."> 36</A>
27151
<TD class="srcHilight">
27152
<SPAN class="srcHilight">
27153
<A title="Line 1666: expression evaluated to true 0 times, false 36 times."><PRE class="srcLine"> <span class="keyword">if</span> ((first != tab[index]) || (oldValue == <span class="keyword">null</span>)) {</PRE></A>
27161
<TD align="right" class="lineCount">
27165
<TD align="right" class="coverageCount">
27169
<TD class="srcLine">
27170
<PRE class="srcLine"> <span class="comment">/** OpenSymphony BEGIN */</span></PRE>
27177
<TD align="right" class="lineCount">
27181
<TD align="right" class="coverageCount">
27185
<TD class="srcLine">
27186
<PRE class="srcLine"> </PRE>
27193
<TD align="right" class="lineCount">
27197
<TD align="right" class="coverageCount">
27201
<TD class="srcLine">
27202
<PRE class="srcLine"> <span class="comment">/* Previous Code</span></PRE>
27209
<TD align="right" class="lineCount">
27213
<TD align="right" class="coverageCount">
27217
<TD class="srcLine">
27218
<PRE class="srcLine"> <span class="comment"> return sremove(key, hash); */</span></PRE>
27225
<TD align="right" class="lineCountHilight">
27229
<TD align="right" class="coverageCountHilight">
27230
<A title="Line 1671: statement not executed."> 0</A>
27233
<TD class="srcHilight">
27234
<SPAN class="srcHilight">
27235
<A title="Line 1671: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> sremove(key, hash, invokeAlgorithm);</PRE></A>
27243
<TD align="right" class="lineCount">
27247
<TD align="right" class="coverageCount">
27251
<TD class="srcLine">
27252
<PRE class="srcLine"> }</PRE>
27259
<TD align="right" class="lineCount">
27263
<TD align="right" class="coverageCount">
27267
<TD class="srcLine">
27268
<PRE class="srcLine"> </PRE>
27275
<TD align="right" class="lineCount">
27279
<TD align="right" class="coverageCount">
27283
<TD class="srcLine">
27284
<PRE class="srcLine"> <span class="comment">/** OpenSymphony END */</span></PRE>
27291
<TD align="right" class="lineCountHilight">
27295
<TD align="right" class="lineCountHilight">
27296
<A title="Line 1675: statement executed 36 times."> 36</A>
27299
<TD class="srcLine">
27300
<A title="Line 1675: statement executed 36 times."><PRE class="srcLine"> e.value = <span class="keyword">null</span>;</PRE></A>
27307
<TD align="right" class="lineCountHilight">
27311
<TD align="right" class="lineCountHilight">
27312
<A title="Line 1676: statement executed 36 times."> 36</A>
27315
<TD class="srcLine">
27316
<A title="Line 1676: statement executed 36 times."><PRE class="srcLine"> count--;</PRE></A>
27323
<TD align="right" class="lineCount">
27327
<TD align="right" class="coverageCount">
27331
<TD class="srcLine">
27332
<PRE class="srcLine"> </PRE>
27339
<TD align="right" class="lineCount">
27343
<TD align="right" class="coverageCount">
27347
<TD class="srcLine">
27348
<PRE class="srcLine"> <span class="comment">/** OpenSymphony BEGIN */</span></PRE>
27355
<TD align="right" class="lineCountHilight">
27359
<TD align="right" class="coverageCountHilight">
27360
<A title="Line 1679: expression evaluated to true 36 times, false 0 times."> 36</A>
27363
<TD class="srcHilight">
27364
<SPAN class="srcHilight">
27365
<A title="Line 1679: expression evaluated to true 36 times, false 0 times."><PRE class="srcLine"> <span class="keyword">if</span> (!unlimitedDiskCache) {</PRE></A>
27373
<TD align="right" class="lineCountHilight">
27377
<TD align="right" class="lineCountHilight">
27378
<A title="Line 1680: statement executed 36 times."> 36</A>
27381
<TD class="srcLine">
27382
<A title="Line 1680: statement executed 36 times."><PRE class="srcLine"> persistRemove(e.key);</PRE></A>
27389
<TD align="right" class="lineCount">
27393
<TD align="right" class="coverageCount">
27397
<TD class="srcLine">
27398
<PRE class="srcLine"> }</PRE>
27405
<TD align="right" class="lineCount">
27409
<TD align="right" class="coverageCount">
27413
<TD class="srcLine">
27414
<PRE class="srcLine"> </PRE>
27421
<TD align="right" class="lineCountHilight">
27425
<TD align="right" class="lineCountHilight">
27426
<A title="Line 1683: statement executed 36 times."> 36</A>
27429
<TD class="srcLine">
27430
<A title="Line 1683: statement executed 36 times."><PRE class="srcLine"> <span class="keyword">if</span> (invokeAlgorithm) {</PRE></A>
27437
<TD align="right" class="lineCountHilight">
27441
<TD align="right" class="lineCountHilight">
27442
<A title="Line 1684: statement executed 18 times."> 18</A>
27445
<TD class="srcLine">
27446
<A title="Line 1684: statement executed 18 times."><PRE class="srcLine"> itemRemoved(key);</PRE></A>
27453
<TD align="right" class="lineCount">
27457
<TD align="right" class="coverageCount">
27461
<TD class="srcLine">
27462
<PRE class="srcLine"> }</PRE>
27469
<TD align="right" class="lineCount">
27473
<TD align="right" class="coverageCount">
27477
<TD class="srcLine">
27478
<PRE class="srcLine"> </PRE>
27485
<TD align="right" class="lineCount">
27489
<TD align="right" class="coverageCount">
27493
<TD class="srcLine">
27494
<PRE class="srcLine"> <span class="comment">/** OpenSymphony END */</span></PRE>
27501
<TD align="right" class="lineCountHilight">
27505
<TD align="right" class="lineCountHilight">
27506
<A title="Line 1688: statement executed 36 times."> 36</A>
27509
<TD class="srcLine">
27510
<A title="Line 1688: statement executed 36 times."><PRE class="srcLine"> Entry head = e.next;</PRE></A>
27517
<TD align="right" class="lineCount">
27521
<TD align="right" class="coverageCount">
27525
<TD class="srcLine">
27526
<PRE class="srcLine"> </PRE>
27533
<TD align="right" class="lineCountHilight">
27537
<TD align="right" class="coverageCountHilight">
27538
<A title="Line 1690: expression evaluated to true 0 times, false 36 times."> 36</A>
27541
<TD class="srcHilight">
27542
<SPAN class="srcHilight">
27543
<A title="Line 1690: expression evaluated to true 0 times, false 36 times."><PRE class="srcLine"> <span class="keyword">for</span> (Entry p = first; p != e; p = p.next) {</PRE></A>
27551
<TD align="right" class="lineCountHilight">
27555
<TD align="right" class="coverageCountHilight">
27556
<A title="Line 1691: statement not executed."> 0</A>
27559
<TD class="srcHilight">
27560
<SPAN class="srcHilight">
27561
<A title="Line 1691: statement not executed."><PRE class="srcLine"> head = <span class="keyword">new</span> Entry(p.hash, p.key, p.value, head);</PRE></A>
27569
<TD align="right" class="lineCount">
27573
<TD align="right" class="coverageCount">
27577
<TD class="srcLine">
27578
<PRE class="srcLine"> }</PRE>
27585
<TD align="right" class="lineCount">
27589
<TD align="right" class="coverageCount">
27593
<TD class="srcLine">
27594
<PRE class="srcLine"> </PRE>
27601
<TD align="right" class="lineCountHilight">
27605
<TD align="right" class="lineCountHilight">
27606
<A title="Line 1694: statement executed 36 times."> 36</A>
27609
<TD class="srcLine">
27610
<A title="Line 1694: statement executed 36 times."><PRE class="srcLine"> tab[index] = head;</PRE></A>
27617
<TD align="right" class="lineCountHilight">
27621
<TD align="right" class="lineCountHilight">
27622
<A title="Line 1695: statement executed 36 times."> 36</A>
27625
<TD class="srcLine">
27626
<A title="Line 1695: statement executed 36 times."><PRE class="srcLine"> recordModification(head);</PRE></A>
27633
<TD align="right" class="lineCount">
27637
<TD align="right" class="coverageCount">
27641
<TD class="srcLine">
27642
<PRE class="srcLine"> </PRE>
27649
<TD align="right" class="lineCountHilight">
27653
<TD align="right" class="lineCountHilight">
27654
<A title="Line 1697: statement executed 36 times."> 36</A>
27657
<TD class="srcLine">
27658
<A title="Line 1697: statement executed 36 times."><PRE class="srcLine"> <span class="keyword">return</span> oldValue;</PRE></A>
27665
<TD align="right" class="lineCount">
27669
<TD align="right" class="coverageCount">
27673
<TD class="srcLine">
27674
<PRE class="srcLine"> }</PRE>
27681
<TD align="right" class="lineCount">
27685
<TD align="right" class="coverageCount">
27689
<TD class="srcLine">
27690
<PRE class="srcLine"> } <span class="keyword">else</span> {</PRE>
27697
<TD align="right" class="lineCountHilight">
27701
<TD align="right" class="coverageCountHilight">
27702
<A title="Line 1700: statement not executed."> 0</A>
27705
<TD class="srcHilight">
27706
<SPAN class="srcHilight">
27707
<A title="Line 1700: statement not executed."><PRE class="srcLine"> e = e.next;</PRE></A>
27715
<TD align="right" class="lineCount">
27719
<TD align="right" class="coverageCount">
27723
<TD class="srcLine">
27724
<PRE class="srcLine"> }</PRE>
27731
<TD align="right" class="lineCount">
27735
<TD align="right" class="coverageCount">
27739
<TD class="srcLine">
27740
<PRE class="srcLine"> }</PRE>
27747
<TD align="right" class="lineCount">
27751
<TD align="right" class="coverageCount">
27755
<TD class="srcLine">
27756
<PRE class="srcLine"> }</PRE>
27763
<TD align="right" class="lineCount">
27767
<TD align="right" class="coverageCount">
27771
<TD class="srcLine">
27772
<PRE class="srcLine"> </PRE>
27779
<TD align="right" class="lineCount">
27783
<TD align="right" class="coverageCount">
27787
<TD class="srcLine">
27788
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
27795
<TD align="right" class="lineCount">
27799
<TD align="right" class="coverageCount">
27803
<TD class="srcLine">
27804
<PRE class="srcLine"> <span class="comment"> * Remove this CacheEntry from the groups it no longer belongs to.</span></PRE>
27811
<TD align="right" class="lineCount">
27815
<TD align="right" class="coverageCount">
27819
<TD class="srcLine">
27820
<PRE class="srcLine"> <span class="comment"> * We have to treat the memory and disk group mappings seperately so they remain</span></PRE>
27827
<TD align="right" class="lineCount">
27831
<TD align="right" class="coverageCount">
27835
<TD class="srcLine">
27836
<PRE class="srcLine"> <span class="comment"> * valid for their corresponding memory/disk caches. (eg if mem is limited</span></PRE>
27843
<TD align="right" class="lineCount">
27847
<TD align="right" class="coverageCount">
27851
<TD class="srcLine">
27852
<PRE class="srcLine"> <span class="comment"> * to 100 entries and disk is unlimited, the group mappings will be</span></PRE>
27859
<TD align="right" class="lineCount">
27863
<TD align="right" class="coverageCount">
27867
<TD class="srcLine">
27868
<PRE class="srcLine"> <span class="comment"> * different).</span></PRE>
27875
<TD align="right" class="lineCount">
27879
<TD align="right" class="coverageCount">
27883
<TD class="srcLine">
27884
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
27891
<TD align="right" class="lineCount">
27895
<TD align="right" class="coverageCount">
27899
<TD class="srcLine">
27900
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@param</span> key The cache key that we are removing from the groups.</span></PRE>
27907
<TD align="right" class="lineCount">
27911
<TD align="right" class="coverageCount">
27915
<TD class="srcLine">
27916
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@param</span> oldGroups the set of groups we want to remove the cache entry</span></PRE>
27923
<TD align="right" class="lineCount">
27927
<TD align="right" class="coverageCount">
27931
<TD class="srcLine">
27932
<PRE class="srcLine"> <span class="comment"> * from.</span></PRE>
27939
<TD align="right" class="lineCount">
27943
<TD align="right" class="coverageCount">
27947
<TD class="srcLine">
27948
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@param</span> persist A flag to indicate whether the keys should be removed</span></PRE>
27955
<TD align="right" class="lineCount">
27959
<TD align="right" class="coverageCount">
27963
<TD class="srcLine">
27964
<PRE class="srcLine"> <span class="comment"> * from the persistent cache layer.</span></PRE>
27971
<TD align="right" class="lineCount">
27975
<TD align="right" class="coverageCount">
27979
<TD class="srcLine">
27980
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
27987
<TD align="right" class="lineCountHilight">
27991
<TD align="right" class="lineCountHilight">
27992
<A title="Line 1718: method entered 27 times."> 27</A>
27995
<TD class="srcLine">
27996
<A title="Line 1718: method entered 27 times."><PRE class="srcLine"> <span class="keyword">private</span> <span class="keyword">void</span> removeGroupMappings(String key, Set oldGroups, <span class="keyword">boolean</span> persist) {</PRE></A>
28003
<TD align="right" class="lineCountHilight">
28007
<TD align="right" class="coverageCountHilight">
28008
<A title="Line 1719: expression evaluated to true 0 times, false 27 times."> 27</A>
28011
<TD class="srcHilight">
28012
<SPAN class="srcHilight">
28013
<A title="Line 1719: expression evaluated to true 0 times, false 27 times."><PRE class="srcLine"> <span class="keyword">for</span> (Iterator it = oldGroups.iterator(); it.hasNext();) {</PRE></A>
28021
<TD align="right" class="lineCountHilight">
28025
<TD align="right" class="coverageCountHilight">
28026
<A title="Line 1720: statement not executed."> 0</A>
28029
<TD class="srcHilight">
28030
<SPAN class="srcHilight">
28031
<A title="Line 1720: statement not executed."><PRE class="srcLine"> String groupName = (String) it.next();</PRE></A>
28039
<TD align="right" class="lineCount">
28043
<TD align="right" class="coverageCount">
28047
<TD class="srcLine">
28048
<PRE class="srcLine"> </PRE>
28055
<TD align="right" class="lineCount">
28059
<TD align="right" class="coverageCount">
28063
<TD class="srcLine">
28064
<PRE class="srcLine"> <span class="comment">// Update the in-memory groups</span></PRE>
28071
<TD align="right" class="lineCountHilight">
28075
<TD align="right" class="coverageCountHilight">
28076
<A title="Line 1723: statement not executed."> 0</A>
28079
<TD class="srcHilight">
28080
<SPAN class="srcHilight">
28081
<A title="Line 1723: statement not executed."><PRE class="srcLine"> <span class="keyword">if</span> (memoryCaching && (<span class="keyword">this</span>.groups != <span class="keyword">null</span>)) {</PRE></A>
28089
<TD align="right" class="lineCountHilight">
28093
<TD align="right" class="coverageCountHilight">
28094
<A title="Line 1724: statement not executed."> 0</A>
28097
<TD class="srcHilight">
28098
<SPAN class="srcHilight">
28099
<A title="Line 1724: statement not executed."><PRE class="srcLine"> Set memoryGroup = (Set) groups.get(groupName);</PRE></A>
28107
<TD align="right" class="lineCount">
28111
<TD align="right" class="coverageCount">
28115
<TD class="srcLine">
28116
<PRE class="srcLine"> </PRE>
28123
<TD align="right" class="lineCountHilight">
28127
<TD align="right" class="coverageCountHilight">
28128
<A title="Line 1726: statement not executed."> 0</A>
28131
<TD class="srcHilight">
28132
<SPAN class="srcHilight">
28133
<A title="Line 1726: statement not executed."><PRE class="srcLine"> <span class="keyword">if</span> (memoryGroup != <span class="keyword">null</span>) {</PRE></A>
28141
<TD align="right" class="lineCountHilight">
28145
<TD align="right" class="coverageCountHilight">
28146
<A title="Line 1727: statement not executed."> 0</A>
28149
<TD class="srcHilight">
28150
<SPAN class="srcHilight">
28151
<A title="Line 1727: statement not executed."><PRE class="srcLine"> memoryGroup.remove(key);</PRE></A>
28159
<TD align="right" class="lineCount">
28163
<TD align="right" class="coverageCount">
28167
<TD class="srcLine">
28168
<PRE class="srcLine"> </PRE>
28175
<TD align="right" class="lineCountHilight">
28179
<TD align="right" class="coverageCountHilight">
28180
<A title="Line 1729: statement not executed."> 0</A>
28183
<TD class="srcHilight">
28184
<SPAN class="srcHilight">
28185
<A title="Line 1729: statement not executed."><PRE class="srcLine"> <span class="keyword">if</span> (memoryGroup.isEmpty()) {</PRE></A>
28193
<TD align="right" class="lineCountHilight">
28197
<TD align="right" class="coverageCountHilight">
28198
<A title="Line 1730: statement not executed."> 0</A>
28201
<TD class="srcHilight">
28202
<SPAN class="srcHilight">
28203
<A title="Line 1730: statement not executed."><PRE class="srcLine"> groups.remove(groupName);</PRE></A>
28211
<TD align="right" class="lineCount">
28215
<TD align="right" class="coverageCount">
28219
<TD class="srcLine">
28220
<PRE class="srcLine"> }</PRE>
28227
<TD align="right" class="lineCount">
28231
<TD align="right" class="coverageCount">
28235
<TD class="srcLine">
28236
<PRE class="srcLine"> }</PRE>
28243
<TD align="right" class="lineCount">
28247
<TD align="right" class="coverageCount">
28251
<TD class="srcLine">
28252
<PRE class="srcLine"> }</PRE>
28259
<TD align="right" class="lineCount">
28263
<TD align="right" class="coverageCount">
28267
<TD class="srcLine">
28268
<PRE class="srcLine"> </PRE>
28275
<TD align="right" class="lineCount">
28279
<TD align="right" class="coverageCount">
28283
<TD class="srcLine">
28284
<PRE class="srcLine"> <span class="comment">// Update the persistent group maps</span></PRE>
28291
<TD align="right" class="lineCountHilight">
28295
<TD align="right" class="coverageCountHilight">
28296
<A title="Line 1736: statement not executed."> 0</A>
28299
<TD class="srcHilight">
28300
<SPAN class="srcHilight">
28301
<A title="Line 1736: statement not executed."><PRE class="srcLine"> <span class="keyword">if</span> (persist) {</PRE></A>
28309
<TD align="right" class="lineCountHilight">
28313
<TD align="right" class="coverageCountHilight">
28314
<A title="Line 1737: statement not executed."> 0</A>
28317
<TD class="srcHilight">
28318
<SPAN class="srcHilight">
28319
<A title="Line 1737: statement not executed."><PRE class="srcLine"> Set persistentGroup = persistRetrieveGroup(groupName);</PRE></A>
28327
<TD align="right" class="lineCount">
28331
<TD align="right" class="coverageCount">
28335
<TD class="srcLine">
28336
<PRE class="srcLine"> </PRE>
28343
<TD align="right" class="lineCountHilight">
28347
<TD align="right" class="coverageCountHilight">
28348
<A title="Line 1739: statement not executed."> 0</A>
28351
<TD class="srcHilight">
28352
<SPAN class="srcHilight">
28353
<A title="Line 1739: statement not executed."><PRE class="srcLine"> <span class="keyword">if</span> (persistentGroup != <span class="keyword">null</span>) {</PRE></A>
28361
<TD align="right" class="lineCountHilight">
28365
<TD align="right" class="coverageCountHilight">
28366
<A title="Line 1740: statement not executed."> 0</A>
28369
<TD class="srcHilight">
28370
<SPAN class="srcHilight">
28371
<A title="Line 1740: statement not executed."><PRE class="srcLine"> persistentGroup.remove(key);</PRE></A>
28379
<TD align="right" class="lineCount">
28383
<TD align="right" class="coverageCount">
28387
<TD class="srcLine">
28388
<PRE class="srcLine"> </PRE>
28395
<TD align="right" class="lineCountHilight">
28399
<TD align="right" class="coverageCountHilight">
28400
<A title="Line 1742: statement not executed."> 0</A>
28403
<TD class="srcHilight">
28404
<SPAN class="srcHilight">
28405
<A title="Line 1742: statement not executed."><PRE class="srcLine"> <span class="keyword">if</span> (persistentGroup.isEmpty()) {</PRE></A>
28413
<TD align="right" class="lineCountHilight">
28417
<TD align="right" class="coverageCountHilight">
28418
<A title="Line 1743: statement not executed."> 0</A>
28421
<TD class="srcHilight">
28422
<SPAN class="srcHilight">
28423
<A title="Line 1743: statement not executed."><PRE class="srcLine"> persistRemoveGroup(groupName);</PRE></A>
28431
<TD align="right" class="lineCount">
28435
<TD align="right" class="coverageCount">
28439
<TD class="srcLine">
28440
<PRE class="srcLine"> } <span class="keyword">else</span> {</PRE>
28447
<TD align="right" class="lineCountHilight">
28451
<TD align="right" class="coverageCountHilight">
28452
<A title="Line 1745: statement not executed."> 0</A>
28455
<TD class="srcHilight">
28456
<SPAN class="srcHilight">
28457
<A title="Line 1745: statement not executed."><PRE class="srcLine"> persistStoreGroup(groupName, persistentGroup);</PRE></A>
28465
<TD align="right" class="lineCount">
28469
<TD align="right" class="coverageCount">
28473
<TD class="srcLine">
28474
<PRE class="srcLine"> }</PRE>
28481
<TD align="right" class="lineCount">
28485
<TD align="right" class="coverageCount">
28489
<TD class="srcLine">
28490
<PRE class="srcLine"> }</PRE>
28497
<TD align="right" class="lineCount">
28501
<TD align="right" class="coverageCount">
28505
<TD class="srcLine">
28506
<PRE class="srcLine"> }</PRE>
28513
<TD align="right" class="lineCount">
28517
<TD align="right" class="coverageCount">
28521
<TD class="srcLine">
28522
<PRE class="srcLine"> }</PRE>
28529
<TD align="right" class="lineCount">
28533
<TD align="right" class="coverageCount">
28537
<TD class="srcLine">
28538
<PRE class="srcLine"> }</PRE>
28545
<TD align="right" class="lineCount">
28549
<TD align="right" class="coverageCount">
28553
<TD class="srcLine">
28554
<PRE class="srcLine"> </PRE>
28561
<TD align="right" class="lineCount">
28565
<TD align="right" class="coverageCount">
28569
<TD class="srcLine">
28570
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
28577
<TD align="right" class="lineCount">
28581
<TD align="right" class="coverageCount">
28585
<TD class="srcLine">
28586
<PRE class="srcLine"> <span class="comment"> * Updates the groups to reflect the differences between the old and new</span></PRE>
28593
<TD align="right" class="lineCount">
28597
<TD align="right" class="coverageCount">
28601
<TD class="srcLine">
28602
<PRE class="srcLine"> <span class="comment"> * cache entries. Either of the old or new values can be <code>null</code></span></PRE>
28609
<TD align="right" class="lineCount">
28613
<TD align="right" class="coverageCount">
28617
<TD class="srcLine">
28618
<PRE class="srcLine"> <span class="comment"> * or contain a <code>null</code> group list, in which case the entry's</span></PRE>
28625
<TD align="right" class="lineCount">
28629
<TD align="right" class="coverageCount">
28633
<TD class="srcLine">
28634
<PRE class="srcLine"> <span class="comment"> * groups will all be added or removed respectively.</span></PRE>
28641
<TD align="right" class="lineCount">
28645
<TD align="right" class="coverageCount">
28649
<TD class="srcLine">
28650
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
28657
<TD align="right" class="lineCount">
28661
<TD align="right" class="coverageCount">
28665
<TD class="srcLine">
28666
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@param</span> oldValue The old CacheEntry that is being replaced.</span></PRE>
28673
<TD align="right" class="lineCount">
28677
<TD align="right" class="coverageCount">
28681
<TD class="srcLine">
28682
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@param</span> newValue The new CacheEntry that is being inserted.</span></PRE>
28689
<TD align="right" class="lineCount">
28693
<TD align="right" class="coverageCount">
28697
<TD class="srcLine">
28698
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
28705
<TD align="right" class="lineCountHilight">
28709
<TD align="right" class="lineCountHilight">
28710
<A title="Line 1761: method entered 82 times."> 82</A>
28713
<TD class="srcLine">
28714
<A title="Line 1761: method entered 82 times."><PRE class="srcLine"> <span class="keyword">private</span> <span class="keyword">void</span> updateGroups(Object oldValue, Object newValue, <span class="keyword">boolean</span> persist) {</PRE></A>
28721
<TD align="right" class="lineCount">
28725
<TD align="right" class="coverageCount">
28729
<TD class="srcLine">
28730
<PRE class="srcLine"> <span class="comment">// If we have/had a CacheEntry, update the group lookups</span></PRE>
28737
<TD align="right" class="lineCountHilight">
28741
<TD align="right" class="lineCountHilight">
28742
<A title="Line 1763: statement executed 82 times."> 82</A>
28745
<TD class="srcLine">
28746
<A title="Line 1763: statement executed 82 times."><PRE class="srcLine"> <span class="keyword">boolean</span> oldIsCE = oldValue <span class="keyword">instanceof</span> CacheEntry;</PRE></A>
28753
<TD align="right" class="lineCountHilight">
28757
<TD align="right" class="lineCountHilight">
28758
<A title="Line 1764: statement executed 82 times."> 82</A>
28761
<TD class="srcLine">
28762
<A title="Line 1764: statement executed 82 times."><PRE class="srcLine"> <span class="keyword">boolean</span> newIsCE = newValue <span class="keyword">instanceof</span> CacheEntry;</PRE></A>
28769
<TD align="right" class="lineCount">
28773
<TD align="right" class="coverageCount">
28777
<TD class="srcLine">
28778
<PRE class="srcLine"> </PRE>
28785
<TD align="right" class="lineCountHilight">
28789
<TD align="right" class="lineCountHilight">
28790
<A title="Line 1766: statement executed 82 times."> 82</A>
28793
<TD class="srcLine">
28794
<A title="Line 1766: statement executed 82 times."><PRE class="srcLine"> <span class="keyword">if</span> (newIsCE && oldIsCE) {</PRE></A>
28801
<TD align="right" class="lineCountHilight">
28805
<TD align="right" class="lineCountHilight">
28806
<A title="Line 1767: statement executed 51 times."> 51</A>
28809
<TD class="srcLine">
28810
<A title="Line 1767: statement executed 51 times."><PRE class="srcLine"> updateGroups((CacheEntry) oldValue, (CacheEntry) newValue, persist);</PRE></A>
28817
<TD align="right" class="lineCountHilight">
28821
<TD align="right" class="coverageCountHilight">
28822
<A title="Line 1768: expression evaluated to true 31 times, false 0 times."> 31</A>
28825
<TD class="srcHilight">
28826
<SPAN class="srcHilight">
28827
<A title="Line 1768: expression evaluated to true 31 times, false 0 times."><PRE class="srcLine"> } <span class="keyword">else</span> <span class="keyword">if</span> (newIsCE) {</PRE></A>
28835
<TD align="right" class="lineCountHilight">
28839
<TD align="right" class="lineCountHilight">
28840
<A title="Line 1769: statement executed 31 times."> 31</A>
28843
<TD class="srcLine">
28844
<A title="Line 1769: statement executed 31 times."><PRE class="srcLine"> updateGroups(<span class="keyword">null</span>, (CacheEntry) newValue, persist);</PRE></A>
28851
<TD align="right" class="lineCountHilight">
28855
<TD align="right" class="coverageCountHilight">
28856
<A title="Line 1770: statement not executed."> 0</A>
28859
<TD class="srcHilight">
28860
<SPAN class="srcHilight">
28861
<A title="Line 1770: statement not executed."><PRE class="srcLine"> } <span class="keyword">else</span> <span class="keyword">if</span> (oldIsCE) {</PRE></A>
28869
<TD align="right" class="lineCountHilight">
28873
<TD align="right" class="coverageCountHilight">
28874
<A title="Line 1771: statement not executed."> 0</A>
28877
<TD class="srcHilight">
28878
<SPAN class="srcHilight">
28879
<A title="Line 1771: statement not executed."><PRE class="srcLine"> updateGroups((CacheEntry) oldValue, <span class="keyword">null</span>, persist);</PRE></A>
28887
<TD align="right" class="lineCount">
28891
<TD align="right" class="coverageCount">
28895
<TD class="srcLine">
28896
<PRE class="srcLine"> }</PRE>
28903
<TD align="right" class="lineCount">
28907
<TD align="right" class="coverageCount">
28911
<TD class="srcLine">
28912
<PRE class="srcLine"> }</PRE>
28919
<TD align="right" class="lineCount">
28923
<TD align="right" class="coverageCount">
28927
<TD class="srcLine">
28928
<PRE class="srcLine"> </PRE>
28935
<TD align="right" class="lineCount">
28939
<TD align="right" class="coverageCount">
28943
<TD class="srcLine">
28944
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
28951
<TD align="right" class="lineCount">
28955
<TD align="right" class="coverageCount">
28959
<TD class="srcLine">
28960
<PRE class="srcLine"> <span class="comment"> * Updates the groups to reflect the differences between the old and new cache entries.</span></PRE>
28967
<TD align="right" class="lineCount">
28971
<TD align="right" class="coverageCount">
28975
<TD class="srcLine">
28976
<PRE class="srcLine"> <span class="comment"> * Either of the old or new values can be <code>null</code></span></PRE>
28983
<TD align="right" class="lineCount">
28987
<TD align="right" class="coverageCount">
28991
<TD class="srcLine">
28992
<PRE class="srcLine"> <span class="comment"> * or contain a <code>null</code> group list, in which case the entry's</span></PRE>
28999
<TD align="right" class="lineCount">
29003
<TD align="right" class="coverageCount">
29007
<TD class="srcLine">
29008
<PRE class="srcLine"> <span class="comment"> * groups will all be added or removed respectively.</span></PRE>
29015
<TD align="right" class="lineCount">
29019
<TD align="right" class="coverageCount">
29023
<TD class="srcLine">
29024
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
29031
<TD align="right" class="lineCount">
29035
<TD align="right" class="coverageCount">
29039
<TD class="srcLine">
29040
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@param</span> oldValue The old CacheEntry that is being replaced.</span></PRE>
29047
<TD align="right" class="lineCount">
29051
<TD align="right" class="coverageCount">
29055
<TD class="srcLine">
29056
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@param</span> newValue The new CacheEntry that is being inserted.</span></PRE>
29063
<TD align="right" class="lineCount">
29067
<TD align="right" class="coverageCount">
29071
<TD class="srcLine">
29072
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
29079
<TD align="right" class="lineCountHilight">
29083
<TD align="right" class="lineCountHilight">
29084
<A title="Line 1784: method entered 273 times."> 273</A>
29087
<TD class="srcLine">
29088
<A title="Line 1784: method entered 273 times."><PRE class="srcLine"> <span class="keyword">private</span> <span class="keyword">void</span> updateGroups(CacheEntry oldValue, CacheEntry newValue, <span class="keyword">boolean</span> persist) {</PRE></A>
29095
<TD align="right" class="lineCountHilight">
29099
<TD align="right" class="lineCountHilight">
29100
<A title="Line 1785: statement executed 273 times."> 273</A>
29103
<TD class="srcLine">
29104
<A title="Line 1785: statement executed 273 times."><PRE class="srcLine"> Set oldGroups = <span class="keyword">null</span>;</PRE></A>
29111
<TD align="right" class="lineCountHilight">
29115
<TD align="right" class="lineCountHilight">
29116
<A title="Line 1786: statement executed 273 times."> 273</A>
29119
<TD class="srcLine">
29120
<A title="Line 1786: statement executed 273 times."><PRE class="srcLine"> Set newGroups = <span class="keyword">null</span>;</PRE></A>
29127
<TD align="right" class="lineCount">
29131
<TD align="right" class="coverageCount">
29135
<TD class="srcLine">
29136
<PRE class="srcLine"> </PRE>
29143
<TD align="right" class="lineCountHilight">
29147
<TD align="right" class="lineCountHilight">
29148
<A title="Line 1788: statement executed 273 times."> 273</A>
29151
<TD class="srcLine">
29152
<A title="Line 1788: statement executed 273 times."><PRE class="srcLine"> <span class="keyword">if</span> (oldValue != <span class="keyword">null</span>) {</PRE></A>
29159
<TD align="right" class="lineCountHilight">
29163
<TD align="right" class="lineCountHilight">
29164
<A title="Line 1789: statement executed 51 times."> 51</A>
29167
<TD class="srcLine">
29168
<A title="Line 1789: statement executed 51 times."><PRE class="srcLine"> oldGroups = oldValue.getGroups();</PRE></A>
29175
<TD align="right" class="lineCount">
29179
<TD align="right" class="coverageCount">
29183
<TD class="srcLine">
29184
<PRE class="srcLine"> }</PRE>
29191
<TD align="right" class="lineCount">
29195
<TD align="right" class="coverageCount">
29199
<TD class="srcLine">
29200
<PRE class="srcLine"> </PRE>
29207
<TD align="right" class="lineCountHilight">
29211
<TD align="right" class="coverageCountHilight">
29212
<A title="Line 1792: expression evaluated to true 273 times, false 0 times."> 273</A>
29215
<TD class="srcHilight">
29216
<SPAN class="srcHilight">
29217
<A title="Line 1792: expression evaluated to true 273 times, false 0 times."><PRE class="srcLine"> <span class="keyword">if</span> (newValue != <span class="keyword">null</span>) {</PRE></A>
29225
<TD align="right" class="lineCountHilight">
29229
<TD align="right" class="lineCountHilight">
29230
<A title="Line 1793: statement executed 273 times."> 273</A>
29233
<TD class="srcLine">
29234
<A title="Line 1793: statement executed 273 times."><PRE class="srcLine"> newGroups = newValue.getGroups();</PRE></A>
29241
<TD align="right" class="lineCount">
29245
<TD align="right" class="coverageCount">
29249
<TD class="srcLine">
29250
<PRE class="srcLine"> }</PRE>
29257
<TD align="right" class="lineCount">
29261
<TD align="right" class="coverageCount">
29265
<TD class="srcLine">
29266
<PRE class="srcLine"> </PRE>
29273
<TD align="right" class="lineCount">
29277
<TD align="right" class="coverageCount">
29281
<TD class="srcLine">
29282
<PRE class="srcLine"> <span class="comment">// Get the names of the groups to remove</span></PRE>
29289
<TD align="right" class="lineCountHilight">
29293
<TD align="right" class="lineCountHilight">
29294
<A title="Line 1797: statement executed 273 times."> 273</A>
29297
<TD class="srcLine">
29298
<A title="Line 1797: statement executed 273 times."><PRE class="srcLine"> <span class="keyword">if</span> (oldGroups != <span class="keyword">null</span>) {</PRE></A>
29305
<TD align="right" class="lineCountHilight">
29309
<TD align="right" class="lineCountHilight">
29310
<A title="Line 1798: statement executed 27 times."> 27</A>
29313
<TD class="srcLine">
29314
<A title="Line 1798: statement executed 27 times."><PRE class="srcLine"> Set removeFromGroups = <span class="keyword">new</span> HashSet();</PRE></A>
29321
<TD align="right" class="lineCount">
29325
<TD align="right" class="coverageCount">
29329
<TD class="srcLine">
29330
<PRE class="srcLine"> </PRE>
29337
<TD align="right" class="lineCountHilight">
29341
<TD align="right" class="lineCountHilight">
29342
<A title="Line 1800: statement executed 27 times."> 27</A>
29345
<TD class="srcLine">
29346
<A title="Line 1800: statement executed 27 times."><PRE class="srcLine"> <span class="keyword">for</span> (Iterator it = oldGroups.iterator(); it.hasNext();) {</PRE></A>
29353
<TD align="right" class="lineCountHilight">
29357
<TD align="right" class="lineCountHilight">
29358
<A title="Line 1801: statement executed 49 times."> 49</A>
29361
<TD class="srcLine">
29362
<A title="Line 1801: statement executed 49 times."><PRE class="srcLine"> String groupName = (String) it.next();</PRE></A>
29369
<TD align="right" class="lineCount">
29373
<TD align="right" class="coverageCount">
29377
<TD class="srcLine">
29378
<PRE class="srcLine"> </PRE>
29385
<TD align="right" class="lineCountHilight">
29389
<TD align="right" class="coverageCountHilight">
29390
<A title="Line 1803: expression evaluated to true 0 times, false 49 times."> 49</A>
29393
<TD class="srcHilight">
29394
<SPAN class="srcHilight">
29395
<A title="Line 1803: expression evaluated to true 0 times, false 49 times."><PRE class="srcLine"> <span class="keyword">if</span> ((newGroups == <span class="keyword">null</span>) || !newGroups.contains(groupName)) {</PRE></A>
29403
<TD align="right" class="lineCount">
29407
<TD align="right" class="coverageCount">
29411
<TD class="srcLine">
29412
<PRE class="srcLine"> <span class="comment">// We need to remove this group</span></PRE>
29419
<TD align="right" class="lineCountHilight">
29423
<TD align="right" class="coverageCountHilight">
29424
<A title="Line 1805: statement not executed."> 0</A>
29427
<TD class="srcHilight">
29428
<SPAN class="srcHilight">
29429
<A title="Line 1805: statement not executed."><PRE class="srcLine"> removeFromGroups.add(groupName);</PRE></A>
29437
<TD align="right" class="lineCount">
29441
<TD align="right" class="coverageCount">
29445
<TD class="srcLine">
29446
<PRE class="srcLine"> }</PRE>
29453
<TD align="right" class="lineCount">
29457
<TD align="right" class="coverageCount">
29461
<TD class="srcLine">
29462
<PRE class="srcLine"> }</PRE>
29469
<TD align="right" class="lineCount">
29473
<TD align="right" class="coverageCount">
29477
<TD class="srcLine">
29478
<PRE class="srcLine"> </PRE>
29485
<TD align="right" class="lineCountHilight">
29489
<TD align="right" class="lineCountHilight">
29490
<A title="Line 1809: statement executed 27 times."> 27</A>
29493
<TD class="srcLine">
29494
<A title="Line 1809: statement executed 27 times."><PRE class="srcLine"> removeGroupMappings(oldValue.getKey(), removeFromGroups, persist);</PRE></A>
29501
<TD align="right" class="lineCount">
29505
<TD align="right" class="coverageCount">
29509
<TD class="srcLine">
29510
<PRE class="srcLine"> }</PRE>
29517
<TD align="right" class="lineCount">
29521
<TD align="right" class="coverageCount">
29525
<TD class="srcLine">
29526
<PRE class="srcLine"> </PRE>
29533
<TD align="right" class="lineCount">
29537
<TD align="right" class="coverageCount">
29541
<TD class="srcLine">
29542
<PRE class="srcLine"> <span class="comment">// Get the names of the groups to add</span></PRE>
29549
<TD align="right" class="lineCountHilight">
29553
<TD align="right" class="lineCountHilight">
29554
<A title="Line 1813: statement executed 273 times."> 273</A>
29557
<TD class="srcLine">
29558
<A title="Line 1813: statement executed 273 times."><PRE class="srcLine"> <span class="keyword">if</span> (newGroups != <span class="keyword">null</span>) {</PRE></A>
29565
<TD align="right" class="lineCountHilight">
29569
<TD align="right" class="lineCountHilight">
29570
<A title="Line 1814: statement executed 104 times."> 104</A>
29573
<TD class="srcLine">
29574
<A title="Line 1814: statement executed 104 times."><PRE class="srcLine"> Set addToGroups = <span class="keyword">new</span> HashSet();</PRE></A>
29581
<TD align="right" class="lineCount">
29585
<TD align="right" class="coverageCount">
29589
<TD class="srcLine">
29590
<PRE class="srcLine"> </PRE>
29597
<TD align="right" class="lineCountHilight">
29601
<TD align="right" class="lineCountHilight">
29602
<A title="Line 1816: statement executed 104 times."> 104</A>
29605
<TD class="srcLine">
29606
<A title="Line 1816: statement executed 104 times."><PRE class="srcLine"> <span class="keyword">for</span> (Iterator it = newGroups.iterator(); it.hasNext();) {</PRE></A>
29613
<TD align="right" class="lineCountHilight">
29617
<TD align="right" class="lineCountHilight">
29618
<A title="Line 1817: statement executed 176 times."> 176</A>
29621
<TD class="srcLine">
29622
<A title="Line 1817: statement executed 176 times."><PRE class="srcLine"> String groupName = (String) it.next();</PRE></A>
29629
<TD align="right" class="lineCount">
29633
<TD align="right" class="coverageCount">
29637
<TD class="srcLine">
29638
<PRE class="srcLine"> </PRE>
29645
<TD align="right" class="lineCountHilight">
29649
<TD align="right" class="lineCountHilight">
29650
<A title="Line 1819: statement executed 176 times."> 176</A>
29653
<TD class="srcLine">
29654
<A title="Line 1819: statement executed 176 times."><PRE class="srcLine"> <span class="keyword">if</span> ((oldGroups == <span class="keyword">null</span>) || !oldGroups.contains(groupName)) {</PRE></A>
29661
<TD align="right" class="lineCount">
29665
<TD align="right" class="coverageCount">
29669
<TD class="srcLine">
29670
<PRE class="srcLine"> <span class="comment">// We need to add this group</span></PRE>
29677
<TD align="right" class="lineCountHilight">
29681
<TD align="right" class="lineCountHilight">
29682
<A title="Line 1821: statement executed 127 times."> 127</A>
29685
<TD class="srcLine">
29686
<A title="Line 1821: statement executed 127 times."><PRE class="srcLine"> addToGroups.add(groupName);</PRE></A>
29693
<TD align="right" class="lineCount">
29697
<TD align="right" class="coverageCount">
29701
<TD class="srcLine">
29702
<PRE class="srcLine"> }</PRE>
29709
<TD align="right" class="lineCount">
29713
<TD align="right" class="coverageCount">
29717
<TD class="srcLine">
29718
<PRE class="srcLine"> }</PRE>
29725
<TD align="right" class="lineCount">
29729
<TD align="right" class="coverageCount">
29733
<TD class="srcLine">
29734
<PRE class="srcLine"> </PRE>
29741
<TD align="right" class="lineCountHilight">
29745
<TD align="right" class="lineCountHilight">
29746
<A title="Line 1825: statement executed 104 times."> 104</A>
29749
<TD class="srcLine">
29750
<A title="Line 1825: statement executed 104 times."><PRE class="srcLine"> addGroupMappings(newValue.getKey(), addToGroups, persist);</PRE></A>
29757
<TD align="right" class="lineCount">
29761
<TD align="right" class="coverageCount">
29765
<TD class="srcLine">
29766
<PRE class="srcLine"> }</PRE>
29773
<TD align="right" class="lineCount">
29777
<TD align="right" class="coverageCount">
29781
<TD class="srcLine">
29782
<PRE class="srcLine"> }</PRE>
29789
<TD align="right" class="lineCount">
29793
<TD align="right" class="coverageCount">
29797
<TD class="srcLine">
29798
<PRE class="srcLine"> </PRE>
29805
<TD align="right" class="lineCount">
29809
<TD align="right" class="coverageCount">
29813
<TD class="srcLine">
29814
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
29821
<TD align="right" class="lineCount">
29825
<TD align="right" class="coverageCount">
29829
<TD class="srcLine">
29830
<PRE class="srcLine"> <span class="comment"> * AbstractConcurrentReadCache collision list entry.</span></PRE>
29837
<TD align="right" class="lineCount">
29841
<TD align="right" class="coverageCount">
29845
<TD class="srcLine">
29846
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
29853
<TD align="right" class="lineCount">
29854
<A name="Entry"> 1832</A>
29857
<TD align="right" class="coverageCount">
29861
<TD class="srcLineClassStart">
29862
<PRE class="srcLine"> <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">class</span> Entry <span class="keyword">implements</span> Map.Entry {</PRE>
29869
<TD align="right" class="lineCount">
29873
<TD align="right" class="coverageCount">
29877
<TD class="srcLine">
29878
<PRE class="srcLine"> <span class="keyword">protected</span> final Entry next;</PRE>
29885
<TD align="right" class="lineCount">
29889
<TD align="right" class="coverageCount">
29893
<TD class="srcLine">
29894
<PRE class="srcLine"> <span class="keyword">protected</span> final Object key;</PRE>
29901
<TD align="right" class="lineCount">
29905
<TD align="right" class="coverageCount">
29909
<TD class="srcLine">
29910
<PRE class="srcLine"> </PRE>
29917
<TD align="right" class="lineCount">
29921
<TD align="right" class="coverageCount">
29925
<TD class="srcLine">
29926
<PRE class="srcLine"> <span class="comment">/*</span></PRE>
29933
<TD align="right" class="lineCount">
29937
<TD align="right" class="coverageCount">
29941
<TD class="srcLine">
29942
<PRE class="srcLine"> <span class="comment"> The use of volatile for value field ensures that</span></PRE>
29949
<TD align="right" class="lineCount">
29953
<TD align="right" class="coverageCount">
29957
<TD class="srcLine">
29958
<PRE class="srcLine"> <span class="comment"> we can detect status changes without synchronization.</span></PRE>
29965
<TD align="right" class="lineCount">
29969
<TD align="right" class="coverageCount">
29973
<TD class="srcLine">
29974
<PRE class="srcLine"> <span class="comment"> The other fields are never changed, and are</span></PRE>
29981
<TD align="right" class="lineCount">
29985
<TD align="right" class="coverageCount">
29989
<TD class="srcLine">
29990
<PRE class="srcLine"> <span class="comment"> marked as final.</span></PRE>
29997
<TD align="right" class="lineCount">
30001
<TD align="right" class="coverageCount">
30005
<TD class="srcLine">
30006
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
30013
<TD align="right" class="lineCount">
30017
<TD align="right" class="coverageCount">
30021
<TD class="srcLine">
30022
<PRE class="srcLine"> <span class="keyword">protected</span> final <span class="keyword">int</span> hash;</PRE>
30029
<TD align="right" class="lineCount">
30033
<TD align="right" class="coverageCount">
30037
<TD class="srcLine">
30038
<PRE class="srcLine"> <span class="keyword">protected</span> <span class="keyword">volatile</span> Object value;</PRE>
30045
<TD align="right" class="lineCount">
30049
<TD align="right" class="coverageCount">
30053
<TD class="srcLine">
30054
<PRE class="srcLine"> </PRE>
30061
<TD align="right" class="lineCountHilight">
30065
<TD align="right" class="lineCountHilight">
30066
<A title="Line 1845: method entered 352 times."> 352</A>
30069
<TD class="srcLine">
30070
<A title="Line 1845: method entered 352 times."><PRE class="srcLine"> Entry(<span class="keyword">int</span> hash, Object key, Object value, Entry next) {</PRE></A>
30077
<TD align="right" class="lineCountHilight">
30081
<TD align="right" class="lineCountHilight">
30082
<A title="Line 1846: statement executed 352 times."> 352</A>
30085
<TD class="srcLine">
30086
<A title="Line 1846: statement executed 352 times."><PRE class="srcLine"> <span class="keyword">this</span>.hash = hash;</PRE></A>
30093
<TD align="right" class="lineCountHilight">
30097
<TD align="right" class="lineCountHilight">
30098
<A title="Line 1847: statement executed 352 times."> 352</A>
30101
<TD class="srcLine">
30102
<A title="Line 1847: statement executed 352 times."><PRE class="srcLine"> <span class="keyword">this</span>.key = key;</PRE></A>
30109
<TD align="right" class="lineCountHilight">
30113
<TD align="right" class="lineCountHilight">
30114
<A title="Line 1848: statement executed 352 times."> 352</A>
30117
<TD class="srcLine">
30118
<A title="Line 1848: statement executed 352 times."><PRE class="srcLine"> <span class="keyword">this</span>.next = next;</PRE></A>
30125
<TD align="right" class="lineCountHilight">
30129
<TD align="right" class="lineCountHilight">
30130
<A title="Line 1849: statement executed 352 times."> 352</A>
30133
<TD class="srcLine">
30134
<A title="Line 1849: statement executed 352 times."><PRE class="srcLine"> <span class="keyword">this</span>.value = value;</PRE></A>
30141
<TD align="right" class="lineCount">
30145
<TD align="right" class="coverageCount">
30149
<TD class="srcLine">
30150
<PRE class="srcLine"> }</PRE>
30157
<TD align="right" class="lineCount">
30161
<TD align="right" class="coverageCount">
30165
<TD class="srcLine">
30166
<PRE class="srcLine"> </PRE>
30173
<TD align="right" class="lineCount">
30177
<TD align="right" class="coverageCount">
30181
<TD class="srcLine">
30182
<PRE class="srcLine"> <span class="comment">// Map.Entry Ops</span></PRE>
30189
<TD align="right" class="lineCountHilight">
30193
<TD align="right" class="coverageCountHilight">
30194
<A title="Line 1853: method not entered."> 0</A>
30197
<TD class="srcHilight">
30198
<SPAN class="srcHilight">
30199
<A title="Line 1853: method not entered."><PRE class="srcLine"> <span class="keyword">public</span> Object getKey() {</PRE></A>
30207
<TD align="right" class="lineCountHilight">
30211
<TD align="right" class="coverageCountHilight">
30212
<A title="Line 1854: statement not executed."> 0</A>
30215
<TD class="srcHilight">
30216
<SPAN class="srcHilight">
30217
<A title="Line 1854: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> key;</PRE></A>
30225
<TD align="right" class="lineCount">
30229
<TD align="right" class="coverageCount">
30233
<TD class="srcLine">
30234
<PRE class="srcLine"> }</PRE>
30241
<TD align="right" class="lineCount">
30245
<TD align="right" class="coverageCount">
30249
<TD class="srcLine">
30250
<PRE class="srcLine"> </PRE>
30257
<TD align="right" class="lineCount">
30261
<TD align="right" class="coverageCount">
30265
<TD class="srcLine">
30266
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
30273
<TD align="right" class="lineCount">
30277
<TD align="right" class="coverageCount">
30281
<TD class="srcLine">
30282
<PRE class="srcLine"> <span class="comment"> * Set the value of this entry.</span></PRE>
30289
<TD align="right" class="lineCount">
30293
<TD align="right" class="coverageCount">
30297
<TD class="srcLine">
30298
<PRE class="srcLine"> <span class="comment"> * Note: In an entrySet or</span></PRE>
30305
<TD align="right" class="lineCount">
30309
<TD align="right" class="coverageCount">
30313
<TD class="srcLine">
30314
<PRE class="srcLine"> <span class="comment"> * entrySet.iterator), unless the set or iterator is used under</span></PRE>
30321
<TD align="right" class="lineCount">
30325
<TD align="right" class="coverageCount">
30329
<TD class="srcLine">
30330
<PRE class="srcLine"> <span class="comment"> * synchronization of the table as a whole (or you can otherwise</span></PRE>
30337
<TD align="right" class="lineCount">
30341
<TD align="right" class="coverageCount">
30345
<TD class="srcLine">
30346
<PRE class="srcLine"> <span class="comment"> * guarantee lack of concurrent modification), <tt>setValue</tt></span></PRE>
30353
<TD align="right" class="lineCount">
30357
<TD align="right" class="coverageCount">
30361
<TD class="srcLine">
30362
<PRE class="srcLine"> <span class="comment"> * is not strictly guaranteed to actually replace the value field</span></PRE>
30369
<TD align="right" class="lineCount">
30373
<TD align="right" class="coverageCount">
30377
<TD class="srcLine">
30378
<PRE class="srcLine"> <span class="comment"> * obtained via the <tt>get</tt> operation of the underlying hash</span></PRE>
30385
<TD align="right" class="lineCount">
30389
<TD align="right" class="coverageCount">
30393
<TD class="srcLine">
30394
<PRE class="srcLine"> <span class="comment"> * table in multithreaded applications. If iterator-wide</span></PRE>
30401
<TD align="right" class="lineCount">
30405
<TD align="right" class="coverageCount">
30409
<TD class="srcLine">
30410
<PRE class="srcLine"> <span class="comment"> * synchronization is not used, and any other concurrent</span></PRE>
30417
<TD align="right" class="lineCount">
30421
<TD align="right" class="coverageCount">
30425
<TD class="srcLine">
30426
<PRE class="srcLine"> <span class="comment"> * <tt>put</tt> or <tt>remove</tt> operations occur, sometimes</span></PRE>
30433
<TD align="right" class="lineCount">
30437
<TD align="right" class="coverageCount">
30441
<TD class="srcLine">
30442
<PRE class="srcLine"> <span class="comment"> * even to <em>other</em> entries, then this change is not</span></PRE>
30449
<TD align="right" class="lineCount">
30453
<TD align="right" class="coverageCount">
30457
<TD class="srcLine">
30458
<PRE class="srcLine"> <span class="comment"> * guaranteed to be reflected in the hash table. (It might, or it</span></PRE>
30465
<TD align="right" class="lineCount">
30469
<TD align="right" class="coverageCount">
30473
<TD class="srcLine">
30474
<PRE class="srcLine"> <span class="comment"> * might not. There are no assurances either way.)</span></PRE>
30481
<TD align="right" class="lineCount">
30485
<TD align="right" class="coverageCount">
30489
<TD class="srcLine">
30490
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
30497
<TD align="right" class="lineCount">
30501
<TD align="right" class="coverageCount">
30505
<TD class="srcLine">
30506
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@param</span> value the new value.</span></PRE>
30513
<TD align="right" class="lineCount">
30517
<TD align="right" class="coverageCount">
30521
<TD class="srcLine">
30522
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@return</span> the previous value, or null if entry has been detectably</span></PRE>
30529
<TD align="right" class="lineCount">
30533
<TD align="right" class="coverageCount">
30537
<TD class="srcLine">
30538
<PRE class="srcLine"> <span class="comment"> * removed.</span></PRE>
30545
<TD align="right" class="lineCount">
30549
<TD align="right" class="coverageCount">
30553
<TD class="srcLine">
30554
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@exception</span> NullPointerException if the value is <code>null</code>.</span></PRE>
30561
<TD align="right" class="lineCount">
30565
<TD align="right" class="coverageCount">
30569
<TD class="srcLine">
30570
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
30577
<TD align="right" class="lineCount">
30581
<TD align="right" class="coverageCount">
30585
<TD class="srcLine">
30586
<PRE class="srcLine"> <span class="comment"> **/</span></PRE>
30593
<TD align="right" class="lineCountHilight">
30597
<TD align="right" class="coverageCountHilight">
30598
<A title="Line 1878: method not entered."> 0</A>
30601
<TD class="srcHilight">
30602
<SPAN class="srcHilight">
30603
<A title="Line 1878: method not entered."><PRE class="srcLine"> <span class="keyword">public</span> Object setValue(Object value) {</PRE></A>
30611
<TD align="right" class="lineCountHilight">
30615
<TD align="right" class="coverageCountHilight">
30616
<A title="Line 1879: statement not executed."> 0</A>
30619
<TD class="srcHilight">
30620
<SPAN class="srcHilight">
30621
<A title="Line 1879: statement not executed."><PRE class="srcLine"> <span class="keyword">if</span> (value == <span class="keyword">null</span>) {</PRE></A>
30629
<TD align="right" class="lineCountHilight">
30633
<TD align="right" class="coverageCountHilight">
30634
<A title="Line 1880: statement not executed."> 0</A>
30637
<TD class="srcHilight">
30638
<SPAN class="srcHilight">
30639
<A title="Line 1880: statement not executed."><PRE class="srcLine"> <span class="keyword">throw</span> <span class="keyword">new</span> NullPointerException();</PRE></A>
30647
<TD align="right" class="lineCount">
30651
<TD align="right" class="coverageCount">
30655
<TD class="srcLine">
30656
<PRE class="srcLine"> }</PRE>
30663
<TD align="right" class="lineCount">
30667
<TD align="right" class="coverageCount">
30671
<TD class="srcLine">
30672
<PRE class="srcLine"> </PRE>
30679
<TD align="right" class="lineCountHilight">
30683
<TD align="right" class="coverageCountHilight">
30684
<A title="Line 1883: statement not executed."> 0</A>
30687
<TD class="srcHilight">
30688
<SPAN class="srcHilight">
30689
<A title="Line 1883: statement not executed."><PRE class="srcLine"> Object oldValue = <span class="keyword">this</span>.value;</PRE></A>
30697
<TD align="right" class="lineCountHilight">
30701
<TD align="right" class="coverageCountHilight">
30702
<A title="Line 1884: statement not executed."> 0</A>
30705
<TD class="srcHilight">
30706
<SPAN class="srcHilight">
30707
<A title="Line 1884: statement not executed."><PRE class="srcLine"> <span class="keyword">this</span>.value = value;</PRE></A>
30715
<TD align="right" class="lineCount">
30719
<TD align="right" class="coverageCount">
30723
<TD class="srcLine">
30724
<PRE class="srcLine"> </PRE>
30731
<TD align="right" class="lineCountHilight">
30735
<TD align="right" class="coverageCountHilight">
30736
<A title="Line 1886: statement not executed."> 0</A>
30739
<TD class="srcHilight">
30740
<SPAN class="srcHilight">
30741
<A title="Line 1886: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> oldValue;</PRE></A>
30749
<TD align="right" class="lineCount">
30753
<TD align="right" class="coverageCount">
30757
<TD class="srcLine">
30758
<PRE class="srcLine"> }</PRE>
30765
<TD align="right" class="lineCount">
30769
<TD align="right" class="coverageCount">
30773
<TD class="srcLine">
30774
<PRE class="srcLine"> </PRE>
30781
<TD align="right" class="lineCount">
30785
<TD align="right" class="coverageCount">
30789
<TD class="srcLine">
30790
<PRE class="srcLine"> <span class="comment">/**</span></PRE>
30797
<TD align="right" class="lineCount">
30801
<TD align="right" class="coverageCount">
30805
<TD class="srcLine">
30806
<PRE class="srcLine"> <span class="comment"> * Get the value.</span></PRE>
30813
<TD align="right" class="lineCount">
30817
<TD align="right" class="coverageCount">
30821
<TD class="srcLine">
30822
<PRE class="srcLine"> <span class="comment"> * Note: In an entrySet or entrySet.iterator,</span></PRE>
30829
<TD align="right" class="lineCount">
30833
<TD align="right" class="coverageCount">
30837
<TD class="srcLine">
30838
<PRE class="srcLine"> <span class="comment"> * unless the set or iterator is used under synchronization of the</span></PRE>
30845
<TD align="right" class="lineCount">
30849
<TD align="right" class="coverageCount">
30853
<TD class="srcLine">
30854
<PRE class="srcLine"> <span class="comment"> * table as a whole (or you can otherwise guarantee lack of</span></PRE>
30861
<TD align="right" class="lineCount">
30865
<TD align="right" class="coverageCount">
30869
<TD class="srcLine">
30870
<PRE class="srcLine"> <span class="comment"> * concurrent modification), <tt>getValue</tt> <em>might</em></span></PRE>
30877
<TD align="right" class="lineCount">
30881
<TD align="right" class="coverageCount">
30885
<TD class="srcLine">
30886
<PRE class="srcLine"> <span class="comment"> * return null, reflecting the fact that the entry has been</span></PRE>
30893
<TD align="right" class="lineCount">
30897
<TD align="right" class="coverageCount">
30901
<TD class="srcLine">
30902
<PRE class="srcLine"> <span class="comment"> * concurrently removed. However, there are no assurances that</span></PRE>
30909
<TD align="right" class="lineCount">
30913
<TD align="right" class="coverageCount">
30917
<TD class="srcLine">
30918
<PRE class="srcLine"> <span class="comment"> * concurrent removals will be reflected using this method.</span></PRE>
30925
<TD align="right" class="lineCount">
30929
<TD align="right" class="coverageCount">
30933
<TD class="srcLine">
30934
<PRE class="srcLine"> <span class="comment"> *</span></PRE>
30941
<TD align="right" class="lineCount">
30945
<TD align="right" class="coverageCount">
30949
<TD class="srcLine">
30950
<PRE class="srcLine"> <span class="comment"> * <span class="javadoc">@return</span> the current value, or null if the entry has been</span></PRE>
30957
<TD align="right" class="lineCount">
30961
<TD align="right" class="coverageCount">
30965
<TD class="srcLine">
30966
<PRE class="srcLine"> <span class="comment"> * detectably removed.</span></PRE>
30973
<TD align="right" class="lineCount">
30977
<TD align="right" class="coverageCount">
30981
<TD class="srcLine">
30982
<PRE class="srcLine"> <span class="comment"> **/</span></PRE>
30989
<TD align="right" class="lineCountHilight">
30993
<TD align="right" class="coverageCountHilight">
30994
<A title="Line 1902: method not entered."> 0</A>
30997
<TD class="srcHilight">
30998
<SPAN class="srcHilight">
30999
<A title="Line 1902: method not entered."><PRE class="srcLine"> <span class="keyword">public</span> Object getValue() {</PRE></A>
31007
<TD align="right" class="lineCountHilight">
31011
<TD align="right" class="coverageCountHilight">
31012
<A title="Line 1903: statement not executed."> 0</A>
31015
<TD class="srcHilight">
31016
<SPAN class="srcHilight">
31017
<A title="Line 1903: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> value;</PRE></A>
31025
<TD align="right" class="lineCount">
31029
<TD align="right" class="coverageCount">
31033
<TD class="srcLine">
31034
<PRE class="srcLine"> }</PRE>
31041
<TD align="right" class="lineCount">
31045
<TD align="right" class="coverageCount">
31049
<TD class="srcLine">
31050
<PRE class="srcLine"> </PRE>
31057
<TD align="right" class="lineCountHilight">
31061
<TD align="right" class="coverageCountHilight">
31062
<A title="Line 1906: method not entered."> 0</A>
31065
<TD class="srcHilight">
31066
<SPAN class="srcHilight">
31067
<A title="Line 1906: method not entered."><PRE class="srcLine"> <span class="keyword">public</span> <span class="keyword">boolean</span> equals(Object o) {</PRE></A>
31075
<TD align="right" class="lineCountHilight">
31079
<TD align="right" class="coverageCountHilight">
31080
<A title="Line 1907: statement not executed."> 0</A>
31083
<TD class="srcHilight">
31084
<SPAN class="srcHilight">
31085
<A title="Line 1907: statement not executed."><PRE class="srcLine"> <span class="keyword">if</span> (!(o <span class="keyword">instanceof</span> Map.Entry)) {</PRE></A>
31093
<TD align="right" class="lineCountHilight">
31097
<TD align="right" class="coverageCountHilight">
31098
<A title="Line 1908: statement not executed."> 0</A>
31101
<TD class="srcHilight">
31102
<SPAN class="srcHilight">
31103
<A title="Line 1908: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> <span class="keyword">false</span>;</PRE></A>
31111
<TD align="right" class="lineCount">
31115
<TD align="right" class="coverageCount">
31119
<TD class="srcLine">
31120
<PRE class="srcLine"> }</PRE>
31127
<TD align="right" class="lineCount">
31131
<TD align="right" class="coverageCount">
31135
<TD class="srcLine">
31136
<PRE class="srcLine"> </PRE>
31143
<TD align="right" class="lineCountHilight">
31147
<TD align="right" class="coverageCountHilight">
31148
<A title="Line 1911: statement not executed."> 0</A>
31151
<TD class="srcHilight">
31152
<SPAN class="srcHilight">
31153
<A title="Line 1911: statement not executed."><PRE class="srcLine"> Map.Entry e = (Map.Entry) o;</PRE></A>
31161
<TD align="right" class="lineCount">
31165
<TD align="right" class="coverageCount">
31169
<TD class="srcLine">
31170
<PRE class="srcLine"> </PRE>
31177
<TD align="right" class="lineCountHilight">
31181
<TD align="right" class="coverageCountHilight">
31182
<A title="Line 1913: statement not executed."> 0</A>
31185
<TD class="srcHilight">
31186
<SPAN class="srcHilight">
31187
<A title="Line 1913: statement not executed."><PRE class="srcLine"> <span class="keyword">if</span> (!key.equals(e.getKey())) {</PRE></A>
31195
<TD align="right" class="lineCountHilight">
31199
<TD align="right" class="coverageCountHilight">
31200
<A title="Line 1914: statement not executed."> 0</A>
31203
<TD class="srcHilight">
31204
<SPAN class="srcHilight">
31205
<A title="Line 1914: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> <span class="keyword">false</span>;</PRE></A>
31213
<TD align="right" class="lineCount">
31217
<TD align="right" class="coverageCount">
31221
<TD class="srcLine">
31222
<PRE class="srcLine"> }</PRE>
31229
<TD align="right" class="lineCount">
31233
<TD align="right" class="coverageCount">
31237
<TD class="srcLine">
31238
<PRE class="srcLine"> </PRE>
31245
<TD align="right" class="lineCountHilight">
31249
<TD align="right" class="coverageCountHilight">
31250
<A title="Line 1917: statement not executed."> 0</A>
31253
<TD class="srcHilight">
31254
<SPAN class="srcHilight">
31255
<A title="Line 1917: statement not executed."><PRE class="srcLine"> Object v = value;</PRE></A>
31263
<TD align="right" class="lineCount">
31267
<TD align="right" class="coverageCount">
31271
<TD class="srcLine">
31272
<PRE class="srcLine"> </PRE>
31279
<TD align="right" class="lineCountHilight">
31283
<TD align="right" class="coverageCountHilight">
31284
<A title="Line 1919: statement not executed."> 0</A>
31287
<TD class="srcHilight">
31288
<SPAN class="srcHilight">
31289
<A title="Line 1919: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> (v == <span class="keyword">null</span>) ? (e.getValue() == <span class="keyword">null</span>) : v.equals(e.getValue());</PRE></A>
31297
<TD align="right" class="lineCount">
31301
<TD align="right" class="coverageCount">
31305
<TD class="srcLine">
31306
<PRE class="srcLine"> }</PRE>
31313
<TD align="right" class="lineCount">
31317
<TD align="right" class="coverageCount">
31321
<TD class="srcLine">
31322
<PRE class="srcLine"> </PRE>
31329
<TD align="right" class="lineCountHilight">
31333
<TD align="right" class="coverageCountHilight">
31334
<A title="Line 1922: method not entered."> 0</A>
31337
<TD class="srcHilight">
31338
<SPAN class="srcHilight">
31339
<A title="Line 1922: method not entered."><PRE class="srcLine"> <span class="keyword">public</span> <span class="keyword">int</span> hashCode() {</PRE></A>
31347
<TD align="right" class="lineCountHilight">
31351
<TD align="right" class="coverageCountHilight">
31352
<A title="Line 1923: statement not executed."> 0</A>
31355
<TD class="srcHilight">
31356
<SPAN class="srcHilight">
31357
<A title="Line 1923: statement not executed."><PRE class="srcLine"> Object v = value;</PRE></A>
31365
<TD align="right" class="lineCount">
31369
<TD align="right" class="coverageCount">
31373
<TD class="srcLine">
31374
<PRE class="srcLine"> </PRE>
31381
<TD align="right" class="lineCountHilight">
31385
<TD align="right" class="coverageCountHilight">
31386
<A title="Line 1925: statement not executed."> 0</A>
31389
<TD class="srcHilight">
31390
<SPAN class="srcHilight">
31391
<A title="Line 1925: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> hash ^ ((v == <span class="keyword">null</span>) ? 0 : v.hashCode());</PRE></A>
31399
<TD align="right" class="lineCount">
31403
<TD align="right" class="coverageCount">
31407
<TD class="srcLine">
31408
<PRE class="srcLine"> }</PRE>
31415
<TD align="right" class="lineCount">
31419
<TD align="right" class="coverageCount">
31423
<TD class="srcLine">
31424
<PRE class="srcLine"> </PRE>
31431
<TD align="right" class="lineCountHilight">
31435
<TD align="right" class="coverageCountHilight">
31436
<A title="Line 1928: method not entered."> 0</A>
31439
<TD class="srcHilight">
31440
<SPAN class="srcHilight">
31441
<A title="Line 1928: method not entered."><PRE class="srcLine"> <span class="keyword">public</span> String toString() {</PRE></A>
31449
<TD align="right" class="lineCountHilight">
31453
<TD align="right" class="coverageCountHilight">
31454
<A title="Line 1929: statement not executed."> 0</A>
31457
<TD class="srcHilight">
31458
<SPAN class="srcHilight">
31459
<A title="Line 1929: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> key + <span class="string">"="</span> + value;</PRE></A>
31467
<TD align="right" class="lineCount">
31471
<TD align="right" class="coverageCount">
31475
<TD class="srcLine">
31476
<PRE class="srcLine"> }</PRE>
31483
<TD align="right" class="lineCount">
31487
<TD align="right" class="coverageCount">
31491
<TD class="srcLine">
31492
<PRE class="srcLine"> </PRE>
31499
<TD align="right" class="lineCountHilight">
31503
<TD align="right" class="coverageCountHilight">
31504
<A title="Line 1932: method not entered."> 0</A>
31507
<TD class="srcHilight">
31508
<SPAN class="srcHilight">
31509
<A title="Line 1932: method not entered."><PRE class="srcLine"> <span class="keyword">protected</span> Object clone() {</PRE></A>
31517
<TD align="right" class="lineCountHilight">
31521
<TD align="right" class="coverageCountHilight">
31522
<A title="Line 1933: statement not executed."> 0</A>
31525
<TD class="srcHilight">
31526
<SPAN class="srcHilight">
31527
<A title="Line 1933: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> <span class="keyword">new</span> Entry(hash, key, value, ((next == <span class="keyword">null</span>) ? <span class="keyword">null</span> : (Entry) next.clone()));</PRE></A>
31535
<TD align="right" class="lineCount">
31539
<TD align="right" class="coverageCount">
31543
<TD class="srcLine">
31544
<PRE class="srcLine"> }</PRE>
31551
<TD align="right" class="lineCount">
31555
<TD align="right" class="coverageCount">
31559
<TD class="srcLine">
31560
<PRE class="srcLine"> }</PRE>
31567
<TD align="right" class="lineCount">
31571
<TD align="right" class="coverageCount">
31575
<TD class="srcLine">
31576
<PRE class="srcLine"> </PRE>
31583
<TD align="right" class="lineCount">
31584
<A name="HashIterator"> 1937</A>
31587
<TD align="right" class="coverageCount">
31591
<TD class="srcLineClassStart">
31592
<PRE class="srcLine"> <span class="keyword">protected</span> <span class="keyword">class</span> HashIterator <span class="keyword">implements</span> Iterator, Enumeration {</PRE>
31599
<TD align="right" class="lineCount">
31603
<TD align="right" class="coverageCount">
31607
<TD class="srcLine">
31608
<PRE class="srcLine"> <span class="keyword">protected</span> final Entry[] tab; <span class="comment">// snapshot of table</span></PRE>
31615
<TD align="right" class="lineCount">
31619
<TD align="right" class="coverageCount">
31623
<TD class="srcLine">
31624
<PRE class="srcLine"> <span class="keyword">protected</span> Entry entry = <span class="keyword">null</span>; <span class="comment">// current node of slot</span></PRE>
31631
<TD align="right" class="lineCount">
31635
<TD align="right" class="coverageCount">
31639
<TD class="srcLine">
31640
<PRE class="srcLine"> <span class="keyword">protected</span> Entry lastReturned = <span class="keyword">null</span>; <span class="comment">// last node returned by next</span></PRE>
31647
<TD align="right" class="lineCount">
31651
<TD align="right" class="coverageCount">
31655
<TD class="srcLine">
31656
<PRE class="srcLine"> <span class="keyword">protected</span> Object currentKey; <span class="comment">// key for current node</span></PRE>
31663
<TD align="right" class="lineCount">
31667
<TD align="right" class="coverageCount">
31671
<TD class="srcLine">
31672
<PRE class="srcLine"> <span class="keyword">protected</span> Object currentValue; <span class="comment">// value for current node</span></PRE>
31679
<TD align="right" class="lineCount">
31683
<TD align="right" class="coverageCount">
31687
<TD class="srcLine">
31688
<PRE class="srcLine"> <span class="keyword">protected</span> <span class="keyword">int</span> index; <span class="comment">// current slot</span></PRE>
31695
<TD align="right" class="lineCount">
31699
<TD align="right" class="coverageCount">
31703
<TD class="srcLine">
31704
<PRE class="srcLine"> </PRE>
31711
<TD align="right" class="lineCountHilight">
31715
<TD align="right" class="lineCountHilight">
31716
<A title="Line 1945: method entered 36 times."> 36</A>
31719
<TD class="srcLine">
31720
<A title="Line 1945: method entered 36 times."><PRE class="srcLine"> <span class="keyword">protected</span> HashIterator() {</PRE></A>
31727
<TD align="right" class="lineCountHilight">
31731
<TD align="right" class="lineCountHilight">
31732
<A title="Line 1946: statement executed 36 times."> 36</A>
31735
<TD class="srcLine">
31736
<A title="Line 1946: statement executed 36 times."><PRE class="srcLine"> tab = AbstractConcurrentReadCache.<span class="keyword">this</span>.getTableForReading();</PRE></A>
31743
<TD align="right" class="lineCountHilight">
31747
<TD align="right" class="lineCountHilight">
31748
<A title="Line 1947: statement executed 36 times."> 36</A>
31751
<TD class="srcLine">
31752
<A title="Line 1947: statement executed 36 times."><PRE class="srcLine"> index = tab.length - 1;</PRE></A>
31759
<TD align="right" class="lineCount">
31763
<TD align="right" class="coverageCount">
31767
<TD class="srcLine">
31768
<PRE class="srcLine"> }</PRE>
31775
<TD align="right" class="lineCount">
31779
<TD align="right" class="coverageCount">
31783
<TD class="srcLine">
31784
<PRE class="srcLine"> </PRE>
31791
<TD align="right" class="lineCountHilight">
31795
<TD align="right" class="coverageCountHilight">
31796
<A title="Line 1950: method not entered."> 0</A>
31799
<TD class="srcHilight">
31800
<SPAN class="srcHilight">
31801
<A title="Line 1950: method not entered."><PRE class="srcLine"> <span class="keyword">public</span> <span class="keyword">boolean</span> hasMoreElements() {</PRE></A>
31809
<TD align="right" class="lineCountHilight">
31813
<TD align="right" class="coverageCountHilight">
31814
<A title="Line 1951: statement not executed."> 0</A>
31817
<TD class="srcHilight">
31818
<SPAN class="srcHilight">
31819
<A title="Line 1951: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> hasNext();</PRE></A>
31827
<TD align="right" class="lineCount">
31831
<TD align="right" class="coverageCount">
31835
<TD class="srcLine">
31836
<PRE class="srcLine"> }</PRE>
31843
<TD align="right" class="lineCount">
31847
<TD align="right" class="coverageCount">
31851
<TD class="srcLine">
31852
<PRE class="srcLine"> </PRE>
31859
<TD align="right" class="lineCountHilight">
31863
<TD align="right" class="lineCountHilight">
31864
<A title="Line 1954: method entered 90 times."> 90</A>
31867
<TD class="srcLine">
31868
<A title="Line 1954: method entered 90 times."><PRE class="srcLine"> <span class="keyword">public</span> <span class="keyword">boolean</span> hasNext() {</PRE></A>
31875
<TD align="right" class="lineCount">
31879
<TD align="right" class="coverageCount">
31883
<TD class="srcLine">
31884
<PRE class="srcLine"> <span class="comment">/*</span></PRE>
31891
<TD align="right" class="lineCount">
31895
<TD align="right" class="coverageCount">
31899
<TD class="srcLine">
31900
<PRE class="srcLine"> <span class="comment"> currentkey and currentValue are set here to ensure that next()</span></PRE>
31907
<TD align="right" class="lineCount">
31911
<TD align="right" class="coverageCount">
31915
<TD class="srcLine">
31916
<PRE class="srcLine"> <span class="comment"> returns normally if hasNext() returns true. This avoids</span></PRE>
31923
<TD align="right" class="lineCount">
31927
<TD align="right" class="coverageCount">
31931
<TD class="srcLine">
31932
<PRE class="srcLine"> <span class="comment"> surprises especially when final element is removed during</span></PRE>
31939
<TD align="right" class="lineCount">
31943
<TD align="right" class="coverageCount">
31947
<TD class="srcLine">
31948
<PRE class="srcLine"> <span class="comment"> traversal -- instead, we just ignore the removal during</span></PRE>
31955
<TD align="right" class="lineCount">
31959
<TD align="right" class="coverageCount">
31963
<TD class="srcLine">
31964
<PRE class="srcLine"> <span class="comment"> current traversal.</span></PRE>
31971
<TD align="right" class="lineCount">
31975
<TD align="right" class="coverageCount">
31979
<TD class="srcLine">
31980
<PRE class="srcLine"> <span class="comment"> */</span></PRE>
31987
<TD align="right" class="lineCountHilight">
31991
<TD align="right" class="lineCountHilight">
31992
<A title="Line 1962: statement executed 90 times."> 90</A>
31995
<TD class="srcLine">
31996
<A title="Line 1962: statement executed 90 times."><PRE class="srcLine"> <span class="keyword">for</span> (;;) {</PRE></A>
32003
<TD align="right" class="lineCountHilight">
32007
<TD align="right" class="lineCountHilight">
32008
<A title="Line 1963: statement executed 144 times."> 144</A>
32011
<TD class="srcLine">
32012
<A title="Line 1963: statement executed 144 times."><PRE class="srcLine"> <span class="keyword">if</span> (entry != <span class="keyword">null</span>) {</PRE></A>
32019
<TD align="right" class="lineCountHilight">
32023
<TD align="right" class="lineCountHilight">
32024
<A title="Line 1964: statement executed 54 times."> 54</A>
32027
<TD class="srcLine">
32028
<A title="Line 1964: statement executed 54 times."><PRE class="srcLine"> Object v = entry.value;</PRE></A>
32035
<TD align="right" class="lineCount">
32039
<TD align="right" class="coverageCount">
32043
<TD class="srcLine">
32044
<PRE class="srcLine"> </PRE>
32051
<TD align="right" class="lineCountHilight">
32055
<TD align="right" class="coverageCountHilight">
32056
<A title="Line 1966: expression evaluated to true 54 times, false 0 times."> 54</A>
32059
<TD class="srcHilight">
32060
<SPAN class="srcHilight">
32061
<A title="Line 1966: expression evaluated to true 54 times, false 0 times."><PRE class="srcLine"> <span class="keyword">if</span> (v != <span class="keyword">null</span>) {</PRE></A>
32069
<TD align="right" class="lineCountHilight">
32073
<TD align="right" class="lineCountHilight">
32074
<A title="Line 1967: statement executed 54 times."> 54</A>
32077
<TD class="srcLine">
32078
<A title="Line 1967: statement executed 54 times."><PRE class="srcLine"> currentKey = entry.key;</PRE></A>
32085
<TD align="right" class="lineCountHilight">
32089
<TD align="right" class="lineCountHilight">
32090
<A title="Line 1968: statement executed 54 times."> 54</A>
32093
<TD class="srcLine">
32094
<A title="Line 1968: statement executed 54 times."><PRE class="srcLine"> currentValue = v;</PRE></A>
32101
<TD align="right" class="lineCount">
32105
<TD align="right" class="coverageCount">
32109
<TD class="srcLine">
32110
<PRE class="srcLine"> </PRE>
32117
<TD align="right" class="lineCountHilight">
32121
<TD align="right" class="lineCountHilight">
32122
<A title="Line 1970: statement executed 54 times."> 54</A>
32125
<TD class="srcLine">
32126
<A title="Line 1970: statement executed 54 times."><PRE class="srcLine"> <span class="keyword">return</span> <span class="keyword">true</span>;</PRE></A>
32133
<TD align="right" class="lineCount">
32137
<TD align="right" class="coverageCount">
32141
<TD class="srcLine">
32142
<PRE class="srcLine"> } <span class="keyword">else</span> {</PRE>
32149
<TD align="right" class="lineCountHilight">
32153
<TD align="right" class="coverageCountHilight">
32154
<A title="Line 1972: statement not executed."> 0</A>
32157
<TD class="srcHilight">
32158
<SPAN class="srcHilight">
32159
<A title="Line 1972: statement not executed."><PRE class="srcLine"> entry = entry.next;</PRE></A>
32167
<TD align="right" class="lineCount">
32171
<TD align="right" class="coverageCount">
32175
<TD class="srcLine">
32176
<PRE class="srcLine"> }</PRE>
32183
<TD align="right" class="lineCount">
32187
<TD align="right" class="coverageCount">
32191
<TD class="srcLine">
32192
<PRE class="srcLine"> }</PRE>
32199
<TD align="right" class="lineCount">
32203
<TD align="right" class="coverageCount">
32207
<TD class="srcLine">
32208
<PRE class="srcLine"> </PRE>
32215
<TD align="right" class="lineCountHilight">
32219
<TD align="right" class="lineCountHilight">
32220
<A title="Line 1976: statement executed 90 times."> 90</A>
32223
<TD class="srcLine">
32224
<A title="Line 1976: statement executed 90 times."><PRE class="srcLine"> <span class="keyword">while</span> ((entry == <span class="keyword">null</span>) && (index >= 0)) {</PRE></A>
32231
<TD align="right" class="lineCountHilight">
32235
<TD align="right" class="lineCountHilight">
32236
<A title="Line 1977: statement executed 1152 times."> 1152</A>
32239
<TD class="srcLine">
32240
<A title="Line 1977: statement executed 1152 times."><PRE class="srcLine"> entry = tab[index--];</PRE></A>
32247
<TD align="right" class="lineCount">
32251
<TD align="right" class="coverageCount">
32255
<TD class="srcLine">
32256
<PRE class="srcLine"> }</PRE>
32263
<TD align="right" class="lineCount">
32267
<TD align="right" class="coverageCount">
32271
<TD class="srcLine">
32272
<PRE class="srcLine"> </PRE>
32279
<TD align="right" class="lineCountHilight">
32283
<TD align="right" class="lineCountHilight">
32284
<A title="Line 1980: statement executed 90 times."> 90</A>
32287
<TD class="srcLine">
32288
<A title="Line 1980: statement executed 90 times."><PRE class="srcLine"> <span class="keyword">if</span> (entry == <span class="keyword">null</span>) {</PRE></A>
32295
<TD align="right" class="lineCountHilight">
32299
<TD align="right" class="lineCountHilight">
32300
<A title="Line 1981: statement executed 36 times."> 36</A>
32303
<TD class="srcLine">
32304
<A title="Line 1981: statement executed 36 times."><PRE class="srcLine"> currentKey = currentValue = <span class="keyword">null</span>;</PRE></A>
32311
<TD align="right" class="lineCount">
32315
<TD align="right" class="coverageCount">
32319
<TD class="srcLine">
32320
<PRE class="srcLine"> </PRE>
32327
<TD align="right" class="lineCountHilight">
32331
<TD align="right" class="lineCountHilight">
32332
<A title="Line 1983: statement executed 36 times."> 36</A>
32335
<TD class="srcLine">
32336
<A title="Line 1983: statement executed 36 times."><PRE class="srcLine"> <span class="keyword">return</span> <span class="keyword">false</span>;</PRE></A>
32343
<TD align="right" class="lineCount">
32347
<TD align="right" class="coverageCount">
32351
<TD class="srcLine">
32352
<PRE class="srcLine"> }</PRE>
32359
<TD align="right" class="lineCount">
32363
<TD align="right" class="coverageCount">
32367
<TD class="srcLine">
32368
<PRE class="srcLine"> }</PRE>
32375
<TD align="right" class="lineCount">
32379
<TD align="right" class="coverageCount">
32383
<TD class="srcLine">
32384
<PRE class="srcLine"> }</PRE>
32391
<TD align="right" class="lineCount">
32395
<TD align="right" class="coverageCount">
32399
<TD class="srcLine">
32400
<PRE class="srcLine"> </PRE>
32407
<TD align="right" class="lineCountHilight">
32411
<TD align="right" class="lineCountHilight">
32412
<A title="Line 1988: method entered 54 times."> 54</A>
32415
<TD class="srcLine">
32416
<A title="Line 1988: method entered 54 times."><PRE class="srcLine"> <span class="keyword">public</span> Object next() {</PRE></A>
32423
<TD align="right" class="lineCountHilight">
32427
<TD align="right" class="coverageCountHilight">
32428
<A title="Line 1989: expression evaluated to true 0 times, false 54 times."> 54</A>
32431
<TD class="srcHilight">
32432
<SPAN class="srcHilight">
32433
<A title="Line 1989: expression evaluated to true 0 times, false 54 times."><PRE class="srcLine"> <span class="keyword">if</span> ((currentKey == <span class="keyword">null</span>) && !hasNext()) {</PRE></A>
32441
<TD align="right" class="lineCountHilight">
32445
<TD align="right" class="coverageCountHilight">
32446
<A title="Line 1990: statement not executed."> 0</A>
32449
<TD class="srcHilight">
32450
<SPAN class="srcHilight">
32451
<A title="Line 1990: statement not executed."><PRE class="srcLine"> <span class="keyword">throw</span> <span class="keyword">new</span> NoSuchElementException();</PRE></A>
32459
<TD align="right" class="lineCount">
32463
<TD align="right" class="coverageCount">
32467
<TD class="srcLine">
32468
<PRE class="srcLine"> }</PRE>
32475
<TD align="right" class="lineCount">
32479
<TD align="right" class="coverageCount">
32483
<TD class="srcLine">
32484
<PRE class="srcLine"> </PRE>
32491
<TD align="right" class="lineCountHilight">
32495
<TD align="right" class="lineCountHilight">
32496
<A title="Line 1993: statement executed 54 times."> 54</A>
32499
<TD class="srcLine">
32500
<A title="Line 1993: statement executed 54 times."><PRE class="srcLine"> Object result = returnValueOfNext();</PRE></A>
32507
<TD align="right" class="lineCountHilight">
32511
<TD align="right" class="lineCountHilight">
32512
<A title="Line 1994: statement executed 54 times."> 54</A>
32515
<TD class="srcLine">
32516
<A title="Line 1994: statement executed 54 times."><PRE class="srcLine"> lastReturned = entry;</PRE></A>
32523
<TD align="right" class="lineCountHilight">
32527
<TD align="right" class="lineCountHilight">
32528
<A title="Line 1995: statement executed 54 times."> 54</A>
32531
<TD class="srcLine">
32532
<A title="Line 1995: statement executed 54 times."><PRE class="srcLine"> currentKey = currentValue = <span class="keyword">null</span>;</PRE></A>
32539
<TD align="right" class="lineCountHilight">
32543
<TD align="right" class="lineCountHilight">
32544
<A title="Line 1996: statement executed 54 times."> 54</A>
32547
<TD class="srcLine">
32548
<A title="Line 1996: statement executed 54 times."><PRE class="srcLine"> entry = entry.next;</PRE></A>
32555
<TD align="right" class="lineCount">
32559
<TD align="right" class="coverageCount">
32563
<TD class="srcLine">
32564
<PRE class="srcLine"> </PRE>
32571
<TD align="right" class="lineCountHilight">
32575
<TD align="right" class="lineCountHilight">
32576
<A title="Line 1998: statement executed 54 times."> 54</A>
32579
<TD class="srcLine">
32580
<A title="Line 1998: statement executed 54 times."><PRE class="srcLine"> <span class="keyword">return</span> result;</PRE></A>
32587
<TD align="right" class="lineCount">
32591
<TD align="right" class="coverageCount">
32595
<TD class="srcLine">
32596
<PRE class="srcLine"> }</PRE>
32603
<TD align="right" class="lineCount">
32607
<TD align="right" class="coverageCount">
32611
<TD class="srcLine">
32612
<PRE class="srcLine"> </PRE>
32619
<TD align="right" class="lineCountHilight">
32623
<TD align="right" class="coverageCountHilight">
32624
<A title="Line 2001: method not entered."> 0</A>
32627
<TD class="srcHilight">
32628
<SPAN class="srcHilight">
32629
<A title="Line 2001: method not entered."><PRE class="srcLine"> <span class="keyword">public</span> Object nextElement() {</PRE></A>
32637
<TD align="right" class="lineCountHilight">
32641
<TD align="right" class="coverageCountHilight">
32642
<A title="Line 2002: statement not executed."> 0</A>
32645
<TD class="srcHilight">
32646
<SPAN class="srcHilight">
32647
<A title="Line 2002: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> next();</PRE></A>
32655
<TD align="right" class="lineCount">
32659
<TD align="right" class="coverageCount">
32663
<TD class="srcLine">
32664
<PRE class="srcLine"> }</PRE>
32671
<TD align="right" class="lineCount">
32675
<TD align="right" class="coverageCount">
32679
<TD class="srcLine">
32680
<PRE class="srcLine"> </PRE>
32687
<TD align="right" class="lineCountHilight">
32691
<TD align="right" class="coverageCountHilight">
32692
<A title="Line 2005: method not entered."> 0</A>
32695
<TD class="srcHilight">
32696
<SPAN class="srcHilight">
32697
<A title="Line 2005: method not entered."><PRE class="srcLine"> <span class="keyword">public</span> <span class="keyword">void</span> remove() {</PRE></A>
32705
<TD align="right" class="lineCountHilight">
32709
<TD align="right" class="coverageCountHilight">
32710
<A title="Line 2006: statement not executed."> 0</A>
32713
<TD class="srcHilight">
32714
<SPAN class="srcHilight">
32715
<A title="Line 2006: statement not executed."><PRE class="srcLine"> <span class="keyword">if</span> (lastReturned == <span class="keyword">null</span>) {</PRE></A>
32723
<TD align="right" class="lineCountHilight">
32727
<TD align="right" class="coverageCountHilight">
32728
<A title="Line 2007: statement not executed."> 0</A>
32731
<TD class="srcHilight">
32732
<SPAN class="srcHilight">
32733
<A title="Line 2007: statement not executed."><PRE class="srcLine"> <span class="keyword">throw</span> <span class="keyword">new</span> IllegalStateException();</PRE></A>
32741
<TD align="right" class="lineCount">
32745
<TD align="right" class="coverageCount">
32749
<TD class="srcLine">
32750
<PRE class="srcLine"> }</PRE>
32757
<TD align="right" class="lineCount">
32761
<TD align="right" class="coverageCount">
32765
<TD class="srcLine">
32766
<PRE class="srcLine"> </PRE>
32773
<TD align="right" class="lineCountHilight">
32777
<TD align="right" class="coverageCountHilight">
32778
<A title="Line 2010: statement not executed."> 0</A>
32781
<TD class="srcHilight">
32782
<SPAN class="srcHilight">
32783
<A title="Line 2010: statement not executed."><PRE class="srcLine"> AbstractConcurrentReadCache.<span class="keyword">this</span>.remove(lastReturned.key);</PRE></A>
32791
<TD align="right" class="lineCount">
32795
<TD align="right" class="coverageCount">
32799
<TD class="srcLine">
32800
<PRE class="srcLine"> }</PRE>
32807
<TD align="right" class="lineCount">
32811
<TD align="right" class="coverageCount">
32815
<TD class="srcLine">
32816
<PRE class="srcLine"> </PRE>
32823
<TD align="right" class="lineCountHilight">
32827
<TD align="right" class="coverageCountHilight">
32828
<A title="Line 2013: method not entered."> 0</A>
32831
<TD class="srcHilight">
32832
<SPAN class="srcHilight">
32833
<A title="Line 2013: method not entered."><PRE class="srcLine"> <span class="keyword">protected</span> Object returnValueOfNext() {</PRE></A>
32841
<TD align="right" class="lineCountHilight">
32845
<TD align="right" class="coverageCountHilight">
32846
<A title="Line 2014: statement not executed."> 0</A>
32849
<TD class="srcHilight">
32850
<SPAN class="srcHilight">
32851
<A title="Line 2014: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> entry;</PRE></A>
32859
<TD align="right" class="lineCount">
32863
<TD align="right" class="coverageCount">
32867
<TD class="srcLine">
32868
<PRE class="srcLine"> }</PRE>
32875
<TD align="right" class="lineCount">
32879
<TD align="right" class="coverageCount">
32883
<TD class="srcLine">
32884
<PRE class="srcLine"> }</PRE>
32891
<TD align="right" class="lineCount">
32895
<TD align="right" class="coverageCount">
32899
<TD class="srcLine">
32900
<PRE class="srcLine"> </PRE>
32907
<TD align="right" class="lineCount">
32908
<A name="KeyIterator"> 2018</A>
32911
<TD align="right" class="coverageCount">
32915
<TD class="srcLineClassStart">
32916
<PRE class="srcLine"> <span class="keyword">protected</span> <span class="keyword">class</span> KeyIterator <span class="keyword">extends</span> HashIterator {</PRE>
32923
<TD align="right" class="lineCountHilight">
32927
<TD align="right" class="lineCountHilight">
32928
<A title="Line 2019: method entered 54 times."> 54</A>
32931
<TD class="srcLine">
32932
<A title="Line 2019: method entered 54 times."><PRE class="srcLine"> <span class="keyword">protected</span> Object returnValueOfNext() {</PRE></A>
32939
<TD align="right" class="lineCountHilight">
32943
<TD align="right" class="lineCountHilight">
32944
<A title="Line 2020: statement executed 54 times."> 54</A>
32947
<TD class="srcLine">
32948
<A title="Line 2020: statement executed 54 times."><PRE class="srcLine"> <span class="keyword">return</span> currentKey;</PRE></A>
32955
<TD align="right" class="lineCount">
32959
<TD align="right" class="coverageCount">
32963
<TD class="srcLine">
32964
<PRE class="srcLine"> }</PRE>
32971
<TD align="right" class="lineCount">
32975
<TD align="right" class="coverageCount">
32979
<TD class="srcLine">
32980
<PRE class="srcLine"> }</PRE>
32987
<TD align="right" class="lineCount">
32991
<TD align="right" class="coverageCount">
32995
<TD class="srcLine">
32996
<PRE class="srcLine"> </PRE>
33003
<TD align="right" class="lineCount">
33004
<A name="ValueIterator"> 2024</A>
33007
<TD align="right" class="coverageCount">
33011
<TD class="srcLineClassStart">
33012
<PRE class="srcLine"> <span class="keyword">protected</span> <span class="keyword">class</span> ValueIterator <span class="keyword">extends</span> HashIterator {</PRE>
33019
<TD align="right" class="lineCountHilight">
33023
<TD align="right" class="coverageCountHilight">
33024
<A title="Line 2025: method not entered."> 0</A>
33027
<TD class="srcHilight">
33028
<SPAN class="srcHilight">
33029
<A title="Line 2025: method not entered."><PRE class="srcLine"> <span class="keyword">protected</span> Object returnValueOfNext() {</PRE></A>
33037
<TD align="right" class="lineCountHilight">
33041
<TD align="right" class="coverageCountHilight">
33042
<A title="Line 2026: statement not executed."> 0</A>
33045
<TD class="srcHilight">
33046
<SPAN class="srcHilight">
33047
<A title="Line 2026: statement not executed."><PRE class="srcLine"> <span class="keyword">return</span> currentValue;</PRE></A>
33055
<TD align="right" class="lineCount">
33059
<TD align="right" class="coverageCount">
33063
<TD class="srcLine">
33064
<PRE class="srcLine"> }</PRE>
33071
<TD align="right" class="lineCount">
33075
<TD align="right" class="coverageCount">
33079
<TD class="srcLine">
33080
<PRE class="srcLine"> }</PRE>
33087
<TD align="right" class="lineCount">
33091
<TD align="right" class="coverageCount">
33095
<TD class="srcLine">
33096
<PRE class="srcLine"> }</PRE>
33103
<TD align="right" class="lineCount">
33107
<TD align="right" class="coverageCount">
33111
<TD class="srcLine">
33112
<PRE class="srcLine"> </PRE>
33119
<TABLE width="100%">
33120
<TR><TD class="hbreak" colspan="6"> </TD></TR>
33121
<TR><TD class="footer" colspan="6">
33124
<td><a target="_new" href="http://www.thecortex.net/clover"><img alt="Clover" src="../../../../../img/logo.gif" border="0"></a></td><td nowrap><i>Report generated by </i><a target="_new" href="http://www.thecortex.net/clover">Clover v1.2.3</a><i><BR>do jan 22 2004 21:12:33 CET</i>.</td>
33125
<td> </td><td style="BORDER-LEFT: #9c9c9c 1px solid;"> </td><td>Open Source License registered to the OpenSymphony Project. This license of Clover is provided to support the development of OpenSymphony only. </td>