You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by sa...@apache.org on 2006/01/28 04:25:06 UTC

svn commit: r373076 - in /webservices/axis2/trunk/c: include/ modules/util/ modules/xml/soap/ test/server/echo/ test/server/math/

Author: samisa
Date: Fri Jan 27 19:24:50 2006
New Revision: 373076

URL: http://svn.apache.org/viewcvs?rev=373076&view=rev
Log:
Fixed the message receiver to return SOAP faults correctly. Also changed the service skeleton method signatures to enable setting errors to be converted into SOAP faults. Added serivce skeleton related errors. Fixed SOAP fault related bug in soap body implementation

Modified:
    webservices/axis2/trunk/c/include/axis2_error.h
    webservices/axis2/trunk/c/modules/util/error.c
    webservices/axis2/trunk/c/modules/xml/soap/soap_body.c
    webservices/axis2/trunk/c/test/server/echo/echo.c
    webservices/axis2/trunk/c/test/server/echo/echo.h
    webservices/axis2/trunk/c/test/server/echo/echo_skeleton.c
    webservices/axis2/trunk/c/test/server/math/math.c
    webservices/axis2/trunk/c/test/server/math/math.h
    webservices/axis2/trunk/c/test/server/math/math_skeleton.c

Modified: webservices/axis2/trunk/c/include/axis2_error.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_error.h?rev=373076&r1=373075&r2=373076&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_error.h (original)
+++ webservices/axis2/trunk/c/include/axis2_error.h Fri Jan 27 19:24:50 2006
@@ -459,12 +459,19 @@
         AXIS2_ERROR_NULL_SOAP_ENVELOPE_IN_MSG_CTX,
         /* Generation of platform dependent uuid failed */
         AXIS2_ERROR_UUID_GEN_FAILED,
+        /** Invalid XML format in request */
+        AXIS2_ERROR_SVC_SKEL_INVALID_XML_FORMAT_IN_REQUEST,
+        /** Input OM node NULL, Probably error in SOAP request */
+        AXIS2_ERROR_SVC_SKEL_INPUT_OM_NODE_NULL,
+        /** Invalid parameters for service operation in SOAP request */
+        AXIS2_ERROR_SVC_SKEL_INVALID_OPERATION_PARAMETERS_IN_SOAP_REQUEST,
+
         /** The following has to be the last error value all the time.
             All other error codes should appear above this.
             AXIS2_ERROR_LAST is used to track the number of error codes present
             for the purpose of sizing the error message array.
           */
-       AXIS2_ERROR_LAST
+        AXIS2_ERROR_LAST
     };
 
 /** @} */

Modified: webservices/axis2/trunk/c/modules/util/error.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/util/error.c?rev=373076&r1=373075&r2=373076&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/util/error.c (original)
+++ webservices/axis2/trunk/c/modules/util/error.c Fri Jan 27 19:24:50 2006
@@ -391,6 +391,12 @@
     "Null soap envelope in msg_ctx";
     axis2_error_messages[AXIS2_ERROR_UUID_GEN_FAILED] = 
     "Generation of platform dependent uuid failed"; 
+    axis2_error_messages[AXIS2_ERROR_SVC_SKEL_INVALID_XML_FORMAT_IN_REQUEST] =
+    "Invalid XML format in request";
+    axis2_error_messages[AXIS2_ERROR_SVC_SKEL_INPUT_OM_NODE_NULL] =
+    "Input OM node NULL, Probably error in SOAP request";
+    axis2_error_messages[AXIS2_ERROR_SVC_SKEL_INVALID_OPERATION_PARAMETERS_IN_SOAP_REQUEST] =
+    "Invalid parameters for service operation in SOAP request";
     return AXIS2_SUCCESS;
 }
 

Modified: webservices/axis2/trunk/c/modules/xml/soap/soap_body.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/soap/soap_body.c?rev=373076&r1=373075&r2=373076&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/soap/soap_body.c (original)
+++ webservices/axis2/trunk/c/modules/xml/soap/soap_body.c Fri Jan 27 19:24:50 2006
@@ -243,18 +243,21 @@
             axis2_om_namespace_t *om_ns = NULL;
             axis2_char_t* namespace_uri = NULL;
             fault_ele = AXIS2_OM_ELEMENT_GET_FIRST_ELEMENT( soap_body_ele, env, body_impl->om_ele_node, &fault_node);
