[Wsf-commits] svn commit r46481 - trunk/wsf/cpp/src/main

nandika at wso2.com nandika at wso2.com
Sun Oct 4 02:41:39 PDT 2009


Author: nandika
Date: Sun Oct  4 02:41:39 2009
New Revision: 46481
URL: http://wso2.org/svn/browse/wso2?view=rev&revision=46481

Log:
send and request methods updated to enable an empty payload to be sent

Modified:
   trunk/wsf/cpp/src/main/ServiceClient.cpp

Modified: trunk/wsf/cpp/src/main/ServiceClient.cpp
URL: http://wso2.org/svn/browse/wso2/trunk/wsf/cpp/src/main/ServiceClient.cpp?rev=46481&r1=46480&r2=46481&view=diff
==============================================================================
--- trunk/wsf/cpp/src/main/ServiceClient.cpp	(original)
+++ trunk/wsf/cpp/src/main/ServiceClient.cpp	Sun Oct  4 02:41:39 2009
@@ -26,6 +26,19 @@
 using namespace std;
 using namespace wso2wsf;
 
+
+void ServiceClient::resetAxiomPayloadNamespace(OMElement *payload)
+{
+	if(payload)
+	{
+		if (payload->getNamespaceLocal(false))
+		{
+			(payload->getNamespaceLocal(false))->setAxiomNamespace(NULL);
+		}
+		payload->setAxiomNode(NULL);
+	}
+}
+
 /** @brief callbackOnComplete
   *
   * onComplete function that is used in a non-blocking scenario.
@@ -337,27 +350,20 @@
 {
 	assert(isValid);
     axis2_status_t status = AXIS2_FAILURE;
-    if (!payload)
-    {
-        throw WSFault(EMPTY_PAYLOAD_RECIEVED);
-    }
+	axiom_node_t *payload_axiom_node = NULL;
+	if(payload)
+	{
+		payload_axiom_node = payload->getAxiomNode();
+	}
+   
     if (action != "")
     {
         if (_options->getSoapVersion() == AXIOM_SOAP11)
         {
             axutil_string_t * soap_action = axutil_string_create(Environment::getEnv(), action.c_str());
-
+			/** cannot fail */
             status = axis2_options_set_soap_action(_options->_wsf_options, Environment::getEnv(), soap_action);
             axutil_string_free(soap_action, Environment::getEnv());
-            if (status != AXIS2_SUCCESS)
-            {
-                if (payload->getNamespace())
-                {
-                    (payload->getNamespace())->setAxiomNamespace(NULL);
-                }
-                payload->setAxiomNode(NULL);
-                throw WSFault(SETTING_SOAP_ACTION_FAILED);
-            }
         }
         else
         {
@@ -368,16 +374,9 @@
             axutil_qname_free(qname, Environment::getEnv());
             if (engaged)
             {
+				/** cannot fail */
                 status = axis2_options_set_action(_options->_wsf_options, Environment::getEnv(), action.c_str());
-                if (status != AXIS2_SUCCESS)
-                {
-                    if (payload->getNamespace())
-                    {
-                        (payload->getNamespace())->setAxiomNamespace(NULL);
-                    }
-                    payload->setAxiomNode(NULL);
-                    throw WSFault(SETTING_WSA_ACTION_FAILED);
-                }
+                
             }
         }
     }
@@ -388,21 +387,17 @@
         {
             axutil_qname_t * qname =  axutil_qname_create(Environment::getEnv(), operation.c_str(), NULL, NULL);
             node = axis2_svc_client_send_receive_with_op_qname(_wsf_service_client, Environment::getEnv(),
-                qname, payload->getAxiomNode());
+                qname, payload_axiom_node);
             axutil_qname_free(qname, Environment::getEnv());
         }
         else
         {
-            node = axis2_svc_client_send_receive(_wsf_service_client, Environment::getEnv(), payload->getAxiomNode());
+            node = axis2_svc_client_send_receive(_wsf_service_client, Environment::getEnv(), payload_axiom_node);
         }
         if (!node)
         {
-            if (payload->getNamespaceLocal(false))
-            {
-                (payload->getNamespaceLocal(false))->setAxiomNamespace(NULL);
-            }
-            payload->setAxiomNode(NULL);
-            throw WSFault(SEND_RECIEVE_OPERATION_FAILED);
+			resetAxiomPayloadNamespace(payload);
+			throw WSFault(SEND_RECIEVE_OPERATION_FAILED);
         }
         else
         {
@@ -413,11 +408,7 @@
             }
             if (!element)
             {
-                if (payload->getNamespace())
-                {
-                    (payload->getNamespace())->setAxiomNamespace(NULL);
-                }
-                payload->setAxiomNode(NULL);
+               resetAxiomPayloadNamespace(payload);
                 throw WSFault(UNABLE_TO_RETRIEVE_RESPONSE_ELEMENT);
             }
             axis2_bool_t has_fault =
@@ -430,11 +421,7 @@
                     delete _last_soap_fault;
                 }
                 _last_soap_fault = new OMElement(NULL, node);
-                if (payload->getNamespace())
-                {
-                    (payload->getNamespace())->setAxiomNamespace(NULL);
-                }
-                payload->setAxiomNode(NULL);
+                resetAxiomPayloadNamespace(payload);
                 throw WSFault(SOAP_FAULT_RECIEVED);
             }
             if (_last_response_soap_envelope_element)
@@ -443,11 +430,7 @@
                 delete _last_response_soap_envelope_element;
             }
             _last_response_soap_envelope_element = new OMElement(NULL, node);
-            if (payload->getNamespace())
-            {
-                (payload->getNamespace())->setAxiomNamespace(NULL);
-            }
-            payload->setAxiomNode(NULL);
+			resetAxiomPayloadNamespace(payload);
             return _last_response_soap_envelope_element;
         }
     }
