1   package org.codehaus.xfire.java.wsdl;
2   
3   import javax.wsdl.Definition;
4   import javax.wsdl.Message;
5   import javax.xml.namespace.QName;
6   
7   import org.codehaus.xfire.SOAPConstants;
8   import org.codehaus.xfire.fault.SOAP11FaultHandler;
9   import org.codehaus.xfire.handler.SoapHandler;
10  import org.codehaus.xfire.java.AbstractJavaTest;
11  import org.codehaus.xfire.java.DefaultJavaService;
12  import org.codehaus.xfire.java.JavaServiceHandler;
13  import org.codehaus.xfire.java.test.Echo;
14  import org.codehaus.xfire.wsdl.WSDL;
15  import org.dom4j.Document;
16  
17  
18  /***
19   * @author <a href="mailto:dan@envoisolutions.com">Dan Diephouse</a>
20   * @since Feb 21, 2004
21   */
22  public class DocumentWSDLTest
23      extends AbstractJavaTest
24  {
25      public void setUp() throws Exception
26      {
27          super.setUp();
28          
29          DefaultJavaService service = new DefaultJavaService();
30          service.setName("Echo");
31          service.setDefaultNamespace("urn:Echo");
32          service.setServiceClass(Echo.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          getServiceRegistry().register(service);
48      }
49      
50      public void testWSDL() throws Exception
51      {
52          DefaultJavaService echo = (DefaultJavaService) getServiceRegistry().getService("Echo");
53          
54          DocumentWSDL wsdl = (DocumentWSDL) echo.getWSDL();
55          
56          Definition def = wsdl.getDefinition();
57          
58          wsdl.write( System.out );
59          
60          Message request = def.getMessage( new QName("urn:Echo", "echoRequest") );
61          
62          assertNotNull( request );
63          assertNotNull( request.getPart( "in0" ) );
64          assertEquals( "in0", request.getPart( "in0" ).getElementName().getLocalPart() );
65          
66          Message response = def.getMessage( new QName("urn:Echo", "echoResponse") );
67          
68          assertNotNull( response );
69          assertNotNull( response.getPart( "out" ) );
70          assertEquals( "out", response.getPart( "out" ).getElementName().getLocalPart() );
71          
72          Document doc = wsdl.getDocument();
73  
74          addNamespace( "wsdl", WSDL.WSDL11_NS );
75          addNamespace( "xsd", SOAPConstants.XSD );
76  
77          assertValid( "/wsdl:definitions/wsdl:types", doc );
78          assertValid( "/wsdl:definitions/wsdl:types/xsd:schema", doc );
79          assertValid( "/wsdl:definitions/wsdl:types/xsd:schema/xsd:element[@name=\"in0\"]", doc );
80          assertValid( "/wsdl:definitions/wsdl:types/xsd:schema/xsd:element[@name=\"out\"]", doc );
81          assertValid( "/wsdl:definitions/wsdl:types/xsd:schema/xsd:element[@name=\"in0\"][@type=\"xsd:string\"]", doc );
82          assertValid( "/wsdl:definitions/wsdl:types/xsd:schema/xsd:element[@name=\"out\"][@type=\"xsd:string\"]", doc );
83      }
84  }