-            localname = AXIS2_OM_ELEMENT_GET_LOCALNAME(fault_ele, env);
-            om_ns = AXIS2_OM_ELEMENT_GET_NAMESPACE(fault_ele, env);
-            if (om_ns)
-                namespace_uri = AXIS2_OM_NAMESPACE_GET_URI(om_ns, env);
+            if (fault_ele)
+            {
+                localname = AXIS2_OM_ELEMENT_GET_LOCALNAME(fault_ele, env);
+                om_ns = AXIS2_OM_ELEMENT_GET_NAMESPACE(fault_ele, env);
+                if (om_ns)
+                    namespace_uri = AXIS2_OM_NAMESPACE_GET_URI(om_ns, env);
             
-            if(localname && namespace_uri && fault_ele && AXIS2_STRCMP(AXIS2_SOAP_FAULT_LOCAL_NAME, localname) == 0 &&
-                   (AXIS2_STRCMP(AXIS2_SOAP11_SOAP_ENVELOPE_NAMESPACE_URI, namespace_uri) == 0 ||   
-                     AXIS2_STRCMP(AXIS2_SOAP11_SOAP_ENVELOPE_NAMESPACE_URI, namespace_uri) == 0))
-             {
-                body_impl->has_fault = AXIS2_TRUE;
-                return body_impl->has_fault;
-             }   
+                if(localname && namespace_uri && fault_ele && AXIS2_STRCMP(AXIS2_SOAP_FAULT_LOCAL_NAME, localname) == 0 &&
+                       (AXIS2_STRCMP(AXIS2_SOAP11_SOAP_ENVELOPE_NAMESPACE_URI, namespace_uri) == 0 ||   
+                         AXIS2_STRCMP(AXIS2_SOAP11_SOAP_ENVELOPE_NAMESPACE_URI, namespace_uri) == 0))
+                 {
+                    body_impl->has_fault = AXIS2_TRUE;
+                    return body_impl->has_fault;
+                 }   
+             }
         }
     }
     return AXIS2_FALSE;

Modified: webservices/axis2/trunk/c/test/server/echo/echo.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/test/server/echo/echo.c?rev=373076&r1=373075&r2=373076&view=diff
==============================================================================
--- webservices/axis2/trunk/c/test/server/echo/echo.c (original)
+++ webservices/axis2/trunk/c/test/server/echo/echo.c Fri Jan 27 19:24:50 2006
@@ -16,51 +16,47 @@
 #include "echo.h"
 
 axis2_om_node_t *
-echo (axis2_om_node_t *node)
+axis2_echo_echo (axis2_env_t **env, axis2_om_node_t *node)
 {
-    axis2_allocator_t *allocator = NULL;
-    axis2_env_t *env = NULL;
-    axis2_error_t *error = NULL;
-    axis2_log_t *axis_log     = NULL;
-
     axis2_om_node_t *text_parent_node = NULL;
     axis2_om_node_t *text_node = NULL;
 
-    allocator = axis2_allocator_init (NULL);
-    axis_log = axis2_log_create(allocator, NULL);
-    error = axis2_error_create(allocator);
-    env = axis2_env_create_with_error_log(allocator, error,  axis_log);
-                
+    AXIS2_ENV_CHECK(env, NULL);
     
     if (!node)
     {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SVC_SKEL_INPUT_OM_NODE_NULL, AXIS2_FAILURE);
         printf("Echo client ERROR: input parameter NULL\n");
         return NULL;
     }
 
-    text_parent_node = AXIS2_OM_NODE_GET_FIRST_CHILD(node, &env);
+    text_parent_node = AXIS2_OM_NODE_GET_FIRST_CHILD(node, env);
     if (!text_parent_node)
     {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SVC_SKEL_INVALID_XML_FORMAT_IN_REQUEST, AXIS2_FAILURE);
         printf("Echo client ERROR: invalid XML in request\n");
-        return node;
+        return NULL;
     }
     
-    text_node = AXIS2_OM_NODE_GET_FIRST_CHILD(text_parent_node, &env);
+    text_node = AXIS2_OM_NODE_GET_FIRST_CHILD(text_parent_node, env);
     if (!text_node)
     {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SVC_SKEL_INVALID_XML_FORMAT_IN_REQUEST, AXIS2_FAILURE);
         printf("Echo client ERROR: invalid XML in request\n");
-        return node;
+        return NULL;
     }
     
