001/* StreamReaderDelegate.java --
002   Copyright (C) 2005,2006,2009  Free Software Foundation, Inc.
003
004This file is part of GNU Classpath.
005
006GNU Classpath is free software; you can redistribute it and/or modify
007it under the terms of the GNU General Public License as published by
008the Free Software Foundation; either version 2, or (at your option)
009any later version.
010
011GNU Classpath is distributed in the hope that it will be useful, but
012WITHOUT ANY WARRANTY; without even the implied warranty of
013MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
014General Public License for more details.
015
016You should have received a copy of the GNU General Public License
017along with GNU Classpath; see the file COPYING.  If not, write to the
018Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
01902110-1301 USA.
020
021Linking this library statically or dynamically with other modules is
022making a combined work based on this library.  Thus, the terms and
023conditions of the GNU General Public License cover the whole
024combination.
025
026As a special exception, the copyright holders of this library give you
027permission to link this library with independent modules to produce an
028executable, regardless of the license terms of these independent
029modules, and to copy and distribute the resulting executable under
030terms of your choice, provided that you also meet, for each linked
031independent module, the terms and conditions of the license of that
032module.  An independent module is a module which is not derived from
033or based on this library.  If you modify this library, you may extend
034this exception to your version of the library, but you are not
035obligated to do so.  If you do not wish to do so, delete this
036exception statement from your version. */
037
038package javax.xml.stream.util;
039
040import javax.xml.namespace.NamespaceContext;
041import javax.xml.namespace.QName;
042import javax.xml.stream.Location;
043import javax.xml.stream.XMLStreamConstants;
044import javax.xml.stream.XMLStreamException;
045import javax.xml.stream.XMLStreamReader;
046
047/**
048 * Base class for XML stream reader filters.
049 */
050public class StreamReaderDelegate
051  implements XMLStreamReader, XMLStreamConstants
052{
053
054  private XMLStreamReader parent;
055
056  /**
057   * Constructs an empty filter with no parent set.
058   */
059  public StreamReaderDelegate()
060  {
061  }
062
063  /**
064   * Constructs an empty filter with the specfied parent.
065   */
066  public StreamReaderDelegate(XMLStreamReader reader)
067  {
068    parent = reader;
069  }
070
071  /**
072   * Sets the parent.
073   */
074  public void setParent(XMLStreamReader reader)
075  {
076    parent = reader;
077  }
078
079  /**
080   * Returns the parent.
081   */
082  public XMLStreamReader getParent()
083  {
084    return parent;
085  }
086
087  public int next()
088    throws XMLStreamException
089  {
090    if (parent != null)
091      return parent.next();
092    throw new XMLStreamException();
093  }
094
095  public int nextTag()
096    throws XMLStreamException
097  {
098    if (parent != null)
099      return parent.nextTag();
100    throw new XMLStreamException();
101  }
102
103  public String getElementText()
104    throws XMLStreamException
105  {
106    if (parent != null)
107      return parent.getElementText();
108    throw new XMLStreamException();
109  }
110
111  public void require(int type, String namespaceURI, String localName)
112    throws XMLStreamException
113  {
114    if (parent != null)
115      parent.require(type, namespaceURI, localName);
116  }
117
118  public boolean hasNext()
119    throws XMLStreamException
120  {
121    if (parent != null)
122      return parent.hasNext();
123    return false;
124  }
125
126  public void close()
127    throws XMLStreamException
128  {
129    if (parent != null)
130      parent.close();
131  }
132
133  public String getNamespaceURI(String prefix)
134  {
135    if (parent != null)
136      return parent.getNamespaceURI(prefix);
137    return null;
138  }
139
140  public NamespaceContext getNamespaceContext()
141  {
142    if (parent != null)
143      return parent.getNamespaceContext();
144    return null;
145  }
146
147  public boolean isStartElement()
148  {
149    if (parent != null)
150      return parent.isStartElement();
151    return false;
152  }
153
154  public boolean isEndElement()
155  {
156    if (parent != null)
157      return parent.isEndElement();
158    return false;
159  }
160
161  public boolean isCharacters()
162  {
163    if (parent != null)
164      return parent.isCharacters();
165    return false;
166  }
167
168  public boolean isWhiteSpace()
169  {
170    if (parent != null)
171      return parent.isWhiteSpace();
172    return false;
173  }
174
175  public String getAttributeValue(String namespaceUri, String localName)
176  {
177    if (parent != null)
178      return parent.getAttributeValue(namespaceUri, localName);
179    return null;
180  }
181
182  public int getAttributeCount()
183  {
184    if (parent != null)
185      return parent.getAttributeCount();
186    return 0;
187  }
188
189  public QName getAttributeName(int index)
190  {
191    if (parent != null)
192      return parent.getAttributeName(index);
193    return null;
194  }
195
196  public String getAttributePrefix(int index)
197  {
198    if (parent != null)
199      return parent.getAttributePrefix(index);
200    return null;
201  }
202
203  public String getAttributeNamespace(int index)
204  {
205    if (parent != null)
206      return parent.getAttributeNamespace(index);
207    return null;
208  }
209
210  public String getAttributeLocalName(int index)
211  {
212    if (parent != null)
213      return parent.getAttributeLocalName(index);
214    return null;
215  }
216
217  public String getAttributeType(int index)
218  {
219    if (parent != null)
220      return parent.getAttributeType(index);
221    return null;
222  }
223
224  public String getAttributeValue(int index)
225  {
226    if (parent != null)
227      return parent.getAttributeValue(index);
228    return null;
229  }
230
231  public boolean isAttributeSpecified(int index)
232  {
233    if (parent != null)
234      return parent.isAttributeSpecified(index);
235    return false;
236  }
237
238  public int getNamespaceCount()
239  {
240    if (parent != null)
241      return parent.getNamespaceCount();
242    return 0;
243  }
244
245  public String getNamespacePrefix(int index)
246  {
247    if (parent != null)
248      return parent.getNamespacePrefix(index);
249    return null;
250  }
251
252  public String getNamespaceURI(int index)
253  {
254    if (parent != null)
255      return parent.getNamespaceURI(index);
256    return null;
257  }
258
259  public int getEventType()
260  {
261    if (parent != null)
262      return parent.getEventType();
263    return 0;
264  }
265
266  public String getText()
267  {
268    if (parent != null)
269      return parent.getText();
270    return null;
271  }
272
273  public int getTextCharacters(int sourceStart, char[] target,
274                               int targetStart, int length)
275    throws XMLStreamException
276  {
277    if (parent != null)
278      return parent.getTextCharacters(sourceStart, target, targetStart, length);
279    return 0;
280  }
281
282  public char[] getTextCharacters()
283  {
284    if (parent != null)
285      return parent.getTextCharacters();
286    return null;
287  }
288
289  public int getTextStart()
290  {
291    if (parent != null)
292      return parent.getTextStart();
293    return 0;
294  }
295
296  public int getTextLength()
297  {
298    if (parent != null)
299      return parent.getTextLength();
300    return 0;
301  }
302
303  public String getEncoding()
304  {
305    if (parent != null)
306      return parent.getEncoding();
307    return null;
308  }
309
310  public boolean hasText()
311  {
312    if (parent != null)
313      return parent.hasText();
314    return false;
315  }
316
317  public Location getLocation()
318  {
319    if (parent != null)
320      return parent.getLocation();
321    return null;
322  }
323
324  public QName getName()
325  {
326    if (parent != null)
327      return parent.getName();
328    return null;
329  }
330
331  public String getLocalName()
332  {
333    if (parent != null)
334      return parent.getLocalName();
335    return null;
336  }
337
338  public boolean hasName()
339  {
340    if (parent != null)
341      return parent.hasName();
342    return false;
343  }
344
345  public String getNamespaceURI()
346  {
347    if (parent != null)
348      return parent.getNamespaceURI();
349    return null;
350  }
351
352  public String getPrefix()
353  {
354    if (parent != null)
355      return parent.getPrefix();
356    return null;
357  }
358
359  public String getVersion()
360  {
361    if (parent != null)
362      return parent.getVersion();
363    return null;
364  }
365
366  public boolean isStandalone()
367  {
368    if (parent != null)
369      return parent.isStandalone();
370    return false;
371  }
372
373  public boolean standaloneSet()
374  {
375    if (parent != null)
376      return parent.standaloneSet();
377    return false;
378  }
379
380  public String getCharacterEncodingScheme()
381  {
382    if (parent != null)
383      return parent.getCharacterEncodingScheme();
384    return null;
385  }
386
387  public String getPITarget()
388  {
389    if (parent != null)
390      return parent.getPITarget();
391    return null;
392  }
393
394  public String getPIData()
395  {
396    if (parent != null)
397      return parent.getPIData();
398    return null;
399  }
400
401  public Object getProperty(String name)
402  {
403    if (parent != null)
404      return parent.getProperty(name);
405    throw new IllegalArgumentException();
406  }
407
408}