You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commons-dev@ws.apache.org by sc...@apache.org on 2008/02/27 02:12:53 UTC

svn commit: r631451 - in /webservices/commons/trunk/modules/axiom/modules: axiom-api/src/main/java/org/apache/axiom/soap/ axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/ axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/ axiom-impl/src...

Author: scheu
Date: Tue Feb 26 17:12:51 2008
New Revision: 631451

URL: http://svn.apache.org/viewvc?rev=631451&view=rev
Log:
WSCOMMONS-303
Contributor:Rich Scheuerle
Added support to get the SOAP Body first child qname directly from the parser
via a special property.  This avoids expansion of the om.

(Follow on action: work with woodstox to get them to support a property to get this 
information.)

Added:
    webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/soap/impl/builder/XMLStreamReaderWithQName.java
Modified:
    webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/SOAPConstants.java
    webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/SOAPEnvelope.java
    webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/StAXSOAPModelBuilder.java
    webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPEnvelopeImpl.java
    webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPEnvelopeImpl.java
    webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/soap/impl/builder/StAXSOAPModelBuilderTest.java

Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/SOAPConstants.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/SOAPConstants.java?rev=631451&r1=631450&r2=631451&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/SOAPConstants.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/SOAPConstants.java Tue Feb 26 17:12:51 2008
@@ -61,4 +61,8 @@
     static final String FAULT_CODE_SENDER = "";
     static final String FAULT_CODE_RECEIVER = "";
 
