You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@axis.apache.org by ve...@apache.org on 2014/07/10 23:51:14 UTC
svn commit: r1609578 - in /axis/axis2/java/core/trunk/modules/saaj: ./
src/org/apache/axis2/saaj/ test/org/apache/axis2/saaj/
Author: veithen
Date: Thu Jul 10 21:51:14 2014
New Revision: 1609578
URL: http://svn.apache.org/r1609578
Log:
SAAJ:
* Eliminate usage of Axiom's internal setParent method.
* Use the new SAAJ test suite from Axiom.
* Fixed some bugs in the implementation.
* Removed two invalid test cases (that don't pass with the SAAJ reference implementation).
Added:
axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/NodeImpl.java
- copied, changed from r1608843, axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/CommentImpl.java
axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/ProxyNode.java (contents, props changed)
- copied, changed from r1608843, axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SAAJNode.java
axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SAAJDocument.java (with props)
axis/axis2/java/core/trunk/modules/saaj/test/org/apache/axis2/saaj/ImplementationTest.java
- copied, changed from r1608843, axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/CommentImpl.java
Removed:
axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SAAJNode.java
Modified:
axis/axis2/java/core/trunk/modules/saaj/pom.xml
axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/CommentImpl.java
axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPBodyImpl.java
axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPElementImpl.java
axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPFaultImpl.java
axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPHeaderImpl.java
axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPPartImpl.java
axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/TextImplEx.java
axis/axis2/java/core/trunk/modules/saaj/test/org/apache/axis2/saaj/SOAPPartTest.java
Modified: axis/axis2/java/core/trunk/modules/saaj/pom.xml
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/saaj/pom.xml?rev=1609578&r1=1609577&r2=1609578&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/saaj/pom.xml (original)
+++ axis/axis2/java/core/trunk/modules/saaj/pom.xml Thu Jul 10 21:51:14 2014
@@ -101,6 +101,12 @@
</exclusion>
</exclusions>
</dependency>
+ <dependency>
+ <groupId>org.apache.ws.commons.axiom</groupId>
+ <artifactId>saaj-testsuite</artifactId>
+ <version>${axiom.version}</version>
+ <scope>test</scope>
+ </dependency>
<!-- This is required on IBM JDKs (and potentially others) because saaj-impl depends
on Sun's internal copy of Xerces. See AXIS2-4228. -->
<dependency>
Modified: axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/CommentImpl.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/CommentImpl.java?rev=1609578&r1=1609577&r2=1609578&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/CommentImpl.java (original)
+++ axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/CommentImpl.java Thu Jul 10 21:51:14 2014
@@ -18,19 +18,16 @@
*/
package org.apache.axis2.saaj;
-import javax.xml.soap.SOAPElement;
-
+import org.apache.axiom.om.OMComment;
import org.w3c.dom.Comment;
public class CommentImpl extends TextImplEx implements Comment {
-
- public CommentImpl(String data, SOAPElement parent) {
- super(data, parent);
+ public CommentImpl(OMComment textNode) {
+ super(textNode);
}
- public CommentImpl(String data, SOAPElement parent,
- org.w3c.dom.Node prevSibling, org.w3c.dom.Node nextSibling) {
- super(data, parent, prevSibling, nextSibling);
+ public CommentImpl(String data) {
+ super(data);
}
public boolean isComment() {
Copied: axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/NodeImpl.java (from r1608843, axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/CommentImpl.java)
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/NodeImpl.java?p2=axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/NodeImpl.java&p1=axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/CommentImpl.java&r1=1608843&r2=1609578&rev=1609578&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/CommentImpl.java (original)
+++ axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/NodeImpl.java Thu Jul 10 21:51:14 2014
@@ -18,22 +18,12 @@
*/
package org.apache.axis2.saaj;
-import javax.xml.soap.SOAPElement;
+import javax.xml.soap.Node;
-import org.w3c.dom.Comment;
+import org.apache.axiom.om.OMNode;
-public class CommentImpl extends TextImplEx implements Comment {
-
- public CommentImpl(String data, SOAPElement parent) {
- super(data, parent);
- }
-
- public CommentImpl(String data, SOAPElement parent,
- org.w3c.dom.Node prevSibling, org.w3c.dom.Node nextSibling) {
- super(data, parent, prevSibling, nextSibling);
- }
-
- public boolean isComment() {
- return true;
+public abstract class NodeImpl<T extends org.w3c.dom.Node, S extends OMNode> extends ProxyNode<T,S> implements Node {
+ public NodeImpl(T target, S omTarget) {
+ super(target, omTarget);
}
}
Copied: axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/ProxyNode.java (from r1608843, axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SAAJNode.java)
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/ProxyNode.java?p2=axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/ProxyNode.java&p1=axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SAAJNode.java&r1=1608843&r2=1609578&rev=1609578&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SAAJNode.java (original)
+++ axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/ProxyNode.java Thu Jul 10 21:51:14 2014
@@ -19,10 +19,14 @@
package org.apache.axis2.saaj;
+import org.apache.axiom.om.OMComment;
import org.apache.axiom.om.OMContainer;
+import org.apache.axiom.om.OMDocument;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMException;
+import org.apache.axiom.om.OMInformationItem;
import org.apache.axiom.om.OMNode;
+import org.apache.axiom.om.OMText;
import org.apache.axiom.soap.SOAPBody;
import org.apache.axiom.soap.SOAPEnvelope;
import org.apache.axiom.soap.SOAPFault;
@@ -31,17 +35,15 @@ import org.apache.axiom.soap.SOAPFaultNo
import org.apache.axiom.soap.SOAPHeader;
import org.apache.axiom.soap.SOAPHeaderBlock;
import org.w3c.dom.Attr;
-import org.w3c.dom.Comment;
import org.w3c.dom.DOMException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
-import org.w3c.dom.Text;
import org.w3c.dom.TypeInfo;
import org.w3c.dom.UserDataHandler;
-import javax.xml.soap.Node;
import javax.xml.soap.SOAPElement;
import javax.xml.soap.SOAPException;
@@ -50,15 +52,16 @@ import javax.xml.soap.SOAPException;
* some tree manipulation methods. This interface provides methods for getting the value of a node,
* for getting and setting the parent of a node, and for removing a node.
*/
-public abstract class SAAJNode<T extends org.w3c.dom.Node, S extends OMNode> implements Node {
+public abstract class ProxyNode<T extends org.w3c.dom.Node, S extends OMInformationItem> implements Node {
protected final T target;
protected final S omTarget;
protected SOAPElement parentElement;
static final String SAAJ_NODE = "saaj.node";
- public SAAJNode(T target, S omTarget) {
+ public ProxyNode(T target, S omTarget) {
this.target = target;
this.omTarget = omTarget;
+ target.setUserData(SAAJ_NODE, this, null);
}
public final T getTarget() {
@@ -159,7 +162,7 @@ public abstract class SAAJNode<T extends
* @param domNode
* @return the SAAJ Node corresponding to the domNode
*/
- javax.xml.soap.Node toSAAJNode(org.w3c.dom.Node domNode) {
+ Node toSAAJNode(Node domNode) {
return toSAAJNode(domNode, this);
}
@@ -169,7 +172,7 @@ public abstract class SAAJNode<T extends
* @param domNode
* @return the SAAJ Node corresponding to the domNode
*/
- static javax.xml.soap.Node toSAAJNode(org.w3c.dom.Node domNode, Node parentNode) {
+ static Node toSAAJNode(Node domNode, Node parentNode) {
if (domNode == null) {
return null;
}
@@ -177,42 +180,17 @@ public abstract class SAAJNode<T extends
if (saajNode == null) { // if SAAJ node has not been set in userData, try to construct it
return toSAAJNode2(domNode, parentNode);
}
- // update siblings for text nodes
- if (domNode instanceof org.w3c.dom.Text || domNode instanceof org.w3c.dom.Comment) {
- org.w3c.dom.Node prevSiblingDOMNode = domNode.getPreviousSibling();
- org.w3c.dom.Node nextSiblingDOMNode = domNode.getNextSibling();
-
- TextImplEx saajTextNode = (TextImplEx)saajNode;
-
- saajTextNode.setPreviousSibling(prevSiblingDOMNode);
- saajTextNode.setNextSibling(nextSiblingDOMNode);
- }
return saajNode;
}
- private static javax.xml.soap.Node toSAAJNode2(org.w3c.dom.Node domNode, Node parentNode) {
+ private static Node toSAAJNode2(Node domNode, Node parentNode) {
if (domNode == null) {
return null;
}
if (domNode instanceof org.w3c.dom.Text) {
- Text text = (Text)domNode;
- org.w3c.dom.Node prevSiblingDOMNode = text.getPreviousSibling();
- org.w3c.dom.Node nextSiblingDOMNode = text.getNextSibling();
- SOAPElementImpl<OMElement> parent = new SOAPElementImpl<OMElement>((OMElement)domNode.getParentNode());
- TextImplEx saajTextNode =
- new TextImplEx(text.getData(), parent, prevSiblingDOMNode, nextSiblingDOMNode);
- domNode.setUserData(SAAJ_NODE, saajTextNode, null);
- return saajTextNode;
+ return new TextImplEx((OMText)domNode);
} else if (domNode instanceof org.w3c.dom.Comment) {
- Comment comment = (Comment)domNode;
- org.w3c.dom.Node prevSiblingDOMNode = comment.getPreviousSibling();
- org.w3c.dom.Node nextSiblingDOMNode = comment.getNextSibling();
- SOAPElementImpl<OMElement> parent = new SOAPElementImpl<OMElement>((OMElement)domNode.getParentNode());
- CommentImpl saajTextNode = new CommentImpl(comment.getData(),
- parent, prevSiblingDOMNode,
- nextSiblingDOMNode);
- domNode.setUserData(SAAJ_NODE, saajTextNode, null);
- return saajTextNode;
+ return new CommentImpl((OMComment)domNode);
} else if (domNode instanceof SOAPBody) {
javax.xml.soap.SOAPBody saajSOAPBody =
new org.apache.axis2.saaj.SOAPBodyImpl((SOAPBody)domNode);
@@ -249,27 +227,7 @@ public abstract class SAAJNode<T extends
domNode.setUserData(SAAJ_NODE, saajSOAPHeader, null);
return saajSOAPHeader;
} else if (domNode instanceof Document) {
-
- // Must be a SOAPEnvelope
- if (!(parentNode instanceof org.apache.axis2.saaj.SOAPEnvelopeImpl)) {
- return null;
- }
- org.apache.axis2.saaj.SOAPEnvelopeImpl saajEnv =
- (org.apache.axis2.saaj.SOAPEnvelopeImpl) parentNode;
- javax.xml.soap.SOAPPart saajSOAPPart = null;
- if (saajEnv.getSOAPPartParent() != null) {
- // return existing SOAPPart
- saajSOAPPart = saajEnv.getSOAPPartParent();
-
- } else {
- // Create Message and SOAPPart
- SOAPMessageImpl saajSOAPMessage =
- new SOAPMessageImpl(saajEnv);
- saajSOAPPart = saajSOAPMessage.getSOAPPart();
- }
-
- domNode.setUserData(SAAJ_NODE, saajSOAPPart, null);
- return saajSOAPPart;
+ return new SAAJDocument((OMDocument)domNode);
} else { // instanceof org.apache.axis2.om.impl.dom.ElementImpl
SOAPElementImpl<OMElement> saajSOAPElement = new SOAPElementImpl<OMElement>((OMElement)domNode);
domNode.setUserData(SAAJ_NODE, saajSOAPElement, null);
@@ -363,8 +321,8 @@ public abstract class SAAJNode<T extends
}
public final org.w3c.dom.Node removeChild(org.w3c.dom.Node oldChild) throws DOMException {
- if (oldChild instanceof SAAJNode) {
- oldChild = ((SAAJNode<?,?>)oldChild).getTarget();
+ if (oldChild instanceof ProxyNode) {
+ oldChild = ((ProxyNode<?,?>)oldChild).getTarget();
}
return target.removeChild(oldChild);
}
@@ -374,11 +332,11 @@ public abstract class SAAJNode<T extends
}
public final short getNodeType() {
- return parentElement.getNodeType();
+ return target.getNodeType();
}
public final Document getOwnerDocument() {
- return target.getOwnerDocument();
+ return (Document)toSAAJNode(target.getOwnerDocument());
}
public final String getLocalName() {
@@ -422,10 +380,11 @@ public abstract class SAAJNode<T extends
throw new DOMException(DOMException.WRONG_DOCUMENT_ERR, "Wrong document");
}
try {
- if (child instanceof Text) {
- return appendText((Text)child);
- } else if (child instanceof Element) {
+ if (child instanceof Element) {
return appendElement((Element)child);
+ } else {
+ target.appendChild(((ProxyNode<?,?>)child).target);
+ return child;
}
} catch (SOAPException e) {
DOMException ex =
@@ -433,24 +392,13 @@ public abstract class SAAJNode<T extends
ex.initCause(e);
throw ex;
}
- throw new DOMException(DOMException.HIERARCHY_REQUEST_ERR,
- "An attempt was made to insert a node where it is not permitted.");
- }
-
- protected Text appendText(Text child) throws SOAPException {
- String text = child.getData();
- Text textNode = getOwnerDocument().createTextNode(text);
- target.appendChild(textNode);
- TextImplEx saajTextNode = new TextImplEx(text, (SOAPElement)this);
- textNode.setUserData(SAAJ_NODE, saajTextNode, null);
- return saajTextNode;
}
protected Element appendElement(Element child) throws SOAPException {
String namespaceURI = child.getNamespaceURI();
String prefix = child.getPrefix();
- SOAPElementImpl<OMElement> childEle = new SOAPElementImpl<OMElement>((OMElement)child);
+ SOAPElementImpl<OMElement> childEle = (SOAPElementImpl<OMElement>)child;
childEle.target.setUserData(SAAJ_NODE, childEle, null);
if (namespaceURI != null && namespaceURI.trim().length() > 0) {
@@ -469,4 +417,12 @@ public abstract class SAAJNode<T extends
public final NamedNodeMap getAttributes() {
return target.getAttributes();
}
+
+ public final org.w3c.dom.Node getNextSibling() {
+ return toSAAJNode(target.getNextSibling());
+ }
+
+ public final org.w3c.dom.Node getPreviousSibling() {
+ return toSAAJNode(target.getPreviousSibling());
+ }
}
Propchange: axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/ProxyNode.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SAAJDocument.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SAAJDocument.java?rev=1609578&view=auto
==============================================================================
--- axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SAAJDocument.java (added)
+++ axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SAAJDocument.java Thu Jul 10 21:51:14 2014
@@ -0,0 +1,179 @@
+/*
+ * 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.axis2.saaj;
+
+import org.apache.axiom.om.OMDocument;
+import org.w3c.dom.Attr;
+import org.w3c.dom.CDATASection;
+import org.w3c.dom.Comment;
+import org.w3c.dom.DOMConfiguration;
+import org.w3c.dom.DOMException;
+import org.w3c.dom.DOMImplementation;
+import org.w3c.dom.Document;
+import org.w3c.dom.DocumentFragment;
+import org.w3c.dom.DocumentType;
+import org.w3c.dom.Element;
+import org.w3c.dom.EntityReference;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.ProcessingInstruction;
+import org.w3c.dom.Text;
+
+public final class SAAJDocument extends ProxyNode<Document,OMDocument> implements Document {
+ public SAAJDocument(OMDocument target) {
+ super((Document)target, target);
+ }
+
+ public String getValue() {
+ throw new UnsupportedOperationException();
+ }
+
+ public void setValue(String value) {
+ throw new UnsupportedOperationException();
+ }
+
+ public Node adoptNode(Node arg0) throws DOMException {
+ return target.adoptNode(arg0);
+ }
+
+ public Attr createAttribute(String arg0) throws DOMException {
+ return target.createAttribute(arg0);
+ }
+
+ public Attr createAttributeNS(String arg0, String arg1) throws DOMException {
+ return target.createAttributeNS(arg0, arg1);
+ }
+
+ public CDATASection createCDATASection(String arg0) throws DOMException {
+ return (CDATASection)toSAAJNode(target.createCDATASection(arg0));
+ }
+
+ public Comment createComment(String arg0) {
+ return (Comment)toSAAJNode(target.createComment(arg0));
+ }
+
+ public DocumentFragment createDocumentFragment() {
+ return target.createDocumentFragment();
+ }
+
+ public Element createElement(String arg0) throws DOMException {
+ return (Element)toSAAJNode(target.createElement(arg0));
+ }
+
+ public Element createElementNS(String arg0, String arg1) throws DOMException {
+ return (Element)toSAAJNode(target.createElementNS(arg0, arg1));
+ }
+
+ public EntityReference createEntityReference(String arg0) throws DOMException {
+ return target.createEntityReference(arg0);
+ }
+
+ public ProcessingInstruction createProcessingInstruction(String arg0, String arg1)
+ throws DOMException {
+ return target.createProcessingInstruction(arg0, arg1);
+ }
+
+ public Text createTextNode(String arg0) {
+ return (Text)toSAAJNode(target.createTextNode(arg0));
+ }
+
+ public DocumentType getDoctype() {
+ return target.getDoctype();
+ }
+
+ public Element getDocumentElement() {
+ return target.getDocumentElement();
+ }
+
+ public String getDocumentURI() {
+ return target.getDocumentURI();
+ }
+
+ public DOMConfiguration getDomConfig() {
+ return target.getDomConfig();
+ }
+
+ public Element getElementById(String arg0) {
+ return target.getElementById(arg0);
+ }
+
+ public NodeList getElementsByTagName(String arg0) {
+ return target.getElementsByTagName(arg0);
+ }
+
+ public NodeList getElementsByTagNameNS(String arg0, String arg1) {
+ return target.getElementsByTagNameNS(arg0, arg1);
+ }
+
+ public DOMImplementation getImplementation() {
+ return target.getImplementation();
+ }
+
+ public String getInputEncoding() {
+ return target.getInputEncoding();
+ }
+
+ public Node getParentNode() {
+ return target.getParentNode();
+ }
+
+ public boolean getStrictErrorChecking() {
+ return target.getStrictErrorChecking();
+ }
+
+ public String getXmlEncoding() {
+ return target.getXmlEncoding();
+ }
+
+ public boolean getXmlStandalone() {
+ return target.getXmlStandalone();
+ }
+
+ public String getXmlVersion() {
+ return target.getXmlVersion();
+ }
+
+ public Node importNode(Node arg0, boolean arg1) throws DOMException {
+ return target.importNode(arg0, arg1);
+ }
+
+ public void normalizeDocument() {
+ target.normalizeDocument();
+ }
+
+ public Node renameNode(Node arg0, String arg1, String arg2) throws DOMException {
+ return target.renameNode(arg0, arg1, arg2);
+ }
+
+ public void setDocumentURI(String arg0) {
+ target.setDocumentURI(arg0);
+ }
+
+ public void setStrictErrorChecking(boolean arg0) {
+ target.setStrictErrorChecking(arg0);
+ }
+
+ public void setXmlStandalone(boolean arg0) throws DOMException {
+ target.setXmlStandalone(arg0);
+ }
+
+ public void setXmlVersion(String arg0) throws DOMException {
+ target.setXmlVersion(arg0);
+ }
+}
Propchange: axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SAAJDocument.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPBodyImpl.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPBodyImpl.java?rev=1609578&r1=1609577&r2=1609578&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPBodyImpl.java (original)
+++ axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPBodyImpl.java Thu Jul 10 21:51:14 2014
@@ -64,7 +64,7 @@ public class SOAPBodyImpl extends SOAPEl
throw new SOAPException("A SOAPFault has been already added to this SOAPBody");
}
SOAPBodyElementImpl<OMElement> childEle =
- new SOAPBodyElementImpl<OMElement>((OMElement)getOwnerDocument().createElement(localName));
+ new SOAPBodyElementImpl<OMElement>((OMElement)target.getOwnerDocument().createElement(localName));
childEle.target.setUserData(SAAJ_NODE, childEle, null);
target.appendChild(childEle.target);
childEle.target.getParentNode().setUserData(SAAJ_NODE, this, null);
@@ -80,7 +80,7 @@ public class SOAPBodyImpl extends SOAPEl
}
SOAPBodyElementImpl<OMElement> childEle =
new SOAPBodyElementImpl<OMElement>(
- (OMElement)getOwnerDocument().createElementNS(namespaceURI,
+ (OMElement)target.getOwnerDocument().createElementNS(namespaceURI,
localName));
childEle.target.setUserData(SAAJ_NODE, childEle, null);
childEle.omTarget.setNamespace(childEle.omTarget.declareNamespace(namespaceURI, prefix));
@@ -95,7 +95,7 @@ public class SOAPBodyImpl extends SOAPEl
String namespaceURI = child.getNamespaceURI();
String prefix = child.getPrefix();
- SOAPBodyElementImpl<OMElement> childEle = new SOAPBodyElementImpl<OMElement>((OMElement)child);
+ SOAPBodyElementImpl<?> childEle = toSOAPBodyElement(child);
childEle.target.setUserData(SAAJ_NODE, childEle, null);
if (namespaceURI != null && namespaceURI.trim().length() > 0) {
@@ -107,6 +107,14 @@ public class SOAPBodyImpl extends SOAPEl
return childEle;
}
+ private SOAPBodyElementImpl<?> toSOAPBodyElement(Element element) {
+ if (element instanceof SOAPBodyElementImpl) {
+ return (SOAPBodyElementImpl<?>)element;
+ } else {
+ return new SOAPBodyElementImpl<OMElement>(((SOAPElementImpl<?>)element).omTarget);
+ }
+ }
+
public SOAPElement addChildElement(SOAPElement soapElement) throws SOAPException {
String namespaceURI = soapElement.getNamespaceURI();
String prefix = soapElement.getPrefix();
@@ -163,14 +171,14 @@ public class SOAPBodyImpl extends SOAPEl
SOAPBodyElementImpl<OMElement> childEle;
if (uri == null || "".equals(uri)) {
childEle = new SOAPBodyElementImpl<OMElement>(
- (OMElement)getOwnerDocument().createElement(localName));
+ (OMElement)target.getOwnerDocument().createElement(localName));
} else if (prefix.length() == 0) {
childEle = new SOAPBodyElementImpl<OMElement>(
- (OMElement)getOwnerDocument().createElementNS(uri,
+ (OMElement)target.getOwnerDocument().createElementNS(uri,
localName));
} else {
childEle = new SOAPBodyElementImpl<OMElement>(
- (OMElement)getOwnerDocument().createElementNS(uri,
+ (OMElement)target.getOwnerDocument().createElementNS(uri,
prefix + ":" + localName));
}
childEle.target.setUserData(SAAJ_NODE, childEle, null);
@@ -399,11 +407,11 @@ public class SOAPBodyImpl extends SOAPEl
}
if (node instanceof org.w3c.dom.Text) {
org.w3c.dom.Text domText = (org.w3c.dom.Text)node;
- return new TextImplEx(domText.getData(), parent);
+ return new TextImplEx(domText.getData());
}
if (node instanceof org.w3c.dom.Comment) {
org.w3c.dom.Comment domText = (org.w3c.dom.Comment)node;
- return new CommentImpl(domText.getData(), parent);
+ return new CommentImpl(domText.getData());
}
Element domEle = ((Element)node);
int indexOfColon = domEle.getTagName().indexOf(":");
@@ -496,14 +504,14 @@ public class SOAPBodyImpl extends SOAPEl
SOAPBodyElementImpl<OMElement> childEle;
if (qname.getNamespaceURI() == null || "".equals(qname.getNamespaceURI())) {
childEle = new SOAPBodyElementImpl<OMElement>(
- (OMElement)getOwnerDocument().createElement(qname.getLocalPart()));
+ (OMElement)target.getOwnerDocument().createElement(qname.getLocalPart()));
}else if(null == qname.getPrefix() || "".equals(qname.getPrefix().trim())) {
childEle = new SOAPBodyElementImpl<OMElement>(
- (OMElement)getOwnerDocument().createElementNS(qname.getNamespaceURI(),
+ (OMElement)target.getOwnerDocument().createElementNS(qname.getNamespaceURI(),
qname.getLocalPart()));
}else {
childEle = new SOAPBodyElementImpl<OMElement>(
- (OMElement)getOwnerDocument().createElementNS(qname.getNamespaceURI(),
+ (OMElement)target.getOwnerDocument().createElementNS(qname.getNamespaceURI(),
qname.getPrefix() + ":" +
qname.getLocalPart()));
}
@@ -568,7 +576,7 @@ public class SOAPBodyImpl extends SOAPEl
Collection childElements = new ArrayList();
while (childIter.hasNext()) {
org.w3c.dom.Node domNode = (org.w3c.dom.Node)childIter.next();
- Node saajNode = toSAAJNode(domNode);
+ org.w3c.dom.Node saajNode = toSAAJNode(domNode);
if (saajNode instanceof javax.xml.soap.Text) {
childElements.add(saajNode);
} else if (!(saajNode instanceof SOAPBodyElement)) {
Modified: axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPElementImpl.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPElementImpl.java?rev=1609578&r1=1609577&r2=1609578&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPElementImpl.java (original)
+++ axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPElementImpl.java Thu Jul 10 21:51:14 2014
@@ -23,8 +23,6 @@ import org.apache.axiom.om.OMAttribute;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMNamespace;
import org.apache.axiom.om.OMNode;
-import org.apache.axiom.om.OMText;
-import org.apache.axiom.om.impl.OMElementEx;
import org.apache.axiom.soap.SOAP11Version;
import org.apache.axiom.soap.SOAP12Version;
import org.apache.axiom.soap.SOAPFactory;
@@ -53,7 +51,7 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
-public class SOAPElementImpl<T extends OMElement> extends SAAJNode<Element,T> implements SOAPElement {
+public class SOAPElementImpl<T extends OMElement> extends NodeImpl<Element,T> implements SOAPElement {
private String encodingStyle;
public SOAPElementImpl(T element) {
@@ -102,7 +100,7 @@ public class SOAPElementImpl<T extends O
} else {
omTarget.declareNamespace(namespaceURI, prefix);
childEle =
- new SOAPElementImpl<OMElement>((OMElement)getOwnerDocument().createElementNS(namespaceURI,
+ new SOAPElementImpl<OMElement>((OMElement)target.getOwnerDocument().createElementNS(namespaceURI,
localName));
}
@@ -138,9 +136,8 @@ public class SOAPElementImpl<T extends O
if (prefix == null) {
prefix = "";
}
- SOAPElementImpl<OMElement> childEle =
- new SOAPElementImpl<OMElement>((OMElement)getOwnerDocument().
- createElementNS(namespaceURI, prefix.length() == 0 ? localName : prefix + ":" + localName));
+ SOAPElementImpl<OMElement> childEle = (SOAPElementImpl<OMElement>)getOwnerDocument().
+ createElementNS(namespaceURI, prefix.length() == 0 ? localName : prefix + ":" + localName);
childEle.target.setUserData(SAAJ_NODE, childEle, null);
childEle.omTarget.setNamespace(prefix.length() == 0
@@ -204,9 +201,7 @@ public class SOAPElementImpl<T extends O
//Therefore create a text node and add it
//TODO: May need to address the situation where the prev sibling of the textnode itself is a textnode
Text textNode = getOwnerDocument().createTextNode(text);
- target.appendChild(textNode);
- TextImplEx saajTextNode = new TextImplEx((OMText)textNode, this);
- textNode.setUserData(SAAJ_NODE, saajTextNode, null);
+ appendChild(textNode);
return this;
}
@@ -655,7 +650,7 @@ public class SOAPElementImpl<T extends O
*/
public SOAPElement getParentElement() {
if (this.parentElement == null) {
- javax.xml.soap.Node parentNode = toSAAJNode(target.getParentNode());
+ Node parentNode = toSAAJNode(target.getParentNode());
if (parentNode instanceof SOAPElement) {
this.parentElement = (SOAPElement) parentNode;
}
@@ -665,7 +660,7 @@ public class SOAPElementImpl<T extends O
public void setParentElement(SOAPElement parent) throws SOAPException {
this.parentElement = parent;
- ((OMElementEx)this.omTarget).setParent(((SOAPElementImpl<? extends OMElement>)parent).omTarget);
+ (((SOAPElementImpl<? extends OMElement>)parent).omTarget).addChild(this.omTarget);
}
/**
@@ -709,15 +704,6 @@ public class SOAPElementImpl<T extends O
return parentNode;
}
- /** dom Node method */
- public org.w3c.dom.Node getNextSibling() {
- return toSAAJNode(target.getNextSibling());
- }
-
- public Node getPreviousSibling() {
- return toSAAJNode(target.getPreviousSibling());
- }
-
/**
* If this is a Text node then this method will set its value, otherwise it sets the value of
* the immediate (Text) child of this node. The value of the immediate child of this node can be
Modified: axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPFaultImpl.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPFaultImpl.java?rev=1609578&r1=1609577&r2=1609578&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPFaultImpl.java (original)
+++ axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPFaultImpl.java Thu Jul 10 21:51:14 2014
@@ -755,7 +755,7 @@ public class SOAPFaultImpl extends SOAPB
Collection childElements = new ArrayList();
while (childIter.hasNext()) {
org.w3c.dom.Node domNode = (org.w3c.dom.Node)childIter.next();
- Node saajNode = toSAAJNode(domNode);
+ org.w3c.dom.Node saajNode = toSAAJNode(domNode);
if (!(saajNode instanceof SOAPFaultElement)) {
// silently replace node, as per saaj 1.2 spec
SOAPFaultElement bodyEle = new SOAPFaultElementImpl<OMElement>((OMElement)domNode);
Modified: axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPHeaderImpl.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPHeaderImpl.java?rev=1609578&r1=1609577&r2=1609578&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPHeaderImpl.java (original)
+++ axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPHeaderImpl.java Thu Jul 10 21:51:14 2014
@@ -349,7 +349,7 @@ public class SOAPHeaderImpl extends SOAP
Collection childElements = new ArrayList();
while (childIter.hasNext()) {
org.w3c.dom.Node domNode = (org.w3c.dom.Node)childIter.next();
- Node saajNode = toSAAJNode(domNode);
+ org.w3c.dom.Node saajNode = toSAAJNode(domNode);
if (saajNode instanceof javax.xml.soap.Text) {
childElements.add(saajNode);
} else if (!(saajNode instanceof SOAPHeaderElement)) {
Modified: axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPPartImpl.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPPartImpl.java?rev=1609578&r1=1609577&r2=1609578&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPPartImpl.java (original)
+++ axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPPartImpl.java Thu Jul 10 21:51:14 2014
@@ -1192,7 +1192,7 @@ public class SOAPPartImpl extends SOAPPa
throw new IllegalStateException("Cannot set value of SOAPPart.");
}
- javax.xml.soap.Node toSAAJNode(org.w3c.dom.Node domNode) {
- return SAAJNode.toSAAJNode(domNode, this);
+ Node toSAAJNode(org.w3c.dom.Node domNode) {
+ return ProxyNode.toSAAJNode(domNode, this);
}
}
Modified: axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/TextImplEx.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/TextImplEx.java?rev=1609578&r1=1609577&r2=1609578&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/TextImplEx.java (original)
+++ axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/TextImplEx.java Thu Jul 10 21:51:14 2014
@@ -20,38 +20,18 @@
package org.apache.axis2.saaj;
import org.apache.axiom.om.OMAbstractFactory;
-import org.apache.axiom.om.OMText;
+import org.apache.axiom.om.OMNode;
import org.w3c.dom.DOMException;
-import javax.xml.soap.SOAPElement;
import javax.xml.soap.Text;
-public class TextImplEx extends SAAJNode<org.w3c.dom.Text,OMText> implements Text {
- private org.w3c.dom.Node previousSibling;
- private org.w3c.dom.Node nextSibling;
-
- public TextImplEx(String data, SOAPElement parent) {
- this(OMAbstractFactory.getMetaFactory(OMAbstractFactory.FEATURE_DOM).getOMFactory().createOMText(data), parent);
- }
-
- public TextImplEx(OMText textNode, SOAPElement parent) {
- super((org.w3c.dom.Text)textNode, textNode);
- this.parentElement = parent;
- }
-
- public TextImplEx(String data, SOAPElement parent,
- org.w3c.dom.Node prevSibling, org.w3c.dom.Node nextSibling) {
- this(data, parent);
- this.previousSibling = prevSibling;
- this.nextSibling = nextSibling;
- }
-
- public void setNextSibling(org.w3c.dom.Node nextSibling) {
- this.nextSibling = nextSibling;
+public class TextImplEx extends NodeImpl<org.w3c.dom.CharacterData,OMNode> implements Text {
+ public TextImplEx(String data) {
+ this(OMAbstractFactory.getMetaFactory(OMAbstractFactory.FEATURE_DOM).getOMFactory().createOMText(data));
}
- public void setPreviousSibling(org.w3c.dom.Node previousSibling) {
- this.previousSibling = previousSibling;
+ public TextImplEx(OMNode textNode) {
+ super((org.w3c.dom.CharacterData)textNode, textNode);
}
/**
@@ -61,7 +41,7 @@ public class TextImplEx extends SAAJNode
* otherwise
*/
public boolean isComment() {
- String value = omTarget.getText();
+ String value = target.getData();
return value.startsWith("<!--") && value.endsWith("-->");
}
@@ -80,7 +60,7 @@ public class TextImplEx extends SAAJNode
* <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
*/
public org.w3c.dom.Text splitText(int offset) throws DOMException {
- return target.splitText(offset);
+ return ((Text)target).splitText(offset);
}
public boolean isElementContentWhitespace() {
@@ -235,16 +215,6 @@ public class TextImplEx extends SAAJNode
return getValue();
}
-
- public org.w3c.dom.Node getNextSibling() {
- return toSAAJNode(nextSibling);
- }
-
-
- public org.w3c.dom.Node getPreviousSibling() {
- return toSAAJNode(previousSibling);
- }
-
public int getLength() {
return target.getLength();
}
Copied: axis/axis2/java/core/trunk/modules/saaj/test/org/apache/axis2/saaj/ImplementationTest.java (from r1608843, axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/CommentImpl.java)
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/saaj/test/org/apache/axis2/saaj/ImplementationTest.java?p2=axis/axis2/java/core/trunk/modules/saaj/test/org/apache/axis2/saaj/ImplementationTest.java&p1=axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/CommentImpl.java&r1=1608843&r2=1609578&rev=1609578&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/CommentImpl.java (original)
+++ axis/axis2/java/core/trunk/modules/saaj/test/org/apache/axis2/saaj/ImplementationTest.java Thu Jul 10 21:51:14 2014
@@ -18,22 +18,13 @@
*/
package org.apache.axis2.saaj;
-import javax.xml.soap.SOAPElement;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
-import org.w3c.dom.Comment;
+import org.apache.axiom.ts.saaj.SAAJTestSuiteBuilder;
-public class CommentImpl extends TextImplEx implements Comment {
-
- public CommentImpl(String data, SOAPElement parent) {
- super(data, parent);
- }
-
- public CommentImpl(String data, SOAPElement parent,
- org.w3c.dom.Node prevSibling, org.w3c.dom.Node nextSibling) {
- super(data, parent, prevSibling, nextSibling);
- }
-
- public boolean isComment() {
- return true;
+public class ImplementationTest extends TestCase {
+ public static TestSuite suite() throws Exception {
+ return new SAAJTestSuiteBuilder(new SAAJMetaFactoryImpl()).build();
}
}
Modified: axis/axis2/java/core/trunk/modules/saaj/test/org/apache/axis2/saaj/SOAPPartTest.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/saaj/test/org/apache/axis2/saaj/SOAPPartTest.java?rev=1609578&r1=1609577&r2=1609578&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/saaj/test/org/apache/axis2/saaj/SOAPPartTest.java (original)
+++ axis/axis2/java/core/trunk/modules/saaj/test/org/apache/axis2/saaj/SOAPPartTest.java Thu Jul 10 21:51:14 2014
@@ -196,50 +196,6 @@ public class SOAPPartTest extends Assert
assertTrue(node == null);
}
- /**
- * Check parent processing of SOAPMessage
- */
- // TODO: check why this fails with Sun's SAAJ implementation
- @Test
- public void test_parentAccess2() throws Exception {
-
- MessageFactory mf = MessageFactory.newInstance();
- SOAPMessage m = mf.createMessage();
- SOAPPart sp = m.getSOAPPart();
- SOAPEnvelope se = sp.getEnvelope();
- Node node = se.getParentNode();
- assertTrue(node == sp);
- node = node.getParentNode();
- assertTrue(node == null);
-
- SOAPElement e = se.getParentElement();
- assertTrue(node == null);
- }
-
- /**
- * Check parent processing of SOAPMessage
- */
- @Validated @Test
- public void test_parentAccess3() throws Exception {
-
- SOAP11Factory axiomSF = new SOAP11Factory();
- org.apache.axiom.soap.SOAPEnvelope axiomSE = axiomSF.createSOAPEnvelope();
- org.apache.axiom.soap.SOAPMessage axiomSM = axiomSF.createSOAPMessage();
- axiomSM.setSOAPEnvelope(axiomSE);
-
- SOAPEnvelopeImpl se = new SOAPEnvelopeImpl(axiomSE);
- SOAPMessageImpl sm = new SOAPMessageImpl(se);
- SOAPPartImpl sp = new SOAPPartImpl(sm, se);
-
- Node node = se.getParentNode();
- assertTrue(node == sp);
- node = node.getParentNode();
- assertTrue(node == null);
-
- SOAPElement e = se.getParentElement();
- assertTrue(node == null);
- }
-
// TODO: check why this fails with Sun's SAAJ implementation
@Test
public void testNodeTypes() throws Exception {