001    /* ReaderDelegate.java -- 
002       Copyright (C) 2005,2006  Free Software Foundation, Inc.
003    
004    This file is part of GNU Classpath.
005    
006    GNU Classpath is free software; you can redistribute it and/or modify
007    it under the terms of the GNU General Public License as published by
008    the Free Software Foundation; either version 2, or (at your option)
009    any later version.
010    
011    GNU Classpath is distributed in the hope that it will be useful, but
012    WITHOUT ANY WARRANTY; without even the implied warranty of
013    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
014    General Public License for more details.
015    
016    You should have received a copy of the GNU General Public License
017    along with GNU Classpath; see the file COPYING.  If not, write to the
018    Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
019    02110-1301 USA.
020    
021    Linking this library statically or dynamically with other modules is
022    making a combined work based on this library.  Thus, the terms and
023    conditions of the GNU General Public License cover the whole
024    combination.
025    
026    As a special exception, the copyright holders of this library give you
027    permission to link this library with independent modules to produce an
028    executable, regardless of the license terms of these independent
029    modules, and to copy and distribute the resulting executable under
030    terms of your choice, provided that you also meet, for each linked
031    independent module, the terms and conditions of the license of that
032    module.  An independent module is a module which is not derived from
033    or based on this library.  If you modify this library, you may extend
034    this exception to your version of the library, but you are not
035    obligated to do so.  If you do not wish to do so, delete this
036    exception statement from your version. */
037    
038    package javax.xml.stream.util;
039    
040    import javax.xml.namespace.NamespaceContext;
041    import javax.xml.namespace.QName;
042    import javax.xml.stream.Location;
043    import javax.xml.stream.XMLStreamConstants;
044    import javax.xml.stream.XMLStreamException;
045    import javax.xml.stream.XMLStreamReader;
046    
047    /**
048     * Base class for XML stream reader filters.
049     */
050    public class ReaderDelegate
051      implements XMLStreamReader, XMLStreamConstants
052    {
053    
054      private XMLStreamReader parent;
055    
056      /**
057       * Constructs an empty filter with no parent set.
058       */
059      public ReaderDelegate()
060      {
061      }
062    
063      /**
064       * Constructs an empty filter with the specfied parent.
065       */
066      public ReaderDelegate(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    }
409