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:33:34 UTC

svn commit: r774480 - in /cxf/trunk: rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/context/ systests/src/test/java/org/apache/cxf/systest/ws/addr_wsdl/

Author: dkulp
Date: Wed May 13 18:33:28 2009
New Revision: 774480

URL: http://svn.apache.org/viewvc?rev=774480&view=rev
Log:
[CXF-1591] Add testcase for non-wsdl based provider

Modified:
    cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/context/WrappedMessageContext.java
    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/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/context/WrappedMessageContext.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/context/WrappedMessageContext.java?rev=774480&r1=774479&r2=774480&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/context/WrappedMessageContext.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/context/WrappedMessageContext.java Wed May 13 18:33:28 2009
@@ -377,6 +377,12 @@
             authPolicy.setPassword((String)value);
         } else if (MessageContext.HTTP_REQUEST_HEADERS.equals(key)) {
             ret = message.put(Message.PROTOCOL_HEADERS, value);
+        } else if (SoapBindingConstants.SOAP_ACTION.equals(mappedKey)
+            && !isRequestor()) {
+            Message tmp = createResponseMessage();
+            if (tmp != null) {
+                tmp.put(mappedKey, value);
+            }
         } else {
             ret = message.put(mappedKey, value);
         }

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=774480&r1=774479&r2=774480&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:33:28 2009
@@ -23,14 +23,18 @@
 import java.util.HashMap;
 import java.util.Map;
 
+import javax.annotation.Resource;
 import javax.xml.transform.Source;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamSource;
+import javax.xml.ws.BindingProvider;
 import javax.xml.ws.Endpoint;
 import javax.xml.ws.Provider;
+import javax.xml.ws.WebServiceContext;
 import javax.xml.ws.Service.Mode;
 import javax.xml.ws.ServiceMode;
 import javax.xml.ws.WebServiceProvider;
+import javax.xml.ws.soap.Addressing;
 import javax.xml.xpath.XPathConstants;
 
 import org.w3c.dom.Document;
@@ -55,6 +59,7 @@
         ep.publish(address);
         
         Endpoint.publish(address + "-provider", new AddNumberProvider());
+        Endpoint.publish(address + "-providernows", new AddNumberProviderNoWsdl());
     }
     
     private String getWsdl() {
@@ -103,6 +108,37 @@
                 + "<return>" + (i + i2) + "</return></addNumbersResponse>";
             return new StreamSource(new StringReader(resp));
         }
+    }
+
+    @WebServiceProvider(serviceName = "AddNumbersService",
+                        targetNamespace = "http://apache.org/cxf/systest/ws/addr_feature/")
+    @ServiceMode(Mode.PAYLOAD)
+    @Addressing(enabled = true, required = true)
+    public static class AddNumberProviderNoWsdl implements Provider<Source> {
+        @Resource
+        WebServiceContext ctx;
         
+        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);
+            
+            
+            ctx.getMessageContext()
+                .put(BindingProvider.SOAPACTION_URI_PROPERTY,
+                    "http://apache.org/cxf/systest/ws/addr_feature/AddNumbersPortType/addNumbersResponse");
+
+            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=774480&r1=774479&r2=774480&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:33:28 2009
@@ -49,7 +49,7 @@
 
     @BeforeClass
     public static void startServers() throws Exception {
-        assertTrue("server did not launch correctly", launchServer(Server.class));
+        assertTrue("server did not launch correctly", launchServer(Server.class, true));
     }
 
     @Test
@@ -73,19 +73,28 @@
     }
     @Test
     public void testProviderEndpoint() throws Exception {
+        String base = "http://apache.org/cxf/systest/ws/addr_feature/AddNumbersPortType/";
+        String expectedOut = base + "addNumbersRequest</Action>";
+        String expectedIn = base + "addNumbersResponse</Action>";
+
         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);
+
+        output.reset();
+        input.reset();
+        
+        ((BindingProvider)port).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, 
+            "http://localhost:9094/jaxws/add-providernows");
+        assertEquals(3, port.addNumbers(1, 2));
 
         assertTrue(output.toString().indexOf(expectedOut) != -1);
         assertTrue(input.toString().indexOf(expectedIn) != -1);