1 package org.codehaus.xfire.message.rpcenc; 2 3 import org.codehaus.xfire.service.object.DefaultObjectService; 4 import org.codehaus.xfire.services.Echo; 5 import org.codehaus.xfire.soap.Soap11; 6 import org.codehaus.xfire.soap.SoapConstants; 7 import org.codehaus.xfire.test.AbstractXFireTypeTest; 8 import org.codehaus.xfire.type.Type; 9 import org.codehaus.xfire.wsdl.WSDLWriter; 10 import org.dom4j.Document; 11 12 /*** 13 * @author <a href="mailto:dan@envoisolutions.com">Dan Diephouse</a> 14 * @since Feb 21, 2004 15 */ 16 public class RPCEncodedTest 17 extends AbstractXFireTypeTest 18 { 19 private DefaultObjectService service; 20 21 public void setUp() throws Exception 22 { 23 super.setUp(); 24 25 service = (DefaultObjectService) 26 getServiceBuilder().create(Echo.class, 27 "Echo", 28 "urn:Echo", 29 Soap11.getInstance(), 30 SoapConstants.STYLE_RPC, 31 SoapConstants.USE_ENCODED); 32 } 33 34 public void testBeanService() throws Exception 35 { 36 Type type = service.getTypeMapping().getType(String.class); 37 38 Document response = 39 invokeService("Echo", "/org/codehaus/xfire/message/rpcenc/echo11.xml"); 40 41 addNamespace("echo", "urn:Echo"); 42 assertValid("/s:Envelope/s:Body/echo:echoResponse", response); 43 assertValid("//echo:echoResponse/echo:out", response); 44 } 45 46 public void testEchoWSDL() throws Exception 47 { 48 Document doc = getWSDLDocument("Echo"); 49 50 addNamespace( "wsdl", WSDLWriter.WSDL11_NS ); 51 addNamespace( "wsdlsoap", WSDLWriter.WSDL11_SOAP_NS ); 52 addNamespace( "xsd", SoapConstants.XSD ); 53 54 assertValid( "/wsdl:definitions/wsdl:message[@name='echoRequest']", doc ); 55 assertValid( "/wsdl:definitions/wsdl:message[@name='echoRequest']" + 56 "/wsdl:part[@element='xsd:string'][@name='in0']", doc ); 57 assertValid( "/wsdl:definitions/wsdl:message[@name='echoResponse']", doc ); 58 assertValid( "/wsdl:definitions/wsdl:message[@name='echoResponse']" + 59 "/wsdl:part[@element='xsd:string'][@name='out']", doc ); 60 assertValid( "//wsdl:binding/wsdl:operation[@name='echo']", doc ); 61 62 assertValid( "//wsdl:binding/wsdl:operation/wsdl:input[@name='echoRequest']" + 63 "/wsdlsoap:body", doc ); 64 assertValid( "//wsdl:binding/wsdl:operation/wsdl:input[@name='echoRequest']" + 65 "/wsdlsoap:body[@encodingStyle='" + 66 Soap11.getInstance().getSoapEncodingStyle() + "']", doc ); 67 assertValid( "//wsdl:binding/wsdl:operation/wsdl:input[@name='echoRequest']" + 68 "/wsdlsoap:body[@use='encoded']", doc ); 69 assertValid( "//wsdl:binding/wsdl:operation/wsdl:input[@name='echoRequest']" + 70 "/wsdlsoap:body[@namespace='" + 71 service.getDefaultNamespace() + "']", doc ); 72 73 assertValid( "//wsdl:binding/wsdl:operation/wsdl:output[@name='echoResponse']" + 74 "/wsdlsoap:body", doc ); 75 assertValid( "//wsdl:binding/wsdl:operation/wsdl:output[@name='echoResponse']" + 76 "/wsdlsoap:body[@encodingStyle='" + 77 Soap11.getInstance().getSoapEncodingStyle() + "']", doc ); 78 assertValid( "//wsdl:binding/wsdl:operation/wsdl:output[@name='echoResponse']" + 79 "/wsdlsoap:body[@use='encoded']", doc ); 80 assertValid( "//wsdl:binding/wsdl:operation/wsdl:output[@name='echoResponse']" + 81 "/wsdlsoap:body[@namespace='" + 82 service.getDefaultNamespace() + "']", doc ); 83 84 assertValid( "/wsdl:definitions/wsdl:service/wsdl:port/wsdlsoap:address[@location='http://localhost/services/Echo']", doc ); 85 } 86 }