parent
a2de329db9
commit
a05c957d0e
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2011 the original author or authors.
|
||||
* Copyright 2002-2013 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -30,9 +30,9 @@ import javax.xml.stream.events.StartDocument;
|
|||
import javax.xml.stream.events.XMLEvent;
|
||||
|
||||
/**
|
||||
* Implementation of the {@link javax.xml.stream.XMLStreamReader} interface that wraps a {@link XMLEventReader}. Useful,
|
||||
* because the StAX {@link javax.xml.stream.XMLInputFactory} allows one to create a event reader from a stream reader,
|
||||
* but not vice-versa.
|
||||
* Implementation of the {@link javax.xml.stream.XMLStreamReader} interface that wraps a
|
||||
* {@link XMLEventReader}. Useful because the StAX {@link javax.xml.stream.XMLInputFactory}
|
||||
* allows one to create a event reader from a stream reader, but not vice-versa.
|
||||
*
|
||||
* @author Arjen Poutsma
|
||||
* @since 3.0
|
||||
|
|
@ -44,92 +44,19 @@ class XMLEventStreamReader extends AbstractXMLStreamReader {
|
|||
|
||||
private final XMLEventReader eventReader;
|
||||
|
||||
XMLEventStreamReader(XMLEventReader eventReader) throws XMLStreamException {
|
||||
|
||||
public XMLEventStreamReader(XMLEventReader eventReader) throws XMLStreamException {
|
||||
this.eventReader = eventReader;
|
||||
event = eventReader.nextEvent();
|
||||
this.event = eventReader.nextEvent();
|
||||
}
|
||||
|
||||
public boolean isStandalone() {
|
||||
if (event.isStartDocument()) {
|
||||
return ((StartDocument) event).isStandalone();
|
||||
}
|
||||
else {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
}
|
||||
|
||||
public String getVersion() {
|
||||
if (event.isStartDocument()) {
|
||||
return ((StartDocument) event).getVersion();
|
||||
}
|
||||
else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public int getTextStart() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public String getText() {
|
||||
if (event.isCharacters()) {
|
||||
return event.asCharacters().getData();
|
||||
}
|
||||
else if (event.getEventType() == XMLEvent.COMMENT) {
|
||||
return ((Comment) event).getText();
|
||||
}
|
||||
else {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
}
|
||||
|
||||
public String getPITarget() {
|
||||
if (event.isProcessingInstruction()) {
|
||||
return ((ProcessingInstruction) event).getTarget();
|
||||
}
|
||||
else {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
}
|
||||
|
||||
public String getPIData() {
|
||||
if (event.isProcessingInstruction()) {
|
||||
return ((ProcessingInstruction) event).getData();
|
||||
}
|
||||
else {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
}
|
||||
|
||||
public int getNamespaceCount() {
|
||||
Iterator namespaces;
|
||||
if (event.isStartElement()) {
|
||||
namespaces = event.asStartElement().getNamespaces();
|
||||
}
|
||||
else if (event.isEndElement()) {
|
||||
namespaces = event.asEndElement().getNamespaces();
|
||||
}
|
||||
else {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
return countIterator(namespaces);
|
||||
}
|
||||
|
||||
public NamespaceContext getNamespaceContext() {
|
||||
if (event.isStartElement()) {
|
||||
return event.asStartElement().getNamespaceContext();
|
||||
}
|
||||
else {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
}
|
||||
|
||||
public QName getName() {
|
||||
if (event.isStartElement()) {
|
||||
return event.asStartElement().getName();
|
||||
if (this.event.isStartElement()) {
|
||||
return this.event.asStartElement().getName();
|
||||
}
|
||||
else if (event.isEndElement()) {
|
||||
return event.asEndElement().getName();
|
||||
else if (this.event.isEndElement()) {
|
||||
return this.event.asEndElement().getName();
|
||||
}
|
||||
else {
|
||||
throw new IllegalStateException();
|
||||
|
|
@ -137,11 +64,42 @@ class XMLEventStreamReader extends AbstractXMLStreamReader {
|
|||
}
|
||||
|
||||
public Location getLocation() {
|
||||
return event.getLocation();
|
||||
return this.event.getLocation();
|
||||
}
|
||||
|
||||
public int getEventType() {
|
||||
return event.getEventType();
|
||||
return this.event.getEventType();
|
||||
}
|
||||
|
||||
public String getVersion() {
|
||||
if (this.event.isStartDocument()) {
|
||||
return ((StartDocument) this.event).getVersion();
|
||||
}
|
||||
else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public Object getProperty(String name) throws IllegalArgumentException {
|
||||
return this.eventReader.getProperty(name);
|
||||
}
|
||||
|
||||
public boolean isStandalone() {
|
||||
if (this.event.isStartDocument()) {
|
||||
return ((StartDocument) event).isStandalone();
|
||||
}
|
||||
else {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
}
|
||||
|
||||
public boolean standaloneSet() {
|
||||
if (this.event.isStartDocument()) {
|
||||
return ((StartDocument) this.event).standaloneSet();
|
||||
}
|
||||
else {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
}
|
||||
|
||||
public String getEncoding() {
|
||||
|
|
@ -152,16 +110,51 @@ class XMLEventStreamReader extends AbstractXMLStreamReader {
|
|||
return null;
|
||||
}
|
||||
|
||||
public int getAttributeCount() {
|
||||
if (!event.isStartElement()) {
|
||||
public String getPITarget() {
|
||||
if (this.event.isProcessingInstruction()) {
|
||||
return ((ProcessingInstruction) this.event).getTarget();
|
||||
}
|
||||
else {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
Iterator attributes = event.asStartElement().getAttributes();
|
||||
}
|
||||
|
||||
public String getPIData() {
|
||||
if (this.event.isProcessingInstruction()) {
|
||||
return ((ProcessingInstruction) this.event).getData();
|
||||
}
|
||||
else {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
}
|
||||
|
||||
public int getTextStart() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public String getText() {
|
||||
if (this.event.isCharacters()) {
|
||||
return event.asCharacters().getData();
|
||||
}
|
||||
else if (this.event.getEventType() == XMLEvent.COMMENT) {
|
||||
return ((Comment) this.event).getText();
|
||||
}
|
||||
else {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
public int getAttributeCount() {
|
||||
if (!this.event.isStartElement()) {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
Iterator attributes = this.event.asStartElement().getAttributes();
|
||||
return countIterator(attributes);
|
||||
}
|
||||
|
||||
public void close() throws XMLStreamException {
|
||||
eventReader.close();
|
||||
public boolean isAttributeSpecified(int index) {
|
||||
return getAttribute(index).isSpecified();
|
||||
}
|
||||
|
||||
public QName getAttributeName(int index) {
|
||||
|
|
@ -176,51 +169,13 @@ class XMLEventStreamReader extends AbstractXMLStreamReader {
|
|||
return getAttribute(index).getValue();
|
||||
}
|
||||
|
||||
public String getNamespacePrefix(int index) {
|
||||
return getNamespace(index).getPrefix();
|
||||
}
|
||||
|
||||
public String getNamespaceURI(int index) {
|
||||
return getNamespace(index).getNamespaceURI();
|
||||
}
|
||||
|
||||
public Object getProperty(String name) throws IllegalArgumentException {
|
||||
return eventReader.getProperty(name);
|
||||
}
|
||||
|
||||
public boolean isAttributeSpecified(int index) {
|
||||
return getAttribute(index).isSpecified();
|
||||
}
|
||||
|
||||
public int next() throws XMLStreamException {
|
||||
event = eventReader.nextEvent();
|
||||
return event.getEventType();
|
||||
}
|
||||
|
||||
public boolean standaloneSet() {
|
||||
if (event.isStartDocument()) {
|
||||
return ((StartDocument) event).standaloneSet();
|
||||
}
|
||||
else {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
}
|
||||
|
||||
private int countIterator(Iterator iterator) {
|
||||
int count = 0;
|
||||
while (iterator.hasNext()) {
|
||||
iterator.next();
|
||||
count++;
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
private Attribute getAttribute(int index) {
|
||||
if (!event.isStartElement()) {
|
||||
if (!this.event.isStartElement()) {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
int count = 0;
|
||||
Iterator attributes = event.asStartElement().getAttributes();
|
||||
Iterator attributes = this.event.asStartElement().getAttributes();
|
||||
while (attributes.hasNext()) {
|
||||
Attribute attribute = (Attribute) attributes.next();
|
||||
if (count == index) {
|
||||
|
|
@ -233,13 +188,46 @@ class XMLEventStreamReader extends AbstractXMLStreamReader {
|
|||
throw new IllegalArgumentException();
|
||||
}
|
||||
|
||||
public NamespaceContext getNamespaceContext() {
|
||||
if (this.event.isStartElement()) {
|
||||
return this.event.asStartElement().getNamespaceContext();
|
||||
}
|
||||
else {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
public int getNamespaceCount() {
|
||||
Iterator namespaces;
|
||||
if (this.event.isStartElement()) {
|
||||
namespaces = this.event.asStartElement().getNamespaces();
|
||||
}
|
||||
else if (this.event.isEndElement()) {
|
||||
namespaces = this.event.asEndElement().getNamespaces();
|
||||
}
|
||||
else {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
return countIterator(namespaces);
|
||||
}
|
||||
|
||||
public String getNamespacePrefix(int index) {
|
||||
return getNamespace(index).getPrefix();
|
||||
}
|
||||
|
||||
public String getNamespaceURI(int index) {
|
||||
return getNamespace(index).getNamespaceURI();
|
||||
}
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
private Namespace getNamespace(int index) {
|
||||
Iterator namespaces;
|
||||
if (event.isStartElement()) {
|
||||
namespaces = event.asStartElement().getNamespaces();
|
||||
if (this.event.isStartElement()) {
|
||||
namespaces = this.event.asStartElement().getNamespaces();
|
||||
}
|
||||
else if (event.isEndElement()) {
|
||||
namespaces = event.asEndElement().getNamespaces();
|
||||
else if (this.event.isEndElement()) {
|
||||
namespaces = this.event.asEndElement().getNamespaces();
|
||||
}
|
||||
else {
|
||||
throw new IllegalStateException();
|
||||
|
|
@ -256,4 +244,25 @@ class XMLEventStreamReader extends AbstractXMLStreamReader {
|
|||
}
|
||||
throw new IllegalArgumentException();
|
||||
}
|
||||
|
||||
public int next() throws XMLStreamException {
|
||||
this.event = this.eventReader.nextEvent();
|
||||
return this.event.getEventType();
|
||||
}
|
||||
|
||||
public void close() throws XMLStreamException {
|
||||
this.eventReader.close();
|
||||
}
|
||||
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
private static int countIterator(Iterator iterator) {
|
||||
int count = 0;
|
||||
while (iterator.hasNext()) {
|
||||
iterator.next();
|
||||
count++;
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue