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