blob: a229f90b09e43753fbd857ef936efcf8094fface [file] [log] [blame]
package org.apache.axis2.databinding.utils.reader;
import javax.xml.namespace.NamespaceContext;
import javax.xml.namespace.QName;
import javax.xml.stream.Location;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
/*
* Copyright 2004,2005 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
public class NullXMLStreamReader implements ADBXMLStreamReader {
private QName outerQName = null;
private static final int START_ELEMENT_STATE = 1;
private static final int END_ELEMENT_STATE = 2;
private static final QName NIL_QNAME = new QName("http://www.w3.org/2001/XMLSchema-instance","nil","xsi");
private static final String NIL_VALUE_TRUE ="true";
private int currentState = START_ELEMENT;
public NullXMLStreamReader(QName outerQName) {
this.outerQName = outerQName;
}
public Object getProperty(String key) throws IllegalArgumentException {
//since optimization is a global property
//we've to implement it everywhere
if (OPTIMIZATION_ENABLED.equals(key)){
return Boolean.TRUE;
}else{
return null;
}
}
public int next() throws XMLStreamException {
int returnEvent = START_DOCUMENT;
switch(currentState){
case START_ELEMENT_STATE:
currentState = END_ELEMENT_STATE;
returnEvent = END_ELEMENT;
break;
case END_ELEMENT_STATE:
throw new XMLStreamException("parser completed!");
}
return returnEvent;
}
public void require(int i, String string, String string1) throws XMLStreamException {
//nothing
}
public String getElementText() throws XMLStreamException {
return null;
}
public int nextTag() throws XMLStreamException {
throw new UnsupportedOperationException();
}
public boolean hasNext() throws XMLStreamException {
return (currentState!=END_ELEMENT_STATE);
}
public void close() throws XMLStreamException {
//do nothing
}
public String getNamespaceURI(String string) {
if (outerQName.getPrefix()!=null &&
outerQName.getPrefix().equals(string)){
return outerQName.getNamespaceURI();
}else{
return null;
}
}
public boolean isStartElement() {
return (currentState==START_ELEMENT_STATE);
}
public boolean isEndElement() {
return (currentState==END_ELEMENT_STATE);
}
public boolean isCharacters() {
return false;
}
public boolean isWhiteSpace() {
return false;
}
public String getAttributeValue(String string, String string1) {
if (string== null){//null namespace - ignore it
if (NIL_QNAME.getLocalPart().equals(string1)){
return NIL_VALUE_TRUE;
}
}
return null;
}
public int getAttributeCount() {
return 1;
}
public QName getAttributeName(int i) {
return (i==0)? NIL_QNAME:null;
}
public String getAttributeNamespace(int i) {
return (i==0)? NIL_QNAME.getNamespaceURI():null;
}
public String getAttributeLocalName(int i) {
return (i==0)? NIL_QNAME.getLocalPart():null;
}
public String getAttributePrefix(int i) {
return (i==0)? NIL_QNAME.getPrefix():null;
}
public String getAttributeType(int i) {
throw new UnsupportedOperationException();
}
public String getAttributeValue(int i) {
return (i==0)? NIL_VALUE_TRUE:null;
}
public boolean isAttributeSpecified(int i) {
return (i == 0);
}
public int getNamespaceCount() {
return 0;
}
public String getNamespacePrefix(int i) {
return null;
}
public String getNamespaceURI(int i) {
return null;
}
public NamespaceContext getNamespaceContext() {
throw new UnsupportedOperationException();
}
public int getEventType() {
int returnEvent = START_DOCUMENT;
switch(currentState){
case START_ELEMENT_STATE:
returnEvent = START_ELEMENT;
break;
case END_ELEMENT_STATE:
returnEvent = END_ELEMENT;
break;
}
return returnEvent;
}
public String getText() {
return null;
}
public char[] getTextCharacters() {
return new char[0]; //To change body of implemented methods use File | Settings | File Templates.
}
public int getTextCharacters(int i, char[] chars, int i1, int i2) throws XMLStreamException {
return 0;
}
public int getTextStart() {
return 0;
}
public int getTextLength() {
return 0;
}
public String getEncoding() {
return null;
}
public boolean hasText() {
return false;
}
public Location getLocation() {
return new Location(){
public int getLineNumber() {
return 0;
}
public int getColumnNumber() {
return 0;
}
public int getCharacterOffset() {
return 0;
}
public String getPublicId() {
return null;
}
public String getSystemId() {
return null;
}
};
}
public QName getName() {
return outerQName;
}
public String getLocalName() {
return outerQName.getLocalPart();
}
public boolean hasName() {
return true;
}
public String getNamespaceURI() {
return outerQName.getNamespaceURI();
}
public String getPrefix() {
return outerQName.getPrefix();
}
public String getVersion() {
throw new UnsupportedOperationException();
}
public boolean isStandalone() {
throw new UnsupportedOperationException();
}
public boolean standaloneSet() {
throw new UnsupportedOperationException();
}
public String getCharacterEncodingScheme() {
throw new UnsupportedOperationException();
}
public String getPITarget() {
throw new UnsupportedOperationException();
}
public String getPIData() {
throw new UnsupportedOperationException();
}
public boolean isDone() {
return (currentState==END_ELEMENT_STATE);
}
public void addNamespaceContext(NamespaceContext nsContext) {
//To change body of implemented methods use File | Settings | File Templates.
}
public void init() {
//To change body of implemented methods use File | Settings | File Templates.
}
}