You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by mm...@apache.org on 2007/11/28 09:25:03 UTC

svn commit: r598904 - in /incubator/cxf/trunk: rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/ systests/src/test/java/org/apache/cxf/systest/ws/addr_feature/ systests/src/test/java/org/apache/cxf/systest/ws/addr_fromwsdl/ systests/src/test/java/...

Author: mmao
Date: Wed Nov 28 00:25:02 2007
New Revision: 598904

URL: http://svn.apache.org/viewvc?rev=598904&view=rev
Log:
CXF-1191 
 * Fix the build
 * Support explicit action name for both input/output


Modified:
    incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/MAPAggregator.java
    incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/addr_feature/AddNumberImpl.java
    incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/addr_fromwsdl/AddNumberImpl.java
    incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/addr_fromwsdl/WSAFromWSDLTest.java
    incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/ServerPersistenceTest.java
    incubator/cxf/trunk/systests/src/test/resources/wsdl/add_numbers.wsdl

Modified: incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/MAPAggregator.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/MAPAggregator.java?rev=598904&r1=598903&r2=598904&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/MAPAggregator.java (original)
+++ incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/MAPAggregator.java Wed Nov 28 00:25:02 2007
@@ -39,6 +39,7 @@
 import org.apache.cxf.phase.AbstractPhaseInterceptor;
 import org.apache.cxf.phase.Phase;
 import org.apache.cxf.service.model.EndpointInfo;
+import org.apache.cxf.service.model.MessageInfo;
 import org.apache.cxf.service.model.OperationInfo;
 import org.apache.cxf.transport.Conduit;
 import org.apache.cxf.transport.Destination;
@@ -56,6 +57,9 @@
     private static final Logger LOG = 
         LogUtils.getL7dLogger(MAPAggregator.class);
     private static final ResourceBundle BUNDLE = LOG.getResourceBundle();
