001: /*
002: * $Id: ListEventReader.java,v 1.1 2004/07/14 22:58:58 cniles Exp $
003: *
004: * Copyright (c) 2004, Christian Niles, unit12.net
005: * All rights reserved.
006: *
007: * Redistribution and use in source and binary forms, with or without
008: * modification, are permitted provided that the following conditions are met:
009: *
010: * * Redistributions of source code must retain the above copyright
011: * notice, this list of conditions and the following disclaimer.
012: *
013: * * Redistributions in binary form must reproduce the above copyright
014: * notice, this list of conditions and the following disclaimer in the
015: * documentation and/or other materials provided with the distribution.
016: *
017: * * Neither the name of Christian Niles, Unit12, nor the names of its
018: * contributors may be used to endorse or promote products derived from
019: * this software without specific prior written permission.
020: *
021: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
022: * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
023: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
024: * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
025: * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
026: * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
027: * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
028: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
029: * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
030: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
031: * POSSIBILITY OF SUCH DAMAGE.
032: *
033: */
034: package javanet.staxutils.helpers;
035:
036: import java.util.List;
037: import java.util.NoSuchElementException;
038:
039: import javax.xml.stream.XMLEventReader;
040: import javax.xml.stream.XMLStreamException;
041: import javax.xml.stream.events.XMLEvent;
042:
043: import javanet.staxutils.BaseXMLEventReader;
044:
045: /**
046: * {@link XMLEventReader} that reads events from a {@link List}.
047: *
048: * @author Christian Niles
049: * @version $Revision: 1.1 $
050: */
051: public class ListEventReader extends BaseXMLEventReader {
052:
053: /** The index of the next event. */
054: private int nextEvent = 0;
055:
056: /** The {@link List} from which events are read. */
057: private List events;
058:
059: /**
060: * Constructs a <code>ListEventReader</code> that reads events from the
061: * provided {@link List}.
062: *
063: * @param events The {@link List} of events to read.
064: */
065: public ListEventReader(List events) {
066:
067: this .events = events;
068:
069: }
070:
071: public XMLEvent nextEvent() throws XMLStreamException {
072:
073: if (hasNext()) {
074:
075: XMLEvent event = (XMLEvent) events.get(nextEvent);
076: nextEvent++;
077: return event;
078:
079: } else {
080:
081: throw new NoSuchElementException("End of stream reached");
082:
083: }
084:
085: }
086:
087: public boolean hasNext() {
088:
089: return (nextEvent < events.size());
090:
091: }
092:
093: public XMLEvent peek() throws XMLStreamException {
094:
095: if (hasNext()) {
096:
097: return (XMLEvent) events.get(nextEvent);
098:
099: } else {
100:
101: return null;
102:
103: }
104:
105: }
106:
107: }
|