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