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 ve...@apache.org on 2008/12/08 01:05:39 UTC
svn commit: r724221 -
/webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPEnvelopeImpl.java
Author: veithen
Date: Sun Dec 7 16:05:39 2008
New Revision: 724221
URL: http://svn.apache.org/viewvc?rev=724221&view=rev
Log:
WSCOMMONS-197: Override insertBefore in SOAPEnvelopeImpl (DOM) to check that the child to be inserted is valid in that context (i.e. is a SOAPHeader or SOAPBody or a node that is not an element).
Modified:
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPEnvelopeImpl.java
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=724221&r1=724220&r2=724221&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 Sun Dec 7 16:05:39 2008
@@ -40,6 +40,8 @@
import org.apache.axiom.soap.SOAPVersion;
import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
import org.apache.axiom.soap.impl.dom.factory.DOMSOAPFactory;
+import org.w3c.dom.DOMException;
+import org.w3c.dom.Node;
import javax.xml.namespace.QName;
import javax.xml.stream.XMLStreamException;
@@ -95,22 +97,38 @@
return (SOAPHeader) header;
}
- public void addChild(OMNode child) {
+ /**
+ * Check that a node is allowed as a child of a SOAP envelope.
+ *
+ * @param child
+ */
+ private void checkChild(OMNode child) {
if ((child instanceof OMElement)
&& !(child instanceof SOAPHeader || child instanceof SOAPBody)) {
throw new SOAPProcessingException(
"SOAP Envelope can not have children other than SOAP Header and Body",
SOAP12Constants.FAULT_CODE_SENDER);
- } else {
- if (this.done && (child instanceof SOAPHeader)) {
- SOAPBody body = getBody();
- if (body != null) {
- body.insertSiblingBefore(child);
- return;
- }
+ }
+ }
+
+ public void addChild(OMNode child) {
+ checkChild(child);
+ if (this.done && (child instanceof SOAPHeader)) {
+ SOAPBody body = getBody();
+ if (body != null) {
+ body.insertSiblingBefore(child);
+ return;
}
- super.addChild(child);
}
+ super.addChild(child);
+ }
+
+ public Node insertBefore(Node newChild, Node refChild) throws DOMException {
+ // Check that the child to be added is valid in the context of a SOAP envelope.
+ // Note that this also covers the appendChild case, since that method
+ // calls insertBefore with refChild == null.
+ checkChild((OMNode)newChild);
+ return super.insertBefore(newChild, refChild);
}
/**