+
+    private static final QName WSAW_ACTION_QNAME = new QName("http://www.w3.org/2006/05/addressing/wsdl", 
+                                                             "Action");
     
 
     /**
@@ -388,6 +392,29 @@
         return maps;
     }
 
+    private String getActionFromInputMessage(final OperationInfo operation) {
+        MessageInfo inputMessage = operation.getInput();
+
+        if (inputMessage.getExtensionAttributes() != null) {
+            QName inputAction = (QName)inputMessage.getExtensionAttribute(WSAW_ACTION_QNAME);
+            if (inputAction != null) {
+                return inputAction.getLocalPart();
+            }
+        }
+        return null;
+    }
+    
+    private String getActionFromOutputMessage(final OperationInfo operation) {
+        MessageInfo outputMessage = operation.getOutput();
+        if (outputMessage != null && outputMessage.getExtensionAttributes() != null) {
+            QName outputAction = (QName)outputMessage.getExtensionAttribute(WSAW_ACTION_QNAME);
+            if (outputAction != null) {
+                return outputAction.getLocalPart();
+            }
+        }
+        return null;
+    }
+
     protected String getActionUri(Message message) {
         OperationInfo op = message.getExchange().get(OperationInfo.class);
         String interfaceName = op.getInterface().getName().getLocalPart();
@@ -396,13 +423,19 @@
         String opNamespace = addPath(op.getName().getNamespaceURI(), interfaceName);
         
         if (ContextUtils.isRequestor(message)) {
-            if (null == op.getInputName()) {
+            String explicitAction = getActionFromInputMessage(op);
+            if (explicitAction != null) {
+                actionUri = explicitAction;
+            } else if (null == op.getInputName()) {
                 actionUri = addPath(opNamespace, op.getName().getLocalPart() + "Request");
             } else {
                 actionUri = addPath(opNamespace, op.getInputName());
             }
         } else {
-            if (null == op.getOutputName()) {
+            String explicitAction = getActionFromOutputMessage(op);
+            if (explicitAction != null) {
+                actionUri = explicitAction;
+            } else if (null == op.getOutputName()) {
                 actionUri = addPath(opNamespace, op.getOutput().getName().getLocalPart());
             } else {
                 actionUri = addPath(opNamespace, op.getOutputName());

Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/addr_feature/AddNumberImpl.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/addr_feature/AddNumberImpl.java?rev=598904&r1=598903&r2=598904&view=diff
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/addr_feature/AddNumberImpl.java (original)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/addr_feature/AddNumberImpl.java Wed Nov 28 00:25:02 2007
@@ -34,4 +34,8 @@
     public int addNumbers2(int number1, int number2) {
         return number1 + number2;
     }
+
+    public int addNumbers3(int number1, int number2) {
+        return number1 + number2;
+    }
 }

Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/addr_fromwsdl/AddNumberImpl.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/addr_fromwsdl/AddNumberImpl.java?rev=598904&r1=598903&r2=598904&view=diff
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/addr_fromwsdl/AddNumberImpl.java (original)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/addr_fromwsdl/AddNumberImpl.java Wed Nov 28 00:25:02 2007
@@ -36,4 +36,8 @@
     public int addNumbers2(int number1, int number2) {
         return number1 + number2;
     }
+
+    public int addNumbers3(int number1, int number2) {
+        return number1 + number2;
+    }
 }

Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/addr_fromwsdl/WSAFromWSDLTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/addr_fromwsdl/WSAFromWSDLTest.java?rev=598904&r1=598903&r2=598904&view=diff
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/addr_fromwsdl/WSAFromWSDLTest.java (original)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/addr_fromwsdl/WSAFromWSDLTest.java Wed Nov 28 00:25:02 2007
@@ -102,6 +102,23 @@
         assertTrue(input.toString().indexOf(expectedIn) != -1);
     }
 
+
+    @Test
+    public void testAddNumbers3() throws Exception {
+        ByteArrayOutputStream input = setupInLogging();
+        ByteArrayOutputStream output = setupOutLogging();
+
+        AddNumbersPortType port = getPort();
+
+        assertEquals(3, port.addNumbers3(1, 2));
+
+        String expectedOut = "3in";
+        String expectedIn = "3out";
+
+        assertTrue(output.toString().indexOf(expectedOut) != -1);
+        assertTrue(input.toString().indexOf(expectedIn) != -1);
+    }
+
     private AddNumbersPortType getPort() {
         URL wsdl = getClass().getResource("/wsdl/add_numbers.wsdl");
         assertNotNull("WSDL is null", wsdl);

Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/ServerPersistenceTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/ServerPersistenceTest.java?rev=598904&r1=598903&r2=598904&view=diff
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/ServerPersistenceTest.java (original)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/ServerPersistenceTest.java Wed Nov 28 00:25:02 2007
@@ -59,6 +59,9 @@
         = "http://cxf.apache.org/greeter_control/Greeter/greetMeOneWayRequest";
     public static final String GREETME_ACTION
         = "http://cxf.apache.org/greeter_control/Greeter/greetMeRequest";
+    private static final String GREETME_RESPONSE_ACTION
+        = "http://cxf.apache.org/greeter_control/Greeter/greetMeResponse";
+
     private static final Logger LOG = LogUtils.getLogger(ServerPersistenceTest.class);
     private static final String CFG = "/org/apache/cxf/systest/ws/rm/persistent.xml";
     private static final String SERVER_LOSS_CFG 
@@ -179,8 +182,8 @@
         mf.verifyPartialResponses(4);
         mf.purgePartialResponses();
         expectedActions = new String[] {RMConstants.getCreateSequenceResponseAction(),
-                                        GREETME_ACTION,
-                                        GREETME_ACTION};
+                                        GREETME_RESPONSE_ACTION,
+                                        GREETME_RESPONSE_ACTION};
         mf.verifyActions(expectedActions, false);
         // mf.verifyMessageNumbers(new String[] {null, "1", "3"}, false);
         // mf.verifyAcknowledgements(new boolean[] {false, true, true}, false);    
@@ -216,7 +219,7 @@
             assertTrue(nIn >= 1);
             String[] expectedActions = new String[nIn];
             for (int i = 0; i < nIn; i++) {
-                expectedActions[i] = GREETME_ACTION;
+                expectedActions[i] = GREETME_RESPONSE_ACTION;
             }
             mf.verifyActions(expectedActions, false);
         }

Modified: incubator/cxf/trunk/systests/src/test/resources/wsdl/add_numbers.wsdl
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/resources/wsdl/add_numbers.wsdl?rev=598904&r1=598903&r2=598904&view=diff
==============================================================================
--- incubator/cxf/trunk/systests/src/test/resources/wsdl/add_numbers.wsdl (original)
+++ incubator/cxf/trunk/systests/src/test/resources/wsdl/add_numbers.wsdl Wed Nov 28 00:25:02 2007
@@ -89,11 +89,11 @@
 	    <output message="tns:addNumbers2Response" name="add2Out"/>
 <!-- 	    <fault name="addNumbersFault" message="tns:addNumbersFault"/> -->
 	</operation>
-<!-- 	<operation name="addNumbers3"> -->
-<!-- 	    <input message="tns:addNumbers3" wsaw:Action="3in"/> -->
-<!-- 	    <output message="tns:addNumbers3Response" wsaw:Action="3out"/> -->
+	<operation name="addNumbers3">
+	    <input message="tns:addNumbers3" wsaw:Action="3in"/>
+	    <output message="tns:addNumbers3Response" wsaw:Action="3out"/>
 <!-- 	    <fault name="addNumbersFault" message="tns:addNumbersFault" wsaw:Action="3fault"/> -->
-<!-- 	</operation> -->
+	</operation>
     </portType>
     <binding name="AddNumbersBinding" type="tns:AddNumbersPortType">
 	<wsaw:UsingAddressing wsdl:required="false" />
@@ -124,18 +124,18 @@
 <!-- 		<soap:fault name="addNumbersFault" use="literal" /> -->
 <!-- 	    </fault> -->
 	</operation>
-<!-- 	<operation name="addNumbers3"> -->
-<!-- 	    <soap:operation soapAction="" /> -->
-<!-- 	    <input> -->
-<!-- 		<soap:body use="literal" /> -->
-<!-- 	    </input> -->
-<!-- 	    <output> -->
-<!-- 		<soap:body use="literal" /> -->
-<!-- 	    </output> -->
+	<operation name="addNumbers3">
+	    <soap:operation soapAction="" />
+	    <input>
+		<soap:body use="literal" />
+	    </input>
+	    <output>
+		<soap:body use="literal" />
+	    </output>
 <!-- 	    <fault name="addNumbersFault"> -->
 <!-- 		<soap:fault name="addNumbersFault" use="literal" /> -->
 <!-- 	    </fault> -->
-<!-- 	</operation> -->
+	</operation>
     </binding>
     <service name="AddNumbersService">
 	<port name="AddNumbersPort" binding="tns:AddNumbersBinding">