< prev index next >

jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/stax/LazyEnvelopeStaxReader.java

Print this page


   1 /*
   2  * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any


  42  * @author desagar
  43  *
  44  */
  45 public class LazyEnvelopeStaxReader extends com.sun.xml.internal.org.jvnet.staxex.util.DOMStreamReader {
  46 //    EnvelopeImpl env;
  47     XMLStreamReader payloadReader = null;
  48     boolean usePayloadReaderDelegate = false;
  49     private QName bodyQName;
  50 
  51     public LazyEnvelopeStaxReader(EnvelopeImpl env) throws SOAPException, XMLStreamException {
  52         super(env);
  53 //        this.env = env;
  54         bodyQName = new QName(env.getNamespaceURI(), "Body");
  55         payloadReader = env.getStaxBridge().getPayloadReader();
  56         int eventType = getEventType();
  57         while (eventType != START_ELEMENT) {
  58             eventType = nextTag();
  59         }
  60     }
  61 

  62     public Object getProperty(String name) throws IllegalArgumentException {
  63         if (usePayloadReaderDelegate) return payloadReader.getProperty(name);
  64         return super.getProperty(name);
  65     }
  66 

  67     public int next() throws XMLStreamException {
  68 //        boolean previouslyUsingPayloadReader = usePayloadReaderDelegate;
  69         //call checkReaderStatus to advance to payloadReader if needed
  70         checkReaderStatus(true);
  71 
  72         if (usePayloadReaderDelegate) return payloadReader.getEventType();
  73 
  74         //if we just moved to payload reader, don't advance the pointer
  75 //        if (usePayloadReaderDelegate && !previouslyUsingPayloadReader) return payloadReader.getEventType();
  76 
  77 //        if (usePayloadReaderDelegate) return payloadReader.next();
  78         return getEventType();
  79     }
  80 

  81     public void require(int type, String namespaceURI, String localName)
  82             throws XMLStreamException {
  83         if (usePayloadReaderDelegate) payloadReader.require(type, namespaceURI, localName);
  84         else super.require(type, namespaceURI, localName);
  85     }
  86 

  87     public String getElementText() throws XMLStreamException {
  88         if (usePayloadReaderDelegate) return payloadReader.getElementText();
  89         return super.getElementText();
  90     }
  91 

  92     public int nextTag() throws XMLStreamException {
  93         if (usePayloadReaderDelegate) return payloadReader.nextTag();
  94         return super.nextTag();
  95     }
  96 

  97     public boolean hasNext() throws XMLStreamException {
  98         checkReaderStatus(false);
  99         boolean hasNext;
 100         if (usePayloadReaderDelegate) {
 101             hasNext = payloadReader.hasNext();
 102         } else {
 103             hasNext = super.hasNext();
 104         }
 105 
 106         /*if (!hasNext && payloadReader != null) {
 107             usePayloadReaderDelegate = true;
 108             hasNext = payloadReader.hasNext();
 109         }*/
 110         return hasNext;
 111     }
 112 
 113     private void checkReaderStatus(boolean advanceToNext) throws XMLStreamException {
 114         //if we are using payloadReader, make sure it is not exhausted
 115         //if it is, return to DOM based reader for remaining end elements (body and envelope)
 116         if (usePayloadReaderDelegate) {


 122 
 123             //if the current event is the SOAP body element start,
 124             //and the body is lazy, switch to the payload reader
 125             if (bodyQName.equals(getName())) {
 126                 //if we are just switching to payload reader, don't advance...payload reader
 127                 //will already be on the first payload element
 128                 usePayloadReaderDelegate = true;
 129                 advanceToNext = false;
 130             }
 131         }
 132 
 133         if (advanceToNext) {
 134             if (usePayloadReaderDelegate) {
 135                 payloadReader.next();
 136             } else {
 137                 super.next();
 138             }
 139         }
 140     }
 141 

 142     public void close() throws XMLStreamException {
 143         if (usePayloadReaderDelegate) payloadReader.close();
 144         else super.close();
 145     }
 146 

 147     public String getNamespaceURI(String prefix) {
 148         if (usePayloadReaderDelegate) return payloadReader.getNamespaceURI(prefix);
 149         return super.getNamespaceURI(prefix);
 150     }
 151 

 152     public boolean isStartElement() {
 153         if (usePayloadReaderDelegate) return payloadReader.isStartElement();
 154         return super.isStartElement();
 155     }
 156 

 157     public boolean isEndElement() {
 158         if (usePayloadReaderDelegate) return payloadReader.isEndElement();
 159         return super.isEndElement();
 160     }
 161 

 162     public boolean isCharacters() {
 163         if (usePayloadReaderDelegate) return payloadReader.isCharacters();
 164         return super.isEndElement();
 165     }
 166 

 167     public boolean isWhiteSpace() {
 168         if (usePayloadReaderDelegate) return payloadReader.isWhiteSpace();
 169         return super.isWhiteSpace();
 170     }
 171 

 172     public String getAttributeValue(String namespaceURI, String localName) {
 173         if (usePayloadReaderDelegate) return payloadReader.getAttributeValue(namespaceURI, localName);
 174         return super.getAttributeValue(namespaceURI, localName);
 175     }
 176 

 177     public int getAttributeCount() {
 178         if (usePayloadReaderDelegate) return payloadReader.getAttributeCount();
 179         return super.getAttributeCount();
 180     }
 181 

 182     public QName getAttributeName(int index) {
 183         if (usePayloadReaderDelegate) return payloadReader.getAttributeName(index);
 184         return super.getAttributeName(index);
 185     }
 186 

 187     public String getAttributeNamespace(int index) {
 188         if (usePayloadReaderDelegate) return payloadReader.getAttributeNamespace(index);
 189         return super.getAttributeNamespace(index);
 190     }
 191 

 192     public String getAttributeLocalName(int index) {
 193         if (usePayloadReaderDelegate) return payloadReader.getAttributeLocalName(index);
 194         return super.getAttributeLocalName(index);
 195     }
 196 

 197     public String getAttributePrefix(int index) {
 198         if (usePayloadReaderDelegate) return payloadReader.getAttributePrefix(index);
 199         return super.getAttributePrefix(index);
 200     }
 201 

 202     public String getAttributeType(int index) {
 203         if (usePayloadReaderDelegate) return payloadReader.getAttributeType(index);
 204         return super.getAttributeType(index);
 205     }
 206 

 207     public String getAttributeValue(int index) {
 208         if (usePayloadReaderDelegate) return payloadReader.getAttributeValue(index);
 209         return super.getAttributeValue(index);
 210     }
 211 

 212     public boolean isAttributeSpecified(int index) {
 213         if (usePayloadReaderDelegate) return payloadReader.isAttributeSpecified(index);
 214         return super.isAttributeSpecified(index);
 215     }
 216 

 217     public int getNamespaceCount() {
 218         if (usePayloadReaderDelegate) return payloadReader.getNamespaceCount();
 219         return super.getNamespaceCount();
 220     }
 221 

 222     public String getNamespacePrefix(int index) {
 223         if (usePayloadReaderDelegate) return payloadReader.getNamespacePrefix(index);
 224         return super.getNamespacePrefix(index);
 225     }
 226 

 227     public String getNamespaceURI(int index) {
 228         if (usePayloadReaderDelegate) return payloadReader.getNamespaceURI(index);
 229         return super.getNamespaceURI(index);
 230     }
 231 

 232     public NamespaceContext getNamespaceContext() {
 233         if (usePayloadReaderDelegate) return payloadReader.getNamespaceContext();
 234         return super.getNamespaceContext();
 235     }
 236 

 237     public int getEventType() {
 238         if (usePayloadReaderDelegate) return payloadReader.getEventType();
 239         return super.getEventType();
 240     }
 241 

 242     public String getText() {
 243         if (usePayloadReaderDelegate) return payloadReader.getText();
 244         return super.getText();
 245     }
 246 

 247     public char[] getTextCharacters() {
 248         if (usePayloadReaderDelegate) return payloadReader.getTextCharacters();
 249         return super.getTextCharacters();
 250     }
 251 

 252     public int getTextCharacters(int sourceStart, char[] target,
 253             int targetStart, int length) throws XMLStreamException {
 254         if (usePayloadReaderDelegate) return payloadReader.getTextCharacters(sourceStart, target, targetStart,
 255                 length);
 256         return super.getTextCharacters(sourceStart, target, targetStart, length);
 257     }
 258 

 259     public int getTextStart() {
 260         if (usePayloadReaderDelegate) return payloadReader.getTextStart();
 261         return super.getTextStart();
 262     }
 263 

 264     public int getTextLength() {
 265         if (usePayloadReaderDelegate) return payloadReader.getTextLength();
 266         return super.getTextLength();
 267     }
 268 

 269     public String getEncoding() {
 270         if (usePayloadReaderDelegate) return payloadReader.getEncoding();
 271         return super.getEncoding();
 272     }
 273 

 274     public boolean hasText() {
 275         if (usePayloadReaderDelegate) return payloadReader.hasText();
 276         return super.hasText();
 277     }
 278 

 279     public Location getLocation() {
 280         if (usePayloadReaderDelegate) return payloadReader.getLocation();
 281         return super.getLocation();
 282     }
 283 

 284     public QName getName() {
 285         if (usePayloadReaderDelegate) return payloadReader.getName();
 286         return super.getName();
 287     }
 288 

 289     public String getLocalName() {
 290         if (usePayloadReaderDelegate) return payloadReader.getLocalName();
 291         return super.getLocalName();
 292     }
 293 

 294     public boolean hasName() {
 295         if (usePayloadReaderDelegate) return payloadReader.hasName();
 296         return super.hasName();
 297     }
 298 

 299     public String getNamespaceURI() {
 300         if (usePayloadReaderDelegate) return payloadReader.getNamespaceURI();
 301         return super.getNamespaceURI();
 302     }
 303 

 304     public String getPrefix() {
 305         if (usePayloadReaderDelegate) return payloadReader.getPrefix();
 306         return super.getPrefix();
 307     }
 308 

 309     public String getVersion() {
 310         if (usePayloadReaderDelegate) return payloadReader.getVersion();
 311         return super.getVersion();
 312     }
 313 

 314     public boolean isStandalone() {
 315         if (usePayloadReaderDelegate) return payloadReader.isStandalone();
 316         return super.isStandalone();
 317     }
 318 

 319     public boolean standaloneSet() {
 320         if (usePayloadReaderDelegate) return payloadReader.standaloneSet();
 321         return super.standaloneSet();
 322     }
 323 

 324     public String getCharacterEncodingScheme() {
 325         if (usePayloadReaderDelegate) return payloadReader.getCharacterEncodingScheme();
 326         return super.getCharacterEncodingScheme();
 327     }
 328 

 329     public String getPITarget() {
 330         if (usePayloadReaderDelegate) return payloadReader.getPITarget();
 331         return super.getPITarget();
 332     }
 333 

 334     public String getPIData() {
 335         if (usePayloadReaderDelegate) return payloadReader.getPIData();
 336         return super.getPIData();
 337     }
 338 
 339     //make sure that message is not realized as a result of call
 340     //to getFirstChild
 341     protected Node getFirstChild(Node node) {
 342         if (node instanceof BodyImpl) {
 343             return ((BodyImpl) node).getFirstChildNoMaterialize();
 344         } else {
 345             return node.getFirstChild();
 346         }
 347     }
 348 
 349     protected Node getNextSibling(Node node) {
 350         if (node instanceof BodyImpl) {
 351             //body is not expected to have a next sibling - even if it does
 352             //we would have to materialize the node to retrieve it.
 353             //Since we don't want to materialize it right now, just return null
   1 /*
   2  * Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any


  42  * @author desagar
  43  *
  44  */
  45 public class LazyEnvelopeStaxReader extends com.sun.xml.internal.org.jvnet.staxex.util.DOMStreamReader {
  46 //    EnvelopeImpl env;
  47     XMLStreamReader payloadReader = null;
  48     boolean usePayloadReaderDelegate = false;
  49     private QName bodyQName;
  50 
  51     public LazyEnvelopeStaxReader(EnvelopeImpl env) throws SOAPException, XMLStreamException {
  52         super(env);
  53 //        this.env = env;
  54         bodyQName = new QName(env.getNamespaceURI(), "Body");
  55         payloadReader = env.getStaxBridge().getPayloadReader();
  56         int eventType = getEventType();
  57         while (eventType != START_ELEMENT) {
  58             eventType = nextTag();
  59         }
  60     }
  61 
  62     @Override
  63     public Object getProperty(String name) throws IllegalArgumentException {
  64         if (usePayloadReaderDelegate) return payloadReader.getProperty(name);
  65         return super.getProperty(name);
  66     }
  67 
  68     @Override
  69     public int next() throws XMLStreamException {
  70 //        boolean previouslyUsingPayloadReader = usePayloadReaderDelegate;
  71         //call checkReaderStatus to advance to payloadReader if needed
  72         checkReaderStatus(true);
  73 
  74         if (usePayloadReaderDelegate) return payloadReader.getEventType();
  75 
  76         //if we just moved to payload reader, don't advance the pointer
  77 //        if (usePayloadReaderDelegate && !previouslyUsingPayloadReader) return payloadReader.getEventType();
  78 
  79 //        if (usePayloadReaderDelegate) return payloadReader.next();
  80         return getEventType();
  81     }
  82 
  83     @Override
  84     public void require(int type, String namespaceURI, String localName)
  85             throws XMLStreamException {
  86         if (usePayloadReaderDelegate) payloadReader.require(type, namespaceURI, localName);
  87         else super.require(type, namespaceURI, localName);
  88     }
  89 
  90     @Override
  91     public String getElementText() throws XMLStreamException {
  92         if (usePayloadReaderDelegate) return payloadReader.getElementText();
  93         return super.getElementText();
  94     }
  95 
  96     @Override
  97     public int nextTag() throws XMLStreamException {
  98         if (usePayloadReaderDelegate) return payloadReader.nextTag();
  99         return super.nextTag();
 100     }
 101 
 102     @Override
 103     public boolean hasNext() throws XMLStreamException {
 104         checkReaderStatus(false);
 105         boolean hasNext;
 106         if (usePayloadReaderDelegate) {
 107             hasNext = payloadReader.hasNext();
 108         } else {
 109             hasNext = super.hasNext();
 110         }
 111 
 112         /*if (!hasNext && payloadReader != null) {
 113             usePayloadReaderDelegate = true;
 114             hasNext = payloadReader.hasNext();
 115         }*/
 116         return hasNext;
 117     }
 118 
 119     private void checkReaderStatus(boolean advanceToNext) throws XMLStreamException {
 120         //if we are using payloadReader, make sure it is not exhausted
 121         //if it is, return to DOM based reader for remaining end elements (body and envelope)
 122         if (usePayloadReaderDelegate) {


 128 
 129             //if the current event is the SOAP body element start,
 130             //and the body is lazy, switch to the payload reader
 131             if (bodyQName.equals(getName())) {
 132                 //if we are just switching to payload reader, don't advance...payload reader
 133                 //will already be on the first payload element
 134                 usePayloadReaderDelegate = true;
 135                 advanceToNext = false;
 136             }
 137         }
 138 
 139         if (advanceToNext) {
 140             if (usePayloadReaderDelegate) {
 141                 payloadReader.next();
 142             } else {
 143                 super.next();
 144             }
 145         }
 146     }
 147 
 148     @Override
 149     public void close() throws XMLStreamException {
 150         if (usePayloadReaderDelegate) payloadReader.close();
 151         else super.close();
 152     }
 153 
 154     @Override
 155     public String getNamespaceURI(String prefix) {
 156         if (usePayloadReaderDelegate) return payloadReader.getNamespaceURI(prefix);
 157         return super.getNamespaceURI(prefix);
 158     }
 159 
 160     @Override
 161     public boolean isStartElement() {
 162         if (usePayloadReaderDelegate) return payloadReader.isStartElement();
 163         return super.isStartElement();
 164     }
 165 
 166     @Override
 167     public boolean isEndElement() {
 168         if (usePayloadReaderDelegate) return payloadReader.isEndElement();
 169         return super.isEndElement();
 170     }
 171 
 172     @Override
 173     public boolean isCharacters() {
 174         if (usePayloadReaderDelegate) return payloadReader.isCharacters();
 175         return super.isEndElement();
 176     }
 177 
 178     @Override
 179     public boolean isWhiteSpace() {
 180         if (usePayloadReaderDelegate) return payloadReader.isWhiteSpace();
 181         return super.isWhiteSpace();
 182     }
 183 
 184     @Override
 185     public String getAttributeValue(String namespaceURI, String localName) {
 186         if (usePayloadReaderDelegate) return payloadReader.getAttributeValue(namespaceURI, localName);
 187         return super.getAttributeValue(namespaceURI, localName);
 188     }
 189 
 190     @Override
 191     public int getAttributeCount() {
 192         if (usePayloadReaderDelegate) return payloadReader.getAttributeCount();
 193         return super.getAttributeCount();
 194     }
 195 
 196     @Override
 197     public QName getAttributeName(int index) {
 198         if (usePayloadReaderDelegate) return payloadReader.getAttributeName(index);
 199         return super.getAttributeName(index);
 200     }
 201 
 202     @Override
 203     public String getAttributeNamespace(int index) {
 204         if (usePayloadReaderDelegate) return payloadReader.getAttributeNamespace(index);
 205         return super.getAttributeNamespace(index);
 206     }
 207 
 208     @Override
 209     public String getAttributeLocalName(int index) {
 210         if (usePayloadReaderDelegate) return payloadReader.getAttributeLocalName(index);
 211         return super.getAttributeLocalName(index);
 212     }
 213 
 214     @Override
 215     public String getAttributePrefix(int index) {
 216         if (usePayloadReaderDelegate) return payloadReader.getAttributePrefix(index);
 217         return super.getAttributePrefix(index);
 218     }
 219 
 220     @Override
 221     public String getAttributeType(int index) {
 222         if (usePayloadReaderDelegate) return payloadReader.getAttributeType(index);
 223         return super.getAttributeType(index);
 224     }
 225 
 226     @Override
 227     public String getAttributeValue(int index) {
 228         if (usePayloadReaderDelegate) return payloadReader.getAttributeValue(index);
 229         return super.getAttributeValue(index);
 230     }
 231 
 232     @Override
 233     public boolean isAttributeSpecified(int index) {
 234         if (usePayloadReaderDelegate) return payloadReader.isAttributeSpecified(index);
 235         return super.isAttributeSpecified(index);
 236     }
 237 
 238     @Override
 239     public int getNamespaceCount() {
 240         if (usePayloadReaderDelegate) return payloadReader.getNamespaceCount();
 241         return super.getNamespaceCount();
 242     }
 243 
 244     @Override
 245     public String getNamespacePrefix(int index) {
 246         if (usePayloadReaderDelegate) return payloadReader.getNamespacePrefix(index);
 247         return super.getNamespacePrefix(index);
 248     }
 249 
 250     @Override
 251     public String getNamespaceURI(int index) {
 252         if (usePayloadReaderDelegate) return payloadReader.getNamespaceURI(index);
 253         return super.getNamespaceURI(index);
 254     }
 255 
 256     @Override
 257     public NamespaceContext getNamespaceContext() {
 258         if (usePayloadReaderDelegate) return payloadReader.getNamespaceContext();
 259         return super.getNamespaceContext();
 260     }
 261 
 262     @Override
 263     public int getEventType() {
 264         if (usePayloadReaderDelegate) return payloadReader.getEventType();
 265         return super.getEventType();
 266     }
 267 
 268     @Override
 269     public String getText() {
 270         if (usePayloadReaderDelegate) return payloadReader.getText();
 271         return super.getText();
 272     }
 273 
 274     @Override
 275     public char[] getTextCharacters() {
 276         if (usePayloadReaderDelegate) return payloadReader.getTextCharacters();
 277         return super.getTextCharacters();
 278     }
 279 
 280     @Override
 281     public int getTextCharacters(int sourceStart, char[] target,
 282             int targetStart, int length) throws XMLStreamException {
 283         if (usePayloadReaderDelegate) return payloadReader.getTextCharacters(sourceStart, target, targetStart,
 284                 length);
 285         return super.getTextCharacters(sourceStart, target, targetStart, length);
 286     }
 287 
 288     @Override
 289     public int getTextStart() {
 290         if (usePayloadReaderDelegate) return payloadReader.getTextStart();
 291         return super.getTextStart();
 292     }
 293 
 294     @Override
 295     public int getTextLength() {
 296         if (usePayloadReaderDelegate) return payloadReader.getTextLength();
 297         return super.getTextLength();
 298     }
 299 
 300     @Override
 301     public String getEncoding() {
 302         if (usePayloadReaderDelegate) return payloadReader.getEncoding();
 303         return super.getEncoding();
 304     }
 305 
 306     @Override
 307     public boolean hasText() {
 308         if (usePayloadReaderDelegate) return payloadReader.hasText();
 309         return super.hasText();
 310     }
 311 
 312     @Override
 313     public Location getLocation() {
 314         if (usePayloadReaderDelegate) return payloadReader.getLocation();
 315         return super.getLocation();
 316     }
 317 
 318     @Override
 319     public QName getName() {
 320         if (usePayloadReaderDelegate) return payloadReader.getName();
 321         return super.getName();
 322     }
 323 
 324     @Override
 325     public String getLocalName() {
 326         if (usePayloadReaderDelegate) return payloadReader.getLocalName();
 327         return super.getLocalName();
 328     }
 329 
 330     @Override
 331     public boolean hasName() {
 332         if (usePayloadReaderDelegate) return payloadReader.hasName();
 333         return super.hasName();
 334     }
 335 
 336     @Override
 337     public String getNamespaceURI() {
 338         if (usePayloadReaderDelegate) return payloadReader.getNamespaceURI();
 339         return super.getNamespaceURI();
 340     }
 341 
 342     @Override
 343     public String getPrefix() {
 344         if (usePayloadReaderDelegate) return payloadReader.getPrefix();
 345         return super.getPrefix();
 346     }
 347 
 348     @Override
 349     public String getVersion() {
 350         if (usePayloadReaderDelegate) return payloadReader.getVersion();
 351         return super.getVersion();
 352     }
 353 
 354     @Override
 355     public boolean isStandalone() {
 356         if (usePayloadReaderDelegate) return payloadReader.isStandalone();
 357         return super.isStandalone();
 358     }
 359 
 360     @Override
 361     public boolean standaloneSet() {
 362         if (usePayloadReaderDelegate) return payloadReader.standaloneSet();
 363         return super.standaloneSet();
 364     }
 365 
 366     @Override
 367     public String getCharacterEncodingScheme() {
 368         if (usePayloadReaderDelegate) return payloadReader.getCharacterEncodingScheme();
 369         return super.getCharacterEncodingScheme();
 370     }
 371 
 372     @Override
 373     public String getPITarget() {
 374         if (usePayloadReaderDelegate) return payloadReader.getPITarget();
 375         return super.getPITarget();
 376     }
 377 
 378     @Override
 379     public String getPIData() {
 380         if (usePayloadReaderDelegate) return payloadReader.getPIData();
 381         return super.getPIData();
 382     }
 383 
 384     //make sure that message is not realized as a result of call
 385     //to getFirstChild
 386     protected Node getFirstChild(Node node) {
 387         if (node instanceof BodyImpl) {
 388             return ((BodyImpl) node).getFirstChildNoMaterialize();
 389         } else {
 390             return node.getFirstChild();
 391         }
 392     }
 393 
 394     protected Node getNextSibling(Node node) {
 395         if (node instanceof BodyImpl) {
 396             //body is not expected to have a next sibling - even if it does
 397             //we would have to materialize the node to retrieve it.
 398             //Since we don't want to materialize it right now, just return null
< prev index next >