1 package org.codehaus.xfire.type.basic;
2
3 import java.io.ByteArrayOutputStream;
4 import java.io.StringReader;
5
6 import javax.xml.namespace.QName;
7 import javax.xml.stream.XMLInputFactory;
8 import javax.xml.stream.XMLOutputFactory;
9 import javax.xml.stream.XMLStreamReader;
10 import javax.xml.stream.XMLStreamWriter;
11
12 import org.codehaus.xfire.message.LiteralReader;
13 import org.codehaus.xfire.message.LiteralWriter;
14 import org.codehaus.xfire.services.SimpleBean;
15 import org.codehaus.xfire.test.AbstractXFireTypeTest;
16 import org.codehaus.xfire.type.TypeMappingRegistry;
17 import org.codehaus.xfire.type.basic.ArrayType;
18 import org.codehaus.xfire.type.basic.BeanType;
19 import org.dom4j.Document;
20 import org.dom4j.DocumentHelper;
21 import org.dom4j.Element;
22
23 /***
24 * TypeTest
25 *
26 * @author <a href="mailto:dan@envoisolutions.com">Dan Diephouse</a>
27 */
28 public class TypeTest
29 extends AbstractXFireTypeTest
30 {
31 public void testBeanType() throws Exception
32 {
33 XMLOutputFactory ofactory = XMLOutputFactory.newInstance();
34 ByteArrayOutputStream bos = new ByteArrayOutputStream();
35 XMLStreamWriter writer = ofactory.createXMLStreamWriter(bos);
36
37 TypeMappingRegistry tmr = getRegistry();
38
39 SimpleBean bean = new SimpleBean();
40 bean.setBleh("bleh");
41 bean.setHowdy("howdy");
42
43 registerSimpleBeanType(tmr);
44
45 BeanType bt = (BeanType) tmr.getDefaultTypeMapping().getType( SimpleBean.class );
46
47 LiteralWriter lwriter = new LiteralWriter(writer, "SimpleBean", "urn:Bean");
48 bt.writeObject( bean, lwriter, null );
49 lwriter.close();
50
51 writer.close();
52
53 System.out.println(bos.toString());
54 XMLInputFactory factory = XMLInputFactory.newInstance();
55 XMLStreamReader reader = factory.createXMLStreamReader( new StringReader(bos.toString()) );
56 while ( reader.getEventType() != XMLStreamReader.START_ELEMENT )
57 reader.next();
58
59 SimpleBean readBean = (SimpleBean) bt.readObject( new LiteralReader(reader), null );
60 assertNotNull( readBean );
61 assertEquals( "bleh", readBean.getBleh() );
62 assertEquals( "howdy", readBean.getHowdy() );
63
64 Document doc = DocumentHelper.createDocument();
65 Element root = doc.addElement("root");
66
67 bt.writeSchema( root );
68
69
70 }
71
72 /***
73 * @param tmr
74 * @return
75 */
76 private void registerSimpleBeanType(TypeMappingRegistry tmr)
77 {
78 tmr.getDefaultTypeMapping().register( SimpleBean.class,
79 new QName("urn:SimpleBean","SimpleBean"),
80 new BeanType() );
81 }
82
83 private void registerArrayType(TypeMappingRegistry tmr)
84 {
85 tmr.getDefaultTypeMapping().register( SimpleBean[].class,
86 new QName("urn:SomeBean" , "ArrayOfSimpleBean"),
87 new ArrayType() );
88 }
89
90 public void testArrayType() throws Exception
91 {
92 XMLOutputFactory ofactory = XMLOutputFactory.newInstance();
93 ByteArrayOutputStream bos = new ByteArrayOutputStream();
94 XMLStreamWriter writer = ofactory.createXMLStreamWriter(bos);
95
96 TypeMappingRegistry tmr = getRegistry();
97
98 registerSimpleBeanType(tmr);
99 registerArrayType( tmr );
100
101 SimpleBean bean = new SimpleBean();
102 bean.setBleh("bleh");
103 bean.setHowdy("howdy");
104
105 SimpleBean[] beanArray = new SimpleBean[] { bean, bean };
106
107 ArrayType at = (ArrayType) tmr.getDefaultTypeMapping().getType( SimpleBean[].class );
108
109 at.writeObject( beanArray, new LiteralWriter( writer, "SimpleBean", "urn:Bean" ), null );
110 writer.close();
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134 }
135 }