You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2009/05/13 20:15:27 UTC

svn commit: r774462 - in /cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/addr_wsdl: Server.java WSAPureWsdlTest.java

Author: dkulp
Date: Wed May 13 18:15:25 2009
New Revision: 774462

URL: http://svn.apache.org/viewvc?rev=774462&view=rev
Log:
Add a testcase for WS-Addressing with a Provider based service

Modified:
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/addr_wsdl/Server.java
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/addr_wsdl/WSAPureWsdlTest.java

Modified: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/addr_wsdl/Server.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/addr_wsdl/Server.java?rev=774462&r1=774461&r2=774462&view=diff
==============================================================================
--- cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/addr_wsdl/Server.java (original)
+++ cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/addr_wsdl/Server.java Wed May 13 18:15:25 2009
@@ -19,7 +19,25 @@
 
 package org.apache.cxf.systest.ws.addr_wsdl;
 
+import java.io.StringReader;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.xml.transform.Source;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamSource;
+import javax.xml.ws.Endpoint;
+import javax.xml.ws.Provider;
+import javax.xml.ws.Service.Mode;
+import javax.xml.ws.ServiceMode;
+import javax.xml.ws.WebServiceProvider;
+import javax.xml.xpath.XPathConstants;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
 import org.apache.cxf.BusFactory;
+import org.apache.cxf.helpers.XPathUtils;
 import org.apache.cxf.jaxws.EndpointImpl;
 import org.apache.cxf.testutil.common.AbstractBusTestServerBase;
 
@@ -34,8 +52,9 @@
                                            null, 
                                            getWsdl());
 
-        //EndpointImpl ep = (EndpointImpl) Endpoint.create(implementor);
         ep.publish(address);
+        
+        Endpoint.publish(address + "-provider", new AddNumberProvider());
     }
     
     private String getWsdl() {
@@ -59,4 +78,31 @@
             System.out.println("done!");
         }
     }
+    
+    
+    @WebServiceProvider(serviceName = "AddNumbersService",
+                        targetNamespace = "http://apache.org/cxf/systest/ws/addr_feature/",
+                        wsdlLocation = "/wsdl_systest/add_numbers.wsdl")
+    @ServiceMode(Mode.PAYLOAD)
+    public static class AddNumberProvider implements Provider<Source> {
+
+        public Source invoke(Source obj) {
+            //CHECK the incoming
+            DOMSource ds = (DOMSource)obj;
+            
+            Element el = ((Document)ds.getNode()).getDocumentElement();
+            Map<String, String> ns = new HashMap<String, String>();
+            ns.put("ns", "http://apache.org/cxf/systest/ws/addr_feature/");
+            XPathUtils xp = new XPathUtils(ns);
+            String o = (String)xp.getValue("/ns:addNumbers/ns:number1", el, XPathConstants.STRING);
+            String o2 = (String)xp.getValue("/ns:addNumbers/ns:number2", el, XPathConstants.STRING);
+            int i = Integer.parseInt(o);
+            int i2 = Integer.parseInt(o2);
+            
+            String resp = "<addNumbersResponse xmlns=\"http://apache.org/cxf/systest/ws/addr_feature/\">"
+                + "<return>" + (i + i2) + "</return></addNumbersResponse>";
+            return new StreamSource(new StringReader(resp));
+        }
+        
+    }
 }

Modified: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/addr_wsdl/WSAPureWsdlTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/addr_wsdl/WSAPureWsdlTest.java?rev=774462&r1=774461&r2=774462&view=diff
==============================================================================
--- cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/addr_wsdl/WSAPureWsdlTest.java (original)
+++ cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/addr_wsdl/WSAPureWsdlTest.java Wed May 13 18:15:25 2009
@@ -72,6 +72,26 @@
         assertTrue(input.toString().indexOf(expectedIn) != -1);
     }
     @Test
+    public void testProviderEndpoint() throws Exception {
+        ByteArrayOutputStream input = setupInLogging();
+        ByteArrayOutputStream output = setupOutLogging();
+
+        AddNumbersPortType port = getPort();
+
+        ((BindingProvider)port).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, 
+                                                        "http://localhost:9094/jaxws/add-provider");
+
+        assertEquals(3, port.addNumbers(1, 2));
+
+        String base = "http://apache.org/cxf/systest/ws/addr_feature/AddNumbersPortType/";
+        String expectedOut = base + "addNumbersRequest</Action>";
+        String expectedIn = base + "addNumbersResponse</Action>";
+
+        assertTrue(output.toString().indexOf(expectedOut) != -1);
+        assertTrue(input.toString().indexOf(expectedIn) != -1);
+    }
+
+    @Test
     public void testBasicDispatchInvocation() throws Exception {
         String req = "<addNumbers xmlns=\"http://apache.org/cxf/systest/ws/addr_feature/\">"
             + "<number1>1</number1><number2>2</number2></addNumbers>";