[Practicalxml-commits] SF.net SVN: practicalxml:[162] branches/dev-1.1/src
Brought to you by:
kdgregory
From: Auto-Generated S. C. M. <pra...@li...> - 2009-10-10 18:15:49
|
Revision: 162 http://practicalxml.svn.sourceforge.net/practicalxml/?rev=162&view=rev Author: kdgregory Date: 2009-10-10 18:15:38 +0000 (Sat, 10 Oct 2009) Log Message: ----------- Bean2XmlOptions: add NULL_AS_EMPTY, rename XSI_NIL to NULL_AS_XSI_NIL Modified Paths: -------------- branches/dev-1.1/src/main/java/net/sf/practicalxml/converter/bean/Bean2XmlAppenders.java branches/dev-1.1/src/main/java/net/sf/practicalxml/converter/bean/Bean2XmlConverter.java branches/dev-1.1/src/main/java/net/sf/practicalxml/converter/bean/Bean2XmlOptions.java branches/dev-1.1/src/test/java/net/sf/practicalxml/converter/bean/TestBean2XmlAppenders.java branches/dev-1.1/src/test/java/net/sf/practicalxml/converter/bean/TestBean2XmlConverter.java branches/dev-1.1/src/test/java/net/sf/practicalxml/converter/bean/TestBeanConverter.java Modified: branches/dev-1.1/src/main/java/net/sf/practicalxml/converter/bean/Bean2XmlAppenders.java =================================================================== --- branches/dev-1.1/src/main/java/net/sf/practicalxml/converter/bean/Bean2XmlAppenders.java 2009-10-05 21:57:23 UTC (rev 161) +++ branches/dev-1.1/src/main/java/net/sf/practicalxml/converter/bean/Bean2XmlAppenders.java 2009-10-10 18:15:38 UTC (rev 162) @@ -88,7 +88,9 @@ protected boolean shouldSkip(Object value) { - return (value == null) && !_options.contains(Bean2XmlOptions.XSI_NIL); + return (value == null) + && !_options.contains(Bean2XmlOptions.NULL_AS_EMPTY) + && !_options.contains(Bean2XmlOptions.NULL_AS_XSI_NIL); } protected void setType(Element elem, String type) @@ -101,7 +103,9 @@ { if (value != null) DomUtil.setText(elem, value); - else if (isOptionSet(Bean2XmlOptions.XSI_NIL)) + else if (isOptionSet(Bean2XmlOptions.NULL_AS_EMPTY)) + DomUtil.setText(elem, ""); + else if (isOptionSet(Bean2XmlOptions.NULL_AS_XSI_NIL)) DomUtilToo.setXsiNil(elem, true); } } Modified: branches/dev-1.1/src/main/java/net/sf/practicalxml/converter/bean/Bean2XmlConverter.java =================================================================== --- branches/dev-1.1/src/main/java/net/sf/practicalxml/converter/bean/Bean2XmlConverter.java 2009-10-05 21:57:23 UTC (rev 161) +++ branches/dev-1.1/src/main/java/net/sf/practicalxml/converter/bean/Bean2XmlConverter.java 2009-10-10 18:15:38 UTC (rev 162) @@ -137,7 +137,7 @@ */ private void doXsiNamespaceHack(Element root) { - if (_options.contains(Bean2XmlOptions.XSI_NIL) + if (_options.contains(Bean2XmlOptions.NULL_AS_XSI_NIL) && !_options.contains(Bean2XmlOptions.XSI_TYPE)) { DomUtilToo.setXsiNil(root, false); Modified: branches/dev-1.1/src/main/java/net/sf/practicalxml/converter/bean/Bean2XmlOptions.java =================================================================== --- branches/dev-1.1/src/main/java/net/sf/practicalxml/converter/bean/Bean2XmlOptions.java 2009-10-05 21:57:23 UTC (rev 161) +++ branches/dev-1.1/src/main/java/net/sf/practicalxml/converter/bean/Bean2XmlOptions.java 2009-10-10 18:15:38 UTC (rev 162) @@ -28,8 +28,24 @@ */ INTROSPECT_MAPS, + /** + * If the value is <code>null</code>, add an element containing a single + * text child holding an empty string. + * <p> + * This may make life easier when processing data from a certain DBMS + * designed in the mid-1980s when disk space was too expensive to create + * a separate null flag for VARCHAR fields. However, be aware that it + * may cause parsing problems. + */ + NULL_AS_EMPTY, /** + * If the value is <code>null</code>, add an element without content, with + * the attribute <code>xsi:nil</code> set to "true". + */ + NULL_AS_XSI_NIL, + + /** * Will create sequences (arrays, lists, and sets) as repeated elements * rather than a parent-children construct. This option is invalid when * converting an array as the top-level object, as it would cause the @@ -64,13 +80,6 @@ XSD_FORMAT, /** - * Add null values into the tree, as an element without content, with the - * attribute <code>xsi:nil</code> set to "true". If not present, null - * values are ignored, and not added to DOM tree. - */ - XSI_NIL, - - /** * Will add an <code>xsi:type</code> attribute to each element. For values * covered by the XML Schema simple types, this attribute's value will be * "<code>xsd:TYPE</code>", where TYPE is the XSD type name. For complex Modified: branches/dev-1.1/src/test/java/net/sf/practicalxml/converter/bean/TestBean2XmlAppenders.java =================================================================== --- branches/dev-1.1/src/test/java/net/sf/practicalxml/converter/bean/TestBean2XmlAppenders.java 2009-10-05 21:57:23 UTC (rev 161) +++ branches/dev-1.1/src/test/java/net/sf/practicalxml/converter/bean/TestBean2XmlAppenders.java 2009-10-10 18:15:38 UTC (rev 162) @@ -98,7 +98,7 @@ { Element root = DomUtil.newDocument("root"); - Appender appender = new BasicAppender(root, useOptions(Bean2XmlOptions.XSI_NIL)); + Appender appender = new BasicAppender(root, useOptions(Bean2XmlOptions.NULL_AS_XSI_NIL)); Element child0 = appender.appendValue("foo", "bar", "baz"); Element child1 = appender.appendValue("argle", "bargle", null); @@ -180,7 +180,7 @@ { Element root = DomUtil.newDocument("root"); - Appender appender = new IndexedAppender(root, useOptions(Bean2XmlOptions.XSI_NIL)); + Appender appender = new IndexedAppender(root, useOptions(Bean2XmlOptions.NULL_AS_XSI_NIL)); Element child0 = appender.appendValue("foo", "bar", "baz"); Element child1 = appender.appendValue("argle", "bargle", "wargle"); Element child2 = appender.appendValue("bing", "bang", null); @@ -251,7 +251,7 @@ { Element root = DomUtil.newDocument("root"); - Appender appender = new MapAppender(root, useOptions(Bean2XmlOptions.XSI_NIL)); + Appender appender = new MapAppender(root, useOptions(Bean2XmlOptions.NULL_AS_XSI_NIL)); Element child0 = appender.appendValue("foo", "bar", "baz"); Element child1 = appender.appendValue("argle", "bargle", "wargle"); Element child2 = appender.appendValue("bing", "bang", null); @@ -346,7 +346,7 @@ { Element root = DomUtil.newDocument("root"); - Appender appender = new DirectAppender(root, useOptions(Bean2XmlOptions.XSI_NIL)); + Appender appender = new DirectAppender(root, useOptions(Bean2XmlOptions.NULL_AS_XSI_NIL)); Element child = appender.appendValue("foo", "bar", null); assertSame(root, child); Modified: branches/dev-1.1/src/test/java/net/sf/practicalxml/converter/bean/TestBean2XmlConverter.java =================================================================== --- branches/dev-1.1/src/test/java/net/sf/practicalxml/converter/bean/TestBean2XmlConverter.java 2009-10-05 21:57:23 UTC (rev 161) +++ branches/dev-1.1/src/test/java/net/sf/practicalxml/converter/bean/TestBean2XmlConverter.java 2009-10-10 18:15:38 UTC (rev 162) @@ -23,6 +23,9 @@ import java.util.TreeSet; import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.w3c.dom.Text; import net.sf.practicalxml.DomUtil; import net.sf.practicalxml.OutputUtil; @@ -96,9 +99,25 @@ } + public void testConvertNullAsEmpty() throws Exception + { + Bean2XmlConverter driver = new Bean2XmlConverter(Bean2XmlOptions.NULL_AS_EMPTY); + + Element root = driver.convert(null, "test"); +// System.out.println(OutputUtil.compactString(root.getOwnerDocument())); + + NodeList children = root.getChildNodes(); + assertEquals(1, children.getLength()); + + Node child = children.item(0); + assertTrue(child instanceof Text); + assertEquals("", child.getNodeValue()); + } + + public void testConvertNullWithNilOption() throws Exception { - Bean2XmlConverter driver = new Bean2XmlConverter(Bean2XmlOptions.XSI_NIL); + Bean2XmlConverter driver = new Bean2XmlConverter(Bean2XmlOptions.NULL_AS_XSI_NIL); Element root = driver.convert(null, "test"); // System.out.println(OutputUtil.compactString(root.getOwnerDocument())); @@ -592,7 +611,7 @@ public void testConvertSimpleBeanXsiNil() throws Exception { - Bean2XmlConverter driver = new Bean2XmlConverter(Bean2XmlOptions.XSI_NIL); + Bean2XmlConverter driver = new Bean2XmlConverter(Bean2XmlOptions.NULL_AS_XSI_NIL); SimpleBean bean = new SimpleBean(null, 123, null, true); Element root = driver.convert(bean, "test"); @@ -608,7 +627,7 @@ public void testConvertSimpleBeanXsiNilAndXsiType() throws Exception { - Bean2XmlConverter driver = new Bean2XmlConverter(Bean2XmlOptions.XSI_NIL, Bean2XmlOptions.XSI_TYPE); + Bean2XmlConverter driver = new Bean2XmlConverter(Bean2XmlOptions.NULL_AS_XSI_NIL, Bean2XmlOptions.XSI_TYPE); SimpleBean bean = new SimpleBean(null, 123, null, true); Element root = driver.convert(bean, "test"); @@ -622,6 +641,22 @@ } + public void testConvertSimpleBeanNullAsEmpty() throws Exception + { + Bean2XmlConverter driver = new Bean2XmlConverter(Bean2XmlOptions.NULL_AS_EMPTY); + + SimpleBean bean = new SimpleBean(null, 123, null, true); + Element root = driver.convert(bean, "test"); +// System.out.println(OutputUtil.compactString(root.getOwnerDocument())); + + assertChildCount(root, 4); + assertSingleChild(root, "sval", "", "", false); + assertSingleChild(root, "ival", "", "123", false); + assertSingleChild(root, "dval", "", "", false); + assertSingleChild(root, "bval", "", "true", false); + } + + public void testConvertBeanArrayWithXsiType() throws Exception { Bean2XmlConverter driver = new Bean2XmlConverter(Bean2XmlOptions.XSI_TYPE); Modified: branches/dev-1.1/src/test/java/net/sf/practicalxml/converter/bean/TestBeanConverter.java =================================================================== --- branches/dev-1.1/src/test/java/net/sf/practicalxml/converter/bean/TestBeanConverter.java 2009-10-05 21:57:23 UTC (rev 161) +++ branches/dev-1.1/src/test/java/net/sf/practicalxml/converter/bean/TestBeanConverter.java 2009-10-10 18:15:38 UTC (rev 162) @@ -135,7 +135,7 @@ public void testConvertNullUseAndRequireXsiNil() throws Exception { Document dom = BeanConverter.convertToXml( - null, "test", Bean2XmlOptions.XSI_NIL); + null, "test", Bean2XmlOptions.NULL_AS_XSI_NIL); // System.out.println(OutputUtil.compactString(dom)); Object result = BeanConverter.convertToJava( This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |