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 bi...@apache.org on 2020/04/14 20:02:17 UTC

[axis-axis2-java-core] 05/38: Merged r1147485, r1149224, r1149491 and r1149578 to the 1.5 branch to ensure compatibility with Axiom 1.2.13.

This is an automated email from the ASF dual-hosted git repository.

billblough pushed a commit to branch 1_5
in repository https://gitbox.apache.org/repos/asf/axis-axis2-java-core.git

commit bff447b0a7f756c29bced965eb98f8af0fafe0bd
Author: Andreas Veithen <ve...@apache.org>
AuthorDate: Fri Sep 30 19:41:44 2011 +0000

    Merged r1147485, r1149224, r1149491 and r1149578 to the 1.5 branch to ensure compatibility with Axiom 1.2.13.
---
 modules/saaj/src/org/apache/axis2/saaj/SOAPBodyImpl.java    | 10 ++++++----
 modules/saaj/src/org/apache/axis2/saaj/SOAPElementImpl.java | 12 +++++++++---
 modules/saaj/src/org/apache/axis2/saaj/SOAPFactoryImpl.java |  7 +++++--
 .../saaj/test/org/apache/axis2/saaj/SOAPElementTest.java    | 13 +++++++++++++
 4 files changed, 33 insertions(+), 9 deletions(-)

diff --git a/modules/saaj/src/org/apache/axis2/saaj/SOAPBodyImpl.java b/modules/saaj/src/org/apache/axis2/saaj/SOAPBodyImpl.java
index d6ed3d0..e9535b3 100644
--- a/modules/saaj/src/org/apache/axis2/saaj/SOAPBodyImpl.java
+++ b/modules/saaj/src/org/apache/axis2/saaj/SOAPBodyImpl.java
@@ -164,11 +164,14 @@ public class SOAPBodyImpl extends SOAPElementImpl implements SOAPBody {
         if (omSOAPBody.hasFault()) {
             throw new SOAPException("A SOAPFault has been already added to this SOAPBody");
         }
+        if (prefix == null) {
+            prefix = "";
+        }
         SOAPBodyElementImpl childEle;
         if (uri == null || "".equals(uri)) {
             childEle = new SOAPBodyElementImpl(
                     (ElementImpl)getOwnerDocument().createElement(localName));
-        } else if (prefix == null || "".equals(prefix)) {
+        } else if (prefix.length() == 0) {
             childEle = new SOAPBodyElementImpl(
                 (ElementImpl)getOwnerDocument().createElementNS(uri,
                                                                 localName));
@@ -178,7 +181,7 @@ public class SOAPBodyImpl extends SOAPElementImpl implements SOAPBody {
                                                                     prefix + ":" + localName));
         }
         childEle.element.setUserData(SAAJ_NODE, childEle, null);
-        childEle.element.setNamespace(childEle.element.declareNamespace(uri, prefix));
+        childEle.element.setNamespace(getOMFactory().createOMNamespace(uri, prefix));
         element.appendChild(childEle.element);
         ((NodeImpl)childEle.element.getParentNode()).setUserData(SAAJ_NODE, this, null);
         isBodyElementAdded = true;
@@ -546,8 +549,7 @@ public class SOAPBodyImpl extends SOAPElementImpl implements SOAPBody {
                                                                             qname.getLocalPart()));
         }
         childEle.element.setUserData(SAAJ_NODE, childEle, null);
-        childEle.element.setNamespace(childEle.element.declareNamespace(
-                qname.getNamespaceURI(), qname.getPrefix()));
+        childEle.element.setNamespace(getOMFactory().createOMNamespace(qname.getNamespaceURI(), qname.getPrefix()));
 
         element.appendChild(childEle.element);
         ((NodeImpl)childEle.element.getParentNode()).setUserData(SAAJ_NODE, this, null);