-    if (AXIS2_OM_NODE_GET_NODE_TYPE(text_node, &env) == AXIS2_OM_TEXT)
+    if (AXIS2_OM_NODE_GET_NODE_TYPE(text_node, env) == AXIS2_OM_TEXT)
     {
-        axis2_om_text_t *text = (axis2_om_text_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(text_node, &env);
-        if( text && AXIS2_OM_TEXT_GET_VALUE(text ,&env))
-            printf("Eching text value  %s \n", AXIS2_OM_TEXT_GET_VALUE(text,&env));
+        axis2_om_text_t *text = (axis2_om_text_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(text_node, env);
+        if( text && AXIS2_OM_TEXT_GET_VALUE(text , env))
+            printf("Eching text value  %s \n", AXIS2_OM_TEXT_GET_VALUE(text, env));
     }
     else
     {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SVC_SKEL_INVALID_XML_FORMAT_IN_REQUEST, AXIS2_FAILURE);
         printf("Echo client ERROR: invalid XML in request\n");
+        return NULL;
     }
 	
     return node;

Modified: webservices/axis2/trunk/c/test/server/echo/echo.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/test/server/echo/echo.h?rev=373076&r1=373075&r2=373076&view=diff
==============================================================================
--- webservices/axis2/trunk/c/test/server/echo/echo.h (original)
+++ webservices/axis2/trunk/c/test/server/echo/echo.h Fri Jan 27 19:24:50 2006
@@ -23,6 +23,6 @@
 #include <axis2_om_text.h>
 #include <axis2_om_node.h>
 
-axis2_om_node_t *echo(axis2_om_node_t *node);
+axis2_om_node_t *axis2_echo_echo(axis2_env_t **env, axis2_om_node_t *node);
 
 #endif /* CALC_H*/

Modified: webservices/axis2/trunk/c/test/server/echo/echo_skeleton.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/test/server/echo/echo_skeleton.c?rev=373076&r1=373075&r2=373076&view=diff
==============================================================================
--- webservices/axis2/trunk/c/test/server/echo/echo_skeleton.c (original)
+++ webservices/axis2/trunk/c/test/server/echo/echo_skeleton.c Fri Jan 27 19:24:50 2006
@@ -96,7 +96,7 @@
      *  corresponding echo method
      */
         
-    return echo(node);
+    return axis2_echo_echo(env, node);
 }
 
 /**

Modified: webservices/axis2/trunk/c/test/server/math/math.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/test/server/math/math.c?rev=373076&r1=373075&r2=373076&view=diff
==============================================================================
--- webservices/axis2/trunk/c/test/server/math/math.c (original)
+++ webservices/axis2/trunk/c/test/server/math/math.c Fri Jan 27 19:24:50 2006
@@ -16,13 +16,8 @@
 #include "math.h"
 
 axis2_om_node_t *
-axis2_math_svc_add (axis2_om_node_t *node)
+axis2_math_add (axis2_env_t **env, axis2_om_node_t *node)
 {
-    axis2_allocator_t *allocator = NULL;
-    axis2_env_t *env = NULL;
-    axis2_error_t *error = NULL;
-    axis2_log_t *axis_log     = NULL;
-
     axis2_om_node_t *param1_node = NULL;
     axis2_om_node_t *param1_text_node = NULL;
     axis2_char_t *param1_str = NULL;
@@ -32,74 +27,73 @@
     axis2_char_t *param2_str = NULL;
     long int param2 = 0;
 
-    allocator = axis2_allocator_init (NULL);
-    axis_log = axis2_log_create(allocator, NULL);
-    error = axis2_error_create(allocator);
-    env = axis2_env_create_with_error_log(allocator, error,  axis_log);
-                
-    
     if (!node)
     {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SVC_SKEL_INPUT_OM_NODE_NULL, AXIS2_FAILURE);
         printf("Math client request ERROR: input parameter NULL\n");
         return NULL;
     }
 
-    param1_node = AXIS2_OM_NODE_GET_FIRST_CHILD(node, &env);
+    param1_node = AXIS2_OM_NODE_GET_FIRST_CHILD(node, env);
     if (!param1_node)
     {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SVC_SKEL_INVALID_XML_FORMAT_IN_REQUEST, AXIS2_FAILURE);
         printf("Math service  ERROR: invalid XML in request\n");
-        /** TODO: return a SOAP Fault here*/
-        return node;
+        return NULL;
     }
     
-    param1_text_node = AXIS2_OM_NODE_GET_FIRST_CHILD(param1_node, &env);
+    param1_text_node = AXIS2_OM_NODE_GET_FIRST_CHILD(param1_node, env);
     if (!param1_text_node)
     {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SVC_SKEL_INVALID_XML_FORMAT_IN_REQUEST, AXIS2_FAILURE);
         printf("Math service ERROR: invalid XML in request\n");
-        /** TODO: return a SOAP Fault here*/
-        return node;
+        return NULL;
     }
     
-    if (AXIS2_OM_NODE_GET_NODE_TYPE(param1_text_node, &env) == AXIS2_OM_TEXT)
+    if (AXIS2_OM_NODE_GET_NODE_TYPE(param1_text_node, env) == AXIS2_OM_TEXT)
     {
-        axis2_om_text_t *text = (axis2_om_text_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(param1_text_node, &env);
-        if( text && AXIS2_OM_TEXT_GET_VALUE(text ,&env))
+        axis2_om_text_t *text = (axis2_om_text_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(param1_text_node, env);
+        if( text && AXIS2_OM_TEXT_GET_VALUE(text ,env))
         {
-            param1_str = AXIS2_OM_TEXT_GET_VALUE(text,&env);
+            param1_str = AXIS2_OM_TEXT_GET_VALUE(text,env);
         }
     }
     else
     {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SVC_SKEL_INVALID_XML_FORMAT_IN_REQUEST, AXIS2_FAILURE);
         printf("Math service ERROR: invalid XML in request\n");
+        return NULL;
     }
 	
-    param2_node = AXIS2_OM_NODE_GET_NEXT_SIBLING(param1_node, &env);
+    param2_node = AXIS2_OM_NODE_GET_NEXT_SIBLING(param1_node, env);
     if (!param2_node)
     {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SVC_SKEL_INVALID_XML_FORMAT_IN_REQUEST, AXIS2_FAILURE);
         printf("Math service  ERROR: invalid XML in request\n");
-        /** TODO: return a SOAP Fault here*/
-        return node;
+        return NULL;
     }
     
