1:
37:
38: package ;
39:
40: import ;
41: import ;
42: import ;
43: import ;
44: import ;
45: import ;
46:
47:
52: public class XMLEventReaderImpl
53: implements XMLEventReader
54: {
55:
56: protected final XMLStreamReader reader;
57: protected final XMLEventAllocator allocator;
58: protected final String systemId;
59: protected XMLEvent peekEvent;
60:
61: protected XMLEventReaderImpl(XMLStreamReader reader,
62: XMLEventAllocator allocator,
63: String systemId)
64: {
65: this.reader = reader;
66: this.allocator = allocator;
67: this.systemId = systemId;
68: }
69:
70: public XMLEvent nextEvent()
71: throws XMLStreamException
72: {
73: XMLEvent ret = peek();
74: peekEvent = null;
75: return ret;
76: }
77:
78: public Object next()
79: {
80: try
81: {
82: return nextEvent();
83: }
84: catch (XMLStreamException e)
85: {
86: RuntimeException e2 = new RuntimeException();
87: e2.initCause(e);
88: throw e2;
89: }
90: }
91:
92: public boolean hasNext()
93: {
94: if (peekEvent != null)
95: return true;
96: try
97: {
98: return reader.hasNext();
99: }
100: catch (XMLStreamException e)
101: {
102: return false;
103: }
104: }
105:
106: public XMLEvent peek()
107: throws XMLStreamException
108: {
109: if (peekEvent != null)
110: return peekEvent;
111: if (!reader.hasNext())
112: return null;
113: reader.next();
114: peekEvent = allocator.allocate(reader);
115: return peekEvent;
116: }
117:
118: public String getElementText()
119: throws XMLStreamException
120: {
121: return reader.getElementText();
122: }
123:
124: public XMLEvent nextTag()
125: throws XMLStreamException
126: {
127: if (peekEvent != null)
128: {
129: int eventType = peekEvent.getEventType();
130: if (eventType == XMLStreamConstants.START_ELEMENT ||
131: eventType == XMLStreamConstants.END_ELEMENT)
132: return peekEvent;
133: else
134: peekEvent = null;
135: }
136: reader.nextTag();
137: return allocator.allocate(reader);
138: }
139:
140: public Object getProperty(String name)
141: throws IllegalArgumentException
142: {
143: return reader.getProperty(name);
144: }
145:
146: public void close()
147: throws XMLStreamException
148: {
149: reader.close();
150: }
151:
152: public void remove()
153: {
154: throw new UnsupportedOperationException();
155: }
156:
157: }