diff --git a/modules/saaj/src/org/apache/axis2/saaj/SOAPElementImpl.java b/modules/saaj/src/org/apache/axis2/saaj/SOAPElementImpl.java
index 065b980..991b8c8 100644
--- a/modules/saaj/src/org/apache/axis2/saaj/SOAPElementImpl.java
+++ b/modules/saaj/src/org/apache/axis2/saaj/SOAPElementImpl.java
@@ -175,7 +175,7 @@ public class SOAPElementImpl extends NodeImplEx implements SOAPElement {
     */
     public SOAPElement addChildElement(String localName, String prefix, String uri)
             throws SOAPException {
-        OMNamespace omNamespace = element.declareNamespace(uri, prefix);
+        OMNamespace omNamespace = prefix == null || prefix.length() == 0 ? element.declareDefaultNamespace(uri) : element.declareNamespace(uri, prefix);
         return addChildElement(localName, omNamespace.getPrefix());
     }
 
@@ -194,7 +194,9 @@ public class SOAPElementImpl extends NodeImplEx implements SOAPElement {
                         createElementNS(namespaceURI, prefix + ":" + localName));
 
         childEle.element.setUserData(SAAJ_NODE, childEle, null);
-        childEle.element.setNamespace(childEle.element.declareNamespace(namespaceURI, prefix));
+        childEle.element.setNamespace(prefix == null || prefix.length() == 0
+                ? childEle.element.declareDefaultNamespace(namespaceURI)
+                : childEle.element.declareNamespace(namespaceURI, prefix));
         element.appendChild(childEle.element);
         ((NodeImpl)childEle.element.getParentNode()).setUserData(SAAJ_NODE, this, null);
         childEle.setParentElement(this);
@@ -218,7 +220,11 @@ public class SOAPElementImpl extends NodeImplEx implements SOAPElement {
       * @see javax.xml.soap.SOAPElement#addNamespaceDeclaration(java.lang.String, java.lang.String)
       */
     public SOAPElement addNamespaceDeclaration(String prefix, String uri) throws SOAPException {
-        element.declareNamespace(uri, prefix);
+        if (prefix == null || prefix.length() == 0) {
+            element.declareDefaultNamespace(uri);
+        } else {
+            element.declareNamespace(uri, prefix);
+        }
         return this;
     }
 
diff --git a/modules/saaj/src/org/apache/axis2/saaj/SOAPFactoryImpl.java b/modules/saaj/src/org/apache/axis2/saaj/SOAPFactoryImpl.java
index cf8af62..db2a9be 100644
--- a/modules/saaj/src/org/apache/axis2/saaj/SOAPFactoryImpl.java
+++ b/modules/saaj/src/org/apache/axis2/saaj/SOAPFactoryImpl.java
@@ -226,8 +226,11 @@ public class SOAPFactoryImpl extends SOAPFactory {
         } else {
             omdomFactory = (OMDOMFactory)DOOMAbstractFactory.getSOAP11Factory();
         }
-        OMNamespace ns = omdomFactory.createOMNamespace(element.getNamespaceURI()
-                , element.getPrefix());
+        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);
     }
diff --git a/modules/saaj/test/org/apache/axis2/saaj/SOAPElementTest.java b/modules/saaj/test/org/apache/axis2/saaj/SOAPElementTest.java
index 35abf88..c386527 100644
--- a/modules/saaj/test/org/apache/axis2/saaj/SOAPElementTest.java
+++ b/modules/saaj/test/org/apache/axis2/saaj/SOAPElementTest.java
@@ -23,9 +23,11 @@ import junit.framework.Assert;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.w3c.dom.Attr;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
+import javax.xml.XMLConstants;
 import javax.xml.namespace.QName;
 import javax.xml.soap.MessageFactory;
 import javax.xml.soap.Name;
@@ -381,6 +383,17 @@ public class SOAPElementTest extends Assert {
     }
 
     @Validated @Test
+    public void testAddNamespaceDeclarationDefaultNamespace() throws SOAPException {
+        SOAPMessage msg = MessageFactory.newInstance().createMessage();
+        SOAPEnvelope envelope = msg.getSOAPPart().getEnvelope();
+        SOAPBody body = envelope.getBody();
+        SOAPElement element = body.addChildElement("test", "p", "urn:test");
+        element.addNamespaceDeclaration("", "urn:ns");
+        Attr attr = (Attr)element.getAttributes().getNamedItemNS(XMLConstants.XMLNS_ATTRIBUTE_NS_URI, "xmlns");
+        assertEquals("urn:ns", attr.getValue());
+    }
+    
+    @Validated @Test
     public void testRemoveNamespaceDeclaration() throws Exception {
         String prefix = "myPrefix";
         String uri = "myURI";