Author: ngn
Date: Thu Jul 9 20:59:51 2009
New Revision: 792690
URL: http://svn.apache.org/viewvc?rev=792690&view=rev
Log:
Fix bug where the namespace prefix and element local name was mixed up
Added XMLElement.getNamespaceURI() which attempts to return the correct
namespace URI for the element. Replaced all instanced of using
XMLElementVerifier for this purpose (as the method is broken).
getNamespaceURI() does not yet support inherited namespaces. Fixes VYSPER-97.
Modified:
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/protocol/StanzaHandlerLookup.java
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/xmldecoder/XMLRawToFragmentConverter.java
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/xmlfragment/XMLElement.java
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubCreateNodeTestCase.java
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubPublishTestCase.java
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubSubscribeTestCase.java
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubUnsubscribeTestCase.java
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubDeleteNodeTestCase.java
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/protocol/CallTestStanzaHandler.java
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/xmldecoder/XMLRawToFragmentConverterConvertTestCase.java
Modified:
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/protocol/StanzaHandlerLookup.java
URL:
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/protocol/StanzaHandlerLookup.java?rev=792690&r1=792689&r2=792690&view=diff
==============================================================================
---
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/protocol/StanzaHandlerLookup.java
(original)
+++
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/protocol/StanzaHandlerLookup.java
Thu Jul 9 20:59:51 2009
@@ -112,8 +112,7 @@
*/
private StanzaHandler getHandlerForElement(Stanza stanza, XMLElement
xmlElement) {
- // TODO review this method if it checks the right things
- String namespace = xmlElement.getVerifier().getUniqueXMLNSValue();
+ String namespace = xmlElement.getNamespaceURI();
NamespaceHandlerDictionary namespaceHandlerDictionary =
dictionaries.get(namespace);
// another try to get a dictionary
Modified:
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/xmldecoder/XMLRawToFragmentConverter.java
URL:
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/xmldecoder/XMLRawToFragmentConverter.java?rev=792690&r1=792689&r2=792690&view=diff
==============================================================================
---
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/xmldecoder/XMLRawToFragmentConverter.java
(original)
+++
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/xmldecoder/XMLRawToFragmentConverter.java
Thu Jul 9 20:59:51 2009
@@ -146,20 +146,20 @@
return createElementOrStanza(elementName, attributes, null,
(List<XMLFragment>) null, createStanza);
}
- private XMLElement createElementOrStanza(String elementName,
List<Attribute> attributes, String namespace, List<XMLFragment> innerFragments,
boolean createStanza) throws DecodingException {
+ private XMLElement createElementOrStanza(String elementName,
List<Attribute> attributes, String namespacePrefix, List<XMLFragment>
innerFragments, boolean createStanza) throws DecodingException {
int i = elementName.indexOf(":");
if (i >= 1) {
- namespace = elementName.substring(i+1);
- elementName = elementName.substring(0, i);
- if ("".equals(namespace) || "".equals(elementName)) throw new
DecodingException("illegal element name " + namespace + ":" + elementName);
+ namespacePrefix = elementName.substring(0, i);
+ elementName = elementName.substring(i + 1);
+ if ("".equals(namespacePrefix) || "".equals(elementName)) throw
new DecodingException("illegal element name " + namespacePrefix + ":" +
elementName);
} else if (i == 0) {
// element something like "<:foo> this is legal XML. in this case,
acccording to XML spec section 2.3,
// the colon belongs to the element name and is not a separator
for the namespace.
// but we do not support that.
throw new DecodingException("unsupported legal XML: colon at start
of element name and no namespace specified");
}
- if (createStanza) return new Stanza(elementName, namespace,
attributes, innerFragments);
- else return new XMLElement(elementName, namespace, attributes,
innerFragments);
+ if (createStanza) return new Stanza(elementName, namespacePrefix,
attributes, innerFragments);
+ else return new XMLElement(elementName, namespacePrefix, attributes,
innerFragments);
}
private List<Attribute> parseAttributes(String content) throws
DecodingException {
Modified:
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/xmlfragment/XMLElement.java
URL:
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/xmlfragment/XMLElement.java?rev=792690&r1=792689&r2=792690&view=diff
==============================================================================
---
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/xmlfragment/XMLElement.java
(original)
+++
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/xmlfragment/XMLElement.java
Thu Jul 9 20:59:51 2009
@@ -81,6 +81,27 @@
public String getNamespacePrefix() {
return namespacePrefix;
}
+
+ /**
+ * Return the namespace URI.
+ * @return The namespace URI for the element.
+ */
+ public String getNamespaceURI() {
+ String xmlnsName;
+
+ if(getNamespacePrefix().length() > 0) {
+ xmlnsName = "xmlns:" + getNamespacePrefix();
+ } else {
+ xmlnsName = "xmlns";
+ }
+
+ String uri = getAttributeValue(xmlnsName);
+
+ if(uri == null) {
+ uri = "";
+ }
+ return uri;
+ }
public List<Attribute> getAttributes() {
return attributes;
Modified:
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubCreateNodeTestCase.java
URL:
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubCreateNodeTestCase.java?rev=792690&r1=792689&r2=792690&view=diff
==============================================================================
---
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubCreateNodeTestCase.java
(original)
+++
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubCreateNodeTestCase.java
Thu Jul 9 20:59:51 2009
@@ -103,6 +103,6 @@
assertEquals("cancel", error.getAttributeValue("type"));
assertEquals("conflict", conflict.getName());
- assertEquals(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS,
conflict.getVerifier().getUniqueXMLNSValue());
+ assertEquals(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS,
conflict.getNamespaceURI());
}
}
Modified:
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubPublishTestCase.java
URL:
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubPublishTestCase.java?rev=792690&r1=792689&r2=792690&view=diff
==============================================================================
---
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubPublishTestCase.java
(original)
+++
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubPublishTestCase.java
Thu Jul 9 20:59:51 2009
@@ -111,7 +111,7 @@
XMLElement item = publish.getFirstInnerElement();
assertEquals("pubsub", pubsub.getName());
- assertEquals(NamespaceURIs.XEP0060_PUBSUB,
pubsub.getVerifier().getUniqueXMLNSValue());
+ assertEquals(NamespaceURIs.XEP0060_PUBSUB, pubsub.getNamespaceURI());
assertEquals("publish", publish.getName());
assertEquals("item", item.getName());
assertNotNull(item.getAttributeValue("id")); // value unknown
@@ -139,7 +139,7 @@
List<XMLElement> errorContent = error.getInnerElements();
assertEquals(1, errorContent.size());
assertEquals("item-not-found", errorContent.get(0).getName());
- assertEquals(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS,
errorContent.get(0).getVerifier().getUniqueXMLNSValue());
+ assertEquals(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS,
errorContent.get(0).getNamespaceURI());
}
@@ -163,7 +163,7 @@
List<XMLElement> errorContent = error.getInnerElements();
assertEquals(1, errorContent.size());
assertEquals("forbidden", errorContent.get(0).getName());
- assertEquals(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS,
errorContent.get(0).getVerifier().getUniqueXMLNSValue());
+ assertEquals(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS,
errorContent.get(0).getNamespaceURI());
}
protected Entity createUser(String jid) throws BindException {
Modified:
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubSubscribeTestCase.java
URL:
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubSubscribeTestCase.java?rev=792690&r1=792689&r2=792690&view=diff
==============================================================================
---
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubSubscribeTestCase.java
(original)
+++
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubSubscribeTestCase.java
Thu Jul 9 20:59:51 2009
@@ -120,10 +120,10 @@
List<XMLElement> errorContent = error.getInnerElements();
assertEquals(2, errorContent.size());
assertEquals("bad-request", errorContent.get(0).getName());
- assertEquals(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS,
errorContent.get(0).getVerifier().getUniqueXMLNSValue());
+ assertEquals(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS,
errorContent.get(0).getNamespaceURI());
assertEquals("invalid-jid", errorContent.get(1).getName());
- assertEquals(NamespaceURIs.XEP0060_PUBSUB_ERRORS,
errorContent.get(1).getVerifier().getUniqueXMLNSValue());
+ assertEquals(NamespaceURIs.XEP0060_PUBSUB_ERRORS,
errorContent.get(1).getNamespaceURI());
}
public void testSubscribeJIDMalformed() {
@@ -145,7 +145,7 @@
List<XMLElement> errorContent = error.getInnerElements();
assertEquals(1, errorContent.size());
assertEquals("jid-malformed", errorContent.get(0).getName());
- assertEquals(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS,
errorContent.get(0).getVerifier().getUniqueXMLNSValue());
+ assertEquals(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS,
errorContent.get(0).getNamespaceURI());
}
public void testSubscribeNoSuchNode() throws Exception {
@@ -167,7 +167,7 @@
List<XMLElement> errorContent = error.getInnerElements();
assertEquals(1, errorContent.size());
assertEquals("item-not-found", errorContent.get(0).getName());
- assertEquals(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS,
errorContent.get(0).getVerifier().getUniqueXMLNSValue());
+ assertEquals(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS,
errorContent.get(0).getNamespaceURI());
}
class DefaultSubscribeStanzaGenerator extends AbstractStanzaGenerator {
Modified:
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubUnsubscribeTestCase.java
URL:
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubUnsubscribeTestCase.java?rev=792690&r1=792689&r2=792690&view=diff
==============================================================================
---
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubUnsubscribeTestCase.java
(original)
+++
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubUnsubscribeTestCase.java
Thu Jul 9 20:59:51 2009
@@ -145,10 +145,10 @@
List<XMLElement> errorContent = error.getInnerElements();
assertEquals(2, errorContent.size());
assertEquals("bad-request", errorContent.get(0).getName());
- assertEquals(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS,
errorContent.get(0).getVerifier().getUniqueXMLNSValue());
+ assertEquals(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS,
errorContent.get(0).getNamespaceURI());
assertEquals("subid-required", errorContent.get(1).getName());
- assertEquals(NamespaceURIs.XEP0060_PUBSUB_ERRORS,
errorContent.get(1).getVerifier().getUniqueXMLNSValue());
+ assertEquals(NamespaceURIs.XEP0060_PUBSUB_ERRORS,
errorContent.get(1).getNamespaceURI());
}
public void testUnsubscribeNoSuchSubscriber() {
@@ -171,10 +171,10 @@
List<XMLElement> errorContent = error.getInnerElements();
assertEquals(2, errorContent.size());
assertEquals("unexpected-request", errorContent.get(0).getName());
- assertEquals(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS,
errorContent.get(0).getVerifier().getUniqueXMLNSValue());
+ assertEquals(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS,
errorContent.get(0).getNamespaceURI());
assertEquals("not-subscribed", errorContent.get(1).getName());
- assertEquals(NamespaceURIs.XEP0060_PUBSUB_ERRORS,
errorContent.get(1).getVerifier().getUniqueXMLNSValue());
+ assertEquals(NamespaceURIs.XEP0060_PUBSUB_ERRORS,
errorContent.get(1).getNamespaceURI());
}
public void testUnsubscribeForbidden() throws Exception {
@@ -200,7 +200,7 @@
List<XMLElement> errorContent = error.getInnerElements();
assertEquals(1, errorContent.size());
assertEquals("forbidden", errorContent.get(0).getName());
- assertEquals(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS,
errorContent.get(0).getVerifier().getUniqueXMLNSValue());
+ assertEquals(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS,
errorContent.get(0).getNamespaceURI());
}
public void testUnsubscribeNoSuchNode() {
@@ -222,7 +222,7 @@
List<XMLElement> errorContent = error.getInnerElements();
assertEquals(1, errorContent.size());
assertEquals("item-not-found", errorContent.get(0).getName());
- assertEquals(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS,
errorContent.get(0).getVerifier().getUniqueXMLNSValue());
+ assertEquals(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS,
errorContent.get(0).getNamespaceURI());
}
public void testUnsubscribeBadSubID() {
@@ -249,10 +249,10 @@
List<XMLElement> errorContent = error.getInnerElements();
assertEquals(2, errorContent.size());
assertEquals("not-acceptable", errorContent.get(0).getName());
- assertEquals(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS,
errorContent.get(0).getVerifier().getUniqueXMLNSValue());
+ assertEquals(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS,
errorContent.get(0).getNamespaceURI());
assertEquals("invalid-subid", errorContent.get(1).getName());
- assertEquals(NamespaceURIs.XEP0060_PUBSUB_ERRORS,
errorContent.get(1).getVerifier().getUniqueXMLNSValue());
+ assertEquals(NamespaceURIs.XEP0060_PUBSUB_ERRORS,
errorContent.get(1).getNamespaceURI());
}
public void testUnsubscribeJIDMalformed() {
@@ -274,6 +274,6 @@
List<XMLElement> errorContent = error.getInnerElements();
assertEquals(1, errorContent.size());
assertEquals("jid-malformed", errorContent.get(0).getName());
- assertEquals(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS,
errorContent.get(0).getVerifier().getUniqueXMLNSValue());
+ assertEquals(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS,
errorContent.get(0).getNamespaceURI());
}
}
Modified:
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubDeleteNodeTestCase.java
URL:
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubDeleteNodeTestCase.java?rev=792690&r1=792689&r2=792690&view=diff
==============================================================================
---
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubDeleteNodeTestCase.java
(original)
+++
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubDeleteNodeTestCase.java
Thu Jul 9 20:59:51 2009
@@ -120,7 +120,7 @@
List<XMLElement> errorContent = error.getInnerElements();
assertEquals(1, errorContent.size());
assertEquals("forbidden", errorContent.get(0).getName());
- assertEquals(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS,
errorContent.get(0).getVerifier().getUniqueXMLNSValue());
+ assertEquals(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS,
errorContent.get(0).getNamespaceURI());
LeafNode n = root.find(testNode);
assertNotNull(n); // still there
@@ -146,6 +146,6 @@
List<XMLElement> errorContent = error.getInnerElements();
assertEquals(1, errorContent.size());
assertEquals("item-not-found", errorContent.get(0).getName());
- assertEquals(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS,
errorContent.get(0).getVerifier().getUniqueXMLNSValue());
+ assertEquals(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS,
errorContent.get(0).getNamespaceURI());
}
}
Modified:
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/protocol/CallTestStanzaHandler.java
URL:
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/protocol/CallTestStanzaHandler.java?rev=792690&r1=792689&r2=792690&view=diff
==============================================================================
---
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/protocol/CallTestStanzaHandler.java
(original)
+++
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/protocol/CallTestStanzaHandler.java
Thu Jul 9 20:59:51 2009
@@ -55,10 +55,10 @@
boolean outerNamespaceMatches = false;
boolean innerNamespaceMatches = false;
- if (namespaceURI != null &&
namespaceURI.equals(stanza.getVerifier().getUniqueXMLNSValue()))
outerNamespaceMatches = true;
+ if (namespaceURI != null &&
namespaceURI.equals(stanza.getNamespaceURI())) outerNamespaceMatches = true;
XMLElement firstInnerElement = stanza.getFirstInnerElement();
if (firstInnerElement != null) {
- if (namespaceURI != null &&
namespaceURI.equals(firstInnerElement.getVerifier().getUniqueXMLNSValue()))
innerNamespaceMatches = true;
+ if (namespaceURI != null &&
namespaceURI.equals(firstInnerElement.getNamespaceURI())) innerNamespaceMatches
= true;
}
return elementNamespaceMatches || outerNamespaceMatches ||
innerNamespaceMatches;
}
Modified:
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/xmldecoder/XMLRawToFragmentConverterConvertTestCase.java
URL:
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/xmldecoder/XMLRawToFragmentConverterConvertTestCase.java?rev=792690&r1=792689&r2=792690&view=diff
==============================================================================
---
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/xmldecoder/XMLRawToFragmentConverterConvertTestCase.java
(original)
+++
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/xmldecoder/XMLRawToFragmentConverterConvertTestCase.java
Thu Jul 9 20:59:51 2009
@@ -22,6 +22,7 @@
import junit.framework.TestCase;
import org.apache.vysper.xmpp.xmlfragment.XMLElement;
import org.apache.vysper.xmpp.xmlfragment.Attribute;
+import org.apache.vysper.xmpp.xmlfragment.XMLElementVerifier;
import java.util.ArrayList;
import java.util.List;
@@ -118,5 +119,64 @@
assertEquals(":name", particle.getElementName());
}
+ private XMLElement elementFromString(String... xmls) throws
DecodingException {
+ List<XMLParticle> particles = new ArrayList<XMLParticle>();
+ for(String xml : xmls) {
+ particles.add(new XMLParticle(xml));
+ }
+ return (XMLElement) xmlRawToFragmentConverter.convert(particles);
+ }
+
+ public void testSimpleNamespacePrefix() throws DecodingException {
+ XMLElement element = elementFromString("<p:elm
xmlns:p=\"urn:foo\"/>");
+ assertEquals("p", element.getNamespacePrefix());
+ }
+
+ public void testDefaultNamespacePrefix() throws DecodingException {
+ XMLElement element = elementFromString("<elm xmlns=\"urn:foo\"/>");
+ assertEquals("", element.getNamespacePrefix());
+ }
+
+
+ public void testSimpleNamespaceURI() throws DecodingException {
+ XMLElement element = elementFromString("<elm xmlns=\"urn:foo\"/>");
+ assertEquals("urn:foo", element.getNamespaceURI());
+ }
+
+ public void testSimpleNamespaceURIEmptyElement() throws DecodingException {
+ XMLElement element = elementFromString("<elm xmlns=\"urn:foo\">",
"</elm>");
+ assertEquals("urn:foo", element.getNamespaceURI());
+ }
+ public void testPrefixedNamespaceURI() throws DecodingException {
+ XMLElement element = elementFromString("<p:elm
xmlns:p=\"urn:foo\"/>");
+ assertEquals("urn:foo", element.getNamespaceURI());
+ }
+
+ public void testDoubleNamespaceURI() throws DecodingException {
+ XMLElement element = elementFromString("<p:elm xmlns=\"urn:bar\"
xmlns:p=\"urn:foo\"/>");
+ assertEquals("urn:foo", element.getNamespaceURI());
+ }
+
+// public void testInheritedNamespaceURI() throws DecodingException {
+// XMLElement element = elementFromString("<elm xmlns=\"urn:foo\">",
"<child />", "</elm>");
+// XMLElement child = element.getFirstInnerElement();
+//
+// assertEquals("urn:foo", child.getNamespaceURI());
+// }
+
+ public void testOverriddenNamespaceURI() throws DecodingException {
+ XMLElement element = elementFromString("<elm xmlns=\"urn:foo\">",
"<child xmlns=\"urn:bar\" />", "</elm>");
+ XMLElement child = element.getFirstInnerElement();
+
+ assertEquals("urn:bar", child.getNamespaceURI());
+ }
+
+ public void testOverriddenToDefaultNamespaceURI() throws DecodingException
{
+ XMLElement element = elementFromString("<elm xmlns=\"urn:foo\">",
"<child xmlns=\"\" />", "</elm>");
+ XMLElement child = element.getFirstInnerElement();
+
+ assertEquals("", child.getNamespaceURI());
+ }
+
}
\ No newline at end of file