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 <veit...@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";