XMLStreamReaderAdapter.java
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 }