-    param2_text_node = AXIS2_OM_NODE_GET_FIRST_CHILD(param2_node, &env);
+    param2_text_node = AXIS2_OM_NODE_GET_FIRST_CHILD(param2_node, env);
     if (!param2_text_node)
     {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SVC_SKEL_INVALID_XML_FORMAT_IN_REQUEST, AXIS2_FAILURE);
         printf("Math service ERROR: invalid XML in request\n");
-        /** TODO: return a SOAP Fault here*/
-        return node;
+        return NULL;
     }
     
-    if (AXIS2_OM_NODE_GET_NODE_TYPE(param2_text_node, &env) == AXIS2_OM_TEXT)
+    if (AXIS2_OM_NODE_GET_NODE_TYPE(param2_text_node, env) == AXIS2_OM_TEXT)
     {
-        axis2_om_text_t *text = (axis2_om_text_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(param2_text_node, &env);
-        if( text && AXIS2_OM_TEXT_GET_VALUE(text ,&env))
+        axis2_om_text_t *text = (axis2_om_text_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(param2_text_node, env);
+        if( text && AXIS2_OM_TEXT_GET_VALUE(text ,env))
         {
-            param2_str = AXIS2_OM_TEXT_GET_VALUE(text,&env);
+            param2_str = AXIS2_OM_TEXT_GET_VALUE(text,env);
         }
     }
     else
     {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SVC_SKEL_INVALID_XML_FORMAT_IN_REQUEST, AXIS2_FAILURE);
         printf("Math service ERROR: invalid XML in request\n");
+        return NULL;
     }
 	
     if (param1_str && param2_str)
@@ -119,28 +113,23 @@
 
         
 
-        ns1 = axis2_om_namespace_create (&env,
+        ns1 = axis2_om_namespace_create (env,
                                    "http://axis2/test/namespace1",
                                    "ns1");
-        ele1 = axis2_om_element_create (&env, NULL, "result", ns1, &node1);
-        text1 = axis2_om_text_create (&env, node1, result_str, &node2);
+        ele1 = axis2_om_element_create (env, NULL, "result", ns1, &node1);
+        text1 = axis2_om_text_create (env, node1, result_str, &node2);
 
         return node1;
     }
     
+    AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SVC_SKEL_INVALID_OPERATION_PARAMETERS_IN_SOAP_REQUEST, AXIS2_FAILURE);
     printf("Math service ERROR: invalid parameters\n");
-    /** TODO: return a SOAP Fault here*/
-    return node;
+    return NULL;
 }
 
 axis2_om_node_t *
-axis2_math_svc_sub (axis2_om_node_t *node)
+axis2_math_sub (axis2_env_t **env, axis2_om_node_t *node)
 {
-    axis2_allocator_t *allocator = NULL;
-    axis2_env_t *env = NULL;
-    axis2_error_t *error = NULL;
-    axis2_log_t *axis_log     = NULL;
-
     axis2_om_node_t *param1_node = NULL;
     axis2_om_node_t *param1_text_node = NULL;
     axis2_char_t *param1_str = NULL;
@@ -150,74 +139,73 @@
     axis2_char_t *param2_str = NULL;
     long int param2 = 0;
 
-    allocator = axis2_allocator_init (NULL);
-    axis_log = axis2_log_create(allocator, NULL);
-    error = axis2_error_create(allocator);
-    env = axis2_env_create_with_error_log(allocator, error,  axis_log);
-                
-    
     if (!node)
     {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SVC_SKEL_INPUT_OM_NODE_NULL, AXIS2_FAILURE);
         printf("Math client request ERROR: input parameter NULL\n");
         return NULL;
     }
 
-    param1_node = AXIS2_OM_NODE_GET_FIRST_CHILD(node, &env);
+    param1_node = AXIS2_OM_NODE_GET_FIRST_CHILD(node, env);
     if (!param1_node)
     {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SVC_SKEL_INVALID_XML_FORMAT_IN_REQUEST, AXIS2_FAILURE);
         printf("Math service  ERROR: invalid XML in request\n");
-        /** TODO: return a SOAP Fault here*/
-        return node;
+        return NULL;
     }
     
