1 16 17 18 package org.apache.commons.betwixt.schema; 19 20 import org.apache.commons.betwixt.AbstractTestCase; 21 import org.apache.commons.betwixt.strategy.HyphenatedNameMapper; 22 23 28 public class TestSchemaTranscriber extends AbstractTestCase { 29 30 public TestSchemaTranscriber(String testName) { 31 super(testName); 32 } 33 34 public void testEmpty() {} 35 36 public void testSimplestBeanAttribute() throws Exception { 37 Schema expected = new Schema(); 38 39 GlobalComplexType simplestBeanType = new GlobalComplexType(); 40 simplestBeanType.setName("org.apache.commons.betwixt.schema.SimplestBean"); 41 simplestBeanType.addAttribute(new Attribute("name", "xsd:string")); 42 43 GlobalElement root = new GlobalElement("SimplestBean", "org.apache.commons.betwixt.schema.SimplestBean"); 44 expected.addComplexType(simplestBeanType); 45 expected.addElement(root); 46 47 SchemaTranscriber transcriber = new SchemaTranscriber(); 48 transcriber.getXMLIntrospector().getConfiguration().setAttributesForPrimitives(true); 49 Schema out = transcriber.generate(SimplestBean.class); 50 51 assertEquals("Simplest bean schema", expected, out); 52 } 53 54 public void testSimplestBeanElement() throws Exception { 55 Schema expected = new Schema(); 56 57 GlobalComplexType simplestBeanType = new GlobalComplexType(); 58 simplestBeanType.setName("org.apache.commons.betwixt.schema.SimplestElementBean"); 59 simplestBeanType.addElement(new SimpleLocalElement("name", "xsd:string")); 60 61 GlobalElement root = new GlobalElement("SimplestBean", "org.apache.commons.betwixt.schema.SimplestElementBean"); 62 expected.addComplexType(simplestBeanType); 63 expected.addElement(root); 64 65 SchemaTranscriber transcriber = new SchemaTranscriber(); 66 transcriber.getXMLIntrospector().getConfiguration().setAttributesForPrimitives(false); 67 Schema out = transcriber.generate(SimplestElementBean.class); 68 69 assertEquals("Simplest bean schema", expected, out); 70 } 71 72 public void testSimpleBean() throws Exception { 73 SchemaTranscriber transcriber = new SchemaTranscriber(); 74 Schema out = transcriber.generate(SimpleBean.class); 75 76 Schema expected = new Schema(); 77 GlobalComplexType simpleBeanType = new GlobalComplexType(); 78 simpleBeanType.setName("org.apache.commons.betwixt.schema.SimpleBean"); 79 simpleBeanType.addAttribute(new Attribute("one", "xsd:string")); 80 simpleBeanType.addAttribute(new Attribute("two", "xsd:string")); 81 simpleBeanType.addElement(new SimpleLocalElement("three", "xsd:string")); 82 simpleBeanType.addElement(new SimpleLocalElement("four", "xsd:string")); 83 expected.addComplexType(simpleBeanType); 84 expected.addElement(new GlobalElement("simple", "org.apache.commons.betwixt.schema.SimpleBean")); 85 86 assertEquals("Simple bean schema", expected, out); 87 88 } 89 90 public void testOrderLine() throws Exception { 91 SchemaTranscriber transcriber = new SchemaTranscriber(); 92 transcriber.getXMLIntrospector().getConfiguration().setAttributeNameMapper(new HyphenatedNameMapper()); 93 transcriber.getXMLIntrospector().getConfiguration().setAttributesForPrimitives(true); 94 Schema out = transcriber.generate(OrderLineBean.class); 95 96 Schema expected = new Schema(); 97 98 GlobalComplexType productBeanType = new GlobalComplexType(); 99 productBeanType.setName(ProductBean.class.getName()); 100 productBeanType.addAttribute(new Attribute("barcode", "xsd:string")); 101 productBeanType.addAttribute(new Attribute("code", "xsd:string")); 102 productBeanType.addAttribute(new Attribute("name", "xsd:string")); 103 productBeanType.addAttribute(new Attribute("display-name", "xsd:string")); 104 expected.addComplexType(productBeanType); 105 106 GlobalComplexType orderLineType = new GlobalComplexType(); 107 orderLineType.setName(OrderLineBean.class.getName()); 108 orderLineType.addAttribute(new Attribute("quantity", "xsd:string")); 109 orderLineType.addElement(new ElementReference("product", productBeanType)); 110 expected.addComplexType(orderLineType); 111 expected.addElement(new GlobalElement("OrderLineBean", OrderLineBean.class.getName())); 112 113 assertEquals("Transcriber schema", expected, out); 114 } 115 116 117 public void testOrder() throws Exception { 118 SchemaTranscriber transcriber = new SchemaTranscriber(); 119 transcriber.getXMLIntrospector().getConfiguration().setElementNameMapper(new HyphenatedNameMapper()); 120 transcriber.getXMLIntrospector().getConfiguration().setAttributeNameMapper(new HyphenatedNameMapper()); 121 transcriber.getXMLIntrospector().getConfiguration().setAttributesForPrimitives(true); 122 transcriber.getXMLIntrospector().getConfiguration().setWrapCollectionsInElement(false); 123 Schema out = transcriber.generate(OrderBean.class); 124 125 Schema expected = new Schema(); 126 127 128 GlobalComplexType customerBeanType = new GlobalComplexType(); 129 customerBeanType.setName(CustomerBean.class.getName()); 130 customerBeanType.addAttribute(new Attribute("code", "xsd:string")); 131 customerBeanType.addAttribute(new Attribute("name", "xsd:string")); 132 customerBeanType.addAttribute(new Attribute("street", "xsd:string")); 133 customerBeanType.addAttribute(new Attribute("town", "xsd:string")); 134 customerBeanType.addAttribute(new Attribute("country", "xsd:string")); 135 customerBeanType.addAttribute(new Attribute("postcode", "xsd:string")); 136 expected.addComplexType(customerBeanType); 137 138 GlobalComplexType productBeanType = new GlobalComplexType(); 139 productBeanType.setName(ProductBean.class.getName()); 140 productBeanType.addAttribute(new Attribute("barcode", "xsd:string")); 141 productBeanType.addAttribute(new Attribute("code", "xsd:string")); 142 productBeanType.addAttribute(new Attribute("name", "xsd:string")); 143 productBeanType.addAttribute(new Attribute("display-name", "xsd:string")); 144 expected.addComplexType(productBeanType); 145 146 GlobalComplexType orderLineType = new GlobalComplexType(); 147 orderLineType.setName(OrderLineBean.class.getName()); 148 orderLineType.addAttribute(new Attribute("quantity", "xsd:string")); 149 orderLineType.addElement(new ElementReference("product", productBeanType)); 150 expected.addComplexType(orderLineType); 151 152 GlobalComplexType orderType = new GlobalComplexType(); 153 orderType.setName(OrderBean.class.getName()); 154 orderType.addAttribute(new Attribute("code", "xsd:string")); 155 orderType.addElement(new ElementReference("customer", customerBeanType)); 156 orderType.addElement(new ElementReference("line", orderLineType)); 157 expected.addComplexType(orderType); 158 expected.addElement(new GlobalElement("order-bean", OrderBean.class.getName())); 159 160 assertEquals("Transcriber schema", expected, out); 161 } 162 163 } 164 | Popular Tags |