1 16 17 package org.apache.commons.betwixt; 18 19 import java.io.StringReader ; 20 import java.io.StringWriter ; 21 22 import org.apache.commons.betwixt.io.BeanReader; 23 import org.apache.commons.betwixt.io.BeanWriter; 24 25 29 public class TestArrays extends AbstractTestCase { 30 31 public TestArrays(String testName) { 32 super(testName); 33 } 34 35 public void testWriteArray() throws Exception { 36 StringWriter out = new StringWriter (); 37 out.write("<?xml version='1.0'?>"); 38 BeanWriter writer = new BeanWriter(out); 39 writer.getXMLIntrospector().getConfiguration().setAttributesForPrimitives(true); 40 writer.getBindingConfiguration().setMapIDs(false); 41 42 LibraryBean libraryBean = new LibraryBean(); 43 libraryBean.addBook(new BookBean("Martin Fowler", "Refactoring", "Addision Wesley")); 44 libraryBean.addBook(new BookBean("Ben Laurie", "Apache", "O'Reilly")); 45 libraryBean.addBook(new BookBean("Kent Beck", "Test Driven Development", "Addision Wesley")); 46 47 writer.write(libraryBean); 48 String xml = out.toString(); 49 String expected = "<?xml version='1.0'?><LibraryBean>" + 50 "<books>" + 51 "<book author='Martin Fowler' title='Refactoring' publisher='Addision Wesley'/>" + 52 "<book author='Ben Laurie' title='Apache' publisher='O'Reilly'/>" + 53 "<book author='Kent Beck' title='Test Driven Development' publisher='Addision Wesley'/>" + 54 "</books>" + 55 "</LibraryBean>"; 56 57 xmlAssertIsomorphicContent( 58 parseString(xml), 59 parseString(expected), 60 true); 61 } 62 63 public void testReadArray() throws Exception { 64 String xml = "<?xml version='1.0'?><LibraryBean>" + 65 "<books>" + 66 "<book author='Martin Fowler' title='Refactoring' publisher='Addision Wesley'/>" + 67 "<book author='Ben Laurie' title='Apache' publisher='O'Reilly'/>" + 68 "<book author='Kent Beck' title='Test Driven Development' publisher='Addision Wesley'/>" + 69 "</books>" + 70 "</LibraryBean>"; 71 72 BeanReader reader = new BeanReader(); 73 reader.getXMLIntrospector().getConfiguration().setAttributesForPrimitives(true); 74 reader.getBindingConfiguration().setMapIDs(false); 75 reader.registerBeanClass(LibraryBean.class); 76 LibraryBean bean = (LibraryBean) reader.parse(new StringReader (xml)); 77 78 BookBean[] books = bean.getBooks(); 79 assertEquals("Three books read", 3, books.length); 80 assertEquals("Book one", new BookBean("Martin Fowler", "Refactoring", "Addision Wesley"), books[0]); 81 assertEquals("Book two", new BookBean("Ben Laurie", "Apache", "O'Reilly"), books[1]); 82 assertEquals("Book three", new BookBean("Kent Beck", "Test Driven Development", "Addision Wesley"), books[2]); 83 84 } 85 86 public void testWriteArrayWithSetter() throws Exception { 87 StringWriter out = new StringWriter (); 88 out.write("<?xml version='1.0'?>"); 89 BeanWriter writer = new BeanWriter(out); 90 writer.getXMLIntrospector().getConfiguration().setAttributesForPrimitives(true); 91 writer.getBindingConfiguration().setMapIDs(false); 92 93 94 LibraryBeanWithArraySetter libraryBean = new LibraryBeanWithArraySetter(); 95 BookBean[] books = { 96 new BookBean("Martin Fowler", "Refactoring", "Addision Wesley"), 97 new BookBean("Ben Laurie", "Apache", "O'Reilly"), 98 new BookBean("Kent Beck", "Test Driven Development", "Addision Wesley")}; 99 libraryBean.setBooks(books); 100 101 writer.write(libraryBean); 102 String xml = out.toString(); 103 String expected = "<?xml version='1.0'?><LibraryBeanWithArraySetter>" + 104 "<books>" + 105 "<BookBean author='Martin Fowler' title='Refactoring' publisher='Addision Wesley'/>" + 106 "<BookBean author='Ben Laurie' title='Apache' publisher='O'Reilly'/>" + 107 "<BookBean author='Kent Beck' title='Test Driven Development' publisher='Addision Wesley'/>" + 108 "</books>" + 109 "</LibraryBeanWithArraySetter>"; 110 111 xmlAssertIsomorphicContent( 112 parseString(xml), 113 parseString(expected), 114 true); 115 } 116 117 public void testReadArrayWithSetter() throws Exception { 118 String xml = "<?xml version='1.0'?><LibraryBeanWithArraySetter>" + 119 "<books>" + 120 "<BookBean author='Martin Fowler' title='Refactoring' publisher='Addision Wesley'/>" + 121 "<BookBean author='Ben Laurie' title='Apache' publisher='O'Reilly'/>" + 122 "<BookBean author='Kent Beck' title='Test Driven Development' publisher='Addision Wesley'/>" + 123 "</books>" + 124 "</LibraryBeanWithArraySetter>"; 125 126 BeanReader reader = new BeanReader(); 127 reader.getXMLIntrospector().getConfiguration().setAttributesForPrimitives(true); 128 reader.getBindingConfiguration().setMapIDs(false); 129 reader.registerBeanClass(LibraryBeanWithArraySetter.class); 130 LibraryBeanWithArraySetter bean = (LibraryBeanWithArraySetter) reader.parse(new StringReader (xml)); 131 132 BookBean[] books = bean.getBooks(); 133 assertEquals("Three books read", 3, books.length); 134 assertEquals("Book one", new BookBean("Martin Fowler", "Refactoring", "Addision Wesley"), books[0]); 135 assertEquals("Book two", new BookBean("Ben Laurie", "Apache", "O'Reilly"), books[1]); 136 assertEquals("Book three", new BookBean("Kent Beck", "Test Driven Development", "Addision Wesley"), books[2]); 137 138 } 139 140 public void testIntrospectArrayWithSetter() throws Exception { 141 XMLIntrospector introspector = new XMLIntrospector(); 142 143 XMLBeanInfo xmlBeanInfo = introspector.introspect(LibraryBeanWithArraySetter.class); 144 145 ElementDescriptor beanDescriptor = xmlBeanInfo.getElementDescriptor(); 146 ElementDescriptor[] childDescriptors = beanDescriptor.getElementDescriptors(); 147 assertEquals("Only one child element", 1, childDescriptors.length); 148 149 ElementDescriptor booksWrapperDescriptor = childDescriptors[0]; 150 ElementDescriptor[] wrapperChildren = booksWrapperDescriptor.getElementDescriptors(); 151 assertEquals("Only one child element", 1, childDescriptors.length); 152 ElementDescriptor booksDescriptor = wrapperChildren[0]; 153 assertNotNull("Updater for property", booksDescriptor.getUpdater()); 154 } 155 156 } 157 | Popular Tags |