-    param1_text_node = AXIS2_OM_NODE_GET_FIRST_CHILD(param1_node, &env);
+    param1_text_node = AXIS2_OM_NODE_GET_FIRST_CHILD(param1_node, env);
     if (!param1_text_node)
     {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SVC_SKEL_INVALID_XML_FORMAT_IN_REQUEST, AXIS2_FAILURE);
         printf("Math service ERROR: invalid XML in request\n");
-        /** TODO: return a SOAP Fault here*/
-        return node;
+        return NULL;
     }
     
-    if (AXIS2_OM_NODE_GET_NODE_TYPE(param1_text_node, &env) == AXIS2_OM_TEXT)
+    if (AXIS2_OM_NODE_GET_NODE_TYPE(param1_text_node, env) == AXIS2_OM_TEXT)
     {
-        axis2_om_text_t *text = (axis2_om_text_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(param1_text_node, &env);
-        if( text && AXIS2_OM_TEXT_GET_VALUE(text ,&env))
+        axis2_om_text_t *text = (axis2_om_text_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(param1_text_node, env);
+        if( text && AXIS2_OM_TEXT_GET_VALUE(text ,env))
         {
-            param1_str = AXIS2_OM_TEXT_GET_VALUE(text,&env);
+            param1_str = AXIS2_OM_TEXT_GET_VALUE(text,env);
         }
     }
     else
     {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SVC_SKEL_INVALID_XML_FORMAT_IN_REQUEST, AXIS2_FAILURE);
         printf("Math service ERROR: invalid XML in request\n");
+        return NULL;
     }
 	
-    param2_node = AXIS2_OM_NODE_GET_NEXT_SIBLING(param1_node, &env);
+    param2_node = AXIS2_OM_NODE_GET_NEXT_SIBLING(param1_node, env);
     if (!param2_node)
     {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SVC_SKEL_INVALID_XML_FORMAT_IN_REQUEST, AXIS2_FAILURE);
         printf("Math service  ERROR: invalid XML in request\n");
-        /** TODO: return a SOAP Fault here*/
-        return node;
+        return NULL;
     }
     
-    param2_text_node = AXIS2_OM_NODE_GET_FIRST_CHILD(param2_node, &env);
+    param2_text_node = AXIS2_OM_NODE_GET_FIRST_CHILD(param2_node, env);
     if (!param2_text_node)
     {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SVC_SKEL_INVALID_XML_FORMAT_IN_REQUEST, AXIS2_FAILURE);
         printf("Math service ERROR: invalid XML in request\n");
-        /** TODO: return a SOAP Fault here*/
-        return node;
+        return NULL;
     }
     
-    if (AXIS2_OM_NODE_GET_NODE_TYPE(param2_text_node, &env) == AXIS2_OM_TEXT)
+    if (AXIS2_OM_NODE_GET_NODE_TYPE(param2_text_node, env) == AXIS2_OM_TEXT)
     {
-        axis2_om_text_t *text = (axis2_om_text_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(param2_text_node, &env);
-        if( text && AXIS2_OM_TEXT_GET_VALUE(text ,&env))
+        axis2_om_text_t *text = (axis2_om_text_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(param2_text_node, env);
+        if( text && AXIS2_OM_TEXT_GET_VALUE(text ,env))
         {
-            param2_str = AXIS2_OM_TEXT_GET_VALUE(text,&env);
+            param2_str = AXIS2_OM_TEXT_GET_VALUE(text,env);
         }
     }
     else
     {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SVC_SKEL_INVALID_XML_FORMAT_IN_REQUEST, AXIS2_FAILURE);
         printf("Math service ERROR: invalid XML in request\n");
+        return NULL;
     }
 	
     if (param1_str && param2_str)
@@ -237,29 +225,24 @@
 
         
 
-        ns1 = axis2_om_namespace_create (&env,
+        ns1 = axis2_om_namespace_create (env,
                                    "http://axis2/test/namespace1",
                                    "ns1");
-        ele1 = axis2_om_element_create (&env, NULL, "result", ns1, &node1);
-        text1 = axis2_om_text_create (&env, node1, result_str, &node2);
+        ele1 = axis2_om_element_create (env, NULL, "result", ns1, &node1);
+        text1 = axis2_om_text_create (env, node1, result_str, &node2);
 
         return node1;
     }
     
+    AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SVC_SKEL_INVALID_OPERATION_PARAMETERS_IN_SOAP_REQUEST, AXIS2_FAILURE);
     printf("Math service ERROR: invalid parameters\n");
-    /** TODO: return a SOAP Fault here*/
-    return node;
+    return NULL;
 }
 
 
 axis2_om_node_t *