+    // Special Property available on some parsers to get the 
+    // Qname of the first child element in the soap body.
+    static final String SOAPBODY_FIRST_CHILD_ELEMENT_QNAME =
+            "org.apache.axiom.SOAPBodyFirstChildElementQName";
 }

Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/SOAPEnvelope.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/SOAPEnvelope.java?rev=631451&r1=631450&r2=631451&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/SOAPEnvelope.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/SOAPEnvelope.java Tue Feb 26 17:12:51 2008
@@ -21,6 +21,7 @@
 
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMException;
+import org.apache.axiom.om.OMNamespace;
 
 /** Interface SOAPEnvelope */
 public interface SOAPEnvelope extends OMElement {
@@ -47,4 +48,32 @@
     SOAPBody getBody() throws OMException;
 
     SOAPVersion getVersion();
+    
+    /**
+     * Returns true if there is a SOAPFault in the body.
+     * The implementation may choose to get this information by building the OM
+     * tree or use parser provided information.
+     * @return true if SOAPFault in the body
+     */
+    boolean hasFault();
+    
+    /**
+     * Retrieves the OMNamespace of the first element in the body.
+     * The implementation might build the OMElement or it may
+     * obtain this information from the builder/parser without building
+     * the OMElement.  Use this method in the situations where you need
+     * to know the OMNamespace, but don't necessarily need the OMElement.
+     * @return OMNamespace of first element in the body or null
+     */
+    public OMNamespace getSOAPBodyFirstElementNS();
+    
+    /**
+     * Retrieves the local name of the first element in the body.
+     * The implementation might build the OMElement or it may
+     * obtain this information from the builder/parser without building
+     * the OMElement.  Use this method in the situations where you need
+     * to know the name, but don't necessarily need the OMElement.
+     * @return local name of first element in the body or null
+     */
+    public String getSOAPBodyFirstElementLocalName();
 }

Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/StAXSOAPModelBuilder.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/StAXSOAPModelBuilder.java?rev=631451&r1=631450&r2=631451&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/StAXSOAPModelBuilder.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/StAXSOAPModelBuilder.java Tue Feb 26 17:12:51 2008
@@ -166,6 +166,7 @@
     protected OMNode createNextOMElement() {
         OMNode newElement = null;
         
+        
         if (elementLevel == 3 && 
             customBuilderForPayload != null) {
             

Modified: webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPEnvelopeImpl.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPEnvelopeImpl.java?rev=631451&r1=631450&r2=631451&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPEnvelopeImpl.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPEnvelopeImpl.java Tue Feb 26 17:12:51 2008
@@ -29,6 +29,7 @@
 import org.apache.axiom.om.impl.dom.DocumentImpl;
 import org.apache.axiom.om.impl.dom.NodeImpl;
 import org.apache.axiom.om.impl.util.OMSerializerUtil;
+import org.apache.axiom.soap.SOAP11Constants;
 import org.apache.axiom.soap.SOAP12Constants;
 import org.apache.axiom.soap.SOAPBody;
 import org.apache.axiom.soap.SOAPConstants;
@@ -37,6 +38,7 @@
 import org.apache.axiom.soap.SOAPHeader;
 import org.apache.axiom.soap.SOAPProcessingException;
 import org.apache.axiom.soap.SOAPVersion;
+import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
 import org.apache.axiom.soap.impl.dom.factory.DOMSOAPFactory;
 
 import javax.xml.namespace.QName;
@@ -228,6 +230,64 @@
     public OMNode getNextOMSibling() throws OMException {
         if (this.ownerNode != null && !this.ownerNode.isComplete()) {
             this.ownerNode.setComplete(true);
+        }
+        return null;
+    }
+
+    public boolean hasFault() {      
+        QName payloadQName = this.getPayloadQName_Optimized();
+        if (payloadQName != null) {
+            if (SOAPConstants.SOAPFAULT_LOCAL_NAME.equals(payloadQName.getLocalPart())) {
+                String ns = payloadQName.getNamespaceURI();
+                return (ns != null &&
+                    (SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(ns) ||
+                     SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(ns)));                                                         
+            } 
+        }
+        
+        // Fallback: Get the body and get the fault information from the body
+        SOAPBody body = this.getBody();
+        return (body == null) ? false : body.hasFault();
+    }
+
+    public String getSOAPBodyFirstElementLocalName() {
+        QName payloadQName = this.getPayloadQName_Optimized();
+        if (payloadQName != null) {
+            return payloadQName.getLocalPart();
+        }
+        SOAPBody body = this.getBody();
+        return (body == null) ? null : body.getFirstElementLocalName();
+    }
+
+    public OMNamespace getSOAPBodyFirstElementNS() {
+        QName payloadQName = this.getPayloadQName_Optimized();
+        if (payloadQName != null) {
+            return this.factory.createOMNamespace(payloadQName.getNamespaceURI(), 
+                                                  payloadQName.getPrefix());
+        }
+        SOAPBody body = this.getBody();
+        return (body == null) ? null : body.getFirstElementNS();
+    }
+    
+    /**
+     * Use a parser property to fetch the first element in the body.
+     * Returns null if this optimized property is not set or not available.
+     * @return The qname of the first element in the body or null
+     */
+    private QName getPayloadQName_Optimized() {
+        // The parser may expose a SOAPBODY_FIRST_CHILD_ELEMENT_QNAME property
+        // Use that QName to determine if there is a fault
+        OMXMLParserWrapper builder = this.getBuilder();
+        if (builder instanceof StAXSOAPModelBuilder) {
+            try {
+                QName payloadQName = (QName) ((StAXSOAPModelBuilder) builder).
+                    getReaderProperty(SOAPConstants.SOAPBODY_FIRST_CHILD_ELEMENT_QNAME);
+                return payloadQName;
+            } catch (IllegalArgumentException e) {
+                // The parser may not support this property. 
+                // In such cases, processing continues below in the fallback approach
+            }
+            
         }
         return null;
     }

Modified: webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPEnvelopeImpl.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPEnvelopeImpl.java?rev=631451&r1=631450&r2=631451&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPEnvelopeImpl.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPEnvelopeImpl.java Tue Feb 26 17:12:51 2008
@@ -28,6 +28,7 @@
 import org.apache.axiom.om.impl.MTOMXMLStreamWriter;
 import org.apache.axiom.om.impl.llom.OMNodeImpl;
 import org.apache.axiom.om.impl.util.OMSerializerUtil;
+import org.apache.axiom.soap.SOAP11Constants;
 import org.apache.axiom.soap.SOAP12Constants;
 import org.apache.axiom.soap.SOAPBody;
 import org.apache.axiom.soap.SOAPConstants;
@@ -36,7 +37,9 @@
 import org.apache.axiom.soap.SOAPHeader;
 import org.apache.axiom.soap.SOAPProcessingException;
 import org.apache.axiom.soap.SOAPVersion;
+import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
 
+import javax.xml.namespace.QName;
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamWriter;
 
@@ -241,5 +244,63 @@
             OMSerializerUtil.serializeByPullStream(element, writer, false);
         }
         child.getNextOMSibling();
+    }
+    
+    public boolean hasFault() {      
+        QName payloadQName = this.getPayloadQName_Optimized();
+        if (payloadQName != null) {
+            if (SOAPConstants.SOAPFAULT_LOCAL_NAME.equals(payloadQName.getLocalPart())) {
+                String ns = payloadQName.getNamespaceURI();
+                return (ns != null &&
+                    (SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(ns) ||
+                     SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(ns)));                                                         
+            } 
+        }
+        
+        // Fallback: Get the body and get the fault information from the body
+        SOAPBody body = this.getBody();
+        return (body == null) ? false : body.hasFault();
+    }
+
+    public String getSOAPBodyFirstElementLocalName() {
+        QName payloadQName = this.getPayloadQName_Optimized();
+        if (payloadQName != null) {
+            return payloadQName.getLocalPart();
+        }
+        SOAPBody body = this.getBody();
+        return (body == null) ? null : body.getFirstElementLocalName();
+    }
+
+    public OMNamespace getSOAPBodyFirstElementNS() {
+        QName payloadQName = this.getPayloadQName_Optimized();
+        if (payloadQName != null) {
+            return this.factory.createOMNamespace(payloadQName.getNamespaceURI(), 
+                                                  payloadQName.getPrefix());
+        }
+        SOAPBody body = this.getBody();
+        return (body == null) ? null : body.getFirstElementNS();
+    }
+    
+    /**
+     * Use a parser property to fetch the first element in the body.
+     * Returns null if this optimized property is not set or not available.
+     * @return The qname of the first element in the body or null
+     */
+    private QName getPayloadQName_Optimized() {
+        // The parser may expose a SOAPBODY_FIRST_CHILD_ELEMENT_QNAME property
+        // Use that QName to determine if there is a fault
+        OMXMLParserWrapper builder = this.getBuilder();
+        if (builder instanceof StAXSOAPModelBuilder) {
+            try {
+                QName payloadQName = (QName) ((StAXSOAPModelBuilder) builder).
+                    getReaderProperty(SOAPConstants.SOAPBODY_FIRST_CHILD_ELEMENT_QNAME);
+                return payloadQName;
+            } catch (IllegalArgumentException e) {
+                // The parser may not support this property. 
+                // In such cases, processing continues below in the fallback approach
+            }
+            
+        }
+        return null;
     }
 }

