Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerTest.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerTest.java?view=diff&rev=469089&r1=469088&r2=469089 ============================================================================== --- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerTest.java (original) +++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerTest.java Mon Oct 30 00:26:47 2006 @@ -19,8 +19,11 @@ package org.apache.cxf.systest.jaxws; +import java.io.InputStream; import java.lang.reflect.UndeclaredThrowableException; +import java.net.HttpURLConnection; import java.net.URL; +import java.util.HashMap; import java.util.Map; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; @@ -33,10 +36,17 @@ import javax.xml.ws.Endpoint; import javax.xml.ws.Response; import javax.xml.ws.Service; +import javax.xml.xpath.XPathConstants; + +import org.w3c.dom.Document; +import org.w3c.dom.Node; import junit.framework.Test; import junit.framework.TestSuite; +import org.apache.cxf.binding.soap.Soap11; +import org.apache.cxf.helpers.XMLUtils; +import org.apache.cxf.helpers.XPathUtils; import org.apache.cxf.message.Message; import org.apache.cxf.systest.common.ClientServerSetupBase; import org.apache.cxf.systest.common.ClientServerTestBase; @@ -462,8 +472,67 @@ assertEquals("BadRecordLitFault", brlf.getFaultInfo()); } } - } + } + + public void testGetSayHi() throws Exception { + HttpURLConnection httpConnection = + getHttpConnection("http://localhost:9000/SoapContext/SoapPort/sayHi"); + httpConnection.connect(); + + httpConnection.connect(); + + assertEquals(200, httpConnection.getResponseCode()); + + assertEquals("text/xml", httpConnection.getContentType()); + assertEquals("OK", httpConnection.getResponseMessage()); + + InputStream in = httpConnection.getInputStream(); + assertNotNull(in); + + Document doc = XMLUtils.parse(in); + assertNotNull(doc); + + Map<String, String> ns = new HashMap<String, String>(); + ns.put("soap", Soap11.SOAP_NAMESPACE); + ns.put("ns2", "http://apache.org/hello_world_soap_http/types"); + XPathUtils xu = new XPathUtils(ns); + Node body = (Node) xu.getValue("/soap:Envelope/soap:Body", doc, XPathConstants.NODE); + assertNotNull(body); + String response = (String) xu.getValue("//ns2:sayHiResponse/ns2:responseType/text()", + body, + XPathConstants.STRING); + assertEquals("Bonjour", response); + } + public void testGetGreetMe() throws Exception { + HttpURLConnection httpConnection = + getHttpConnection("http://localhost:9000/SoapContext/SoapPort/greetMe/me/cxf"); + httpConnection.connect(); + + assertEquals(200, httpConnection.getResponseCode()); + + assertEquals("text/xml", httpConnection.getContentType()); + assertEquals("OK", httpConnection.getResponseMessage()); + + InputStream in = httpConnection.getInputStream(); + assertNotNull(in); + + Document doc = XMLUtils.parse(in); + assertNotNull(doc); + + Map<String, String> ns = new HashMap<String, String>(); + ns.put("soap", Soap11.SOAP_NAMESPACE); + ns.put("ns2", "http://apache.org/hello_world_soap_http/types"); + XPathUtils xu = new XPathUtils(ns); + Node body = (Node) xu.getValue("/soap:Envelope/soap:Body", doc, XPathConstants.NODE); + assertNotNull(body); + String response = (String) xu.getValue("//ns2:greetMeResponse/ns2:responseType/text()", + body, + XPathConstants.STRING); + // TODO:wrong return type, should Hello cxf + assertEquals("Hello null", response); + } + public static void main(String[] args) { junit.textui.TestRunner.run(ClientServerTest.class); }
Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerXMLBareTest.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerXMLBareTest.java?view=diff&rev=469089&r1=469088&r2=469089 ============================================================================== --- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerXMLBareTest.java (original) +++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerXMLBareTest.java Mon Oct 30 00:26:47 2006 @@ -19,23 +19,32 @@ package org.apache.cxf.systest.jaxws; +import java.io.InputStream; import java.lang.reflect.UndeclaredThrowableException; +import java.net.HttpURLConnection; +import java.util.HashMap; +import java.util.Map; import javax.xml.namespace.QName; import javax.xml.ws.Endpoint; +import javax.xml.xpath.XPathConstants; + +import org.w3c.dom.Document; import junit.framework.Test; -import junit.framework.TestCase; import junit.framework.TestSuite; +import org.apache.cxf.helpers.XMLUtils; +import org.apache.cxf.helpers.XPathUtils; import org.apache.cxf.systest.common.ClientServerSetupBase; +import org.apache.cxf.systest.common.ClientServerTestBase; import org.apache.cxf.systest.common.TestServerBase; import org.apache.hello_world_xml_http.bare.Greeter; import org.apache.hello_world_xml_http.bare.GreeterImpl; import org.apache.hello_world_xml_http.bare.XMLService; import org.apache.hello_world_xml_http.bare.types.MyComplexStructType; -public class ClientServerXMLBareTest extends TestCase { +public class ClientServerXMLBareTest extends ClientServerTestBase { private final QName portName = new QName("http://apache.org/hello_world_xml_http/bare", "XMLPort"); @@ -106,6 +115,31 @@ } catch (UndeclaredThrowableException ex) { throw (Exception) ex.getCause(); } + } + + public void testGetGreetMe() throws Exception { + HttpURLConnection httpConnection = + getHttpConnection("http://localhost:9031/XMLService/XMLPort/greetMe/me/cxf"); + httpConnection.connect(); + + assertEquals(200, httpConnection.getResponseCode()); + + assertEquals("text/xml", httpConnection.getContentType()); + assertEquals("OK", httpConnection.getResponseMessage()); + + InputStream in = httpConnection.getInputStream(); + assertNotNull(in); + + Document doc = XMLUtils.parse(in); + assertNotNull(doc); + + Map<String, String> ns = new HashMap<String, String>(); + ns.put("ns2", "http://apache.org/hello_world_xml_http/bare/types"); + XPathUtils xu = new XPathUtils(ns); + String response = (String) xu.getValue("//ns2:responseType/text()", + doc, + XPathConstants.STRING); + assertEquals("Hello cxf", response); } } Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/soap12/Soap12ClientServerTest.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/soap12/Soap12ClientServerTest.java?view=diff&rev=469089&r1=469088&r2=469089 ============================================================================== --- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/soap12/Soap12ClientServerTest.java (original) +++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/soap12/Soap12ClientServerTest.java Mon Oct 30 00:26:47 2006 @@ -21,12 +21,24 @@ package org.apache.cxf.systest.soap12; +import java.io.InputStream; +import java.net.HttpURLConnection; import java.net.URL; +import java.util.HashMap; +import java.util.Map; import javax.xml.namespace.QName; +import javax.xml.xpath.XPathConstants; + +import org.w3c.dom.Document; +import org.w3c.dom.Node; import junit.framework.Test; import junit.framework.TestSuite; + +import org.apache.cxf.binding.soap.Soap12; +import org.apache.cxf.helpers.XMLUtils; +import org.apache.cxf.helpers.XPathUtils; import org.apache.cxf.systest.common.ClientServerSetupBase; import org.apache.cxf.systest.common.ClientServerTestBase; import org.apache.hello_world_soap12_http.Greeter; @@ -47,7 +59,6 @@ assertTrue("server did not launch correctly", launchServer(Server.class)); } }; - } public void testBasicConnection() throws Exception { @@ -71,6 +82,101 @@ assertEquals("PingMeFault raised by server", ex.getMessage()); } } + + public void testGetSayHi() throws Exception { + HttpURLConnection httpConnection = + getHttpConnection("http://localhost:9012/SoapContext/SoapPort/sayHi"); + httpConnection.connect(); + + InputStream in = httpConnection.getInputStream(); + assertNotNull(in); + assertEquals("application/soap+xml", httpConnection.getContentType()); + + Document doc = XMLUtils.parse(in); + assertNotNull(doc); + Map<String, String> ns = new HashMap<String, String>(); + ns.put("soap12", Soap12.SOAP_NAMESPACE); + ns.put("ns2", "http://apache.org/hello_world_soap12_http/types"); + XPathUtils xu = new XPathUtils(ns); + Node body = (Node) xu.getValue("/soap12:Envelope/soap12:Body", doc, XPathConstants.NODE); + assertNotNull(body); + String response = (String) xu.getValue("//ns2:sayHiResponse/ns2:responseType/text()", + body, + XPathConstants.STRING); + assertEquals("Bonjour", response); + } + + public void testGetPingMe() throws Exception { + HttpURLConnection httpConnection = + getHttpConnection("http://localhost:9012/SoapContext/SoapPort/pingMe"); + httpConnection.connect(); + + assertEquals(500, httpConnection.getResponseCode()); + + assertEquals("Fault+Occurred", httpConnection.getResponseMessage()); + + InputStream in = httpConnection.getErrorStream(); + assertNotNull(in); + assertEquals("application/soap+xml", httpConnection.getContentType()); + + Document doc = XMLUtils.parse(in); + assertNotNull(doc); + + Map<String, String> ns = new HashMap<String, String>(); + ns.put("s", Soap12.SOAP_NAMESPACE); + ns.put("ns2", "http://apache.org/hello_world_soap12_http/types"); + XPathUtils xu = new XPathUtils(ns); + String codeValue = (String) xu.getValue("/s:Envelope/s:Body/s:Fault/s:Code/s:Value/text()", + doc, + XPathConstants.STRING); + + assertEquals("soap:Receiver", codeValue); + String reason = (String) xu.getValue("//s:Reason//text()", + doc, + XPathConstants.STRING); + assertEquals("PingMeFault raised by server", reason); + + String minor = (String) xu.getValue("//s:Detail//ns2:faultDetail/ns2:minor/text()", + doc, + XPathConstants.STRING); + assertEquals("1", minor); + String major = (String) xu.getValue("//s:Detail//ns2:faultDetail/ns2:major/text()", + doc, + XPathConstants.STRING); + assertEquals("2", major); + } + + public void testGetMethodNotExist() throws Exception { + HttpURLConnection httpConnection = + getHttpConnection("http://localhost:9012/SoapContext/SoapPort/greetMe"); + httpConnection.connect(); + + assertEquals(500, httpConnection.getResponseCode()); + + assertEquals("application/soap+xml", httpConnection.getContentType()); + + assertEquals("Fault+Occurred", httpConnection.getResponseMessage()); + + InputStream in = httpConnection.getErrorStream(); + assertNotNull(in); + + Document doc = XMLUtils.parse(in); + assertNotNull(doc); + Map<String, String> ns = new HashMap<String, String>(); + ns.put("s", Soap12.SOAP_NAMESPACE); + ns.put("ns2", "http://apache.org/hello_world_soap12_http/types"); + XPathUtils xu = new XPathUtils(ns); + String codeValue = (String) xu.getValue("/s:Envelope/s:Body/s:Fault/s:Code/s:Value/text()", + doc, + XPathConstants.STRING); + + assertEquals("soap:Receiver", codeValue); + String reason = (String) xu.getValue("//s:Reason//text()", + doc, + XPathConstants.STRING); + assertEquals("No such operation: greetMe", reason); + } + private Greeter getGreeter() { URL wsdl = getClass().getResource("/wsdl/hello_world_soap12.wsdl"); @@ -78,9 +184,8 @@ SOAPService service = new SOAPService(wsdl, serviceName); assertNotNull("Service is ull ", service); - - return service.getPort(portName, - Greeter.class); + + return service.getPort(portName, Greeter.class); } public static void main(String[] args) { Modified: incubator/cxf/trunk/testutils/pom.xml URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/testutils/pom.xml?view=diff&rev=469089&r1=469088&r2=469089 ============================================================================== --- incubator/cxf/trunk/testutils/pom.xml (original) +++ incubator/cxf/trunk/testutils/pom.xml Mon Oct 30 00:26:47 2006 @@ -303,6 +303,10 @@ <wsdlOption> <wsdl>${basedir}/src/main/resources/wsdl/addNumbers.wsdl</wsdl> </wsdlOption> + <wsdlOption> + <wsdl>${basedir}/src/main/resources/wsdl/calculator.wsdl</wsdl> + </wsdlOption> + </wsdlOptions> </configuration> <goals> Added: incubator/cxf/trunk/testutils/src/main/java/org/apache/cxf/calculator/CalculatorImpl.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/testutils/src/main/java/org/apache/cxf/calculator/CalculatorImpl.java?view=auto&rev=469089 ============================================================================== --- incubator/cxf/trunk/testutils/src/main/java/org/apache/cxf/calculator/CalculatorImpl.java (added) +++ incubator/cxf/trunk/testutils/src/main/java/org/apache/cxf/calculator/CalculatorImpl.java Mon Oct 30 00:26:47 2006 @@ -0,0 +1,41 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.cxf.calculator; + +import javax.jws.WebService; + +import org.apache.cxf.calculator.types.CalculatorFault; + [EMAIL PROTECTED](serviceName = "CalculatorService", + portName = "CalculatorPort", + targetNamespace = "http://apache.org/cxf/calculator", + endpointInterface = "org.apache.cxf.calculator.CalculatorPortType") +public class CalculatorImpl implements CalculatorPortType { + public int add(int number1, int number2) throws AddNumbersFault { + if (number1 < 0 || number2 < 0) { + CalculatorFault fault = new CalculatorFault(); + fault.setMessage("Negative number cant be added!"); + fault.setFaultInfo("Numbers: " + number1 + ", " + number2); + throw new AddNumbersFault("Negative number cant be added!", fault); + } + return number1 + number2; + } + +} Propchange: incubator/cxf/trunk/testutils/src/main/java/org/apache/cxf/calculator/CalculatorImpl.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: incubator/cxf/trunk/testutils/src/main/java/org/apache/cxf/calculator/CalculatorImpl.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Added: incubator/cxf/trunk/testutils/src/main/resources/wsdl/calculator.wsdl URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/testutils/src/main/resources/wsdl/calculator.wsdl?view=auto&rev=469089 ============================================================================== --- incubator/cxf/trunk/testutils/src/main/resources/wsdl/calculator.wsdl (added) +++ incubator/cxf/trunk/testutils/src/main/resources/wsdl/calculator.wsdl Mon Oct 30 00:26:47 2006 @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. +--> + +<definitions name="Calculator" + targetNamespace="http://apache.org/cxf/calculator" + xmlns:tns="http://apache.org/cxf/calculator" + xmlns="http://schemas.xmlsoap.org/wsdl/" + xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns:x1="http://apache.org/cxf/calculator/types" + xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"> + <types> + <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" + elementFormDefault="qualified" + targetNamespace="http://apache.org/cxf/calculator/types"> + + <complexType name="addNumbersResponse"> + <sequence> + <element name="return" type="xsd:int" /> + </sequence> + </complexType> + <element name="addNumbersResponse" type="x1:addNumbersResponse" /> + + <complexType name="addNumbers"> + <sequence> + <element name="arg0" type="xsd:int" /> + <element name="arg1" type="xsd:int" /> + </sequence> + </complexType> + <element name="add" type="x1:addNumbers" /> + + <element name="CalculatorFault" type="x1:CalculatorFault" /> + <complexType name="CalculatorFault"> + <sequence> + <element name="faultInfo" type="xsd:string" /> + <element name="message" type="xsd:string" /> + </sequence> + </complexType> + </xsd:schema> + </types> + <message name="add"> + <part name="parameters" element="x1:add" /> + </message> + <message name="addNumbersResponse"> + <part name="result" element="x1:addNumbersResponse" /> + </message> + <message name="addNumbersFault"> + <part name="CalculatorFault" element="x1:CalculatorFault" /> + </message> + <portType name="CalculatorPortType"> + <operation name="add"> + <input message="tns:add"/> + <output message="tns:addNumbersResponse"/> + <fault name="addNumbersFault" message="tns:addNumbersFault"/> + </operation> + </portType> + + <binding name="CalculatorBinding" type="tns:CalculatorPortType"> + <soap12:binding transport="http://www.w3.org/2003/05/soap/bindings/HTTP/" style="document" /> + <operation name="add"> + <soap12:operation soapAction="" /> + <input> + <soap12:body use="literal" /> + </input> + <output> + <soap12:body use="literal" /> + </output> + <fault name="addNumbersFault"> + <soap12:fault name="addNumbersFault" use="literal" /> + </fault> + </operation> + </binding> + <service name="CalculatorService"> + <port name="CalculatorPort" binding="tns:CalculatorBinding"> + <soap12:address location="http://localhost:9000/CalculatorService/SoapPort" /> + </port> + </service> +</definitions> \ No newline at end of file Propchange: incubator/cxf/trunk/testutils/src/main/resources/wsdl/calculator.wsdl ------------------------------------------------------------------------------ svn:eol-style = native Propchange: incubator/cxf/trunk/testutils/src/main/resources/wsdl/calculator.wsdl ------------------------------------------------------------------------------ svn:keywords = Rev Date Propchange: incubator/cxf/trunk/testutils/src/main/resources/wsdl/calculator.wsdl ------------------------------------------------------------------------------ svn:mime-type = text/xml
