001    package railo.runtime.com;
002    
003    import java.util.Iterator;
004    
005    import com.jacob.com.EnumVariant;
006    
007    /**
008     * MUST this is a value iterator instead of a key iterator
009     * 
010     */
011    public final class COMKeyWrapperIterator implements Iterator {
012    
013        private EnumVariant enumVariant;
014        private COMObject wrapper;
015    
016        /**
017         * @param wrapper
018         */
019        public COMKeyWrapperIterator(COMObject wrapper) {
020            this.enumVariant=new EnumVariant(wrapper.getDispatch());
021            this.wrapper=wrapper;
022        }
023    
024        /**
025         * @see java.util.Iterator#remove()
026         */
027        public void remove() {
028            enumVariant.safeRelease();
029        }
030    
031        /**
032         * @see java.util.Iterator#hasNext()
033         */
034        public boolean hasNext() {
035            return enumVariant.hasMoreElements();
036        }
037    
038        /**
039         * @see java.util.Iterator#next()
040         */
041        public Object next() {
042            return COMUtil.toObject(wrapper,enumVariant.Next(),"",null);
043        }
044    }