/*******************************************************************************
 * Copyright (c) 1998, 2013 Oracle and/or its affiliates. All rights reserved.
 * This program and the accompanying materials are made available under the 
 * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 
 * which accompanies this distribution. 
 * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
 * and the Eclipse Distribution License is available at 
 * http://www.eclipse.org/org/documents/edl-v10.php.
 *
 * Contributors:
 *     Oracle - initial API and implementation from Oracle TopLink
 ******************************************************************************/  
package org.eclipse.persistence.internal.identitymaps;

/**
 * Used to allow iterating over a map.
 */
public class IdentityMapEnumeration extends IdentityMapKeyEnumeration {
    public IdentityMapEnumeration(FullIdentityMap map) {
        super(map);
    }

    /**
     * Return the nextElement. It must be set to null so that subsequent calls will
     * actual get subsequent objects through the getNextCachedObject() logic.
     */
    public Object nextElement() {
        return ((CacheKey)super.nextElement()).getObject();
    }
}
