package org.simpleframework.xml.stream;
import java.io.StringReader;
import java.io.StringWriter;
import org.simpleframework.xml.ValidationTestCase;
public class NamespaceMapTest extends ValidationTestCase {
private static final String SOURCE =
"<root a:name='value' xmlns:a='http://www.domain.com/a'>\n" +
" <a:child>this is the child</a:child>\n" +
"</root>";
public void testInputNode() throws Exception {
StringReader reader = new StringReader(SOURCE);
InputNode node = NodeBuilder.read(reader);
NodeMap<InputNode> map = node.getAttributes();
InputNode attr = map.get("name");
assertEquals("value", attr.getValue());
assertEquals("a", attr.getPrefix());
assertEquals("http://www.domain.com/a", attr.getReference());
InputNode child = node.getNext();
assertEquals("this is the child", child.getValue());
assertEquals("a", child.getPrefix());
assertEquals("http://www.domain.com/a", child.getReference());
}
public void testOutputNode() throws Exception {
StringWriter out = new StringWriter();
OutputNode top = NodeBuilder.write(out);
OutputNode root = top.getChild("root");
NamespaceMap map = root.getNamespaces();
root.setReference("http://www.sun.com/jsp");
map.setReference("http://www.w3c.com/xhtml", "xhtml");
map.setReference("http://www.sun.com/jsp", "jsp");
OutputNode child = root.getChild("child");
child.setAttribute("name.1", "1");
child.setAttribute("name.2", "2");
OutputNode attribute = child.getAttributes().get("name.1");
attribute.setReference("http://www.w3c.com/xhtml");
OutputNode otherChild = root.getChild("otherChild");
otherChild.setAttribute("name.a", "a");
otherChild.setAttribute("name.b", "b");
map = otherChild.getNamespaces();
map.setReference("http://www.w3c.com/xhtml", "ignore");
OutputNode yetAnotherChild = otherChild.getChild("yetAnotherChild");
yetAnotherChild.setReference("http://www.w3c.com/xhtml");
yetAnotherChild.setValue("example text for yet another namespace");
OutputNode finalChild = otherChild.getChild("finalChild");
map = finalChild.getNamespaces();
map.setReference("http://www.w3c.com/anonymous");
finalChild.setReference("http://www.w3c.com/anonymous");
OutputNode veryLastChild = finalChild.getChild("veryLastChild");
map = veryLastChild.getNamespaces();
map.setReference("");
OutputNode veryVeryLastChild = veryLastChild.getChild("veryVeryLastChild");
map = veryVeryLastChild.getNamespaces();
map.setReference("");
veryVeryLastChild.setReference("");
veryVeryLastChild.setValue("very very last child");
OutputNode otherVeryVeryLastChild = veryLastChild.getChild("otherVeryVeryLastChild");
// Problem here with anonymous namespace
otherVeryVeryLastChild.setReference("http://www.w3c.com/anonymous");
otherVeryVeryLastChild.setValue("other very very last child");
OutputNode yetAnotherVeryVeryLastChild = veryLastChild.getChild("yetAnotherVeryVeryLastChild");
yetAnotherVeryVeryLastChild.setReference("http://www.w3c.com/xhtml");
yetAnotherVeryVeryLastChild.setValue("yet another very very last child");
root.commit();
validate(out.toString());
}
}