1   package org.codehaus.xfire.java.types;
2   
3   import org.codehaus.xfire.java.mapping.TypeMappingRegistry;
4   import org.codehaus.xfire.java.message.LiteralReader;
5   import org.codehaus.xfire.java.message.LiteralWriter;
6   import org.codehaus.xfire.java.test.SimpleBean;
7   import org.codehaus.xfire.java.type.ArrayType;
8   import org.codehaus.xfire.java.type.BeanType;
9   import org.codehaus.xfire.plexus.PlexusXFireTest;
10  import org.dom4j.Document;
11  import org.dom4j.DocumentHelper;
12  import org.dom4j.Element;
13  import org.dom4j.QName;
14  
15  /***
16   * TypeTest
17   * 
18   * @author <a href="mailto:dan@envoisolutions.com">Dan Diephouse</a>
19   */
20  public class TypeTest
21      extends PlexusXFireTest
22  {
23      public void testBeanType() throws Exception
24      {
25          TypeMappingRegistry tmr = (TypeMappingRegistry) lookup( TypeMappingRegistry.ROLE );
26          
27          SimpleBean bean = new SimpleBean();
28          bean.setBleh("bleh");
29          bean.setHowdy("howdy");
30          
31          registerSimpleBeanType(tmr);
32          
33          BeanType bt = (BeanType) tmr.getDefaultTypeMapping().getType( SimpleBean.class );
34         
35          Document doc = DocumentHelper.createDocument();
36          Element root = doc.addElement("root");
37          
38          bt.writeObject( bean, new LiteralWriter(root) );
39          
40          SimpleBean readBean = (SimpleBean) bt.readObject( new LiteralReader(root) );
41          assertNotNull( readBean );
42          assertEquals( "bleh", readBean.getBleh() );
43          assertEquals( "howdy", readBean.getHowdy() );
44          
45          System.out.println( doc.asXML() );
46          
47          doc = DocumentHelper.createDocument();
48          
49          root = doc.addElement("root");
50          
51          bt.writeSchema( root );
52   
53          // TODO: run XPath tests on Schema
54      }
55      
56      /***
57       * @param tmr
58       * @return
59       */
60      private void registerSimpleBeanType(TypeMappingRegistry tmr)
61      {
62          tmr.getDefaultTypeMapping().register( SimpleBean.class, 
63                                                QName.get( "SimpleBean", "urn:SimpleBean" ),
64                                                BeanType.class );
65      }
66  
67      private void registerArrayType(TypeMappingRegistry tmr)
68      {
69          tmr.getDefaultTypeMapping().register( SimpleBean[].class, 
70                                                QName.get( "ArrayOfSimpleBean", "urn:SomeBean" ),
71                                                ArrayType.class );
72      }
73      
74      public void testArrayType() throws Exception
75      {
76          TypeMappingRegistry tmr = (TypeMappingRegistry) lookup( TypeMappingRegistry.ROLE );
77          
78          registerSimpleBeanType(tmr);
79          registerArrayType( tmr );
80          
81          SimpleBean bean = new SimpleBean();
82          bean.setBleh("bleh");
83          bean.setHowdy("howdy");
84         
85          SimpleBean[] beanArray = new SimpleBean[] { bean, bean };
86  
87          ArrayType at = (ArrayType) tmr.getDefaultTypeMapping().getType( SimpleBean[].class );
88    
89          
90          Document doc = DocumentHelper.createDocument();
91          Element root = doc.addElement("root");
92          
93          at.writeObject( beanArray, new LiteralWriter( root ) );
94          
95          Object out1 = at.readObject( new LiteralReader( root ) );
96          
97          SimpleBean[] beans = (SimpleBean[]) out1;
98          assertNotNull( beans );
99          assertEquals( "bleh", beans[0].getBleh() );
100         assertEquals( "howdy", beans[0].getHowdy() );
101         
102         System.out.println( doc.asXML() );
103         
104         doc = DocumentHelper.createDocument();
105         
106         root = doc.addElement("root");
107         
108         at.writeSchema( root );
109         
110         // TODO: run XPath tests on Schema
111     }
112 }