Author: chinthaka
Date: Mon May 8 02:18:13 2006
New Revision: 404977
URL: http://svn.apache.org/viewcvs?rev=404977&view=rev
Log:
Fixing yet another namespace issue with a test case. Thanks Raymond for
pointing this out.
Modified:
webservices/commons/trunk/modules/axiom/src/org/apache/axiom/om/impl/llom/OMElementImpl.java
webservices/commons/trunk/modules/axiom/src/org/apache/axiom/om/impl/util/OMSerializerUtil.java
webservices/commons/trunk/modules/axiom/test/org/apache/axiom/om/NamespaceTest.java
Modified:
webservices/commons/trunk/modules/axiom/src/org/apache/axiom/om/impl/llom/OMElementImpl.java
URL:
http://svn.apache.org/viewcvs/webservices/commons/trunk/modules/axiom/src/org/apache/axiom/om/impl/llom/OMElementImpl.java?rev=404977&r1=404976&r2=404977&view=diff
==============================================================================
---
webservices/commons/trunk/modules/axiom/src/org/apache/axiom/om/impl/llom/OMElementImpl.java
(original)
+++
webservices/commons/trunk/modules/axiom/src/org/apache/axiom/om/impl/llom/OMElementImpl.java
Mon May 8 02:18:13 2006
@@ -305,10 +305,8 @@
* @param uri
*/
public OMNamespace declareDefaultNamespace(String uri) {
- if (uri == null || "".equals(uri)) {
- return null;
- }
- OMNamespaceImpl namespace = new OMNamespaceImpl(uri, "");
+
+ OMNamespaceImpl namespace = new OMNamespaceImpl(uri == null ? "" :
uri, "");
if (namespaces == null) {
this.namespaces = new HashMap(5);
Modified:
webservices/commons/trunk/modules/axiom/src/org/apache/axiom/om/impl/util/OMSerializerUtil.java
URL:
http://svn.apache.org/viewcvs/webservices/commons/trunk/modules/axiom/src/org/apache/axiom/om/impl/util/OMSerializerUtil.java?rev=404977&r1=404976&r2=404977&view=diff
==============================================================================
---
webservices/commons/trunk/modules/axiom/src/org/apache/axiom/om/impl/util/OMSerializerUtil.java
(original)
+++
webservices/commons/trunk/modules/axiom/src/org/apache/axiom/om/impl/util/OMSerializerUtil.java
Mon May 8 02:18:13 2006
@@ -117,6 +117,16 @@
writer.setPrefix(prefix, uri);
}
}
+ } else {
+ // now the nsURI passed is "" or null. Meaning we gonna work with
defaultNS.
+ // check whether there is a defaultNS already declared. If yes, is
it the same as this ?
+ String currentDefaultNSURI =
writer.getNamespaceContext().getNamespaceURI("");
+ if( (currentDefaultNSURI != null &&
!currentDefaultNSURI.equals(uri)) ||
+ uri != null && !uri.equals(currentDefaultNSURI)){
+ // this has not been declared earlier
+ writer.writeDefaultNamespace(uri);
+ writer.setDefaultNamespace(uri);
+ }
}
}
Modified:
webservices/commons/trunk/modules/axiom/test/org/apache/axiom/om/NamespaceTest.java
URL:
http://svn.apache.org/viewcvs/webservices/commons/trunk/modules/axiom/test/org/apache/axiom/om/NamespaceTest.java?rev=404977&r1=404976&r2=404977&view=diff
==============================================================================
---
webservices/commons/trunk/modules/axiom/test/org/apache/axiom/om/NamespaceTest.java
(original)
+++
webservices/commons/trunk/modules/axiom/test/org/apache/axiom/om/NamespaceTest.java
Mon May 8 02:18:13 2006
@@ -1,11 +1,16 @@
package org.apache.axiom.om;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axiom.om.impl.llom.factory.OMXMLBuilderFactory;
import org.custommonkey.xmlunit.XMLTestCase;
import org.xml.sax.SAXException;
import javax.xml.namespace.QName;
import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.util.Iterator;
/*
@@ -147,6 +152,29 @@
OMElement childTwo = omFac.createOMElement("ChildElementTwo", ns1,
childOne);
assertEquals(1,
getNumberOfOccurrences(documentElement.toStringWithConsume(),
"xmlns:ns2=\"http://one.org\""));
+ }
+
+
+ public void testNamespaceProblem4() throws Exception {
+ String xml = "<getCreditScoreResponse
xmlns=\"http://www.example.org/creditscore/doclitwrapped/\"><score
xmlns=\"\">750</score></getCreditScoreResponse>";
+ XMLStreamReader parser =
XMLInputFactory.newInstance().createXMLStreamReader(new
ByteArrayInputStream(xml.getBytes()));
+ OMXMLParserWrapper builder =
OMXMLBuilderFactory.createStAXOMBuilder(OMAbstractFactory.getOMFactory(),
parser);
+ OMElement root = builder.getDocumentElement();
+ String actualXML = root.toString();
+ assertTrue(actualXML.indexOf("xmlns=\"\"")!=-1);
+ }
+
+ public void testNamespaceProblem5() {
+ String xml = "<soapenv:Envelope
xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"><soapenv:Header
/><soapenv:Body><ns1:createAccountRequest
xmlns:ns1=\"http://www.wso2.com/types\"><clientinfo
xmlns=\"http://www.wso2.com/types\"><name>bob</name><ssn>123456789</ssn></clientinfo><password
xmlns=\"\">passwd</password></ns1:createAccountRequest></soapenv:Body></soapenv:Envelope>";
+
+ try {
+ OMElement documentElement = new StAXOMBuilder(new
ByteArrayInputStream(xml.getBytes())).getDocumentElement();
+ String actualXML = documentElement.toString();
+ assertXMLEqual(xml, actualXML);
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail();
+ }
}
private int getNumberOfOccurrences(String xml, String pattern){