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 WrappedWSDLTest
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_WRAPPED);
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 WrappedWSDL wsdl = (WrappedWSDL) 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( "parameters" ) );
64 assertNotNull( request.getPart( "parameters" ).getElementName() );
65
66 Message response = def.getMessage( new QName("urn:Echo", "echoResponse") );
67
68 assertNotNull( response );
69 assertNotNull( response.getPart( "parameters" ) );
70 assertNotNull( response.getPart( "parameters" ).getElementName() );
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=\"echo\"]", doc );
80 assertValid( "/wsdl:definitions/wsdl:types/xsd:schema/xsd:element[@name=\"echoResponse\"]", doc );
81 assertValid( "/wsdl:definitions/wsdl:types/xsd:schema/xsd:element[@name=\"echo\"]/xsd:complexType/xsd:sequence/xsd:element[@name=\"in0\"]", doc );
82 assertValid( "/wsdl:definitions/wsdl:types/xsd:schema/xsd:element[@name=\"echo\"]/xsd:complexType/xsd:sequence/xsd:element[@type=\"xsd:string\"]", doc );
83 assertValid( "/wsdl:definitions/wsdl:types/xsd:schema/xsd:element[@name=\"echoResponse\"]/xsd:complexType/xsd:sequence/xsd:element[@name=\"out\"]", doc );
84 assertValid( "/wsdl:definitions/wsdl:types/xsd:schema/xsd:element[@name=\"echoResponse\"]/xsd:complexType/xsd:sequence/xsd:element[@type=\"xsd:string\"]", doc );
85 }
86 }