-axis2_math_svc_mul (axis2_om_node_t *node)
+axis2_math_mul (axis2_env_t **env, axis2_om_node_t *node)
 {
-    axis2_allocator_t *allocator = NULL;
-    axis2_env_t *env = NULL;
-    axis2_error_t *error = NULL;
-    axis2_log_t *axis_log     = NULL;
-
     axis2_om_node_t *param1_node = NULL;
     axis2_om_node_t *param1_text_node = NULL;
     axis2_char_t *param1_str = NULL;
@@ -269,74 +252,73 @@
     axis2_char_t *param2_str = NULL;
     long int param2 = 0;
 
-    allocator = axis2_allocator_init (NULL);
-    axis_log = axis2_log_create(allocator, NULL);
-    error = axis2_error_create(allocator);
-    env = axis2_env_create_with_error_log(allocator, error,  axis_log);
-                
-    
     if (!node)
     {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SVC_SKEL_INPUT_OM_NODE_NULL, AXIS2_FAILURE);
         printf("Math client request ERROR: input parameter NULL\n");
         return NULL;
     }
 
-    param1_node = AXIS2_OM_NODE_GET_FIRST_CHILD(node, &env);
+    param1_node = AXIS2_OM_NODE_GET_FIRST_CHILD(node, env);
     if (!param1_node)
     {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SVC_SKEL_INVALID_XML_FORMAT_IN_REQUEST, AXIS2_FAILURE);
         printf("Math service  ERROR: invalid XML in request\n");
-        /** TODO: return a SOAP Fault here*/
-        return node;
+        return NULL;
     }
     
-    param1_text_node = AXIS2_OM_NODE_GET_FIRST_CHILD(param1_node, &env);
+    param1_text_node = AXIS2_OM_NODE_GET_FIRST_CHILD(param1_node, env);
     if (!param1_text_node)
     {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SVC_SKEL_INVALID_XML_FORMAT_IN_REQUEST, AXIS2_FAILURE);
         printf("Math service ERROR: invalid XML in request\n");
-        /** TODO: return a SOAP Fault here*/
-        return node;
+        return NULL;
     }
     
-    if (AXIS2_OM_NODE_GET_NODE_TYPE(param1_text_node, &env) == AXIS2_OM_TEXT)
+    if (AXIS2_OM_NODE_GET_NODE_TYPE(param1_text_node, env) == AXIS2_OM_TEXT)
     {
-        axis2_om_text_t *text = (axis2_om_text_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(param1_text_node, &env);
-        if( text && AXIS2_OM_TEXT_GET_VALUE(text ,&env))
+        axis2_om_text_t *text = (axis2_om_text_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(param1_text_node, env);
+        if( text && AXIS2_OM_TEXT_GET_VALUE(text ,env))
         {
-            param1_str = AXIS2_OM_TEXT_GET_VALUE(text,&env);
+            param1_str = AXIS2_OM_TEXT_GET_VALUE(text,env);
         }
     }
     else
     {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SVC_SKEL_INVALID_XML_FORMAT_IN_REQUEST, AXIS2_FAILURE);
         printf("Math service ERROR: invalid XML in request\n");
+        return NULL;
     }
 	
-    param2_node = AXIS2_OM_NODE_GET_NEXT_SIBLING(param1_node, &env);
+    param2_node = AXIS2_OM_NODE_GET_NEXT_SIBLING(param1_node, env);
     if (!param2_node)
     {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SVC_SKEL_INVALID_XML_FORMAT_IN_REQUEST, AXIS2_FAILURE);
         printf("Math service  ERROR: invalid XML in request\n");
-        /** TODO: return a SOAP Fault here*/
-        return node;
+        return NULL;
     }
     
-    param2_text_node = AXIS2_OM_NODE_GET_FIRST_CHILD(param2_node, &env);
+    param2_text_node = AXIS2_OM_NODE_GET_FIRST_CHILD(param2_node, env);
     if (!param2_text_node)
     {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SVC_SKEL_INVALID_XML_FORMAT_IN_REQUEST, AXIS2_FAILURE);
         printf("Math service ERROR: invalid XML in request\n");
-        /** TODO: return a SOAP Fault here*/
-        return node;
+        return NULL;
     }
     
-    if (AXIS2_OM_NODE_GET_NODE_TYPE(param2_text_node, &env) == AXIS2_OM_TEXT)
+    if (AXIS2_OM_NODE_GET_NODE_TYPE(param2_text_node, env) == AXIS2_OM_TEXT)
     {
-        axis2_om_text_t *text = (axis2_om_text_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(param2_text_node, &env);
-        if( text && AXIS2_OM_TEXT_GET_VALUE(text ,&env))
+        axis2_om_text_t *text = (axis2_om_text_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(param2_text_node, env);
+        if( text && AXIS2_OM_TEXT_GET_VALUE(text ,env))
         {
-            param2_str = AXIS2_OM_TEXT_GET_VALUE(text,&env);
+            param2_str = AXIS2_OM_TEXT_GET_VALUE(text,env);
         }
     }
     else
     {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SVC_SKEL_INVALID_XML_FORMAT_IN_REQUEST, AXIS2_FAILURE);
         printf("Math service ERROR: invalid XML in request\n");
+        return NULL;
     }
 	
     if (param1_str && param2_str)
@@ -356,29 +338,24 @@
 
         
 
-        ns1 = axis2_om_namespace_create (&env,
+        ns1 = axis2_om_namespace_create (env,
                                    "http://axis2/test/namespace1",
                                    "ns1");
-        ele1 = axis2_om_element_create (&env, NULL, "result", ns1, &node1);
-        text1 = axis2_om_text_create (&env, node1, result_str, &node2);
+        ele1 = axis2_om_element_create (env, NULL, "result", ns1, &node1);
+        text1 = axis2_om_text_create (env, node1, result_str, &node2);
 
         return node1;
     }
     
+    AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SVC_SKEL_INVALID_OPERATION_PARAMETERS_IN_SOAP_REQUEST, AXIS2_FAILURE);
     printf("Math service ERROR: invalid parameters\n");