Modified: webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/soap/impl/builder/StAXSOAPModelBuilderTest.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/soap/impl/builder/StAXSOAPModelBuilderTest.java?rev=631451&r1=631450&r2=631451&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/soap/impl/builder/StAXSOAPModelBuilderTest.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/soap/impl/builder/StAXSOAPModelBuilderTest.java Tue Feb 26 17:12:51 2008
@@ -625,4 +625,42 @@
         element.build();
         this.assertXMLEqual(soap11Fault, element.toString());
     }
+    
+    /**
+     * @throws Exception
+     */
+    public void testOptimizedFault() throws Exception {
+        String soap11Fault = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
+                "<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\">" +
+                    "<SOAP-ENV:Body>" +
+                    "<SOAP-ENV:Fault>" +
+                        "<faultcode>SOAP-ENV:Server</faultcode>" +
+                        "<faultstring xml:lang=\"en\">handleMessage throws SOAPFaultException for ThrowsSOAPFaultToClientHandlersTest</faultstring>" +
+                        "<detail>" +
+                            "<somefaultentry/>" +
+                        "</detail>" +
+                        "<faultactor>faultActor</faultactor>" +
+                        "</SOAP-ENV:Fault>" +
+                    "</SOAP-ENV:Body>" +
+                "</SOAP-ENV:Envelope>";
+        
+        // Use the test parser that is aware of the first qname in the body.
+        // This simulates the use of the parser that has this information built into its
+        // implementation.
+        
+        XMLStreamReader soap11Parser = XMLInputFactory.newInstance()
+                .createXMLStreamReader(new StringReader(soap11Fault));
+        QName qname = new QName(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI, SOAP11Constants.BODY_FAULT_LOCAL_NAME, "SOAP-ENV");
+        XMLStreamReaderWithQName parser = new XMLStreamReaderWithQName(soap11Parser, qname);
+        StAXSOAPModelBuilder soap11Builder = new StAXSOAPModelBuilder(parser, null);
+        SOAPEnvelope env = soap11Builder.getSOAPEnvelope();
+        boolean isFault = env.hasFault();
+        this.assertTrue(isFault);
+        this.assertTrue(!parser.isReadBody());
+        
+        // Get the name of the first element in the body
+        String localName = env.getSOAPBodyFirstElementLocalName();
+        this.assertTrue(localName.equals("Fault"));
+        this.assertTrue(!parser.isReadBody());
+    }
 }

