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/03/20 07:03:01 UTC

svn commit: r387144 - in /webservices/axis2/trunk/c/samples/server/echo: echo.c echo.h echo_skeleton.c

Author: samisa
Date: Sun Mar 19 22:02:59 2006
New Revision: 387144

URL: http://svn.apache.org/viewcvs?rev=387144&view=rev
Log:
Added comments to explain the flow for user guide and removed code that has been commented out

Modified:
    webservices/axis2/trunk/c/samples/server/echo/echo.c
    webservices/axis2/trunk/c/samples/server/echo/echo.h
    webservices/axis2/trunk/c/samples/server/echo/echo_skeleton.c

Modified: webservices/axis2/trunk/c/samples/server/echo/echo.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/samples/server/echo/echo.c?rev=387144&r1=387143&r2=387144&view=diff
==============================================================================
--- webservices/axis2/trunk/c/samples/server/echo/echo.c (original)
+++ webservices/axis2/trunk/c/samples/server/echo/echo.c Sun Mar 19 22:02:59 2006
@@ -14,7 +14,6 @@
  * limitations under the License.
  */
 #include "echo.h"
-#include <axis2_om_element.h>
 #include <stdio.h>
 
 axis2_om_node_t *
@@ -28,8 +27,13 @@
     axis2_om_node_t *ret_node = NULL;
 
     AXIS2_ENV_CHECK(env, NULL);
-    
-    if (!node)
+   
+    /* Expected request format is :-
+     * <ns1:echoString xmlns:ns1="http://localhost:9090/axis2/services/echo">
+     *      <text>echo5</text>
+     * </ns1:echoString>
+     */
+    if (!node) /* 'echoString' node */
     {
         AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SVC_SKEL_INPUT_OM_NODE_NULL, AXIS2_FAILURE);
         printf("Echo client ERROR: input parameter NULL\n");
@@ -37,7 +41,7 @@
     }
 
     text_parent_node = AXIS2_OM_NODE_GET_FIRST_CHILD(node, env);
-    if (!text_parent_node)
+    if (!text_parent_node) /* '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");
@@ -45,7 +49,7 @@
     }
     
     text_node = AXIS2_OM_NODE_GET_FIRST_CHILD(text_parent_node, env);
-    if (!text_node)
+    if (!text_node) /* actual text to echo */
     {
         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");
@@ -72,6 +76,7 @@
     return ret_node;
 }
 
+/* Builds the response content */
 axis2_om_node_t *
 build_om_programatically(axis2_env_t **env, axis2_char_t *text)
 {
@@ -81,11 +86,6 @@
     axis2_om_element_t * text_om_ele = NULL;
     axis2_om_namespace_t *ns1 = NULL;
     
-    /*
-    axis2_xml_writer_t *xml_writer = NULL;
-    axis2_om_output_t *om_output = NULL;
-    axis2_char_t *buffer = NULL;
-    */
     ns1 = axis2_om_namespace_create (env, "http://localhost:9090/axis2/services/echo", "ns1");
 
     echo_om_ele = axis2_om_element_create(env, NULL, "echoString", ns1, &echo_om_node);
@@ -94,17 +94,6 @@
 
     AXIS2_OM_ELEMENT_SET_TEXT(text_om_ele, env, text, text_om_node);
     
-    /*
-    xml_writer = axis2_xml_writer_create_for_memory(env, NULL, AXIS2_FALSE, AXIS2_FALSE);
-    om_output = axis2_om_output_create( env, xml_writer);
-    
-    AXIS2_OM_NODE_SERIALIZE(echo_om_node, env, om_output);
-    buffer = AXIS2_XML_WRITER_GET_XML(xml_writer, env);         
-    printf("\nSending OM node in XML : %s \n",  buffer); 
-
-    AXIS2_OM_OUTPUT_FREE(om_output, env);
-    AXIS2_FREE((*env)->allocator, buffer);
-    */
     return echo_om_node;
 }
 

Modified: webservices/axis2/trunk/c/samples/server/echo/echo.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/samples/server/echo/echo.h?rev=387144&r1=387143&r2=387144&view=diff
==============================================================================
--- webservices/axis2/trunk/c/samples/server/echo/echo.h (original)
+++ webservices/axis2/trunk/c/samples/server/echo/echo.h Sun Mar 19 22:02:59 2006
@@ -22,6 +22,7 @@
 #include <axis2_error_default.h>
 #include <axis2_om_text.h>
 #include <axis2_om_node.h>
+#include <axis2_om_element.h>
 
 axis2_om_node_t *axis2_echo_echo(axis2_env_t **env, axis2_om_node_t *node);
 

Modified: webservices/axis2/trunk/c/samples/server/echo/echo_skeleton.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/samples/server/echo/echo_skeleton.c?rev=387144&r1=387143&r2=387144&view=diff
==============================================================================
--- webservices/axis2/trunk/c/samples/server/echo/echo_skeleton.c (original)
+++ webservices/axis2/trunk/c/samples/server/echo/echo_skeleton.c Sun Mar 19 22:02:59 2006
@@ -38,89 +38,118 @@
 echo_init(axis2_svc_skeleton_t *svc_skeleton,
           axis2_env_t **env);
 
