1 package org.codehaus.xfire.java.wrapped;
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.ServiceHelper;
10 import org.codehaus.xfire.java.test.ArrayService;
11 import org.codehaus.xfire.java.test.BeanService;
12 import org.codehaus.xfire.java.wsdl.JavaWSDLBuilder;
13 import org.codehaus.xfire.wsdl.WSDL;
14 import org.dom4j.Document;
15
16
17 /***
18 * @author <a href="mailto:dan@envoisolutions.com">Dan Diephouse</a>
19 * @since Feb 21, 2004
20 */
21 public class WrappedAutoTypeTest
22 extends AbstractJavaTest
23 {
24 public void setUp() throws Exception
25 {
26 super.setUp();
27 ServiceHelper.createService(getXFire(), getRegistry(), BeanService.class);
28
29
30 DefaultJavaService service = new DefaultJavaService();
31 service.setName("Array");
32 service.setDefaultNamespace("urn:Array");
33 service.setServiceClass(ArrayService.class.getName());
34 service.setSoapVersion(SOAPConstants.SOAP11_ENVELOPE_NS);
35 service.setStyle(SOAPConstants.STYLE_WRAPPED);
36 service.setUse(SOAPConstants.USE_LITERAL);
37 service.setFaultHandler(new SOAP11FaultHandler());
38 service.setWSDLBuilder(new JavaWSDLBuilder( getXFire().getTransportManager() ));
39 service.setAutoTyped(true);
40
41 SoapHandler handler = new SoapHandler(new JavaServiceHandler());
42 service.setServiceHandler( handler );
43
44 service.setTypeMappingRegistry(getRegistry());
45
46 service.initialize();
47
48 getServiceRegistry().register(service);
49 }
50
51 public void testBeanService() throws Exception
52 {
53 Document response =
54 invokeService("BeanService",
55 "/org/codehaus/xfire/java/wrapped/bean11.xml");
56
57 addNamespace( "sb", "http://test.java.xfire.codehaus.org");
58 assertValid( "//sb:getSimpleBeanResponse", response );
59 assertValid( "//sb:getSimpleBeanResponse/sb:out", response );
60 assertValid( "//sb:getSimpleBeanResponse/sb:out/sb:howdy[text()=\"howdy\"]", response );
61 assertValid( "//sb:getSimpleBeanResponse/sb:out/sb:bleh[text()=\"bleh\"]", response );
62 }
63
64 public void testBeanServiceWSDL() throws Exception
65 {
66 Document doc = getWSDLDocument("BeanService");
67 printNode(doc);
68 addNamespace( "wsdl", WSDL.WSDL11_NS );
69 addNamespace( "wsdlsoap", WSDL.WSDL11_SOAP_NS );
70 addNamespace( "xsd", SOAPConstants.XSD );
71
72 assertValid( "/wsdl:definitions/wsdl:types", doc );
73 assertValid( "/wsdl:definitions/wsdl:types/xsd:schema", doc );
74 assertValid( "/wsdl:definitions/wsdl:types/xsd:schema[@targetNamespace='http://test.java.xfire.codehaus.org']", doc );
75 assertValid( "//xsd:schema[@targetNamespace='http://test.java.xfire.codehaus.org']/xsd:element[@name='getSubmitBean']", doc );
76 assertValid( "//xsd:element[@name='getSubmitBean']/xsd:complexType/xsd:sequence/xsd:element[@name='in1'][@type='xsd:string']", doc );
77 assertValid( "//xsd:element[@name='getSubmitBean']/xsd:complexType/xsd:sequence/xsd:element[@name='in0'][@type='tns:SimpleBean']", doc );
78
79 assertValid( "/wsdl:definitions/wsdl:types" +
80 "/xsd:schema[@targetNamespace='http://test.java.xfire.codehaus.org']" +
81 "/xsd:complexType", doc );
82 assertValid( "/wsdl:definitions/wsdl:types" +
83 "/xsd:schema[@targetNamespace='http://test.java.xfire.codehaus.org']" +
84 "/xsd:complexType[@name=\"SimpleBean\"]", 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[@name=\"bleh\"]", doc );
88 assertValid( "/wsdl:definitions/wsdl:types" +
89 "/xsd:schema[@targetNamespace='http://test.java.xfire.codehaus.org']" +
90 "/xsd:complexType[@name=\"SimpleBean\"]/xsd:sequence/xsd:element[@name=\"howdy\"]", doc );
91 assertValid( "/wsdl:definitions/wsdl:types" +
92 "/xsd:schema[@targetNamespace='http://test.java.xfire.codehaus.org']" +
93 "/xsd:complexType[@name=\"SimpleBean\"]/xsd:sequence/xsd:element[@type=\"xsd:string\"]", doc );
94
95 assertValid( "/wsdl:definitions/wsdl:service/wsdl:port/wsdlsoap:address[@location='http://localhost/services/BeanService']", doc );
96 }
97
98 public void testArrayService() throws Exception
99 {
100 Document response = invokeService("Array",
101 "/org/codehaus/xfire/java/wrapped/SubmitStringArray11.xml");
102
103 addNamespace( "a", "urn:Array");
104 addNamespace( "sb", "http://test.java.xfire.codehaus.org");
105 assertValid( "//a:SubmitStringArrayResponse", response );
106 assertValid( "//a:SubmitStringArrayResponse/a:out[text()='true']", response );
107 }
108
109 public void testArrayServiceWSDL() throws Exception
110 {
111 Document doc = getWSDLDocument("Array");
112
113 addNamespace( "wsdl", WSDL.WSDL11_NS );
114 addNamespace( "wsdlsoap", WSDL.WSDL11_SOAP_NS );
115 addNamespace( "xsd", SOAPConstants.XSD );
116
117 assertValid( "/wsdl:definitions/wsdl:types", doc );
118 assertValid( "/wsdl:definitions/wsdl:types/xsd:schema", doc );
119 assertValid( "/wsdl:definitions/wsdl:types/xsd:schema[@targetNamespace='urn:Array']", doc );
120 assertValid( "//xsd:schema[@targetNamespace='urn:Array']/xsd:element[@name='SubmitBeanArray']", doc );
121 assertValid( "//xsd:element[@name='SubmitStringArray']/xsd:complexType/xsd:sequence/xsd:element[@name='in0'][@type='tns:ArrayOfString']", doc );
122 assertValid( "//xsd:element[@name='SubmitBeanArray']/xsd:complexType/xsd:sequence/xsd:element[@name='in0'][@type='ns1:ArrayOfSimpleBean']", doc );
123 }
124 }