Added: webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/soap/impl/builder/XMLStreamReaderWithQName.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/soap/impl/builder/XMLStreamReaderWithQName.java?rev=631451&view=auto
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/soap/impl/builder/XMLStreamReaderWithQName.java (added)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/soap/impl/builder/XMLStreamReaderWithQName.java Tue Feb 26 17:12:51 2008
@@ -0,0 +1,283 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.axiom.soap.impl.builder;
+
+import org.apache.axiom.soap.SOAPConstants;
+
+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;
+
+/**
+ * Used by StAXSOAPModelBuilderTest to simulate 
+ *
+ */
+public class XMLStreamReaderWithQName implements javax.xml.stream.XMLStreamReader {
+
+    private XMLStreamReader delegate;
+    private QName soapBodyFirstChildElementQName;
+    private boolean readBody = false;
+    
+    
+    public XMLStreamReaderWithQName(XMLStreamReader delegate, 
+                                 QName soapBodyFirstChildElementQName) {
+        super();
+        this.delegate = delegate;
+        this.soapBodyFirstChildElementQName = soapBodyFirstChildElementQName;
+    }
+
+    public void close() throws XMLStreamException {
+        delegate.close();
+    }
+
+
+    public int getAttributeCount() {
+        return delegate.getAttributeCount();
+    }
+
+
+    public String getAttributeLocalName(int arg0) {
+        return delegate.getAttributeLocalName(arg0);
+    }
+
+
+    public QName getAttributeName(int arg0) {
+        return delegate.getAttributeName(arg0);
+    }
+
+
+    public String getAttributeNamespace(int arg0) {
+        return delegate.getAttributeNamespace(arg0);
+    }
+
+
+    public String getAttributePrefix(int arg0) {
+        return delegate.getAttributePrefix(arg0);
+    }
+
+
+    public String getAttributeType(int arg0) {
+        return delegate.getAttributeType(arg0);
+    }
+
+
+    public String getAttributeValue(int arg0) {
+        return delegate.getAttributeValue(arg0);
+    }
+
+
+    public String getAttributeValue(String arg0, String arg1) {
+        return delegate.getAttributeValue(arg0, arg1);
+    }
+
+
+    public String getCharacterEncodingScheme() {
+        return delegate.getCharacterEncodingScheme();
+    }
+
+
+    public String getElementText() throws XMLStreamException {
+        return delegate.getElementText();
+    }
+
+
+    public String getEncoding() {
+        return delegate.getEncoding();
+    }
+
+
+    public int getEventType() {
+        return delegate.getEventType();
+    }
+
+
+    public String getLocalName() {
+        String localName = delegate.getLocalName();
+        if (localName.equals("Body")) {
+            this.readBody = true;
+        }
+        return localName;
+    }
+
+
+    public boolean isReadBody() {
+        return readBody;
+    }
+
+    public Location getLocation() {
+        return delegate.getLocation();
+    }
+
+
+    public QName getName() {
+        return delegate.getName();
+    }
+
+
+    public NamespaceContext getNamespaceContext() {
+        return delegate.getNamespaceContext();
+    }
+
+
+    public int getNamespaceCount() {
+        return delegate.getNamespaceCount();
+    }
+
+
+    public String getNamespacePrefix(int arg0) {
+        return delegate.getNamespacePrefix(arg0);
+    }
+
+
+    public String getNamespaceURI() {
+        return delegate.getNamespaceURI();
+    }
+
+
+    public String getNamespaceURI(int arg0) {
+        return delegate.getNamespaceURI(arg0);
+    }
+
+
+    public String getNamespaceURI(String arg0) {
+        return delegate.getNamespaceURI(arg0);
+    }
+
+
+    public String getPIData() {
+        return delegate.getPIData();
+    }
+
+
+    public String getPITarget() {
+        return delegate.getPITarget();
+    }
+
+
+    public String getPrefix() {
+        return delegate.getPrefix();
+    }
+
+
+    public Object getProperty(String arg0) throws IllegalArgumentException {
+        // Return the qname
+        if (arg0.equals(SOAPConstants.SOAPBODY_FIRST_CHILD_ELEMENT_QNAME)) {
+            return this.soapBodyFirstChildElementQName;
+        }
+        return delegate.getProperty(arg0);
+    }
+
+
+    public String getText() {
+        return delegate.getText();
+    }
+
+
+    public char[] getTextCharacters() {
+        return delegate.getTextCharacters();
+    }
+
+
+    public int getTextCharacters(int arg0, char[] arg1, int arg2, int arg3) throws XMLStreamException {
+        return delegate.getTextCharacters(arg0, arg1, arg2, arg3);
+    }
+
+
+    public int getTextLength() {
+        return delegate.getTextLength();
+    }
+
+
+    public int getTextStart() {
+        return delegate.getTextStart();
+    }
+
+
+    public String getVersion() {
+        return delegate.getVersion();
+    }
+
+
+    public boolean hasName() {
+        return delegate.hasName();
+    }
+
+
+    public boolean hasNext() throws XMLStreamException {
+        return delegate.hasNext();
+    }
+
+
+    public boolean hasText() {
+        return delegate.hasText();
+    }
+
+
+    public boolean isAttributeSpecified(int arg0) {
+        return delegate.isAttributeSpecified(arg0);
+    }
+
+
+    public boolean isCharacters() {
+        return delegate.isCharacters();
+    }
+
+
+    public boolean isEndElement() {
+        return delegate.isEndElement();
+    }
+
+
+    public boolean isStandalone() {
+        return delegate.isStandalone();
+    }
+
+
+    public boolean isStartElement() {
+        return delegate.isStartElement();
+    }
+
+
+    public boolean isWhiteSpace() {
+        return delegate.isWhiteSpace();
+    }
+
+
+    public int next() throws XMLStreamException {
+        return delegate.next();
+    }
+
+
+    public int nextTag() throws XMLStreamException {
+        return delegate.nextTag();
+    }
+
+
+    public void require(int arg0, String arg1, String arg2) throws XMLStreamException {
+        delegate.require(arg0, arg1, arg2);
+    }
+
+
+    public boolean standaloneSet() {
+        return delegate.standaloneSet();
+    }
+    
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: commons-dev-help@ws.apache.org