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
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 }