+axis2_om_node_t* AXIS2_CALL
+echo_on_fault(axis2_svc_skeleton_t *svc_skeli, 
+              axis2_env_t **env, axis2_om_node_t *node);
 
+/*Create function */
 axis2_svc_skeleton_t *
 axis2_echo_create(axis2_env_t **env)
 {
     axis2_svc_skeleton_t *svc_skeleton = NULL;
+    /* Allocate memory for the structs */
     svc_skeleton = AXIS2_MALLOC((*env)->allocator, 
         sizeof(axis2_svc_skeleton_t));
 
-    
     svc_skeleton->ops = AXIS2_MALLOC(
         (*env)->allocator, sizeof(axis2_svc_skeleton_ops_t));
 
+    /* Assign function pointers */
     svc_skeleton->ops->free = echo_free;
     svc_skeleton->ops->init = echo_init;
     svc_skeleton->ops->invoke = echo_invoke;
-    /*svc_skeleton->ops->on_fault = echo_on_fault;*/
+    svc_skeleton->ops->on_fault = echo_on_fault;
 
     return svc_skeleton;
 }
 
+/* Initialize the service */
 int AXIS2_CALL
 echo_init(axis2_svc_skeleton_t *svc_skeleton,
                         axis2_env_t **env)
 {
     svc_skeleton->func_array = axis2_array_list_create(env, 0);
+    /* Add the implemented operation names of the service to  
+     * the array list of functions 
+     */
     AXIS2_ARRAY_LIST_ADD(svc_skeleton->func_array, env, "echoString");
-
-    /* Any initialization stuff of echo goes here */
+    /* Any initialization stuff of echo service should go here */
     return AXIS2_SUCCESS;
 }
 
+/*
+ * This method invokes the right service method 
+ */
+axis2_om_node_t* AXIS2_CALL
+echo_invoke(axis2_svc_skeleton_t *svc_skeleton,
+            axis2_env_t **env,
+            axis2_om_node_t *node)
+{
+    /* Invoke the business logic.
+     * Depending on the function name invoke the correct impl method.
+     * We have only echo in this sample, hence invoke echo method.
+     * To see how to deal with multiple impl methods, have a look at the
+     * math sample.
+     */
+    return axis2_echo_echo(env, node);
+}
+
+/* On fault, handle the fault */
+axis2_om_node_t* AXIS2_CALL
+echo_on_fault(axis2_svc_skeleton_t *svc_skeli, 
+              axis2_env_t **env, axis2_om_node_t *node)
+{
+   /* Here we are just setting a simple error message inside an element 
+    * called 'EchoServiceError' 
+    */
+    axis2_om_node_t *error_node = NULL;
+    axis2_om_node_t* text_node = NULL;
+    axis2_om_element_t *error_ele = NULL;
+    error_ele = axis2_om_element_create(env, node, "EchoServiceError", NULL, 
+        &error_node);
+    AXIS2_OM_ELEMENT_SET_TEXT(error_ele, env, "Echo service failed ", 
+        text_node);
+    return error_node;
+}
+
+/* Free the resources used */
 int AXIS2_CALL
 echo_free(axis2_svc_skeleton_t *svc_skeleton,
             axis2_env_t **env)
 {
+    /* Free the function array */
     if(svc_skeleton->func_array)
     {
         AXIS2_ARRAY_LIST_FREE(svc_skeleton->func_array, env);
         svc_skeleton->func_array = NULL;
     }
     
+    /* Free the function array */
     if(svc_skeleton->ops)
     {
         AXIS2_FREE((*env)->allocator, svc_skeleton->ops);
         svc_skeleton->ops = NULL;
     }
     
+    /* Free the service skeleton */
     if(svc_skeleton)
     {
         AXIS2_FREE((*env)->allocator, svc_skeleton);
         svc_skeleton = NULL;
     }
+
     return AXIS2_SUCCESS; 
 }
 
-/*
- * This method invokes the right service method 
- */
-axis2_om_node_t* AXIS2_CALL
-echo_invoke(axis2_svc_skeleton_t *svc_skeleton,
-            axis2_env_t **env,
-            axis2_om_node_t *node)
-{
-    /* Depending on the function name invoke the
-     *  corresponding echo method
-     */
-        
-    return axis2_echo_echo(env, node);
-}
 
 /**
  * Following block distinguish the exposed part of the dll.
  */
-
 AXIS2_EXPORT int 
 axis2_get_instance(axis2_svc_skeleton_t **inst,
                    axis2_env_t **env)
 {
 	*inst = axis2_echo_create(env);
-    /*if(NULL != *inst)
-    {
-        status = *inst->init();
-    }*/
     if(!(*inst))
     {
         return AXIS2_FAILURE;