1   package org.codehaus.xfire.java.document;
2   
3   import javax.xml.namespace.QName;
4   
5   import org.codehaus.xfire.SOAPConstants;
6   import org.codehaus.xfire.fault.SOAP11FaultHandler;
7   import org.codehaus.xfire.handler.SoapHandler;
8   import org.codehaus.xfire.java.AbstractJavaTest;
9   import org.codehaus.xfire.java.DefaultJavaService;
10  import org.codehaus.xfire.java.JavaServiceHandler;
11  import org.codehaus.xfire.java.test.BeanService;
12  import org.codehaus.xfire.java.test.SimpleBean;
13  import org.codehaus.xfire.java.type.BeanType;
14  import org.codehaus.xfire.java.wsdl.JavaWSDLBuilder;
15  import org.codehaus.xfire.wsdl.WSDL;
16  import org.dom4j.Document;
17  
18  /***
19   * @author <a href="mailto:dan@envoisolutions.com">Dan Diephouse</a>
20   * @since Feb 21, 2004
21   */
22  public class BeanServiceTest
23      extends AbstractJavaTest
24  {
25      public void setUp() throws Exception
26      {
27          super.setUp();
28          
29          DefaultJavaService service = new DefaultJavaService();
30          service.setName("Bean");
31          service.setDefaultNamespace("urn:Bean");
32          service.setServiceClass(BeanService.class.getName());
33          service.setSoapVersion(SOAPConstants.SOAP11_ENVELOPE_NS);
34          service.setStyle(SOAPConstants.STYLE_DOCUMENT);
35          service.setUse(SOAPConstants.USE_LITERAL);
36          service.setFaultHandler(new SOAP11FaultHandler());
37          service.setWSDLBuilder(new JavaWSDLBuilder( getXFire().getTransportManager() ));
38          
39          SoapHandler handler = new SoapHandler(new JavaServiceHandler());
40          
41          service.setServiceHandler( handler );
42          
43          service.setTypeMappingRegistry(getRegistry());
44          
45          service.initialize();
46          
47          service.getTypeMapping().register(
48                  SimpleBean.class, 
49                  new QName("urn:Bean", "SimpleBean"), 
50                  BeanType.class );
51          
52          getServiceRegistry().register(service);
53      }
54      
55      public void testBeanService() throws Exception
56      {
57          Document response = 
58              invokeService( "Bean", "/org/codehaus/xfire/java/document/bean11.xml" );
59  
60          addNamespace( "sb", "urn:Bean" );
61          assertValid( "//sb:out", response );
62          assertValid( "//sb:out/sb:howdy[text()=\"howdy\"]", response );
63          assertValid( "//sb:out/sb:bleh[text()=\"bleh\"]", response );
64      }
65      
66      public void testBeanServiceWSDL() throws Exception
67      {
68          // Test WSDL generation
69          Document doc = getWSDLDocument( "Bean" );
70  
71          addNamespace( "wsdl", WSDL.WSDL11_NS );
72          addNamespace( "wsdlsoap", WSDL.WSDL11_SOAP_NS );
73          addNamespace( "xsd", SOAPConstants.XSD );
74  
75          assertValid( "/wsdl:definitions/wsdl:types", doc );
76          assertValid( "/wsdl:definitions/wsdl:types/xsd:schema", doc );
77          assertValid( "/wsdl:definitions/wsdl:types/xsd:schema/xsd:complexType", doc );
78          assertValid( "/wsdl:definitions/wsdl:types/xsd:schema/xsd:complexType[@name=\"SimpleBean\"]", doc );
79          assertValid( "/wsdl:definitions/wsdl:types/xsd:schema/xsd:complexType[@name=\"SimpleBean\"]/xsd:sequence/xsd:element[@name=\"bleh\"]", doc );
80          assertValid( "/wsdl:definitions/wsdl:types/xsd:schema/xsd:complexType[@name=\"SimpleBean\"]/xsd:sequence/xsd:element[@name=\"howdy\"]", doc );
81          assertValid( "/wsdl:definitions/wsdl:types/xsd:schema/xsd:complexType[@name=\"SimpleBean\"]/xsd:sequence/xsd:element[@type=\"xsd:string\"]", doc );
82  
83          assertValid( "/wsdl:definitions/wsdl:service/wsdl:port/wsdlsoap:address[@location='http://localhost/services/Bean']", doc );
84      }
85  }