com.caucho.xml.stream.FilteredStreamReader Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of quercus Show documentation
Show all versions of quercus Show documentation
A PHP engine implemented in 100% Java
/*
* Copyright (c) 1998-2012 Caucho Technology -- all rights reserved
*
* This file is part of Resin(R) Open Source
*
* Each copy or derived work must preserve the copyright notice and this
* notice unmodified.
*
* Resin Open Source is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* Resin Open Source is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty
* of NON-INFRINGEMENT. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License
* along with Resin Open Source; if not, write to the
*
* Free Software Foundation, Inc.
* 59 Temple Place, Suite 330
* Boston, MA 02111-1307 USA
*
* @author Emil Ong
*/
package com.caucho.xml.stream;
import javax.xml.namespace.NamespaceContext;
import javax.xml.namespace.QName;
import javax.xml.stream.Location;
import javax.xml.stream.StreamFilter;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
class FilteredStreamReader implements XMLStreamReader {
private XMLStreamReader _reader;
private StreamFilter _filter;
public FilteredStreamReader(XMLStreamReader reader, StreamFilter filter)
throws XMLStreamException
{
_reader = reader;
_filter = filter;
}
public int nextTag()
throws XMLStreamException
{
while (_reader.hasNext()) {
_reader.nextTag();
if (_filter.accept(_reader))
break;
}
return _reader.getEventType();
}
public int next()
throws XMLStreamException
{
while (_reader.hasNext()) {
_reader.next();
if (_filter.accept(_reader))
break;
}
return _reader.getEventType();
}
public boolean hasNext() throws XMLStreamException
{
do {
// This is a hack to get the TCK to run.
// The TCK compares its stream versus ours and its stream
// throws away the END_DOCUMENT (even though its event reader
// does not!).
//
// XXX create a flag or property to disable this hack
if (_reader.getEventType() == XMLStreamConstants.END_DOCUMENT)
return false;
if (_filter.accept(_reader))
return true;
_reader.next();
}
while (_reader.hasNext());
return false;
}
public void close() throws XMLStreamException
{
_reader.close();
}
public int getAttributeCount()
{
return _reader.getAttributeCount();
}
public String getAttributeLocalName(int index)
{
return _reader.getAttributeLocalName(index);
}
public QName getAttributeName(int index)
{
return _reader.getAttributeName(index);
}
public String getAttributeNamespace(int index)
{
return _reader.getAttributeNamespace(index);
}
public String getAttributePrefix(int index)
{
return _reader.getAttributePrefix(index);
}
public String getAttributeType(int index)
{
return _reader.getAttributeType(index);
}
public String getAttributeValue(int index)
{
return _reader.getAttributeValue(index);
}
public String getAttributeValue(String namespaceURI, String localName)
{
return _reader.getAttributeValue(namespaceURI, localName);
}
public String getCharacterEncodingScheme()
{
return _reader.getCharacterEncodingScheme();
}
public String getElementText() throws XMLStreamException
{
return _reader.getElementText();
}
public String getEncoding()
{
return _reader.getEncoding();
}
public int getEventType()
{
return _reader.getEventType();
}
public String getLocalName()
{
return _reader.getLocalName();
}
public Location getLocation()
{
return _reader.getLocation();
}
public QName getName()
{
return _reader.getName();
}
public NamespaceContext getNamespaceContext()
{
return _reader.getNamespaceContext();
}
public int getNamespaceCount()
{
return _reader.getNamespaceCount();
}
public String getNamespacePrefix(int index)
{
return _reader.getNamespacePrefix(index);
}
public String getNamespaceURI()
{
return _reader.getNamespaceURI();
}
public String getNamespaceURI(int index)
{
return _reader.getNamespaceURI(index);
}
public String getNamespaceURI(String prefix)
{
return _reader.getNamespaceURI(prefix);
}
public String getPIData()
{
return _reader.getPIData();
}
public String getPITarget()
{
return _reader.getPITarget();
}
public String getPrefix()
{
return _reader.getPrefix();
}
public Object getProperty(String name) throws IllegalArgumentException
{
return _reader.getProperty(name);
}
public String getText()
{
return _reader.getText();
}
public char[] getTextCharacters()
{
return _reader.getTextCharacters();
}
public int getTextCharacters(int sourceStart, char[] target,
int targetStart, int length)
throws XMLStreamException
{
return _reader.getTextCharacters(sourceStart, target, targetStart, length);
}
public int getTextLength()
{
return _reader.getTextLength();
}
public int getTextStart()
{
return _reader.getTextStart();
}
public String getVersion()
{
return _reader.getVersion();
}
public boolean hasName()
{
return _reader.hasName();
}
public boolean hasText()
{
return _reader.hasText();
}
public boolean isAttributeSpecified(int index)
{
return _reader.isAttributeSpecified(index);
}
public boolean isCharacters()
{
return _reader.isCharacters();
}
public boolean isEndElement()
{
return _reader.isEndElement();
}
public boolean isStandalone()
{
return _reader.isStandalone();
}
public boolean isStartElement()
{
return _reader.isStartElement();
}
public boolean isWhiteSpace()
{
return _reader.isWhiteSpace();
}
public void require(int type, String namespaceURI, String localName)
throws XMLStreamException
{
_reader.require(type, namespaceURI, localName);
}
public boolean standaloneSet()
{
return _reader.standaloneSet();
}
}