-    /** TODO: return a SOAP Fault here*/
-    return node;
+    return NULL;
 }
 
 
 axis2_om_node_t *
-axis2_math_svc_div (axis2_om_node_t *node)
+axis2_math_div (axis2_env_t **env, axis2_om_node_t *node)
 {
-    axis2_allocator_t *allocator = NULL;
-    axis2_env_t *env = NULL;
-    axis2_error_t *error = NULL;
-    axis2_log_t *axis_log     = NULL;
-
     axis2_om_node_t *param1_node = NULL;
     axis2_om_node_t *param1_text_node = NULL;
     axis2_char_t *param1_str = NULL;
@@ -388,74 +365,73 @@
     axis2_char_t *param2_str = NULL;
     long int param2 = 0;
 
-    allocator = axis2_allocator_init (NULL);
-    axis_log = axis2_log_create(allocator, NULL);
-    error = axis2_error_create(allocator);
-    env = axis2_env_create_with_error_log(allocator, error,  axis_log);
-                
-    
     if (!node)
     {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SVC_SKEL_INPUT_OM_NODE_NULL, AXIS2_FAILURE);
         printf("Math client request ERROR: input parameter NULL\n");
         return NULL;
     }
 
-    param1_node = AXIS2_OM_NODE_GET_FIRST_CHILD(node, &env);
+    param1_node = AXIS2_OM_NODE_GET_FIRST_CHILD(node, env);
     if (!param1_node)
     {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SVC_SKEL_INVALID_XML_FORMAT_IN_REQUEST, AXIS2_FAILURE);
         printf("Math service  ERROR: invalid XML in request\n");
-        /** TODO: return a SOAP Fault here*/
-        return node;
+        return NULL;
     }
     
-    param1_text_node = AXIS2_OM_NODE_GET_FIRST_CHILD(param1_node, &env);
+    param1_text_node = AXIS2_OM_NODE_GET_FIRST_CHILD(param1_node, env);
     if (!param1_text_node)
     {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SVC_SKEL_INVALID_XML_FORMAT_IN_REQUEST, AXIS2_FAILURE);
         printf("Math service ERROR: invalid XML in request\n");
-        /** TODO: return a SOAP Fault here*/
-        return node;
+        return NULL;
     }
     
-    if (AXIS2_OM_NODE_GET_NODE_TYPE(param1_text_node, &env) == AXIS2_OM_TEXT)
+    if (AXIS2_OM_NODE_GET_NODE_TYPE(param1_text_node, env) == AXIS2_OM_TEXT)
     {
-        axis2_om_text_t *text = (axis2_om_text_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(param1_text_node, &env);
-        if( text && AXIS2_OM_TEXT_GET_VALUE(text ,&env))
+        axis2_om_text_t *text = (axis2_om_text_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(param1_text_node, env);
+        if( text && AXIS2_OM_TEXT_GET_VALUE(text ,env))
         {
-            param1_str = AXIS2_OM_TEXT_GET_VALUE(text,&env);
+            param1_str = AXIS2_OM_TEXT_GET_VALUE(text,env);
         }
     }
     else
     {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SVC_SKEL_INVALID_XML_FORMAT_IN_REQUEST, AXIS2_FAILURE);
         printf("Math service ERROR: invalid XML in request\n");
+        return NULL;
     }
 	
-    param2_node = AXIS2_OM_NODE_GET_NEXT_SIBLING(param1_node, &env);
+    param2_node = AXIS2_OM_NODE_GET_NEXT_SIBLING(param1_node, env);
     if (!param2_node)
     {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SVC_SKEL_INVALID_XML_FORMAT_IN_REQUEST, AXIS2_FAILURE);
         printf("Math service  ERROR: invalid XML in request\n");
-        /** TODO: return a SOAP Fault here*/
-        return node;
+        return NULL;
     }
     
