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 2012/06/09 11:18:27 UTC

svn commit: r1348340 [1/2] - in /axis/axis2/java/core/trunk/modules: jaxws/src/org/apache/axis2/jaxws/message/util/impl/ saaj/ saaj/src/org/apache/axis2/saaj/ saaj/src/org/apache/axis2/saaj/util/

Author: veithen
Date: Sat Jun  9 09:18:25 2012
New Revision: 1348340

URL: http://svn.apache.org/viewvc?rev=1348340&view=rev
Log:
Eliminated axiom-dom as a compile time dependency of axis2-saaj and made it a runtime dependency. This should break the strong coupling between axis2-saaj and axiom-dom and make axis2-saaj more robust with respect to changes in Axiom's DOOM implementation.

Modified:
    axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/message/util/impl/SAAJConverterImpl.java
    axis/axis2/java/core/trunk/modules/saaj/pom.xml
    axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/AttachmentPartImpl.java
    axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/DetailEntryImpl.java
    axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/DetailImpl.java
    axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/MessageFactoryImpl.java
    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/SOAPBodyElementImpl.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/SOAPEnvelopeImpl.java
    axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPFactoryImpl.java
    axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPFaultElementImpl.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/SOAPHeaderElementImpl.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/SOAPMessageImpl.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/src/org/apache/axis2/saaj/util/SAAJUtil.java

Modified: axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/message/util/impl/SAAJConverterImpl.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/message/util/impl/SAAJConverterImpl.java?rev=1348340&r1=1348339&r2=1348340&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/message/util/impl/SAAJConverterImpl.java (original)
+++ axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/message/util/impl/SAAJConverterImpl.java Sat Jun  9 09:18:25 2012
@@ -21,10 +21,8 @@ package org.apache.axis2.jaxws.message.u
 
 import org.apache.axiom.attachments.Attachments;
 import org.apache.axiom.om.OMElement;
-import org.apache.axiom.om.OMException;
 import org.apache.axiom.om.OMNamespace;
 import org.apache.axiom.om.impl.builder.StAXOMBuilder;
-import org.apache.axiom.om.impl.dom.ElementImpl;
 import org.apache.axiom.om.util.StAXUtils;
 import org.apache.axiom.soap.SOAP11Constants;
 import org.apache.axiom.soap.SOAP12Constants;
