Author: shawkins
Date: 2011-02-14 22:12:21 -0500 (Mon, 14 Feb 2011)
New Revision: 2907
Modified:
trunk/documentation/reference/src/main/docbook/en-US/content/scalar_functions.xml
trunk/engine/src/main/java/org/teiid/query/function/source/XMLSystemFunctions.java
trunk/engine/src/test/java/org/teiid/query/function/source/TestXMLSystemFunctions.java
Log:
TEIID-1306 adding xsi:nil for null handling
Modified:
trunk/documentation/reference/src/main/docbook/en-US/content/scalar_functions.xml
===================================================================
---
trunk/documentation/reference/src/main/docbook/en-US/content/scalar_functions.xml 2011-02-14
20:34:03 UTC (rev 2906)
+++
trunk/documentation/reference/src/main/docbook/en-US/content/scalar_functions.xml 2011-02-15
03:12:21 UTC (rev 2907)
@@ -1948,6 +1948,9 @@
<listitem>
<para>Unless an array value is the root, it will not be enclosed in an
additional element.</para>
</listitem>
+ <listitem>
+ <para>Null values will be represented by an empty element with the
attribute xsi:nil="true"</para>
+ </listitem>
</itemizedlist>
</para>
<example>
Modified:
trunk/engine/src/main/java/org/teiid/query/function/source/XMLSystemFunctions.java
===================================================================
---
trunk/engine/src/main/java/org/teiid/query/function/source/XMLSystemFunctions.java 2011-02-14
20:34:03 UTC (rev 2906)
+++
trunk/engine/src/main/java/org/teiid/query/function/source/XMLSystemFunctions.java 2011-02-15
03:12:21 UTC (rev 2907)
@@ -171,12 +171,15 @@
if (inArray.peek()) {
start();
}
- if (value != null) {
- try {
+ try {
+ if (value != null) {
streamWriter.writeCharacters(value.toString());
- } catch (XMLStreamException e) {
- throw new IOException(e);
+ } else {
+ streamWriter.writeNamespace("xsi",
XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI); //$NON-NLS-1$
+ streamWriter.writeAttribute("xsi",
XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI, "nil", "true");
//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
+ } catch (XMLStreamException e) {
+ throw new IOException(e);
}
if (inArray.peek()) {
end();
Modified:
trunk/engine/src/test/java/org/teiid/query/function/source/TestXMLSystemFunctions.java
===================================================================
---
trunk/engine/src/test/java/org/teiid/query/function/source/TestXMLSystemFunctions.java 2011-02-14
20:34:03 UTC (rev 2906)
+++
trunk/engine/src/test/java/org/teiid/query/function/source/TestXMLSystemFunctions.java 2011-02-15
03:12:21 UTC (rev 2907)
@@ -218,6 +218,12 @@
helpTestJson(json, "Person", expected);
}
+ @Test public void testJsonToXml2() throws Exception {
+ String json = "{ \"firstName\": null }";
+ String expected = "<?xml version=\"1.0\"
?><Person><firstName
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
xsi:nil=\"true\"></firstName></Person>";
+ helpTestJson(json, "Person", expected);
+ }
+
@BeforeClass static public void setUpOnce() {
TimeZone.setDefault(TimeZone.getTimeZone("GMT-6:00"));
}