[NEETHI-16] Make sure the namespaces are output
diff --git a/src/main/java/org/apache/neethi/builders/xml/XmlPrimitiveAssertion.java b/src/main/java/org/apache/neethi/builders/xml/XmlPrimitiveAssertion.java
index cd2e4e6..3dfbe02 100644
--- a/src/main/java/org/apache/neethi/builders/xml/XmlPrimitiveAssertion.java
+++ b/src/main/java/org/apache/neethi/builders/xml/XmlPrimitiveAssertion.java
@@ -187,6 +187,9 @@
writer.writeAttribute(name.getPrefix(), name.getNamespaceURI(),
name.getLocalPart(), attr.getValue());
}
+ if (!n.getNamespaceURI().equals(writer.getNamespaceContext().getNamespaceURI(n.getPrefix()))) {
+ writer.writeNamespace(n.getPrefix(), n.getNamespaceURI());
+ }
break;
}
diff --git a/src/test/java/org/apache/neethi/BasicTestCases.java b/src/test/java/org/apache/neethi/BasicTestCases.java
index 8abb833..9306370 100644
--- a/src/test/java/org/apache/neethi/BasicTestCases.java
+++ b/src/test/java/org/apache/neethi/BasicTestCases.java
@@ -27,7 +27,9 @@
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.XMLStreamWriter;
import org.w3c.dom.Element;
@@ -173,4 +175,20 @@
first.normalize(true);
}
+
+ @Test
+ public void testPolicyWritingNamespaces() throws Exception {
+ for (int x = 0; x < 4; x++) {
+ Policy p = getPolicy("bugs/neethi15/input/Policy1.xml", x);
+ StringWriter sw = new StringWriter();
+ XMLStreamWriter writer = XMLOutputFactory.newInstance().createXMLStreamWriter(sw);
+ p.serialize(writer);
+ writer.flush();
+ XMLStreamReader r = XMLInputFactory.newInstance().createXMLStreamReader(new StringReader(sw.toString()));
+ while (r.hasNext()) {
+ r.next();
+ }
+ }
+ }
+
}