KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > oracle > toplink > essentials > internal > identitymaps > IdentityMapKeyEnumeration


1 /*
2  * The contents of this file are subject to the terms
3  * of the Common Development and Distribution License
4  * (the "License"). You may not use this file except
5  * in compliance with the License.
6  *
7  * You can obtain a copy of the license at
8  * glassfish/bootstrap/legal/CDDLv1.0.txt or
9  * https://glassfish.dev.java.net/public/CDDLv1.0.html.
10  * See the License for the specific language governing
11  * permissions and limitations under the License.
12  *
13  * When distributing Covered Code, include this CDDL
14  * HEADER in each file and include the License file at
15  * glassfish/bootstrap/legal/CDDLv1.0.txt. If applicable,
16  * add the following below this CDDL HEADER, with the
17  * fields enclosed by brackets "[]" replaced with your
18  * own identifying information: Portions Copyright [yyyy]
19  * [name of copyright owner]
20  */

21 // Copyright (c) 1998, 2005, Oracle. All rights reserved.
22
package oracle.toplink.essentials.internal.identitymaps;
23
24 import java.util.*;
25
26 /**
27  * Used to allow iterating over a maps cache keys.
28  */

29 public class IdentityMapKeyEnumeration implements Enumeration {
30     protected FullIdentityMap map;
31     protected Enumeration cacheKeysEnum;
32     protected CacheKey nextKey;
33
34     public IdentityMapKeyEnumeration(FullIdentityMap map) {
35         this.map = map;
36         this.cacheKeysEnum = map.getCacheKeys().elements();
37     }
38
39     public boolean hasMoreElements() {
40         this.nextKey = getNextCacheKey();
41         return this.nextKey != null;
42     }
43
44     public Object JavaDoc nextElement() {
45         if (this.nextKey == null) {
46             throw new NoSuchElementException("IdentityMapKeyEnumeration nextElement");
47         }
48
49         // CR#... Must check the read lock to avoid
50
// returning half built objects.
51
this.nextKey.checkReadLock();
52         return this.nextKey;
53     }
54
55     protected CacheKey getNextCacheKey() {
56         CacheKey key = null;
57         while (cacheKeysEnum.hasMoreElements() && (key == null)) {
58             key = (CacheKey)cacheKeysEnum.nextElement();
59         }
60         return key;
61     }
62 }
63
Popular Tags