@@ -471,19 +454,15 @@
         {
             axutil_qname_t * qname =  axutil_qname_create(Environment::getEnv(), operation.c_str(), NULL, NULL);
             axis2_svc_client_send_receive_non_blocking_with_op_qname(_wsf_service_client, Environment::getEnv(),
-                qname, payload->getAxiomNode(), callback_c);
+                qname, payload_axiom_node, callback_c);
             axutil_qname_free(qname, Environment::getEnv());
         }
         else
         {
-            axis2_svc_client_send_receive_non_blocking(_wsf_service_client, Environment::getEnv(), payload->getAxiomNode(), callback_c);
+            axis2_svc_client_send_receive_non_blocking(_wsf_service_client, Environment::getEnv(), payload_axiom_node, callback_c);
         }
-        if (payload->getNamespace())
-        {
-            (payload->getNamespace())->setAxiomNamespace(NULL);
-        }
-        payload->setAxiomNode(NULL);
-        return NULL;
+        resetAxiomPayloadNamespace(payload);
+		return NULL;
     }
 }
 
@@ -513,10 +492,11 @@
 {
 	assert(isValid);
     axis2_status_t status = AXIS2_FAILURE;
-    if (!payload)
+	axiom_node_t *payload_axiom_node = NULL;
+    if (payload)
     {
-        throw WSFault(EMPTY_PAYLOAD_RECIEVED);
-    }
+		payload_axiom_node = payload->getAxiomNode();
+	}
     if (action != "")
     {
         if (_options->getSoapVersion() == AXIOM_SOAP11)
@@ -524,15 +504,6 @@
             axutil_string_t * soap_action = axutil_string_create(Environment::getEnv(), action.c_str());
             status = axis2_options_set_soap_action(_options->_wsf_options, Environment::getEnv(), soap_action);
             axutil_string_free(soap_action, Environment::getEnv());
-            if (status != AXIS2_SUCCESS)
-            {
-                    if (payload->getNamespace())
-                    {
-                        (payload->getNamespace())->setAxiomNamespace(NULL);
-                    }
-                    payload->setAxiomNode(NULL);
-                throw WSFault(SETTING_SOAP_ACTION_FAILED);
-            }
         }
         else
         {
@@ -544,15 +515,6 @@
             if (engaged)
             {
                 status = axis2_options_set_action(_options->_wsf_options, Environment::getEnv(), action.c_str());
-                if (status != AXIS2_SUCCESS)
-                {
-                    if (payload->getNamespace())
-                    {
-                        (payload->getNamespace())->setAxiomNamespace(NULL);
-                    }
-                    payload->setAxiomNode(NULL);
-                    throw WSFault(SETTING_WSA_ACTION_FAILED);
-                }
             }
         }
     }
@@ -562,32 +524,23 @@
         {
             axutil_qname_t * qname =  axutil_qname_create(Environment::getEnv(), operation.c_str(), NULL, NULL);
             status = axis2_svc_client_send_robust_with_op_qname(_wsf_service_client, Environment::getEnv(),
-                qname, payload->getAxiomNode());
+                qname, payload_axiom_node);
             axutil_qname_free(qname, Environment::getEnv());
         }
         else
         {
-            status = axis2_svc_client_send_robust(_wsf_service_client, Environment::getEnv(), payload->getAxiomNode());
+            status = axis2_svc_client_send_robust(_wsf_service_client, Environment::getEnv(), payload_axiom_node);
         }
         if (status != AXIS2_SUCCESS)
         {
-            if (payload->getNamespace())
-            {
-                (payload->getNamespace())->setAxiomNamespace(NULL);
-            }
-            payload->setAxiomNode(NULL);
-            throw WSFault(ROBUST_SEND_OPERATION_FAILED);
+            resetAxiomPayloadNamespace(payload);
+			throw WSFault(ROBUST_SEND_OPERATION_FAILED);
         }
-        axis2_bool_t has_fault =
-            axis2_svc_client_get_last_response_has_fault(_wsf_service_client, Environment::getEnv());
+        axis2_bool_t has_fault = axis2_svc_client_get_last_response_has_fault(_wsf_service_client, Environment::getEnv());
         if (has_fault)
         {
-            if (payload->getNamespace())
-            {
-                (payload->getNamespace())->setAxiomNamespace(NULL);
-            }
-            payload->setAxiomNode(NULL);
-            throw WSFault(SOAP_FAULT_RECIEVED);
+            resetAxiomPayloadNamespace(payload);
+			throw WSFault(SOAP_FAULT_RECIEVED);
         }
     }
     else
@@ -596,20 +549,16 @@
         {
             axutil_qname_t * qname =  axutil_qname_create(Environment::getEnv(), operation.c_str(), NULL, NULL);
             axis2_svc_client_fire_and_forget_with_op_qname(_wsf_service_client, Environment::getEnv(),
-                qname, payload->getAxiomNode());
+                qname, payload_axiom_node);
             axutil_qname_free(qname, Environment::getEnv());
         }
         else
         {
-            axis2_svc_client_fire_and_forget(_wsf_service_client, Environment::getEnv(), payload->getAxiomNode());
+            axis2_svc_client_fire_and_forget(_wsf_service_client, Environment::getEnv(), payload_axiom_node);
         }
     }
-    if (payload->getNamespace())
-    {
-        (payload->getNamespace())->setAxiomNamespace(NULL);
-    }
-    payload->setAxiomNode(NULL);
-    return true;
+    resetAxiomPayloadNamespace(payload);
+	return true;
 }
 
 /** @brief send



More information about the Wsf-commits mailing list