001 /*
002 * Java GPX Library (jpx-3.1.0).
003 * Copyright (c) 2016-2023 Franz Wilhelmstötter
004 *
005 * Licensed under the Apache License, Version 2.0 (the "License");
006 * you may not use this file except in compliance with the License.
007 * You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 *
017 * Author:
018 * Franz Wilhelmstötter (franz.wilhelmstoetter@gmail.com)
019 */
020 package io.jenetics.jpx;
021
022 import static java.util.Objects.requireNonNull;
023
024 import javax.xml.namespace.NamespaceContext;
025 import javax.xml.namespace.QName;
026 import javax.xml.stream.Location;
027 import javax.xml.stream.XMLStreamException;
028 import javax.xml.stream.XMLStreamReader;
029
030 /**
031 * @author <a href="mailto:franz.wilhelmstoetter@gmail.com">Franz Wilhelmstötter</a>
032 * @version 1.3
033 * @since 1.3
034 */
035 class XMLStreamReaderAdapter implements XMLStreamReader, AutoCloseable {
036 private final XMLStreamReader _reader;
037
038 private boolean _consumed;
039
040 XMLStreamReaderAdapter(final XMLStreamReader reader) {
041 _reader = requireNonNull(reader);
042 }
043
044 void consumed() {
045 _consumed = true;
046 }
047
048 boolean safeNext() throws XMLStreamException {
049 final boolean result = hasNext();
050 try {
051 if (result && !_consumed) {
052 next();
053 }
054 } finally {
055 _consumed = false;
056 }
057 return result;
058 }
059
060 @Override
061 public Object getProperty(final String name) {
062 return _reader.getProperty(name);
063 }
064
065 @Override
066 public int next() throws XMLStreamException {
067 return _reader.next();
068 }
069
070 @Override
071 public void require(
072 final int type,
073 final String namespaceURI,
074 final String localName
075 )
076 throws XMLStreamException {
077 _reader.require(type, namespaceURI, localName);
078 }
079
080 @Override
081 public String getElementText() throws XMLStreamException {
082 return _reader.getElementText();
083 }
084
085 @Override
086 public int nextTag() throws XMLStreamException {
087 return _reader.nextTag();
088 }
089
090 @Override
091 public boolean hasNext() throws XMLStreamException {
092 return _reader.hasNext();
093 }
094
095 @Override
096 public void close() throws XMLStreamException {
097 _reader.close();
098 }
099
100 @Override
101 public String getNamespaceURI(final String prefix) {
102 return _reader.getNamespaceURI(prefix);
103 }
104
105 @Override
106 public boolean isStartElement() {
107 return _reader.isStartElement();
108 }
109
110 @Override
111 public boolean isEndElement() {
112 return _reader.isEndElement();
113 }
114
115 @Override
116 public boolean isCharacters() {
117 return _reader.isCharacters();
118 }
119
120 @Override
121 public boolean isWhiteSpace() {
122 return _reader.isWhiteSpace();
123 }
124
125 @Override
126 public String getAttributeValue(
127 final String namespaceURI,
128 final String localName
129 ) {
130 return _reader.getAttributeValue(namespaceURI, localName);
131 }
132
133 @Override
134 public int getAttributeCount() {
135 return _reader.getAttributeCount();
136 }
137
138 @Override
139 public QName getAttributeName(final int index) {
140 return _reader.getAttributeName(index);
141 }
142
143 @Override
144 public String getAttributeNamespace(final int index) {
145 return _reader.getAttributeNamespace(index);
146 }
147
148 @Override
149 public String getAttributeLocalName(final int index) {
150 return _reader.getAttributeLocalName(index);
151 }
152
153 @Override
154 public String getAttributePrefix(final int index) {
155 return _reader.getAttributePrefix(index);
156 }
157
158 @Override
159 public String getAttributeType(final int index) {
160 return _reader.getAttributeType(index);
161 }
162
163 @Override
164 public String getAttributeValue(final int index) {
165 return _reader.getAttributeValue(index);
166 }
167
168 @Override
169 public boolean isAttributeSpecified(final int index) {
170 return _reader.isAttributeSpecified(index);
171 }
172
173 @Override
174 public int getNamespaceCount() {
175 return _reader.getNamespaceCount();
176 }
177
178 @Override
179 public String getNamespacePrefix(final int index) {
180 return _reader.getNamespacePrefix(index);
181 }
182
183 @Override
184 public String getNamespaceURI(final int index) {
185 return _reader.getNamespaceURI(index);
186 }
187
188 @Override
189 public NamespaceContext getNamespaceContext() {
190 return _reader.getNamespaceContext();
191 }
192
193 @Override
194 public int getEventType() {
195 return _reader.getEventType();
196 }
197
198 @Override
199 public String getText() {
200 return _reader.getText();
201 }
202
203 @Override
204 public char[] getTextCharacters() {
205 return _reader.getTextCharacters();
206 }
207
208 @Override
209 public int getTextCharacters(
210 final int sourceStart,
211 final char[] target,
212 final int targetStart,
213 final int length
214 )
215 throws XMLStreamException
216 {
217 return _reader.getTextCharacters(sourceStart, target, targetStart, length);
218 }
219
220 @Override
221 public int getTextStart() {
222 return _reader.getTextStart();
223 }
224
225 @Override
226 public int getTextLength() {
227 return _reader.getTextLength();
228 }
229
230 @Override
231 public String getEncoding() {
232 return _reader.getEncoding();
233 }
234
235 @Override
236 public boolean hasText() {
237 return _reader.hasText();
238 }
239
240 @Override
241 public Location getLocation() {
242 return _reader.getLocation();
243 }
244
245 @Override
246 public QName getName() {
247 return _reader.getName();
248 }
249
250 @Override
251 public String getLocalName() {
252 return _reader.getLocalName();
253 }
254
255 @Override
256 public boolean hasName() {
257 return _reader.hasName();
258 }
259
260 @Override
261 public String getNamespaceURI() {
262 return _reader.getNamespaceURI();
263 }
264
265 @Override
266 public String getPrefix() {
267 return _reader.getPrefix();
268 }
269
270 @Override
271 public String getVersion() {
272 return _reader.getVersion();
273 }
274
275 @Override
276 public boolean isStandalone() {
277 return _reader.isStandalone();
278 }
279
280 @Override
281 public boolean standaloneSet() {
282 return _reader.standaloneSet();
283 }
284
285 @Override
286 public String getCharacterEncodingScheme() {
287 return _reader.getCharacterEncodingScheme();
288 }
289
290 @Override
291 public String getPITarget() {
292 return _reader.getPITarget();
293 }
294
295 @Override
296 public String getPIData() {
297 return _reader.getPIData();
298 }
299 }
|