-    param2_text_node = AXIS2_OM_NODE_GET_FIRST_CHILD(param2_node, &env);
+    param2_text_node = AXIS2_OM_NODE_GET_FIRST_CHILD(param2_node, env);
     if (!param2_text_node)
     {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SVC_SKEL_INVALID_XML_FORMAT_IN_REQUEST, AXIS2_FAILURE);
         printf("Math service ERROR: invalid XML in request\n");
-        /** TODO: return a SOAP Fault here*/
-        return node;
+        return NULL;
     }
     
-    if (AXIS2_OM_NODE_GET_NODE_TYPE(param2_text_node, &env) == AXIS2_OM_TEXT)
+    if (AXIS2_OM_NODE_GET_NODE_TYPE(param2_text_node, env) == AXIS2_OM_TEXT)
     {
-        axis2_om_text_t *text = (axis2_om_text_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(param2_text_node, &env);
-        if( text && AXIS2_OM_TEXT_GET_VALUE(text ,&env))
+        axis2_om_text_t *text = (axis2_om_text_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(param2_text_node, env);
+        if( text && AXIS2_OM_TEXT_GET_VALUE(text ,env))
         {
-            param2_str = AXIS2_OM_TEXT_GET_VALUE(text,&env);
+            param2_str = AXIS2_OM_TEXT_GET_VALUE(text,env);
         }
     }
     else
     {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SVC_SKEL_INVALID_XML_FORMAT_IN_REQUEST, AXIS2_FAILURE);
         printf("Math service ERROR: invalid XML in request\n");
+        return NULL;
     }
 	
     if (param1_str && param2_str)
@@ -475,16 +451,16 @@
 
         
 
-        ns1 = axis2_om_namespace_create (&env,
+        ns1 = axis2_om_namespace_create (env,
                                    "http://axis2/test/namespace1",
                                    "ns1");
-        ele1 = axis2_om_element_create (&env, NULL, "result", ns1, &node1);
-        text1 = axis2_om_text_create (&env, node1, result_str, &node2);
+        ele1 = axis2_om_element_create (env, NULL, "result", ns1, &node1);
+        text1 = axis2_om_text_create (env, node1, result_str, &node2);
 
         return node1;
     }
     
+    AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SVC_SKEL_INVALID_OPERATION_PARAMETERS_IN_SOAP_REQUEST, AXIS2_FAILURE);
     printf("Math service ERROR: invalid parameters\n");
-    /** TODO: return a SOAP Fault here*/
-    return node;
+    return NULL;
 }

Modified: webservices/axis2/trunk/c/test/server/math/math.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/test/server/math/math.h?rev=373076&r1=373075&r2=373076&view=diff
==============================================================================
--- webservices/axis2/trunk/c/test/server/math/math.h (original)
+++ webservices/axis2/trunk/c/test/server/math/math.h Fri Jan 27 19:24:50 2006
@@ -24,9 +24,9 @@
 #include <axis2_om_node.h>
 #include <axis2_om_element.h>
 
-axis2_om_node_t *axis2_math_svc_add(axis2_om_node_t *node);
-axis2_om_node_t *axis2_math_svc_sub(axis2_om_node_t *node);
-axis2_om_node_t *axis2_math_svc_mul(axis2_om_node_t *node);
-axis2_om_node_t *axis2_math_svc_div(axis2_om_node_t *node);
+axis2_om_node_t *axis2_math_add(axis2_env_t **env, axis2_om_node_t *node);
+axis2_om_node_t *axis2_math_sub(axis2_env_t **env, axis2_om_node_t *node);
+axis2_om_node_t *axis2_math_mul(axis2_env_t **env, axis2_om_node_t *node);
+axis2_om_node_t *axis2_math_div(axis2_env_t **env, axis2_om_node_t *node);
 
 #endif /* MATH_H*/

Modified: webservices/axis2/trunk/c/test/server/math/math_skeleton.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/test/server/math/math_skeleton.c?rev=373076&r1=373075&r2=373076&view=diff
==============================================================================
--- webservices/axis2/trunk/c/test/server/math/math_skeleton.c (original)
+++ webservices/axis2/trunk/c/test/server/math/math_skeleton.c Fri Jan 27 19:24:50 2006
@@ -110,13 +110,13 @@
                 if (op_name)
                 {
                     if ( AXIS2_STRCMP(op_name, "add") == 0 )
-                        return axis2_math_svc_add(node);
+                        return axis2_math_add(env, node);
                     if ( AXIS2_STRCMP(op_name, "sub") == 0 )
-                        return axis2_math_svc_sub(node);
+                        return axis2_math_sub(env, node);
                     if ( AXIS2_STRCMP(op_name, "mul") == 0 )
-                        return axis2_math_svc_mul(node);
+                        return axis2_math_mul(env, node);
                     if ( AXIS2_STRCMP(op_name, "div") == 0 )
-                        return axis2_math_svc_div(node);
+                        return axis2_math_div(env, node);
                 }
             }
         }