@@ -631,8 +629,8 @@ public class SAAJConverterImpl implement
                         // get that and add it as a text node under the original element.
                         Node value = se.getFirstChild();
                         if (value != null && value instanceof org.apache.axis2.saaj.SOAPElementImpl) {
-                            org.apache.axis2.saaj.SOAPElementImpl valueElement = (org.apache.axis2.saaj.SOAPElementImpl) value;
-                            ElementImpl e = valueElement.getTarget();
+                            org.apache.axis2.saaj.SOAPElementImpl<?> valueElement = (org.apache.axis2.saaj.SOAPElementImpl<?>) value;
+                            OMElement e = valueElement.getOMTarget();
                             String content = e.getText();
                             
                             SOAPElement child = fault.addChildElement(new QName(se.getNamespaceURI(), SOAP11Constants.SOAP_FAULT_CODE_LOCAL_NAME));
@@ -656,8 +654,8 @@ public class SAAJConverterImpl implement
                         // get that and add it as a text node under the original element.
                         Node value = se.getFirstChild();
                         if (value != null && value instanceof org.apache.axis2.saaj.SOAPElementImpl) {
-                            org.apache.axis2.saaj.SOAPElementImpl valueElement = (org.apache.axis2.saaj.SOAPElementImpl) value;
-                            ElementImpl e = valueElement.getTarget();
+                            org.apache.axis2.saaj.SOAPElementImpl<?> valueElement = (org.apache.axis2.saaj.SOAPElementImpl<?>) value;
+                            OMElement e = valueElement.getOMTarget();
                             String content = e.getText();
                            
                             SOAPElement child = fault.addChildElement(new QName(se.getNamespaceURI(), SOAP11Constants.SOAP_FAULT_STRING_LOCAL_NAME));

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=1348340&r1=1348339&r2=1348340&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/saaj/pom.xml (original)
+++ axis/axis2/java/core/trunk/modules/saaj/pom.xml Sat Jun  9 09:18:25 2012
@@ -44,6 +44,7 @@
         <dependency>
             <groupId>org.apache.ws.commons.axiom</groupId>
             <artifactId>axiom-dom</artifactId>
+            <scope>runtime</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.axis2</groupId>

Modified: axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/AttachmentPartImpl.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/AttachmentPartImpl.java?rev=1348340&r1=1348339&r2=1348340&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/AttachmentPartImpl.java (original)
+++ axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/AttachmentPartImpl.java Sat Jun  9 09:18:25 2012
@@ -19,10 +19,8 @@
 
 package org.apache.axis2.saaj;
 
+import org.apache.axiom.om.OMAbstractFactory;
 import org.apache.axiom.om.OMText;
-import org.apache.axiom.om.impl.dom.DOOMAbstractFactory;
-import org.apache.axiom.om.impl.dom.DocumentImpl;
-import org.apache.axiom.om.impl.dom.TextImpl;
 import org.apache.axiom.om.util.Base64;
 import org.apache.axis2.saaj.util.SAAJDataSource;
 import org.apache.axis2.transport.http.HTTPConstants;
@@ -284,7 +282,7 @@ public class AttachmentPartImpl extends 
         if (datahandler != null) {
             this.dataHandler = datahandler;
             setMimeHeader(HTTPConstants.HEADER_CONTENT_TYPE, datahandler.getContentType());
-            omText = DOOMAbstractFactory.getOMFactory().createOMText(datahandler, true);
+            omText = OMAbstractFactory.getMetaFactory(OMAbstractFactory.FEATURE_DOM).getOMFactory().createOMText(datahandler, true);
         } else {
             throw new IllegalArgumentException("Cannot set null DataHandler");
         }
@@ -528,10 +526,6 @@ public class AttachmentPartImpl extends 
         return omText;
     }
 
-    public TextImpl getText(DocumentImpl doc) {
-        return new TextImpl(doc, omText.getText(), doc.getOMFactory());
-    }
-
     /**
      * Set the filename of this attachment part.
      *

Modified: axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/DetailEntryImpl.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/DetailEntryImpl.java?rev=1348340&r1=1348339&r2=1348340&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/DetailEntryImpl.java (original)
+++ axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/DetailEntryImpl.java Sat Jun  9 09:18:25 2012
@@ -19,7 +19,7 @@
 
 package org.apache.axis2.saaj;
 
-import org.apache.axiom.om.impl.dom.ElementImpl;
+import org.apache.axiom.om.OMElement;
 
 import javax.xml.namespace.QName;
 import javax.xml.soap.DetailEntry;
@@ -32,10 +32,10 @@ import java.util.Iterator;
  * which carries information about errors related to the SOAPBody  object that contains it, is
  * application-specific.
  */
-public class DetailEntryImpl extends SOAPElementImpl implements DetailEntry {
+public class DetailEntryImpl extends SOAPElementImpl<OMElement> implements DetailEntry {
 
     /** @param element  */
-    public DetailEntryImpl(ElementImpl element) {
+    public DetailEntryImpl(OMElement element) {
         super(element);
     }
 

Modified: axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/DetailImpl.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/DetailImpl.java?rev=1348340&r1=1348339&r2=1348340&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/DetailImpl.java (original)
+++ axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/DetailImpl.java Sat Jun  9 09:18:25 2012
@@ -19,7 +19,7 @@
 
 package org.apache.axis2.saaj;
 
-import org.apache.axiom.om.impl.dom.ElementImpl;
+import org.apache.axiom.om.OMElement;
 import org.apache.axiom.soap.SOAPFaultDetail;
 
 import javax.xml.namespace.QName;
@@ -52,14 +52,11 @@ import java.util.Iterator;
  * "http://www.wombat.org/trader"); d.addDetailEntry(name); Iterator it = d.getDetailEntries();
  * </PRE>
  */
-public class DetailImpl extends SOAPFaultElementImpl implements Detail {
-
-//    private SOAPFaultDetail faultDetail;
+public class DetailImpl extends SOAPFaultElementImpl<SOAPFaultDetail> implements Detail {
 
     /** @param element  */
     public DetailImpl(SOAPFaultDetail element) {
-        super((ElementImpl)element);
-//        faultDetail = element;
+        super(element);
     }
 
     /**
@@ -72,8 +69,8 @@ public class DetailImpl extends SOAPFaul
      *                       Detail object.
      */
     public DetailEntry addDetailEntry(Name name) throws SOAPException {
-        SOAPElementImpl childElement = (SOAPElementImpl)addChildElement(name);
-        DetailEntryImpl detailEntry = new DetailEntryImpl(childElement.target);
+        SOAPElementImpl<?> childElement = (SOAPElementImpl<?>)addChildElement(name);
+        DetailEntryImpl detailEntry = new DetailEntryImpl(childElement.omTarget);
         childElement.target.setUserData(SAAJ_NODE, detailEntry, null);
         return detailEntry;
     }
@@ -85,10 +82,10 @@ public class DetailImpl extends SOAPFaul
      *         <code>Detail</code> object
      */
     public Iterator getDetailEntries() {
-        final Iterator detailEntriesIter = target.getChildElements();
+        final Iterator detailEntriesIter = omTarget.getChildElements();
         Collection details = new ArrayList();
         while (detailEntriesIter.hasNext()) {
-            details.add(new DetailEntryImpl((ElementImpl)detailEntriesIter.next()));
+            details.add(new DetailEntryImpl((OMElement)detailEntriesIter.next()));
         }
         return details.iterator();
     }
@@ -101,8 +98,8 @@ public class DetailImpl extends SOAPFaul
      *                       Detail object.
      */
     public DetailEntry addDetailEntry(QName qname) throws SOAPException {
-        SOAPElementImpl childElement = (SOAPElementImpl)addChildElement(qname);
-        DetailEntryImpl detailEntry = new DetailEntryImpl(childElement.target);
+        SOAPElementImpl<?> childElement = (SOAPElementImpl<?>)addChildElement(qname);
+        DetailEntryImpl detailEntry = new DetailEntryImpl(childElement.omTarget);
         childElement.target.setUserData(SAAJ_NODE, detailEntry, null);
         return detailEntry;
     }

Modified: axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/MessageFactoryImpl.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/MessageFactoryImpl.java?rev=1348340&r1=1348339&r2=1348340&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/MessageFactoryImpl.java (original)
+++ axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/MessageFactoryImpl.java Sat Jun  9 09:18:25 2012
@@ -19,8 +19,10 @@
 
 package org.apache.axis2.saaj;
 
-import org.apache.axiom.soap.impl.dom.soap11.SOAP11Factory;
-import org.apache.axiom.soap.impl.dom.soap12.SOAP12Factory;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMMetaFactory;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.w3c.dom.Element;
 
 import javax.xml.soap.MessageFactory;
 import javax.xml.soap.MimeHeaders;
@@ -96,19 +98,19 @@ public class MessageFactoryImpl extends 
      *                       protocol of this MessageFactory instance is DYNAMIC_SOAP_PROTOCOL
      */
     public SOAPMessage createMessage() throws SOAPException {
-        org.apache.axiom.soap.impl.dom.SOAPEnvelopeImpl soapEnvelope;
+        OMMetaFactory metaFactory = OMAbstractFactory.getMetaFactory(OMAbstractFactory.FEATURE_DOM);
+        SOAPEnvelope soapEnvelope;
         if (soapVersion.equals(SOAPConstants.SOAP_1_2_PROTOCOL)) {
-            soapEnvelope = (org.apache.axiom.soap.impl.dom.SOAPEnvelopeImpl)
-                            new SOAP12Factory().getDefaultEnvelope();
+            soapEnvelope = metaFactory.getSOAP12Factory().getDefaultEnvelope();
         } else if (soapVersion.equals(SOAPConstants.DYNAMIC_SOAP_PROTOCOL)) {
             throw new UnsupportedOperationException("createMessage() is not supported for " +
                     "DYNAMIC_SOAP_PROTOCOL");
         } else {
             //SOAP 1.1
-            soapEnvelope = (org.apache.axiom.soap.impl.dom.SOAPEnvelopeImpl)
-                            new SOAP11Factory().getDefaultEnvelope();
+            soapEnvelope = metaFactory.getSOAP11Factory().getDefaultEnvelope();
         }
-        soapEnvelope.getOwnerDocument().appendChild(soapEnvelope);
+        Element domSoapEnvelope = (Element)soapEnvelope;
+        domSoapEnvelope.getOwnerDocument().appendChild(domSoapEnvelope);
         SOAPMessageImpl soapMessage = new SOAPMessageImpl(new SOAPEnvelopeImpl(soapEnvelope));
         soapMessage.setSaveRequired();
         return soapMessage;

Modified: 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/SAAJNode.java?rev=1348340&r1=1348339&r2=1348340&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/SAAJNode.java Sat Jun  9 09:18:25 2012
@@ -23,11 +23,13 @@ import org.apache.axiom.om.OMContainer;
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMException;
 import org.apache.axiom.om.OMNode;
-import org.apache.axiom.om.impl.dom.DOMMessageFormatter;
-import org.apache.axiom.om.impl.dom.ElementImpl;
-import org.apache.axiom.om.impl.dom.NodeImpl;
-import org.apache.axiom.soap.impl.dom.SOAPBodyImpl;
-import org.apache.axiom.soap.impl.dom.SOAPEnvelopeImpl;
+import org.apache.axiom.soap.SOAPBody;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFault;
+import org.apache.axiom.soap.SOAPFaultDetail;
+import org.apache.axiom.soap.SOAPFaultNode;
+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;
@@ -48,19 +50,25 @@ 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> implements Node {
+public abstract class SAAJNode<T extends org.w3c.dom.Node, S extends OMNode> implements Node {
     protected final T target;
+    protected final S omTarget;
     protected SOAPElement parentElement;
     static final String SAAJ_NODE = "saaj.node";
 
-    public SAAJNode(T target) {
+    public SAAJNode(T target, S omTarget) {
         this.target = target;
+        this.omTarget = omTarget;
     }
 
     public final T getTarget() {
         return target;
     }
 
+    public final S getOMTarget() {
+        return omTarget;
+    }
+
     /**
      * Removes this <code>Node</code> object from the tree. Once removed, this node can be garbage
      * collected if there are no application references to it.
@@ -165,7 +173,7 @@ public abstract class SAAJNode<T extends
         if (domNode == null) {
             return null;
         }
-        Node saajNode = (Node)((NodeImpl)domNode).getUserData(SAAJ_NODE);
+        Node saajNode = (Node)domNode.getUserData(SAAJ_NODE);
         if (saajNode == null) {  // if SAAJ node has not been set in userData, try to construct it
             return toSAAJNode2(domNode, parentNode);
         }
@@ -190,77 +198,62 @@ public abstract class SAAJNode<T extends
             Text text = (Text)domNode;
             org.w3c.dom.Node prevSiblingDOMNode = text.getPreviousSibling();
             org.w3c.dom.Node nextSiblingDOMNode = text.getNextSibling();
-            SOAPElementImpl parent = new SOAPElementImpl((ElementImpl)domNode.getParentNode());
+            SOAPElementImpl<OMElement> parent = new SOAPElementImpl<OMElement>((OMElement)domNode.getParentNode());
             TextImplEx saajTextNode =
                     new TextImplEx(text.getData(), parent, prevSiblingDOMNode, nextSiblingDOMNode);
-            ((NodeImpl)domNode).setUserData(SAAJ_NODE, saajTextNode, null);
+            domNode.setUserData(SAAJ_NODE, saajTextNode, null);
             return saajTextNode;
         } 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 parent = new SOAPElementImpl((ElementImpl)domNode.getParentNode());
+            SOAPElementImpl<OMElement> parent = new SOAPElementImpl<OMElement>((OMElement)domNode.getParentNode());
             CommentImpl saajTextNode = new CommentImpl(comment.getData(),
                                                      parent, prevSiblingDOMNode,
                                                      nextSiblingDOMNode);
-            ((NodeImpl)domNode).setUserData(SAAJ_NODE, saajTextNode, null);
+            domNode.setUserData(SAAJ_NODE, saajTextNode, null);
             return saajTextNode;
-        } else if (domNode instanceof org.apache.axiom.soap.impl.dom.SOAPBodyImpl) {
-            org.apache.axiom.soap.impl.dom.SOAPBodyImpl doomSOAPBody = (SOAPBodyImpl)domNode;
+        } else if (domNode instanceof SOAPBody) {
             javax.xml.soap.SOAPBody saajSOAPBody =
-                    new org.apache.axis2.saaj.SOAPBodyImpl(doomSOAPBody);
-            doomSOAPBody.setUserData(SAAJ_NODE, saajSOAPBody, null);
+                    new org.apache.axis2.saaj.SOAPBodyImpl((SOAPBody)domNode);
+            domNode.setUserData(SAAJ_NODE, saajSOAPBody, null);
             return saajSOAPBody;
-        } else if (domNode instanceof org.apache.axiom.soap.impl.dom.SOAPEnvelopeImpl) {
-            org.apache.axiom.soap.impl.dom.SOAPEnvelopeImpl doomSOAPEnv
-                    = (SOAPEnvelopeImpl)domNode;
+        } else if (domNode instanceof SOAPEnvelope) {
             javax.xml.soap.SOAPEnvelope saajEnvelope
-                    = new org.apache.axis2.saaj.SOAPEnvelopeImpl(doomSOAPEnv);
-            doomSOAPEnv.setUserData(SAAJ_NODE, saajEnvelope, null);
+                    = new org.apache.axis2.saaj.SOAPEnvelopeImpl((SOAPEnvelope)domNode);
+            domNode.setUserData(SAAJ_NODE, saajEnvelope, null);
             return saajEnvelope;
-        } else if (domNode instanceof org.apache.axiom.soap.impl.dom.SOAPFaultNodeImpl) {
-            org.apache.axiom.soap.impl.dom.SOAPFaultNodeImpl doomSOAPFaultNode
-                    = (org.apache.axiom.soap.impl.dom.SOAPFaultNodeImpl)domNode;
+        } else if (domNode instanceof SOAPFaultNode) {
             javax.xml.soap.SOAPFaultElement saajSOAPFaultEle
-                    = new org.apache.axis2.saaj.SOAPFaultElementImpl(doomSOAPFaultNode);
-            doomSOAPFaultNode.setUserData(SAAJ_NODE, saajSOAPFaultEle, null);
+                    = new org.apache.axis2.saaj.SOAPFaultElementImpl<SOAPFaultNode>((SOAPFaultNode)domNode);
+            domNode.setUserData(SAAJ_NODE, saajSOAPFaultEle, null);
             return saajSOAPFaultEle;
-        } else if (domNode instanceof org.apache.axiom.soap.impl.dom.SOAPFaultDetailImpl) {
-            org.apache.axiom.soap.impl.dom.SOAPFaultDetailImpl doomSOAPFaultDetail
-                    = (org.apache.axiom.soap.impl.dom.SOAPFaultDetailImpl)domNode;
+        } else if (domNode instanceof SOAPFaultDetail) {
             javax.xml.soap.Detail saajDetail
-                    = new org.apache.axis2.saaj.DetailImpl(doomSOAPFaultDetail);
-            doomSOAPFaultDetail.setUserData(SAAJ_NODE, saajDetail, null);
+                    = new org.apache.axis2.saaj.DetailImpl((SOAPFaultDetail)domNode);
+            domNode.setUserData(SAAJ_NODE, saajDetail, null);
             return saajDetail;
-        } else if (domNode instanceof org.apache.axiom.soap.impl.dom.SOAPFaultImpl) {
-            org.apache.axiom.soap.impl.dom.SOAPFaultImpl doomSOAPFault
-                    = (org.apache.axiom.soap.impl.dom.SOAPFaultImpl)domNode;
+        } else if (domNode instanceof SOAPFault) {
             javax.xml.soap.SOAPFault saajSOAPFault
-                    = new org.apache.axis2.saaj.SOAPFaultImpl(doomSOAPFault);
-            doomSOAPFault.setUserData(SAAJ_NODE, saajSOAPFault, null);
+                    = new org.apache.axis2.saaj.SOAPFaultImpl((SOAPFault)domNode);
+            domNode.setUserData(SAAJ_NODE, saajSOAPFault, null);
             return saajSOAPFault;
-        } else if (domNode instanceof org.apache.axiom.soap.impl.dom.SOAPHeaderBlockImpl) {
-            org.apache.axiom.soap.impl.dom.SOAPHeaderBlockImpl doomSOAPHeaderBlock
-                    = (org.apache.axiom.soap.impl.dom.SOAPHeaderBlockImpl)domNode;
+        } else if (domNode instanceof SOAPHeaderBlock) {
             javax.xml.soap.SOAPHeaderElement saajSOAPHeaderEle
-                    = new org.apache.axis2.saaj.SOAPHeaderElementImpl(doomSOAPHeaderBlock);
-            doomSOAPHeaderBlock.setUserData(SAAJ_NODE, saajSOAPHeaderEle, null);
+                    = new org.apache.axis2.saaj.SOAPHeaderElementImpl((SOAPHeaderBlock)domNode);
+            domNode.setUserData(SAAJ_NODE, saajSOAPHeaderEle, null);
             return saajSOAPHeaderEle;
-        } else if (domNode instanceof org.apache.axiom.soap.impl.dom.SOAPHeaderImpl) {
-            org.apache.axiom.soap.impl.dom.SOAPHeaderImpl doomSOAPHeader
-                    = (org.apache.axiom.soap.impl.dom.SOAPHeaderImpl)domNode;
+        } else if (domNode instanceof SOAPHeader) {
             javax.xml.soap.SOAPHeader saajSOAPHeader
-                    = new org.apache.axis2.saaj.SOAPHeaderImpl(doomSOAPHeader);
-            doomSOAPHeader.setUserData(SAAJ_NODE, saajSOAPHeader, null);
+                    = new org.apache.axis2.saaj.SOAPHeaderImpl((SOAPHeader)domNode);
+            domNode.setUserData(SAAJ_NODE, saajSOAPHeader, null);
             return saajSOAPHeader;
-        } else if (domNode instanceof org.apache.axiom.om.impl.dom.DocumentImpl) {
+        } else if (domNode instanceof Document) {
             
             // Must be a SOAPEnvelope
             if (!(parentNode instanceof org.apache.axis2.saaj.SOAPEnvelopeImpl)) {
                 return null;
             }
-            org.apache.axiom.om.impl.dom.DocumentImpl doomDocument
-                = (org.apache.axiom.om.impl.dom.DocumentImpl)domNode;
             org.apache.axis2.saaj.SOAPEnvelopeImpl saajEnv = 
                 (org.apache.axis2.saaj.SOAPEnvelopeImpl) parentNode;
             javax.xml.soap.SOAPPart saajSOAPPart = null;
@@ -278,9 +271,8 @@ public abstract class SAAJNode<T extends
             domNode.setUserData(SAAJ_NODE, saajSOAPPart, null);
             return saajSOAPPart;
         } else { // instanceof org.apache.axis2.om.impl.dom.ElementImpl
-            ElementImpl doomElement = (ElementImpl)domNode;
-            SOAPElementImpl saajSOAPElement = new SOAPElementImpl(doomElement);
-            doomElement.setUserData(SAAJ_NODE, saajSOAPElement, null);
+            SOAPElementImpl<OMElement> saajSOAPElement = new SOAPElementImpl<OMElement>((OMElement)domNode);
+            domNode.setUserData(SAAJ_NODE, saajSOAPElement, null);
             return saajSOAPElement;
         }
     }
@@ -372,7 +364,7 @@ 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();
+            oldChild = ((SAAJNode<?,?>)oldChild).getTarget();
         }
         return target.removeChild(oldChild);
     }
@@ -432,8 +424,8 @@ public abstract class SAAJNode<T extends
         try {
             if (child instanceof Text) {
                 return appendText((Text)child);
-            } else if (child instanceof ElementImpl) {
-                return appendElement((ElementImpl)child);
+            } else if (child instanceof Element) {
+                return appendElement((Element)child);
             }
         } catch (SOAPException e) {
             DOMException ex = 
@@ -442,32 +434,30 @@ public abstract class SAAJNode<T extends
             throw ex;
         }
         throw new DOMException(DOMException.HIERARCHY_REQUEST_ERR,
-                DOMMessageFormatter.formatMessage(
-                        DOMMessageFormatter.DOM_DOMAIN,
-                        DOMException.HIERARCHY_REQUEST_ERR, null));
+                "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);
-        NodeImpl node = ((NodeImpl)target.appendChild(textNode));
+        target.appendChild(textNode);
         TextImplEx saajTextNode = new TextImplEx(text, (SOAPElement)this);
-        node.setUserData(SAAJ_NODE, saajTextNode, null);
+        textNode.setUserData(SAAJ_NODE, saajTextNode, null);
         return saajTextNode;
     }
     
-    protected Element appendElement(ElementImpl child) throws SOAPException {
+    protected Element appendElement(Element child) throws SOAPException {
         String namespaceURI = child.getNamespaceURI();
         String prefix = child.getPrefix();
 
-        SOAPElementImpl childEle = new SOAPElementImpl(child);
+        SOAPElementImpl<OMElement> childEle = new SOAPElementImpl<OMElement>((OMElement)child);
         
         childEle.target.setUserData(SAAJ_NODE, childEle, null);
         if (namespaceURI != null && namespaceURI.trim().length() > 0) {
-            childEle.target.setNamespace(childEle.target.declareNamespace(namespaceURI, prefix));
+            childEle.omTarget.setNamespace(childEle.omTarget.declareNamespace(namespaceURI, prefix));
         }
         target.appendChild(childEle.target);
-        ((NodeImpl)childEle.target.getParentNode()).setUserData(SAAJ_NODE, this, null);
+        childEle.target.getParentNode().setUserData(SAAJ_NODE, this, null);
         childEle.setParentElement((SOAPElement)this);
         return childEle;
     }

Modified: axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPBodyElementImpl.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPBodyElementImpl.java?rev=1348340&r1=1348339&r2=1348340&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPBodyElementImpl.java (original)
+++ axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPBodyElementImpl.java Sat Jun  9 09:18:25 2012
@@ -19,7 +19,7 @@
 
 package org.apache.axis2.saaj;
 
-import org.apache.axiom.om.impl.dom.ElementImpl;
+import org.apache.axiom.om.OMElement;
 
 import javax.xml.namespace.QName;
 import javax.xml.soap.SOAPBody;
@@ -28,10 +28,10 @@ import javax.xml.soap.SOAPElement;
 import javax.xml.soap.SOAPException;
 import java.util.Iterator;
 
-public class SOAPBodyElementImpl extends SOAPElementImpl implements SOAPBodyElement {
+public class SOAPBodyElementImpl<T extends OMElement> extends SOAPElementImpl<T> implements SOAPBodyElement {
 
     /** @param element  */
-    public SOAPBodyElementImpl(ElementImpl element) {
+    public SOAPBodyElementImpl(T element) {
         super(element);
     }
 

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=1348340&r1=1348339&r2=1348340&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 Sat Jun  9 09:18:25 2012
@@ -19,17 +19,12 @@
 
 package org.apache.axis2.saaj;
 
+import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMNamespace;
 import org.apache.axiom.om.OMNode;
-import org.apache.axiom.om.impl.dom.DocumentImpl;
-import org.apache.axiom.om.impl.dom.ElementImpl;
-import org.apache.axiom.om.impl.dom.NamespaceImpl;
-import org.apache.axiom.om.impl.dom.NodeImpl;
+import org.apache.axiom.soap.SOAP11Version;
+import org.apache.axiom.soap.SOAP12Version;
 import org.apache.axiom.soap.SOAPFactory;
-import org.apache.axiom.soap.impl.dom.soap11.SOAP11Factory;
-import org.apache.axiom.soap.impl.dom.soap11.SOAP11FaultImpl;
-import org.apache.axiom.soap.impl.dom.soap12.SOAP12Factory;
-import org.apache.axiom.soap.impl.dom.soap12.SOAP12FaultImpl;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.NamedNodeMap;
@@ -52,29 +47,27 @@ import java.util.Collection;
 import java.util.Iterator;
 import java.util.Locale;
 
-public class SOAPBodyImpl extends SOAPElementImpl implements SOAPBody {
+public class SOAPBodyImpl extends SOAPElementImpl<org.apache.axiom.soap.SOAPBody> implements SOAPBody {
 
-    private org.apache.axiom.soap.SOAPBody omSOAPBody;
     private boolean isBodyElementAdded;
 
     /** @param omSOAPBody  */
     public SOAPBodyImpl(org.apache.axiom.soap.SOAPBody omSOAPBody) {
-        super((ElementImpl)omSOAPBody);
-        this.omSOAPBody = omSOAPBody;
+        super(omSOAPBody);
     }
 
     /* (non-Javadoc)
     * @see javax.xml.soap.SOAPElement#addChildElement(java.lang.String)
     */
     public SOAPElement addChildElement(String localName) throws SOAPException {
-        if (omSOAPBody.hasFault()) {
+        if (omTarget.hasFault()) {
             throw new SOAPException("A SOAPFault has been already added to this SOAPBody");
         }
-        SOAPBodyElementImpl childEle =
-                new SOAPBodyElementImpl((ElementImpl)getOwnerDocument().createElement(localName));
+        SOAPBodyElementImpl<OMElement> childEle =
+                new SOAPBodyElementImpl<OMElement>((OMElement)getOwnerDocument().createElement(localName));
         childEle.target.setUserData(SAAJ_NODE, childEle, null);
         target.appendChild(childEle.target);
-        ((NodeImpl)childEle.target.getParentNode()).setUserData(SAAJ_NODE, this, null);
+        childEle.target.getParentNode().setUserData(SAAJ_NODE, this, null);
         isBodyElementAdded = true;
         return childEle;
     }
@@ -85,31 +78,31 @@ public class SOAPBodyImpl extends SOAPEl
         if (namespaceURI == null) {
             throw new SOAPException("Namespace not declared for the give prefix: " + prefix);
         }
-        SOAPBodyElementImpl childEle =
-                new SOAPBodyElementImpl(
-                        (ElementImpl)getOwnerDocument().createElementNS(namespaceURI,
+        SOAPBodyElementImpl<OMElement> childEle =
+                new SOAPBodyElementImpl<OMElement>(
+                        (OMElement)getOwnerDocument().createElementNS(namespaceURI,
                                                                         localName));
         childEle.target.setUserData(SAAJ_NODE, childEle, null);
-        childEle.target.setNamespace(childEle.target.declareNamespace(namespaceURI, prefix));
+        childEle.omTarget.setNamespace(childEle.omTarget.declareNamespace(namespaceURI, prefix));
         target.appendChild(childEle.target);
-        ((NodeImpl)childEle.target.getParentNode()).setUserData(SAAJ_NODE, this, null);
+        childEle.target.getParentNode().setUserData(SAAJ_NODE, this, null);
         childEle.setParentElement(this);
         return childEle;
     }
 
     @Override
-    protected Element appendElement(ElementImpl child) throws SOAPException {    
+    protected Element appendElement(Element child) throws SOAPException {    
         String namespaceURI = child.getNamespaceURI();
         String prefix = child.getPrefix();
 
-        SOAPBodyElementImpl childEle = new SOAPBodyElementImpl(child);
+        SOAPBodyElementImpl<OMElement> childEle = new SOAPBodyElementImpl<OMElement>((OMElement)child);
 
         childEle.target.setUserData(SAAJ_NODE, childEle, null);
         if (namespaceURI != null && namespaceURI.trim().length() > 0) {
-            childEle.target.setNamespace(childEle.target.declareNamespace(namespaceURI, prefix));
+            childEle.omTarget.setNamespace(childEle.omTarget.declareNamespace(namespaceURI, prefix));
         }
         target.appendChild(childEle.target);
-        ((NodeImpl)childEle.target.getParentNode()).setUserData(SAAJ_NODE, this, null);
+        childEle.target.getParentNode().setUserData(SAAJ_NODE, this, null);
         childEle.setParentElement(this);
         return childEle;
     }
@@ -119,16 +112,16 @@ public class SOAPBodyImpl extends SOAPEl
         String prefix = soapElement.getPrefix();
         String localName = soapElement.getLocalName();
 
-        SOAPBodyElementImpl childEle;
+        SOAPBodyElementImpl<OMElement> childEle;
         if (namespaceURI == null || namespaceURI.trim().length() == 0) {
             childEle =
-                new SOAPBodyElementImpl(
-                        (ElementImpl)getOwnerDocument().createElement(localName));
+                new SOAPBodyElementImpl<OMElement>(
+                        (OMElement)getOwnerDocument().createElement(localName));
         } else {
-            target.declareNamespace(namespaceURI, prefix);
+            omTarget.declareNamespace(namespaceURI, prefix);
             childEle =
-                new SOAPBodyElementImpl(
-                        (ElementImpl)getOwnerDocument().createElementNS(namespaceURI,
+                new SOAPBodyElementImpl<OMElement>(
+                        (OMElement)getOwnerDocument().createElementNS(namespaceURI,
                                                                         localName));            
         }
 
@@ -148,10 +141,10 @@ public class SOAPBodyImpl extends SOAPEl
 
         childEle.target.setUserData(SAAJ_NODE, childEle, null);
         if (namespaceURI != null && namespaceURI.trim().length() > 0) {
-            childEle.target.setNamespace(childEle.target.declareNamespace(namespaceURI, prefix));
+            childEle.omTarget.setNamespace(childEle.omTarget.declareNamespace(namespaceURI, prefix));
         }
         target.appendChild(childEle.target);
-        ((NodeImpl)childEle.target.getParentNode()).setUserData(SAAJ_NODE, this, null);
+        childEle.target.getParentNode().setUserData(SAAJ_NODE, this, null);
         childEle.setParentElement(this);
         return childEle;
     }
@@ -161,29 +154,29 @@ public class SOAPBodyImpl extends SOAPEl
     */
     public SOAPElement addChildElement(String localName, String prefix, String uri)
             throws SOAPException {
-        if (omSOAPBody.hasFault()) {
+        if (omTarget.hasFault()) {
             throw new SOAPException("A SOAPFault has been already added to this SOAPBody");
         }
         if (prefix == null) {
             prefix = "";
         }
-        SOAPBodyElementImpl childEle;
+        SOAPBodyElementImpl<OMElement> childEle;
         if (uri == null || "".equals(uri)) {
-            childEle = new SOAPBodyElementImpl(
-                    (ElementImpl)getOwnerDocument().createElement(localName));
+            childEle = new SOAPBodyElementImpl<OMElement>(
+                    (OMElement)getOwnerDocument().createElement(localName));
         } else if (prefix.length() == 0) {
-            childEle = new SOAPBodyElementImpl(
-                (ElementImpl)getOwnerDocument().createElementNS(uri,
+            childEle = new SOAPBodyElementImpl<OMElement>(
+                (OMElement)getOwnerDocument().createElementNS(uri,
                                                                 localName));
         } else {
-            childEle = new SOAPBodyElementImpl(
-                    (ElementImpl)getOwnerDocument().createElementNS(uri,
+            childEle = new SOAPBodyElementImpl<OMElement>(
+                    (OMElement)getOwnerDocument().createElementNS(uri,
                                                                     prefix + ":" + localName));
         }
         childEle.target.setUserData(SAAJ_NODE, childEle, null);
-        childEle.target.setNamespace(target.getOMFactory().createOMNamespace(uri, prefix));
+        childEle.omTarget.setNamespace(omTarget.getOMFactory().createOMNamespace(uri, prefix));
         target.appendChild(childEle.target);
-        ((NodeImpl)childEle.target.getParentNode()).setUserData(SAAJ_NODE, this, null);
+        childEle.target.getParentNode().setUserData(SAAJ_NODE, this, null);
         isBodyElementAdded = true;
         childEle.setParentElement(this);
         return childEle;
@@ -200,21 +193,12 @@ public class SOAPBodyImpl extends SOAPEl
         if (isBodyElementAdded) {
             throw new SOAPException("A SOAPBodyElement has been already added to this SOAPBody");
         }
-        SOAPFaultImpl saajSOAPFault = null;
-
-        if (this.target.getOMFactory() instanceof SOAP11Factory) {
-            SOAP11FaultImpl fault =
-                    new SOAP11FaultImpl(omSOAPBody, (SOAPFactory)this.target.getOMFactory());
-            saajSOAPFault = new SOAPFaultImpl(fault);
-        } else if (this.target.getOMFactory() instanceof SOAP12Factory) {
-            SOAP12FaultImpl fault =
-                    new SOAP12FaultImpl(omSOAPBody, (SOAPFactory)this.target.getOMFactory());
-            saajSOAPFault = new SOAPFaultImpl(fault);
-        }
+        org.apache.axiom.soap.SOAPFault fault = ((SOAPFactory)this.omTarget.getOMFactory()).createSOAPFault(omTarget);
+        SOAPFaultImpl saajSOAPFault = new SOAPFaultImpl(fault);
         // set default fault code and string
         saajSOAPFault.setDefaults();
         
-        ((NodeImpl)omSOAPBody.getFault()).setUserData(SAAJ_NODE, saajSOAPFault, null);
+        ((Element)omTarget.getFault()).setUserData(SAAJ_NODE, saajSOAPFault, null);
         return saajSOAPFault;
     }
 
@@ -226,7 +210,7 @@ public class SOAPBodyImpl extends SOAPEl
      *         <code>SOAPBody</code> object; <code>false</code> otherwise
      */
     public boolean hasFault() {
-        return omSOAPBody.hasFault();
+        return omTarget.hasFault();
     }
 
     /**
@@ -235,8 +219,8 @@ public class SOAPBodyImpl extends SOAPEl
      * @return the <code>SOAPFault</code> object in this <code>SOAPBody</code> object
      */
     public SOAPFault getFault() {
-        if (omSOAPBody.hasFault()) {
-            return (SOAPFault)toSAAJNode((org.w3c.dom.Node)omSOAPBody.getFault());
+        if (omTarget.hasFault()) {
+            return (SOAPFault)toSAAJNode((org.w3c.dom.Node)omTarget.getFault());
         }
         return null;
     }
@@ -270,14 +254,7 @@ public class SOAPBodyImpl extends SOAPEl
      */
     public SOAPFault addFault(Name faultCode, String faultString, Locale locale)
             throws SOAPException {
-        org.apache.axiom.soap.SOAPFault fault;
-        if (this.target.getOMFactory() instanceof SOAP11Factory) {
-            fault = new SOAP11FaultImpl(omSOAPBody, new Exception(
-                    faultString), (SOAPFactory)this.target.getOMFactory());
-        } else {
-            fault = new SOAP12FaultImpl(omSOAPBody, new Exception(
-                    faultString), (SOAPFactory)this.target.getOMFactory());
-        }
+        org.apache.axiom.soap.SOAPFault fault = ((SOAPFactory)this.omTarget.getOMFactory()).createSOAPFault(omTarget);
         SOAPFaultImpl faultImpl = new SOAPFaultImpl(fault);
         faultImpl.setFaultCode(faultCode);
 
@@ -323,8 +300,8 @@ public class SOAPBodyImpl extends SOAPEl
         Element docEle = document.getDocumentElement();
 
         SOAPElement saajSOAPEle = (SOAPElement)toSAAJNode(docEle, this);
-        SOAPBodyElementImpl bodyEle =
-                new SOAPBodyElementImpl(((SOAPElementImpl)saajSOAPEle).target);
+        SOAPBodyElementImpl<OMElement> bodyEle =
+                new SOAPBodyElementImpl<OMElement>(((SOAPElementImpl<?>)saajSOAPEle).omTarget);
         addChildElement(bodyEle);
         return bodyEle;
     }
@@ -362,17 +339,8 @@ public class SOAPBodyImpl extends SOAPEl
      */
     public SOAPFault addFault(QName faultCode, String faultString, Locale locale)
             throws SOAPException {
-        SOAPFaultImpl faultImpl = null;
-
-        if (this.target.getOMFactory() instanceof SOAP11Factory) {
-            SOAP11FaultImpl fault = new SOAP11FaultImpl(omSOAPBody, new Exception(
-                    faultString), (SOAPFactory)this.target.getOMFactory());
-            faultImpl = new SOAPFaultImpl(fault);
-        } else if (this.target.getOMFactory() instanceof SOAP12Factory) {
-            SOAP12FaultImpl fault = new SOAP12FaultImpl(omSOAPBody, new Exception(
-                    faultString), (SOAPFactory)this.target.getOMFactory());
-            faultImpl = new SOAPFaultImpl(fault);
-        }
+        org.apache.axiom.soap.SOAPFault fault = ((SOAPFactory)this.omTarget.getOMFactory()).createSOAPFault(omTarget);
+        SOAPFaultImpl faultImpl = new SOAPFaultImpl(fault);
 
         if (faultImpl != null) {
             faultImpl.setFaultCode(faultCode);
@@ -439,11 +407,11 @@ public class SOAPBodyImpl extends SOAPEl
         }
         Element domEle = ((Element)node);
         int indexOfColon = domEle.getTagName().indexOf(":");
-        NamespaceImpl ns;
+        OMNamespace ns;
         String localName;
         if (indexOfColon != -1) {
             localName = domEle.getTagName().substring(indexOfColon + 1);
-            ns = new NamespaceImpl(domEle.getNamespaceURI(),
+            ns = omTarget.getOMFactory().createOMNamespace(domEle.getNamespaceURI(),
                                    domEle.getTagName().substring(0, indexOfColon));
         } else {
             localName = domEle.getLocalName();
@@ -456,21 +424,20 @@ public class SOAPBodyImpl extends SOAPEl
                 prefix = "";
             }
             if (domEle.getNamespaceURI() != null) {
-                ns = new NamespaceImpl(domEle.getNamespaceURI(), prefix);
+                ns = omTarget.getOMFactory().createOMNamespace(domEle.getNamespaceURI(), prefix);
             } else {
                 if (prefix != null) {
-                    ns = new NamespaceImpl("", prefix);
+                    ns = omTarget.getOMFactory().createOMNamespace("", prefix);
                 } else {
-                    ns = new NamespaceImpl("", "");
+                    ns = omTarget.getOMFactory().createOMNamespace("", "");
                     
                 }
             }
         }
-        ElementImpl eleImpl =
-                new ElementImpl((DocumentImpl)this.getOwnerDocument(),
-                                localName, ns, this.target.getOMFactory());
+        OMElement eleImpl = this.omTarget.getOMFactory().createOMElement(localName, ns);
+        getOwnerDocument().adoptNode((Element)eleImpl);
 
-        SOAPElementImpl saajEle = new SOAPElementImpl(eleImpl);
+        SOAPElementImpl<OMElement> saajEle = new SOAPElementImpl<OMElement>(eleImpl);
 
         saajEle.setParentElement(parent);
         NamedNodeMap domAttrs = domEle.getAttributes();
@@ -508,61 +475,53 @@ public class SOAPBodyImpl extends SOAPEl
 
     public OMNode detach() {
         this.parentElement = null;
-        return this.target.detach();
+        return this.omTarget.detach();
     }
 
     public Iterator getChildElements(Name name) {
         QName qName = new QName(name.getURI(), name.getLocalName());
-        return getChildren(target.getChildrenWithName(qName));
+        return getChildren(omTarget.getChildrenWithName(qName));
     }
 
     public SOAPElement addAttribute(QName qname, String value) throws SOAPException {
-        OMNamespace omNamespace = null;
-        SOAPFactory soapFactory;
-        if (this.target.getOMFactory() instanceof SOAP11Factory) {
-            soapFactory = new SOAP11Factory();
-            omNamespace = soapFactory.createOMNamespace(qname.getNamespaceURI(), qname.getPrefix());
-        } else if (this.target.getOMFactory() instanceof SOAP12Factory) {
-            soapFactory = new SOAP12Factory();
-            omNamespace = soapFactory.createOMNamespace(qname.getNamespaceURI(), qname.getPrefix());
-        }
-        this.target.addAttribute(qname.getLocalPart(), value, omNamespace);
+        OMNamespace omNamespace = this.omTarget.getOMFactory().createOMNamespace(qname.getNamespaceURI(), qname.getPrefix());
+        this.omTarget.addAttribute(qname.getLocalPart(), value, omNamespace);
         return this;
     }
 
     public SOAPElement addChildElement(QName qname) throws SOAPException {
-        if (omSOAPBody.hasFault()) {
+        if (omTarget.hasFault()) {
             throw new SOAPException("A SOAPFault has been already added to this SOAPBody");
         }
-        SOAPBodyElementImpl childEle;
+        SOAPBodyElementImpl<OMElement> childEle;
         if (qname.getNamespaceURI() == null || "".equals(qname.getNamespaceURI())) {
-            childEle = new SOAPBodyElementImpl(
-                    (ElementImpl)getOwnerDocument().createElement(qname.getLocalPart()));
+            childEle = new SOAPBodyElementImpl<OMElement>(
+                    (OMElement)getOwnerDocument().createElement(qname.getLocalPart()));
         }else if(null == qname.getPrefix() || "".equals(qname.getPrefix().trim())) {
-            childEle = new SOAPBodyElementImpl(
-                    (ElementImpl)getOwnerDocument().createElementNS(qname.getNamespaceURI(),
+            childEle = new SOAPBodyElementImpl<OMElement>(
+                    (OMElement)getOwnerDocument().createElementNS(qname.getNamespaceURI(),
                                                                             qname.getLocalPart()));
         }else {
-            childEle = new SOAPBodyElementImpl(
-                    (ElementImpl)getOwnerDocument().createElementNS(qname.getNamespaceURI(),
+            childEle = new SOAPBodyElementImpl<OMElement>(
+                    (OMElement)getOwnerDocument().createElementNS(qname.getNamespaceURI(),
                                                                     qname.getPrefix() + ":" +
                                                                             qname.getLocalPart()));
         }
         childEle.target.setUserData(SAAJ_NODE, childEle, null);
-        childEle.target.setNamespace(target.getOMFactory().createOMNamespace(qname.getNamespaceURI(), qname.getPrefix()));
+        childEle.omTarget.setNamespace(omTarget.getOMFactory().createOMNamespace(qname.getNamespaceURI(), qname.getPrefix()));
 
         target.appendChild(childEle.target);
-        ((NodeImpl)childEle.target.getParentNode()).setUserData(SAAJ_NODE, this, null);
+        childEle.target.getParentNode().setUserData(SAAJ_NODE, this, null);
         isBodyElementAdded = true;
         childEle.setParentElement(this);
         return childEle;
     }
 
     public QName createQName(String localName, String prefix) throws SOAPException {
-        if (this.target.getOMFactory() instanceof SOAP11Factory) {
+        if (((SOAPFactory)this.omTarget.getOMFactory()).getSOAPVersion() == SOAP11Version.getSingleton()) {
             return super.createQName(localName, prefix);
-        } else if (this.target.getOMFactory() instanceof SOAP12Factory) {
-            if (this.target.findNamespaceURI(prefix) == null) {
+        } else if (((SOAPFactory)this.omTarget.getOMFactory()).getSOAPVersion() == SOAP12Version.getSingleton()) {
+            if (this.omTarget.findNamespaceURI(prefix) == null) {
                 throw new SOAPException("Only Namespace Qualified elements are allowed");
             } else {
                 return super.createQName(localName, prefix);
@@ -598,7 +557,7 @@ public class SOAPBodyImpl extends SOAPEl
     }
 
     public Iterator getChildElements() {
-        return getChildren(target.getChildren());
+        return getChildren(omTarget.getChildren());
     }
 
     public SOAPElement addTextNode(String text) throws SOAPException {
@@ -614,23 +573,18 @@ public class SOAPBodyImpl extends SOAPEl
                 childElements.add(saajNode);
             } else if (!(saajNode instanceof SOAPBodyElement)) {
                 // silently replace node, as per saaj 1.2 spec
-                if (domNode instanceof ElementImpl) {
-                    if (omSOAPBody.hasFault()) {
+                if (domNode instanceof Element) {
+                    if (omTarget.hasFault()) {
 
-                        SOAPFactory omFactory = (SOAPFactory)this.target.getOMFactory();
-                        org.apache.axiom.soap.SOAPFault fault;
-                        if (omFactory instanceof SOAP11Factory) {
-                            fault = new SOAP11FaultImpl(omSOAPBody, omFactory);
-                        } else {
-                            fault = new SOAP12FaultImpl(omSOAPBody, omFactory);
-                        }
+                        SOAPFactory omFactory = (SOAPFactory)this.omTarget.getOMFactory();
+                        org.apache.axiom.soap.SOAPFault fault = omFactory.createSOAPFault(omTarget);
                         SOAPFaultImpl saajSOAPFault = new SOAPFaultImpl(fault);
-                        ((NodeImpl)omSOAPBody.getFault())
+                        ((Element)omTarget.getFault())
                                 .setUserData(SAAJ_NODE, saajSOAPFault, null);
                         childElements.add(saajSOAPFault);
                     } else {
-                        SOAPBodyElement saajBodyEle = new SOAPBodyElementImpl((ElementImpl)domNode);
-                        ((NodeImpl)domNode).setUserData(SAAJ_NODE, saajBodyEle, null);
+                        SOAPBodyElement saajBodyEle = new SOAPBodyElementImpl<OMElement>((OMElement)domNode);
+                        domNode.setUserData(SAAJ_NODE, saajBodyEle, null);
                         childElements.add(saajBodyEle);
                     }
                 }

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=1348340&r1=1348339&r2=1348340&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 Sat Jun  9 09:18:25 2012
@@ -21,18 +21,17 @@ package org.apache.axis2.saaj;
 
 import org.apache.axiom.om.OMAttribute;
 import org.apache.axiom.om.OMContainer;
+import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMException;
 import org.apache.axiom.om.OMNamespace;
 import org.apache.axiom.om.OMNode;
-import org.apache.axiom.om.impl.dom.DOMMessageFormatter;
-import org.apache.axiom.om.impl.dom.ElementImpl;
-import org.apache.axiom.om.impl.dom.NodeImpl;
-import org.apache.axiom.om.impl.dom.TextImpl;
-import org.apache.axiom.soap.impl.dom.soap11.SOAP11Factory;
-import org.apache.axiom.soap.impl.dom.soap12.SOAP12Factory;
+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;
 import org.w3c.dom.Attr;
 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;
@@ -57,23 +56,23 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Iterator;
 
-public class SOAPElementImpl extends SAAJNode<ElementImpl> implements SOAPElement {
+public class SOAPElementImpl<T extends OMElement> extends SAAJNode<Element,T> implements SOAPElement {
     private String encodingStyle;
 
-    public SOAPElementImpl(ElementImpl element) {
-        super(element);
+    public SOAPElementImpl(T element) {
+        super((Element)element, element);
     }
 
     /* (non-Javadoc)
       * @see org.apache.axiom.om.OMNode#discard()
       */
     public void discard() throws OMException {
-        target.discard();
+        omTarget.discard();
     }
 
     public void internalSerialize(javax.xml.stream.XMLStreamWriter writer, boolean cache)
             throws XMLStreamException {
-        target.internalSerialize(writer, cache);
+        ((OMElementEx)omTarget).internalSerialize(writer, cache);
     }
 
     /**
@@ -112,13 +111,13 @@ public class SOAPElementImpl extends SAA
         String prefix = soapElement.getPrefix();
         String localName = soapElement.getLocalName();
 
-        SOAPElementImpl childEle;        
+        SOAPElementImpl<OMElement> childEle;        
         if (namespaceURI == null || namespaceURI.trim().length() == 0) {
-            childEle =  new SOAPElementImpl((ElementImpl)getOwnerDocument().createElement(localName));
+            childEle =  new SOAPElementImpl<OMElement>((OMElement)getOwnerDocument().createElement(localName));
         } else {
-            target.declareNamespace(namespaceURI, prefix);
+            omTarget.declareNamespace(namespaceURI, prefix);
             childEle =
-                new SOAPElementImpl((ElementImpl)getOwnerDocument().createElementNS(namespaceURI,
+                new SOAPElementImpl<OMElement>((OMElement)getOwnerDocument().createElementNS(namespaceURI,
                                                                                     localName));
         }
         
@@ -138,10 +137,10 @@ public class SOAPElementImpl extends SAA
 
         childEle.target.setUserData(SAAJ_NODE, childEle, null);
         if (namespaceURI != null && namespaceURI.trim().length() > 0) {
-            childEle.target.setNamespace(childEle.target.declareNamespace(namespaceURI, prefix));
+            childEle.omTarget.setNamespace(childEle.omTarget.declareNamespace(namespaceURI, prefix));
         }
         target.appendChild(childEle.target);
-        ((NodeImpl)childEle.target.getParentNode()).setUserData(SAAJ_NODE, this, null);
+        childEle.target.getParentNode().setUserData(SAAJ_NODE, this, null);
         childEle.setParentElement(this);
         return childEle;
     }
@@ -154,16 +153,16 @@ public class SOAPElementImpl extends SAA
         if (prefix == null) {
             prefix = "";
         }
-        SOAPElementImpl childEle =
-                new SOAPElementImpl((ElementImpl)getOwnerDocument().
+        SOAPElementImpl<OMElement> childEle =
+                new SOAPElementImpl<OMElement>((OMElement)getOwnerDocument().
                         createElementNS(namespaceURI, prefix.length() == 0 ? localName : prefix + ":" + localName));
     
         childEle.target.setUserData(SAAJ_NODE, childEle, null);
-        childEle.target.setNamespace(prefix.length() == 0
-                ? childEle.target.declareDefaultNamespace(namespaceURI)
-                : childEle.target.declareNamespace(namespaceURI, prefix));
+        childEle.omTarget.setNamespace(prefix.length() == 0
+                ? childEle.omTarget.declareDefaultNamespace(namespaceURI)
+                : childEle.omTarget.declareNamespace(namespaceURI, prefix));
         target.appendChild(childEle.target);
-        ((NodeImpl)childEle.target.getParentNode()).setUserData(SAAJ_NODE, this, null);
+        childEle.target.getParentNode().setUserData(SAAJ_NODE, this, null);
         childEle.setParentElement(this);
         return childEle;
     }
@@ -185,11 +184,11 @@ public class SOAPElementImpl extends SAA
       * @see javax.xml.soap.SOAPElement#addChildElement(java.lang.String)
       */
     public SOAPElement addChildElement(String localName) throws SOAPException {
-        SOAPElementImpl childEle =
-                new SOAPElementImpl((ElementImpl)getOwnerDocument().createElement(localName));
+        SOAPElementImpl<OMElement> childEle =
+                new SOAPElementImpl<OMElement>((OMElement)getOwnerDocument().createElement(localName));
         childEle.target.setUserData(SAAJ_NODE, childEle, null);
         target.appendChild(childEle.target);
-        ((NodeImpl)childEle.target.getParentNode()).setUserData(SAAJ_NODE, this, null);
+        childEle.target.getParentNode().setUserData(SAAJ_NODE, this, null);
         childEle.setParentElement(this);
         return childEle;
     }
@@ -199,9 +198,9 @@ public class SOAPElementImpl extends SAA
       */
     public SOAPElement addNamespaceDeclaration(String prefix, String uri) throws SOAPException {
         if (prefix == null || prefix.length() == 0) {
-            target.declareDefaultNamespace(uri);
+            omTarget.declareDefaultNamespace(uri);
         } else {
-            target.declareNamespace(uri, prefix);
+            omTarget.declareNamespace(uri, prefix);
         }
         return this;
     }
@@ -220,9 +219,9 @@ public class SOAPElementImpl extends SAA
         //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);
-        NodeImpl node = ((NodeImpl)target.appendChild(textNode));
-        TextImplEx saajTextNode = new TextImplEx((TextImpl)textNode, this);
-        node.setUserData(SAAJ_NODE, saajTextNode, null);
+        target.appendChild(textNode);
+        TextImplEx saajTextNode = new TextImplEx((OMText)textNode, this);
+        textNode.setUserData(SAAJ_NODE, saajTextNode, null);
         return this;
     }
 
@@ -234,7 +233,7 @@ public class SOAPElementImpl extends SAA
      * @return an iterator over the names of the attributes
      */
     public Iterator getAllAttributes() {
-        final Iterator attribIter = target.getAllAttributes();
+        final Iterator attribIter = omTarget.getAllAttributes();
         Collection attribName = new ArrayList();
         Attr attr;
         while (attribIter.hasNext()) {
@@ -260,7 +259,7 @@ public class SOAPElementImpl extends SAA
     public String getAttributeValue(Name name) {
         //This method is waiting on the finalization of the name for a method
         //in OMElement that returns a OMAttribute from an input QName
-        final OMAttribute attribute = target.getAttribute(new QName(name.getURI(),
+        final OMAttribute attribute = omTarget.getAttribute(new QName(name.getURI(),
                                                                      name.getLocalName(),
                                                                      name.getPrefix()));
         if (attribute == null) {
@@ -277,7 +276,7 @@ public class SOAPElementImpl extends SAA
      *         <CODE>SOAPElement</CODE> object
      */
     public Iterator getChildElements() {
-        Iterator childIter = target.getChildren();
+        Iterator childIter = omTarget.getChildren();
         Collection childElements = new ArrayList();
         while (childIter.hasNext()) {
             childElements.add(toSAAJNode((org.w3c.dom.Node)childIter.next()));
@@ -290,7 +289,7 @@ public class SOAPElementImpl extends SAA
       */
     public Iterator getChildElements(Name name) {
         QName qName = new QName(name.getURI(), name.getLocalName());
-        Iterator childIter = target.getChildrenWithName(qName);
+        Iterator childIter = omTarget.getChildrenWithName(qName);
         Collection childElements = new ArrayList();
         while (childIter.hasNext()) {
             childElements.add(toSAAJNode((org.w3c.dom.Node)childIter.next()));
@@ -302,7 +301,7 @@ public class SOAPElementImpl extends SAA
       * @see javax.xml.soap.SOAPElement#getElementName()
       */
     public Name getElementName() {
-        QName qName = target.getQName();
+        QName qName = omTarget.getQName();
         return new PrefixedQName(qName.getNamespaceURI(),
                                  qName.getLocalPart(),
                                  qName.getPrefix());
@@ -321,7 +320,7 @@ public class SOAPElementImpl extends SAA
     public Iterator getNamespacePrefixes() {
         //Get all declared namespace, make a list of their prefixes and return an iterator over that list
         ArrayList prefixList = new ArrayList();
-        Iterator nsIter = target.getAllDeclaredNamespaces();
+        Iterator nsIter = omTarget.getAllDeclaredNamespaces();
         while (nsIter.hasNext()) {
             Object o = nsIter.next();
             if (o instanceof org.apache.axiom.om.OMNamespace) {
@@ -336,7 +335,8 @@ public class SOAPElementImpl extends SAA
       * @see javax.xml.soap.SOAPElement#getNamespaceURI(java.lang.String)
       */
     public String getNamespaceURI(String prefix) {
-        return target.getNamespaceURI(prefix);
+        OMNamespace ns = omTarget.findNamespaceURI(prefix);
+        return ns != null ? ns.getNamespaceURI() : null;
     }
 
     /* (non-Javadoc)
@@ -344,7 +344,7 @@ public class SOAPElementImpl extends SAA
       */
     public Iterator getVisibleNamespacePrefixes() {
         //I'll recursively return all the declared namespaces till this node, including its parents etc.
-        Iterator namespacesIter = target.getAllDeclaredNamespaces();
+        Iterator namespacesIter = omTarget.getAllDeclaredNamespaces();
         ArrayList returnList = new ArrayList();
         while (namespacesIter.hasNext()) {
             Object o = namespacesIter.next();
@@ -358,7 +358,7 @@ public class SOAPElementImpl extends SAA
         //taken care of adding namespaces of this node.
         //now we have to take care of adding the namespaces that are in the scope till the level of
         //this nodes' parent.
-        org.apache.axiom.om.OMContainer parent = target.getParent();
+        org.apache.axiom.om.OMContainer parent = omTarget.getParent();
         if (parent != null && parent instanceof org.apache.axiom.om.OMElement) {
             Iterator parentScopeNamespacesIter =
                     ((org.apache.axiom.om.OMElement)parent).getAllDeclaredNamespaces();
@@ -407,7 +407,7 @@ public class SOAPElementImpl extends SAA
      * @since SAAJ 1.3
      */
     public QName createQName(String localName, String prefix) throws SOAPException {
-        String namespaceURI = target.getNamespaceURI(prefix);
+        String namespaceURI = getNamespaceURI(prefix);
         if (namespaceURI == null) {
             throw new SOAPException("Invalid prefix");
         } else {
@@ -416,7 +416,7 @@ public class SOAPElementImpl extends SAA
     }
 
     public Iterator getAllAttributesAsQNames() {
-        final Iterator attribIter = target.getAllAttributes();
+        final Iterator attribIter = omTarget.getAllAttributes();
         Collection attributesAsQNames = new ArrayList();
         Attr attr;
         QName qname;
@@ -430,7 +430,7 @@ public class SOAPElementImpl extends SAA
     }
 
     public String getAttributeValue(QName qname) {
-        final OMAttribute attribute = target.getAttribute(qname);
+        final OMAttribute attribute = omTarget.getAttribute(qname);
         if (attribute == null) {
             return null;
         }
@@ -438,7 +438,7 @@ public class SOAPElementImpl extends SAA
     }
 
     public Iterator getChildElements(QName qname) {
-        Iterator childIter = target.getChildrenWithName(qname);
+        Iterator childIter = omTarget.getChildrenWithName(qname);
         Collection childElements = new ArrayList();
         while (childIter.hasNext()) {
             childElements.add(toSAAJNode((org.w3c.dom.Node)childIter.next()));
@@ -447,13 +447,13 @@ public class SOAPElementImpl extends SAA
     }
 
     public QName getElementQName() {
-        return target.getQName();
+        return omTarget.getQName();
     }
 
     public boolean removeAttribute(QName qname) {
-        org.apache.axiom.om.OMAttribute attr = target.getAttribute(qname);
+        org.apache.axiom.om.OMAttribute attr = omTarget.getAttribute(qname);
         if (attr != null) {
-            target.removeAttribute(attr);
+            omTarget.removeAttribute(attr);
             return true;
         }
         return false;
@@ -467,9 +467,9 @@ public class SOAPElementImpl extends SAA
             throw new SOAPException("changing this element name is not allowed");
         }
         OMNamespace omNamespace =
-                target.getOMFactory().createOMNamespace(newName.getNamespaceURI(), newName.getPrefix());
-        this.target.setNamespace(omNamespace);
-        this.target.setLocalName(newName.getLocalPart());
+                omTarget.getOMFactory().createOMNamespace(newName.getNamespaceURI(), newName.getPrefix());
+        this.omTarget.setNamespace(omNamespace);
+        this.omTarget.setLocalName(newName.getLocalPart());
         return this;
     }
 
@@ -477,11 +477,11 @@ public class SOAPElementImpl extends SAA
       * @see javax.xml.soap.SOAPElement#removeAttribute(javax.xml.soap.Name)
       */
     public boolean removeAttribute(Name name) {
-        org.apache.axiom.om.OMAttribute attr = target.getAttribute(new QName(name.getURI(),
+        org.apache.axiom.om.OMAttribute attr = omTarget.getAttribute(new QName(name.getURI(),
                                                                               name.getLocalName(),
                                                                               name.getPrefix()));
         if (attr != null) {
-            target.removeAttribute(attr);
+            omTarget.removeAttribute(attr);
             return true;
         }
         return false;
@@ -492,7 +492,7 @@ public class SOAPElementImpl extends SAA
       */
     public void removeContents() {
         //We will get all the children and iteratively call the detach() on all of 'em.
-        Iterator childIter = target.getChildElements();
+        Iterator childIter = omTarget.getChildElements();
         while (childIter.hasNext()) {
             childIter.next();
             childIter.remove();
@@ -503,7 +503,13 @@ public class SOAPElementImpl extends SAA
       * @see javax.xml.soap.SOAPElement#removeNamespaceDeclaration(java.lang.String)
       */
     public boolean removeNamespaceDeclaration(String prefix) {
-        return target.removeNamespace(prefix);
+        for (Iterator<OMNamespace> it = omTarget.getAllDeclaredNamespaces(); it.hasNext(); ) {
+            if (it.next().getPrefix().equals(prefix)) {
+                it.remove();
+                return true;
+            }
+        }
+        return false;
     }
 
 
@@ -516,7 +522,7 @@ public class SOAPElementImpl extends SAA
      *          the encodingStyle is invalid for this SOAPElement.
      */
     public void setEncodingStyle(String encodingStyle) throws SOAPException {
-        if (this.target.getOMFactory() instanceof SOAP11Factory) {
+        if (((SOAPFactory)this.omTarget.getOMFactory()).getSOAPVersion() == SOAP11Version.getSingleton()) {
             try {
                 URI uri = new URI(encodingStyle);
                 if (!(this instanceof SOAPEnvelope)) {
@@ -530,7 +536,7 @@ public class SOAPElementImpl extends SAA
                 throw new IllegalArgumentException("Invalid Encoding style : "
                         + encodingStyle + ":" + e);
             }
-        } else if (this.target.getOMFactory() instanceof SOAP12Factory) {
+        } else if (((SOAPFactory)this.omTarget.getOMFactory()).getSOAPVersion() == SOAP12Version.getSingleton()) {
             if (this instanceof SOAPHeader || this instanceof SOAPBody ||
                     this instanceof SOAPFault ||
                     this instanceof SOAPFaultElement || this instanceof SOAPEnvelope ||
@@ -544,7 +550,7 @@ public class SOAPElementImpl extends SAA
       * @see org.apache.axiom.om.impl.OMNodeEx#setParent(org.apache.axiom.om.OMContainer)
       */
     public void setParent(OMContainer parentElement) {
-        target.setParent(parentElement);
+        ((OMElementEx)omTarget).setParent(parentElement);
     }
 
     /* (non-Javadoc)
@@ -681,7 +687,7 @@ public class SOAPElementImpl extends SAA
 
     public void setParentElement(SOAPElement parent) throws SOAPException {
         this.parentElement = parent;
-        this.target.setParent(((SOAPElementImpl)parent).target);
+        ((OMElementEx)this.omTarget).setParent(((SOAPElementImpl<? extends OMElement>)parent).omTarget);
     }
 
     /**
@@ -693,14 +699,14 @@ public class SOAPElementImpl extends SAA
      *         <code>null</code> otherwise
      */
     public String getValue() {
-        if (target.getType() == OMNode.TEXT_NODE) {
-            return target.getText();
-        } else if (target.getType() == OMNode.ELEMENT_NODE) {
-            final OMNode firstOMChild = target.getFirstOMChild();
-            if (firstOMChild instanceof TextImpl) {
-                return ((TextImpl)firstOMChild).getData();
+        if (omTarget.getType() == OMNode.TEXT_NODE) {
+            return omTarget.getText();
+        } else if (omTarget.getType() == OMNode.ELEMENT_NODE) {
+            final OMNode firstOMChild = omTarget.getFirstOMChild();
+            if (firstOMChild instanceof Text) {
+                return ((Text)firstOMChild).getData();
             } else if (firstOMChild instanceof SOAPElementImpl) {
-                return ((SOAPElementImpl)firstOMChild).getValue();
+                return ((SOAPElement)firstOMChild).getValue();
             }
         }
         return null;
@@ -745,7 +751,7 @@ public class SOAPElementImpl extends SAA
      *                               child node or has a child node that is not a Text node
      */
     public void setValue(String value) {
-        OMNode firstChild = target.getFirstOMChild();
+        OMNode firstChild = omTarget.getFirstOMChild();
         if (firstChild == null) {
             try {
                 this.addTextNode(value);
@@ -767,7 +773,7 @@ public class SOAPElementImpl extends SAA
     }
 
     public OMNode detach() {
-        OMNode omNode = this.target.detach();
+        OMNode omNode = this.omTarget.detach();
         this.parentElement = null;
         return omNode;
     }

Modified: axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPEnvelopeImpl.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPEnvelopeImpl.java?rev=1348340&r1=1348339&r2=1348340&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPEnvelopeImpl.java (original)
+++ axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPEnvelopeImpl.java Sat Jun  9 09:18:25 2012
@@ -20,14 +20,11 @@
 package org.apache.axis2.saaj;
 
 import org.apache.axiom.om.OMNode;
-import org.apache.axiom.om.impl.dom.NodeImpl;
-import org.apache.axiom.om.impl.dom.TextImpl;
+import org.apache.axiom.soap.SOAP11Version;
+import org.apache.axiom.soap.SOAP12Version;
+import org.apache.axiom.soap.SOAPEnvelope;
 import org.apache.axiom.soap.SOAPFactory;
-import org.apache.axiom.soap.impl.dom.soap11.SOAP11BodyImpl;
-import org.apache.axiom.soap.impl.dom.soap11.SOAP11Factory;
-import org.apache.axiom.soap.impl.dom.soap11.SOAP11HeaderImpl;
-import org.apache.axiom.soap.impl.dom.soap12.SOAP12Factory;
-import org.apache.axiom.soap.impl.dom.soap12.SOAP12HeaderImpl;
+import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 
 import javax.xml.soap.Name;
@@ -39,18 +36,12 @@ import javax.xml.soap.SOAPHeader;
 /**
  *
  */
-public class SOAPEnvelopeImpl extends SOAPElementImpl implements javax.xml.soap.SOAPEnvelope {
+public class SOAPEnvelopeImpl extends SOAPElementImpl<SOAPEnvelope> implements javax.xml.soap.SOAPEnvelope {
 
-    private org.apache.axiom.soap.impl.dom.SOAPEnvelopeImpl omSOAPEnvelope;
     private SOAPPartImpl soapPart;
 
-    public SOAPEnvelopeImpl(final org.apache.axiom.soap.impl.dom.SOAPEnvelopeImpl envelope) {
+    public SOAPEnvelopeImpl(SOAPEnvelope envelope) {
         super(envelope);
-        omSOAPEnvelope = envelope;
-    }
-
-    public org.apache.axiom.soap.SOAPEnvelope getOMEnvelope() {
-        return omSOAPEnvelope;
     }
 
     /**
@@ -104,7 +95,7 @@ public class SOAPEnvelopeImpl extends SO
      *                                      object
      */
     public SOAPHeader getHeader() throws SOAPException {
-        return (SOAPHeader)toSAAJNode((org.w3c.dom.Node)omSOAPEnvelope.getHeader());
+        return (SOAPHeader)toSAAJNode((org.w3c.dom.Node)omTarget.getHeader());
     }
 
     /**
@@ -122,7 +113,7 @@ public class SOAPEnvelopeImpl extends SO
      *                                      object
      */
     public SOAPBody getBody() throws SOAPException {
-        return (SOAPBody)toSAAJNode((org.w3c.dom.Node)omSOAPEnvelope.getBody());
+        return (SOAPBody)toSAAJNode((org.w3c.dom.Node)omTarget.getBody());
     }
 
     /**
@@ -137,21 +128,13 @@ public class SOAPEnvelopeImpl extends SO
      *                                      contains a valid <CODE>SOAPHeader</CODE> object
      */
     public SOAPHeader addHeader() throws SOAPException {
-        org.apache.axiom.soap.SOAPHeader header = omSOAPEnvelope.getHeader();
+        org.apache.axiom.soap.SOAPHeader header = omTarget.getHeader();
         if (header == null) {
             SOAPHeaderImpl saajSOAPHeader;
-            if (this.target.getOMFactory() instanceof SOAP11Factory) {
-                header = new SOAP11HeaderImpl(omSOAPEnvelope,
-                                              (SOAPFactory)this.target.getOMFactory());
-                saajSOAPHeader = new SOAPHeaderImpl(header);
-                saajSOAPHeader.setParentElement(this);
-            } else {
-                header = new SOAP12HeaderImpl(omSOAPEnvelope,
-                                              (SOAPFactory)this.target.getOMFactory());
-                saajSOAPHeader = new SOAPHeaderImpl(header);
-                saajSOAPHeader.setParentElement(this);
-            }
-            ((NodeImpl)omSOAPEnvelope.getHeader()).setUserData(SAAJ_NODE, saajSOAPHeader, null);
+            header = ((SOAPFactory)this.omTarget.getOMFactory()).createSOAPHeader(omTarget);
+            saajSOAPHeader = new SOAPHeaderImpl(header);
+            saajSOAPHeader.setParentElement(this);
+            ((Element)omTarget.getHeader()).setUserData(SAAJ_NODE, saajSOAPHeader, null);
             return saajSOAPHeader;
         } else {
             throw new SOAPException("Header already present, can't set header again without " +
@@ -172,12 +155,12 @@ public class SOAPEnvelopeImpl extends SO
      *                                      contains a valid <CODE>SOAPBody</CODE> object
      */
     public SOAPBody addBody() throws SOAPException {
-        org.apache.axiom.soap.SOAPBody body = omSOAPEnvelope.getBody();
+        org.apache.axiom.soap.SOAPBody body = omTarget.getBody();
         if (body == null) {
-            body = new SOAP11BodyImpl(omSOAPEnvelope, (SOAPFactory)this.target.getOMFactory());
+            body = ((SOAPFactory)this.omTarget.getOMFactory()).createSOAPBody(omTarget);
             SOAPBodyImpl saajSOAPBody = new SOAPBodyImpl(body);
             saajSOAPBody.setParentElement(this);
-            ((NodeImpl)omSOAPEnvelope.getBody()).setUserData(SAAJ_NODE, saajSOAPBody, null);
+            ((Element)omTarget.getBody()).setUserData(SAAJ_NODE, saajSOAPBody, null);
             return saajSOAPBody;
         } else {
             throw new SOAPException("Body already present, can't set body again without " +
@@ -191,11 +174,7 @@ public class SOAPEnvelopeImpl extends SO
             ((org.w3c.dom.Text)firstChild).setData(text);
         } else {
             // Else this is a header
-            TextImpl doomText = new TextImpl(text, this.target.getOMFactory());
-            doomText.setNextOMSibling((OMNode)firstChild);
-            doomText.setPreviousOMSibling(null);
-            target.setFirstChild(doomText);
-            ((NodeImpl)firstChild).setPreviousOMSibling(doomText);
+            ((OMNode)firstChild).insertSiblingBefore(this.omTarget.getOMFactory().createOMText(text));
         }
         return this;
     }
@@ -205,7 +184,7 @@ public class SOAPEnvelopeImpl extends SO
      * on Envelop
      */
     public SOAPElement addAttribute(Name name, String value) throws SOAPException {
-        if (this.target.getOMFactory() instanceof SOAP12Factory) {
+        if (((SOAPFactory)this.omTarget.getOMFactory()).getSOAPVersion() == SOAP12Version.getSingleton()) {
             if ("encodingStyle".equals(name.getLocalName())) {
                 throw new SOAPException(
                         "SOAP1.2 does not allow encodingStyle attribute to be set " +
@@ -220,9 +199,9 @@ public class SOAPEnvelopeImpl extends SO
      * element
      */
     public SOAPElement addChildElement(Name name) throws SOAPException {
-        if (this.target.getOMFactory() instanceof SOAP12Factory) {
+        if (((SOAPFactory)this.omTarget.getOMFactory()).getSOAPVersion() == SOAP12Version.getSingleton()) {
             throw new SOAPException("Cannot add elements after body element");
-        } else if (this.target.getOMFactory() instanceof SOAP11Factory) {
+        } else if (((SOAPFactory)this.omTarget.getOMFactory()).getSOAPVersion() == SOAP11Version.getSingleton()) {
             //Let elements to be added any where.
             return super.addChildElement(name);
         }

Modified: axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPFactoryImpl.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPFactoryImpl.java?rev=1348340&r1=1348339&r2=1348340&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPFactoryImpl.java (original)
+++ axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPFactoryImpl.java Sat Jun  9 09:18:25 2012
@@ -19,11 +19,11 @@
 
 package org.apache.axis2.saaj;
 
+import org.apache.axiom.om.OMAbstractFactory;
 import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.OMNamespace;
-import org.apache.axiom.om.impl.dom.DOOMAbstractFactory;
-import org.apache.axiom.om.impl.dom.ElementImpl;
-import org.apache.axiom.om.impl.dom.factory.OMDOMFactory;
+import org.apache.axiom.om.dom.DOMMetaFactory;
 import org.w3c.dom.Element;
 
 import javax.xml.namespace.QName;
@@ -40,6 +40,7 @@ import java.util.Locale;
  * 
  */
 public class SOAPFactoryImpl extends SOAPFactory {
+    private final DOMMetaFactory metaFactory = (DOMMetaFactory)OMAbstractFactory.getMetaFactory(OMAbstractFactory.FEATURE_DOM);
 
     protected String soapVersion = SOAPConstants.SOAP_1_1_PROTOCOL;
 
@@ -58,14 +59,14 @@ public class SOAPFactoryImpl extends SOA
         String uri = name.getURI();
         OMElement omElement = null;
         if (soapVersion.equals(SOAPConstants.SOAP_1_2_PROTOCOL)) {
-            omElement = DOOMAbstractFactory.getSOAP12Factory().createOMElement(localName
+            omElement = metaFactory.getSOAP12Factory().createOMElement(localName
                     , uri, prefix);
         } else {
-            omElement = DOOMAbstractFactory.getSOAP11Factory().createOMElement(localName
+            omElement = metaFactory.getSOAP11Factory().createOMElement(localName
                     , uri, prefix);
         }
-        DOOMAbstractFactory.getOMFactory().createOMElement(localName, uri, prefix);
-        return new SOAPElementImpl((ElementImpl)omElement);
+        metaFactory.getOMFactory().createOMElement(localName, uri, prefix);
+        return new SOAPElementImpl<OMElement>(omElement);
     }
 
     /**
@@ -77,14 +78,14 @@ public class SOAPFactoryImpl extends SOA
      *                                      object
      */
     public SOAPElement createElement(String localName) throws SOAPException {
-        OMDOMFactory omdomFactory = null;
+        OMFactory omFactory = null;
         if (soapVersion.equals(SOAPConstants.SOAP_1_2_PROTOCOL)) {
-            omdomFactory = (OMDOMFactory)DOOMAbstractFactory.getSOAP12Factory();
+            omFactory = metaFactory.getSOAP12Factory();
         } else {
-            omdomFactory = (OMDOMFactory)DOOMAbstractFactory.getSOAP11Factory();
+            omFactory = metaFactory.getSOAP11Factory();
         }
-        OMElement omElement = omdomFactory.createOMElement(new QName(localName));
-        return new SOAPElementImpl((ElementImpl)omElement);
+        OMElement omElement = omFactory.createOMElement(new QName(localName));
+        return new SOAPElementImpl<OMElement>(omElement);
     }
 
     /**
@@ -102,13 +103,13 @@ public class SOAPFactoryImpl extends SOA
             throws SOAPException {
         OMElement omElement = null;
         if (soapVersion.equals(SOAPConstants.SOAP_1_2_PROTOCOL)) {
-            omElement = DOOMAbstractFactory.getSOAP12Factory().createOMElement(localName
+            omElement = metaFactory.getSOAP12Factory().createOMElement(localName
                     , uri, prefix);
         } else {
-            omElement = DOOMAbstractFactory.getSOAP11Factory().createOMElement(localName
+            omElement = metaFactory.getSOAP11Factory().createOMElement(localName
                     , uri, prefix);
         }
-        return new SOAPElementImpl((ElementImpl)omElement);
+        return new SOAPElementImpl<OMElement>(omElement);
     }
 
     /**
@@ -123,9 +124,9 @@ public class SOAPFactoryImpl extends SOA
      */
     public Detail createDetail() throws SOAPException {
         if (soapVersion.equals(SOAPConstants.SOAP_1_2_PROTOCOL)) {
-            return new DetailImpl(DOOMAbstractFactory.getSOAP12Factory().createSOAPFaultDetail());
+            return new DetailImpl(metaFactory.getSOAP12Factory().createSOAPFaultDetail());
         } else {
-            return new DetailImpl(DOOMAbstractFactory.getSOAP11Factory().createSOAPFaultDetail());
+            return new DetailImpl(metaFactory.getSOAP11Factory().createSOAPFaultDetail());
         }
     }
 
@@ -170,10 +171,10 @@ public class SOAPFactoryImpl extends SOA
     public SOAPFault createFault() throws SOAPException {
         org.apache.axiom.soap.SOAPFactory soapFactory;
         if (soapVersion.equals(SOAPConstants.SOAP_1_2_PROTOCOL)) {
-            soapFactory = DOOMAbstractFactory.getSOAP12Factory();
+            soapFactory = metaFactory.getSOAP12Factory();
             return new SOAPFaultImpl(soapFactory.createSOAPFault());
         } else {
-            soapFactory = DOOMAbstractFactory.getSOAP11Factory();
+            soapFactory = metaFactory.getSOAP11Factory();
             return new SOAPFaultImpl(soapFactory.createSOAPFault());
         }
     }
@@ -189,10 +190,10 @@ public class SOAPFactoryImpl extends SOA
     public SOAPFault createFault(String reasonText, QName faultCode) throws SOAPException {
         SOAPFault soapFault;
         if (soapVersion.equals(SOAPConstants.SOAP_1_2_PROTOCOL)) {
-            soapFault = new SOAPFaultImpl(DOOMAbstractFactory.getSOAP12Factory()
+            soapFault = new SOAPFaultImpl(metaFactory.getSOAP12Factory()
                     .createSOAPFault());
         } else {
-            soapFault = new SOAPFaultImpl(DOOMAbstractFactory.getSOAP11Factory()
+            soapFault = new SOAPFaultImpl(metaFactory.getSOAP11Factory()
                     .createSOAPFault());
         }
         soapFault.setFaultCode(faultCode);
@@ -214,25 +215,25 @@ public class SOAPFactoryImpl extends SOA
         String localName = qname.getLocalPart();
         String prefix = qname.getPrefix();
         String uri = qname.getNamespaceURI();
-        OMElement omElement = DOOMAbstractFactory.getOMFactory().createOMElement(localName
+        OMElement omElement = metaFactory.getOMFactory().createOMElement(localName
                 , uri, prefix);
-        return new SOAPElementImpl((ElementImpl)omElement);
+        return new SOAPElementImpl<OMElement>(omElement);
     }
 
     public SOAPElement createElement(Element element) throws SOAPException {
-        OMDOMFactory omdomFactory = null;
+        OMFactory omFactory = null;
         if (soapVersion.equals(SOAPConstants.SOAP_1_2_PROTOCOL)) {
-            omdomFactory = (OMDOMFactory)DOOMAbstractFactory.getSOAP12Factory();
+            omFactory = metaFactory.getSOAP12Factory();
         } else {
-            omdomFactory = (OMDOMFactory)DOOMAbstractFactory.getSOAP11Factory();
+            omFactory = metaFactory.getSOAP11Factory();
         }
         String prefix = element.getPrefix();
         if (prefix == null) {
             prefix = "";
         }
-        OMNamespace ns = omdomFactory.createOMNamespace(element.getNamespaceURI(), prefix);
-        OMElement omElement = omdomFactory.createOMElement(element.getLocalName(), ns);
-        return new SOAPElementImpl((ElementImpl)omElement);
+        OMNamespace ns = omFactory.createOMNamespace(element.getNamespaceURI(), prefix);
+        OMElement omElement = omFactory.createOMElement(element.getLocalName(), ns);
+        return new SOAPElementImpl<OMElement>(omElement);
     }
 
 }

Modified: axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPFaultElementImpl.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPFaultElementImpl.java?rev=1348340&r1=1348339&r2=1348340&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPFaultElementImpl.java (original)
+++ axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPFaultElementImpl.java Sat Jun  9 09:18:25 2012
@@ -19,15 +19,15 @@
 
 package org.apache.axis2.saaj;
 
-import org.apache.axiom.om.impl.dom.ElementImpl;
+import org.apache.axiom.om.OMElement;
 
 import javax.xml.soap.SOAPFaultElement;
 
-public class SOAPFaultElementImpl extends SOAPElementImpl implements
+public class SOAPFaultElementImpl<T extends OMElement> extends SOAPElementImpl<T> implements
         SOAPFaultElement {
 
     /** @param element  */
-    public SOAPFaultElementImpl(ElementImpl element) {
+    public SOAPFaultElementImpl(T element) {
         super(element);
     }