jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/stax/LazyEnvelopeStaxReader.java
changeset 28977 d7609b65606b
parent 28976 8c912c147654
parent 28344 722378bc599e
child 28978 8431abc709c0
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/stax/LazyEnvelopeStaxReader.java	Mon Jan 12 11:46:43 2015 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,359 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code 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.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.util.stax;
-
-import javax.xml.namespace.NamespaceContext;
-import javax.xml.namespace.QName;
-import javax.xml.soap.SOAPException;
-import javax.xml.stream.Location;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamReader;
-
-import org.w3c.dom.Node;
-
-import com.sun.xml.internal.messaging.saaj.soap.impl.BodyImpl;
-import com.sun.xml.internal.messaging.saaj.soap.impl.EnvelopeImpl;
-
-/**
- * "Hybrid" reader which
- * @author desagar
- *
- */
-public class LazyEnvelopeStaxReader extends com.sun.xml.internal.org.jvnet.staxex.util.DOMStreamReader {
-//    EnvelopeImpl env;
-    XMLStreamReader payloadReader = null;
-    boolean usePayloadReaderDelegate = false;
-    private QName bodyQName;
-
-    public LazyEnvelopeStaxReader(EnvelopeImpl env) throws SOAPException, XMLStreamException {
-        super(env);
-//        this.env = env;
-        bodyQName = new QName(env.getNamespaceURI(), "Body");
-        payloadReader = env.getStaxBridge().getPayloadReader();
-        int eventType = getEventType();
-        while (eventType != START_ELEMENT) {
-            eventType = nextTag();
-        }
-    }
-
-    public Object getProperty(String name) throws IllegalArgumentException {
-        if (usePayloadReaderDelegate) return payloadReader.getProperty(name);
-        return super.getProperty(name);
-    }
-
-    public int next() throws XMLStreamException {
-//        boolean previouslyUsingPayloadReader = usePayloadReaderDelegate;
-        //call checkReaderStatus to advance to payloadReader if needed
-        checkReaderStatus(true);
-
-        if (usePayloadReaderDelegate) return payloadReader.getEventType();
-
-        //if we just moved to payload reader, don't advance the pointer
-//        if (usePayloadReaderDelegate && !previouslyUsingPayloadReader) return payloadReader.getEventType();
-
-//        if (usePayloadReaderDelegate) return payloadReader.next();
-        return getEventType();
-    }
-
-    public void require(int type, String namespaceURI, String localName)
-            throws XMLStreamException {
-        if (usePayloadReaderDelegate) payloadReader.require(type, namespaceURI, localName);
-        else super.require(type, namespaceURI, localName);
-    }
-
-    public String getElementText() throws XMLStreamException {
-        if (usePayloadReaderDelegate) return payloadReader.getElementText();
-        return super.getElementText();
-    }
-
-    public int nextTag() throws XMLStreamException {
-        if (usePayloadReaderDelegate) return payloadReader.nextTag();
-        return super.nextTag();
-    }
-
-    public boolean hasNext() throws XMLStreamException {
-        checkReaderStatus(false);
-        boolean hasNext;
-        if (usePayloadReaderDelegate) {
-            hasNext = payloadReader.hasNext();
-        } else {
-            hasNext = super.hasNext();
-        }
-
-        /*if (!hasNext && payloadReader != null) {
-            usePayloadReaderDelegate = true;
-            hasNext = payloadReader.hasNext();
-        }*/
-        return hasNext;
-    }
-
-    private void checkReaderStatus(boolean advanceToNext) throws XMLStreamException {
-        //if we are using payloadReader, make sure it is not exhausted
-        //if it is, return to DOM based reader for remaining end elements (body and envelope)
-        if (usePayloadReaderDelegate) {
-            if (!payloadReader.hasNext()) {
-                usePayloadReaderDelegate = false;
-            }
-        } else if (START_ELEMENT == getEventType()) {
-            //if not on payload reader, check if we need to switch to payload reader
-
-            //if the current event is the SOAP body element start,
-            //and the body is lazy, switch to the payload reader
-            if (bodyQName.equals(getName())) {
-                //if we are just switching to payload reader, don't advance...payload reader
-                //will already be on the first payload element
-                usePayloadReaderDelegate = true;
-                advanceToNext = false;
-            }
-        }
-
-        if (advanceToNext) {
-            if (usePayloadReaderDelegate) {
-                payloadReader.next();
-            } else {
-                super.next();
-            }
-        }
-    }
-
-    public void close() throws XMLStreamException {
-        if (usePayloadReaderDelegate) payloadReader.close();
-        else super.close();
-    }
-
-    public String getNamespaceURI(String prefix) {
-        if (usePayloadReaderDelegate) return payloadReader.getNamespaceURI(prefix);
-        return super.getNamespaceURI(prefix);
-    }
-
-    public boolean isStartElement() {
-        if (usePayloadReaderDelegate) return payloadReader.isStartElement();
-        return super.isStartElement();
-    }
-
-    public boolean isEndElement() {
-        if (usePayloadReaderDelegate) return payloadReader.isEndElement();
-        return super.isEndElement();
-    }
-
-    public boolean isCharacters() {
-        if (usePayloadReaderDelegate) return payloadReader.isCharacters();
-        return super.isEndElement();
-    }
-
-    public boolean isWhiteSpace() {
-        if (usePayloadReaderDelegate) return payloadReader.isWhiteSpace();
-        return super.isWhiteSpace();
-    }
-
-    public String getAttributeValue(String namespaceURI, String localName) {
-        if (usePayloadReaderDelegate) return payloadReader.getAttributeValue(namespaceURI, localName);
-        return super.getAttributeValue(namespaceURI, localName);
-    }
-
-    public int getAttributeCount() {
-        if (usePayloadReaderDelegate) return payloadReader.getAttributeCount();
-        return super.getAttributeCount();
-    }
-
-    public QName getAttributeName(int index) {
-        if (usePayloadReaderDelegate) return payloadReader.getAttributeName(index);
-        return super.getAttributeName(index);
-    }
-
-    public String getAttributeNamespace(int index) {
-        if (usePayloadReaderDelegate) return payloadReader.getAttributeNamespace(index);
-        return super.getAttributeNamespace(index);
-    }
-
-    public String getAttributeLocalName(int index) {
-        if (usePayloadReaderDelegate) return payloadReader.getAttributeLocalName(index);
-        return super.getAttributeLocalName(index);
-    }
-
-    public String getAttributePrefix(int index) {
-        if (usePayloadReaderDelegate) return payloadReader.getAttributePrefix(index);
-        return super.getAttributePrefix(index);
-    }
-
-    public String getAttributeType(int index) {
-        if (usePayloadReaderDelegate) return payloadReader.getAttributeType(index);
-        return super.getAttributeType(index);
-    }
-
-    public String getAttributeValue(int index) {
-        if (usePayloadReaderDelegate) return payloadReader.getAttributeValue(index);
-        return super.getAttributeValue(index);
-    }
-
-    public boolean isAttributeSpecified(int index) {
-        if (usePayloadReaderDelegate) return payloadReader.isAttributeSpecified(index);
-        return super.isAttributeSpecified(index);
-    }
-
-    public int getNamespaceCount() {
-        if (usePayloadReaderDelegate) return payloadReader.getNamespaceCount();
-        return super.getNamespaceCount();
-    }
-
-    public String getNamespacePrefix(int index) {
-        if (usePayloadReaderDelegate) return payloadReader.getNamespacePrefix(index);
-        return super.getNamespacePrefix(index);
-    }
-
-    public String getNamespaceURI(int index) {
-        if (usePayloadReaderDelegate) return payloadReader.getNamespaceURI(index);
-        return super.getNamespaceURI(index);
-    }
-
-    public NamespaceContext getNamespaceContext() {
-        if (usePayloadReaderDelegate) return payloadReader.getNamespaceContext();
-        return super.getNamespaceContext();
-    }
-
-    public int getEventType() {
-        if (usePayloadReaderDelegate) return payloadReader.getEventType();
-        return super.getEventType();
-    }
-
-    public String getText() {
-        if (usePayloadReaderDelegate) return payloadReader.getText();
-        return super.getText();
-    }
-
-    public char[] getTextCharacters() {
-        if (usePayloadReaderDelegate) return payloadReader.getTextCharacters();
-        return super.getTextCharacters();
-    }
-
-    public int getTextCharacters(int sourceStart, char[] target,
-            int targetStart, int length) throws XMLStreamException {
-        if (usePayloadReaderDelegate) return payloadReader.getTextCharacters(sourceStart, target, targetStart,
-                length);
-        return super.getTextCharacters(sourceStart, target, targetStart, length);
-    }
-
-    public int getTextStart() {
-        if (usePayloadReaderDelegate) return payloadReader.getTextStart();
-        return super.getTextStart();
-    }
-
-    public int getTextLength() {
-        if (usePayloadReaderDelegate) return payloadReader.getTextLength();
-        return super.getTextLength();
-    }
-
-    public String getEncoding() {
-        if (usePayloadReaderDelegate) return payloadReader.getEncoding();
-        return super.getEncoding();
-    }
-
-    public boolean hasText() {
-        if (usePayloadReaderDelegate) return payloadReader.hasText();
-        return super.hasText();
-    }
-
-    public Location getLocation() {
-        if (usePayloadReaderDelegate) return payloadReader.getLocation();
-        return super.getLocation();
-    }
-
-    public QName getName() {
-        if (usePayloadReaderDelegate) return payloadReader.getName();
-        return super.getName();
-    }
-
-    public String getLocalName() {
-        if (usePayloadReaderDelegate) return payloadReader.getLocalName();
-        return super.getLocalName();
-    }
-
-    public boolean hasName() {
-        if (usePayloadReaderDelegate) return payloadReader.hasName();
-        return super.hasName();
-    }
-
-    public String getNamespaceURI() {
-        if (usePayloadReaderDelegate) return payloadReader.getNamespaceURI();
-        return super.getNamespaceURI();
-    }
-
-    public String getPrefix() {
-        if (usePayloadReaderDelegate) return payloadReader.getPrefix();
-        return super.getPrefix();
-    }
-
-    public String getVersion() {
-        if (usePayloadReaderDelegate) return payloadReader.getVersion();
-        return super.getVersion();
-    }
-
-    public boolean isStandalone() {
-        if (usePayloadReaderDelegate) return payloadReader.isStandalone();
-        return super.isStandalone();
-    }
-
-    public boolean standaloneSet() {
-        if (usePayloadReaderDelegate) return payloadReader.standaloneSet();
-        return super.standaloneSet();
-    }
-
-    public String getCharacterEncodingScheme() {
-        if (usePayloadReaderDelegate) return payloadReader.getCharacterEncodingScheme();
-        return super.getCharacterEncodingScheme();
-    }
-
-    public String getPITarget() {
-        if (usePayloadReaderDelegate) return payloadReader.getPITarget();
-        return super.getPITarget();
-    }
-
-    public String getPIData() {
-        if (usePayloadReaderDelegate) return payloadReader.getPIData();
-        return super.getPIData();
-    }
-
-    //make sure that message is not realized as a result of call
-    //to getFirstChild
-    protected Node getFirstChild(Node node) {
-        if (node instanceof BodyImpl) {
-            return ((BodyImpl) node).getFirstChildNoMaterialize();
-        } else {
-            return node.getFirstChild();
-        }
-    }
-
-    protected Node getNextSibling(Node node) {
-        if (node instanceof BodyImpl) {
-            //body is not expected to have a next sibling - even if it does
-            //we would have to materialize the node to retrieve it.
-            //Since we don't want to materialize it right now, just return null
-            return null;
-        }
-        return node.getNextSibling();
-    }
-
-}