Hi Dimuthu,

Thanks for helping me solve the segmentation fault. I followed the
calculator example. But now i am getting another error called

 "Throws guththila_exception guththila_xml_pull_parser.c 250."

Also it looks like its going in an infinite loop. When I went to
guththila_xml_pull_parser.c line 250, i checked the if condition
   else  if (((parser->_next) > (parser->last))
                          && guththila_read(environment, parser))
    {
        if (eof)
            return -1;
        else
            guththila_exception(p_FILE, LINE, GUTHTHILA_ERROR_UNEXPECTED_EOF);

    }

Is there anything wrong with the input message again? I am not able to
proceed beyond this. I am attaching the client code. I tried an input
message with a "\n", and without a "\n" at the end. Both gives a problem.

Please help me.

Thanks
Sathya
#include <axis2_util.h>
#include "axis2_stub_ParseMessage.h"

int main(int argc, char **argv)
{
    axutil_env_t* env = NULL;
    axis2_char_t* operation = NULL;
    axis2_char_t* client_home = NULL;
    axis2_char_t* endpoint_uri = NULL;
    axis2_stub_t* stub = NULL;
    adb_inputMessage_t *inputMess;
    adb_pInterchange_t* parse_res = NULL;

    axis2_svc_skeleton_t *parse_in = NULL;

    operation = "hello\n";

    int res_val = 0;
    endpoint_uri = "http://localhost:9090/axis2/services/parseMessage";;

    env = axutil_env_create_all("parse_client.log", AXIS2_LOG_LEVEL_TRACE);

    /* Set up deploy folder.*/
    client_home = AXIS2_GETENV("AXIS2C_HOME");
    if (!client_home)
        client_home = "../../../deploy";
	printf ("Client home = %s\n",client_home);

    stub = axis2_stub_ParseMessage_create(env, client_home , endpoint_uri);

  //  parse_in = axis2_svc_skel_ParseMessage_create(env);

//Create an object of input message
inputMess = adb_inputMessage_create(env);
adb_inputMessage_set_inputMessage(inputMess,env,operation);
printf ("After create input message\n");
    parse_res =  axis2_stub_ParseMessage_parseMessage(stub, env, inputMess);
printf ("After create response\n");
    if(!parse_res)
    {
        printf("Error: response NULL\n");
        return -1;
    }

  //  res_val = AXIS2_ADDRESPONSE_GET_ADDRETURN(add_res, env);

  //  printf("ADD Result:%d ", res_val);

    return 0;
}

       /**
        * adb_inputMessage.h
        *
        * This file was auto-generated from WSDL
        * by the Apache Axis2/C version: 1.3  Built on : Aug 10, 2007 (04:45:58 LKT)
        *
        */

        #include "adb_inputMessage.h"
          
              /**
               * implmentation of the inputMessage|http://www.abnamro.com/paymentrouter element
               */
             


        struct adb_inputMessage
        {
            
                axutil_qname_t* qname;
            axis2_char_t* attrib_inputMessage;
            
        };


       /************************* Function Implmentations ********************************/
        AXIS2_EXTERN adb_inputMessage_t* AXIS2_CALL
        adb_inputMessage_create(
            const axutil_env_t *env )
        {
            adb_inputMessage_t *_inputMessage = NULL;
            
              axutil_qname_t* qname = NULL;
            
            AXIS2_ENV_CHECK(env, NULL);

            _inputMessage = (adb_inputMessage_t *) AXIS2_MALLOC(env->
                allocator, sizeof(adb_inputMessage_t));

            if(NULL == _inputMessage)
            {
                AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
                return NULL;
            }

            
              qname =  axutil_qname_create (env,
                        "inputMessage",
                        "http://www.abnamro.com/paymentrouter";,
                        "ns1");

              _inputMessage->qname = qname;
            

            return _inputMessage;
         }

        axis2_status_t AXIS2_CALL
        adb_inputMessage_free (
                adb_inputMessage_t* _inputMessage,
                const axutil_env_t *env)
        {
            
            

            AXIS2_ENV_CHECK(env, AXIS2_FAILURE);

            
              if(_inputMessage->qname )
              {
                  axutil_qname_free (_inputMessage->qname, env);
                  _inputMessage->qname = NULL;
              }
            

            if(_inputMessage)
            {
                AXIS2_FREE( env->allocator, _inputMessage);
                _inputMessage = NULL;
            }
            return AXIS2_SUCCESS;
        }

          
           axutil_qname_t* AXIS2_CALL
           adb_inputMessage_get_qname (
                   adb_inputMessage_t* _inputMessage,
                   const axutil_env_t *env)
           {
               AXIS2_ENV_CHECK(env, AXIS2_FAILURE);

               return _inputMessage-> qname;
           }
        

        axis2_status_t AXIS2_CALL
        adb_inputMessage_deserialize(
                adb_inputMessage_t* _inputMessage,
                const axutil_env_t *env,
                axiom_node_t* parent)
        {

            axis2_status_t status = AXIS2_SUCCESS;
            axiom_namespace_t *ns1 = NULL;
            
             axis2_char_t* text_value = NULL;
             axutil_qname_t *qname = NULL;
            
            
              axutil_qname_t *element_qname = NULL;
            
               axiom_node_t *first_node = NULL;
               
             
               axiom_node_t *current_node = NULL;
               axiom_element_t *current_element = NULL;
            
            AXIS2_ENV_CHECK(env, AXIS2_FAILURE);

            ns1 = axiom_namespace_create (env,
                                         "http://www.abnamro.com/paymentrouter";,
                                         "ns1");
            
              if ( NULL == parent )
              {
                /** This should be checked above */
                AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "NULL elemenet for inputMessage"
                                              " %d :: %s", env->error->error_number,
                                              AXIS2_ERROR_GET_MESSAGE(env->error));
                return AXIS2_FAILURE;
              }
            
                    current_element = axiom_node_get_data_element( parent, env);
                    qname = axiom_element_get_qname( current_element, env, parent);
                    if ( axutil_qname_equals( qname, env, _inputMessage-> qname ) )
                    {
                        first_node = axiom_node_get_first_child( parent, env);
                    }
                    else
                    {
                        first_node = parent;
                    }
                 

                     
                     /**
                      * building inputMessage element
                      */
                     
                     
                     
                                   /**
                                     * because elements are not ordered we should surf all the sibling to pick the right one
                                     */
                               for ( current_node = first_node; current_node != NULL;
                                             current_node = axiom_node_get_next_sibling( current_node, env))
                               {
                                  current_element = axiom_node_get_data_element( current_node, env);
                                  qname = axiom_element_get_qname( current_element, env, current_node);
                                  element_qname = axutil_qname_create( env, "inputMessage", "http://www.abnamro.com/paymentrouter";, "ns1");
                                  if ( axutil_qname_equals( element_qname, env, qname))
                                  {
                                       /** found the requried element */
                                       break;
                                  }
                               }
                             
                           if ( current_node != NULL)
                           {
                              
                                      text_value = axiom_element_get_text(current_element, env, current_node );
                                      status = adb_inputMessage_set_inputMessage( _inputMessage, env,
                                                                   text_value);
                                    
                                 if( AXIS2_FAILURE ==  status)
                                 {
                                     AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "failed in setting the value for inputMessage "
                                                         " %d :: %s", env->error->error_number,
                                                         AXIS2_ERROR_GET_MESSAGE(env->error));
                                     return AXIS2_FAILURE;
                                 }
                           }
                           
                               else
                               {
                                   /** this is not a nillable element*/
                                   AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "non nillable or minOuccrs != 0 element inputMessage missing"
                                                         " %d :: %s", env->error->error_number,
                                                         AXIS2_ERROR_GET_MESSAGE(env->error));
                                   return AXIS2_FAILURE;
                               }
                            

          return status;
       }

        axiom_node_t* AXIS2_CALL
        adb_inputMessage_serialize(
                adb_inputMessage_t* _inputMessage,
                const axutil_env_t *env, axiom_node_t* parent, int has_parent)
        {
            
            axiom_namespace_t *ns1 = NULL;
            
                    axis2_char_t *text_value_1;
                    
               axiom_node_t *current_node = NULL;
               axiom_element_t *current_element = NULL;
               axiom_data_source_t *data_source = NULL;
               axutil_stream_t *stream = NULL;
               axis2_char_t *start_input_str = NULL;
               axis2_char_t *end_input_str = NULL;
               unsigned int start_input_str_len = 0;
               unsigned int end_input_str_len = 0;
            
            AXIS2_ENV_CHECK(env, NULL);

            ns1 = axiom_namespace_create (env,
                                         "http://www.abnamro.com/paymentrouter";,
                                         "ns1");
            
                if( parent == NULL)
                {
                    current_element = axiom_element_create (env, parent, "inputMessage", ns1 , &current_node);
                    axiom_element_set_namespace( current_element, env, ns1, current_node);
                    
                    parent = current_node;
                }
               
                if(has_parent)
                {
                    data_source = axiom_node_get_data_element(parent, env);
                    if (!data_source)
                        return NULL;
                    stream = axiom_data_source_get_stream(data_source, env); /* assume parent is of type data source */
                    if (!stream)
                        return NULL;
                    current_node = parent;
                }
                else
                {
                    data_source = axiom_data_source_create(env, parent, &current_node);
                    stream = axiom_data_source_get_stream(data_source, env);
                }
             
                     
                     /**
                      * parsing inputMessage element
                      */
                     

                    
                    
                        start_input_str = "<ns1:inputMessage>";
                        start_input_str_len = axutil_strlen(start_input_str);
                        end_input_str = "</ns1:inputMessage>";
                        end_input_str_len = axutil_strlen(end_input_str);
                    
                           text_value_1 = _inputMessage->attrib_inputMessage;
                           axutil_stream_write(stream, env, start_input_str, start_input_str_len);
                           axutil_stream_write(stream, env, text_value_1, axutil_strlen(text_value_1));
                           axutil_stream_write(stream, env, end_input_str, end_input_str_len);
                        
            return parent;
        }

        

            /**
             * getter for inputMessage.
             */
            axis2_char_t* AXIS2_CALL
            adb_inputMessage_get_inputMessage(
                    adb_inputMessage_t* _inputMessage,
                    const axutil_env_t *env)
             {
                AXIS2_ENV_CHECK(env, AXIS2_FAILURE);

                return _inputMessage-> attrib_inputMessage;
             }

            /**
             * setter for inputMessage
             */
            axis2_status_t AXIS2_CALL
            adb_inputMessage_set_inputMessage(
                    adb_inputMessage_t* _inputMessage,
                    const axutil_env_t *env,
                    axis2_char_t*  param_inputMessage)
             {
                

                AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
                if(!_inputMessage)
                {
                    return AXIS2_FAILURE;
                }

                
                  if( NULL == param_inputMessage )
                  {
                      AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "inputMessage is NULL, but not a nullable element"
                                                 " %d :: %s", env->error->error_number,
                                                 AXIS2_ERROR_GET_MESSAGE(env->error));
                      return AXIS2_FAILURE;
                  }
                _inputMessage-> attrib_inputMessage = param_inputMessage;
                return AXIS2_SUCCESS;
             }

            


      /**
       * axis2_stub_ParseMessage.c
       *
       * This file was auto-generated from WSDL for "ParseMessage|http://www.abnamro.com/paymentrouter"; service
       * by the Apache Axis2/C version: 1.3  Built on : Aug 10, 2007 (04:45:47 LKT)
       */

      #include "axis2_stub_ParseMessage.h"

      /**
       * axis2_stub_ParseMessage C implementation
       */

      axis2_stub_t*
      axis2_stub_ParseMessage_create (const axutil_env_t *env,
                                      axis2_char_t *client_home,
                                      axis2_char_t *endpoint_uri)
      {
         axis2_stub_t *stub = NULL;
         axis2_endpoint_ref_t *endpoint_ref = NULL;
         AXIS2_FUNC_PARAM_CHECK ( client_home, env, NULL)

         if (NULL == endpoint_uri )
         {
            endpoint_uri = axis2_stub_ParseMessage_get_endpoint_uri_from_wsdl( env );
         }

         endpoint_ref = axis2_endpoint_ref_create(env, endpoint_uri);

         stub = axis2_stub_create_with_endpoint_ref_and_client_home ( env, endpoint_ref, client_home );
         axis2_stub_ParseMessage_populate_services( stub, env );
         return stub;
      }


      void axis2_stub_ParseMessage_populate_services( axis2_stub_t *stub, const axutil_env_t *env)
      {
         axis2_svc_client_t *svc_client = NULL;
         axutil_qname_t *svc_qname =  NULL;
         axutil_qname_t *op_qname =  NULL;
         axis2_svc_t *svc = NULL;
         axis2_op_t *op = NULL;

         /* Modifying the Service */
         svc_client = axis2_stub_get_svc_client (stub, env );
         svc = (axis2_svc_t*)axis2_svc_client_get_svc( svc_client, env );
         axutil_qname_create(env,"ParseMessage" ,NULL, NULL);
         axis2_svc_set_qname (svc, env, svc_qname);

         /* creating the operations*/

         

           op_qname = axutil_qname_create(env,
                                         "parseMessage" ,
                                         "http://www.abnamro.com/paymentrouter";,
                                         NULL);
           op = axis2_op_create_with_qname(env, op_qname);
           
               axis2_op_set_msg_exchange_pattern(op, env, AXIS2_MEP_URI_OUT_IN);
             
           axis2_svc_add_op(svc, env, op);

         
      }

      /**
       *return end point picked from wsdl
       */
      axis2_char_t*
      axis2_stub_ParseMessage_get_endpoint_uri_from_wsdl ( const axutil_env_t *env )
      {
        axis2_char_t *endpoint_uri = NULL;
        /* set the address from here */
        
              endpoint_uri = "http://localhost:12345/soap";;
            
        return endpoint_uri;
      }


  
         /**
          * auto generated method signature
          * for "parseMessage|http://www.abnamro.com/paymentrouter"; operation.
          * @param inputMessage
          * @return
          */
         
                    adb_pInterchange_t* axis2_stub_ParseMessage_parseMessage( axis2_stub_t *stub, const axutil_env_t *env,
                                              adb_inputMessage_t* inputMessage)
         {
            axis2_svc_client_t *svc_client = NULL;
            axis2_options_t *options = NULL;
            axiom_node_t *ret_node = NULL;

            const axis2_char_t *soap_action = NULL;
            axutil_qname_t *op_qname =  NULL;
            axiom_node_t *payload = NULL;
            
            const axutil_string_t *soap_act = NULL;
            
                    adb_pInterchange_t* ret_val = NULL;
            
                            payload = adb_inputMessage_serialize(inputMessage, env, NULL, AXIS2_FALSE);
                        


            options = axis2_stub_get_options( stub, env);
            if ( NULL == options )
            {
              AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "options is null in stub: Error code:"
                    " %d :: %s", env->error->error_number,
                    AXIS2_ERROR_GET_MESSAGE(env->error));
              return NULL;
            }
            svc_client = axis2_stub_get_svc_client(stub, env );
            soap_action = axis2_options_get_action( options, env );
            if ( NULL == soap_action )
            {
              soap_action = "http://www.abnamro.com/paymentrouter#parseMessage";;
              
              soap_act = axutil_string_create(env, "http://www.abnamro.com/paymentrouter#parseMessage";);
              axis2_options_set_soap_action(options, env, soap_act);    
              
              axis2_options_set_action( options, env, soap_action );
            }
            
            axis2_options_set_soap_version(options, env, AXIOM_SOAP11 );
            
            op_qname = axutil_qname_create(env,
                                        "parseMessage" ,
                                        "http://www.abnamro.com/paymentrouter";,
                                        NULL);
            ret_node =  axis2_svc_client_send_receive_with_op_qname( svc_client, env, op_qname, payload);


            
                    if ( NULL == ret_node )
                    {
                        return NULL;
                    }
                    ret_val = adb_pInterchange_create(env);

                    adb_pInterchange_deserialize(ret_val, env, ret_node );
                    return ret_val;
                
        }
        
        /**
          * auto generated method signature for asynchronous invocations
          * for "parseMessage|http://www.abnamro.com/paymentrouter"; operation.
          
          * @param inputMessage
          * @param on_complete callback to handle on complete
          * @param on_error callback to handle on error
          */
         
         void axis2_stub_ParseMessage_parseMessage_start( axis2_stub_t *stub, const axutil_env_t *env,
                                                    adb_inputMessage_t* inputMessage,
                                                  axis2_status_t ( AXIS2_CALL *on_complete ) (struct axis2_callback *, const axutil_env_t *) ,
                                                  axis2_status_t ( AXIS2_CALL *on_error ) (struct axis2_callback *, const axutil_env_t *, int ) )
         {

            axis2_callback_t *callback = NULL;

            axis2_svc_client_t *svc_client = NULL;
            axis2_options_t *options = NULL;

            const axis2_char_t *soap_action = NULL;
            axiom_node_t *payload = NULL;

            
            axutil_string_t *soap_act = NULL;
            
                            payload = adb_inputMessage_serialize(inputMessage, env, NULL, AXIS2_FALSE);
                        


            options = axis2_stub_get_options( stub, env);
            if ( NULL == options )
            {
              AXIS2_LOG_ERROR( env->log, AXIS2_LOG_SI, "options is null in stub: Error code:"
                      " %d :: %s", env->error->error_number,
                      AXIS2_ERROR_GET_MESSAGE(env->error));
              return;
            }
            svc_client = axis2_stub_get_svc_client (stub, env );
            soap_action =axis2_options_get_action ( options, env );
            if ( NULL == soap_action )
            {
              soap_action = "http://www.abnamro.com/paymentrouter#parseMessage";;
              
              soap_act = axutil_string_create(env, "http://www.abnamro.com/paymentrouter#parseMessage";);
              axis2_options_set_soap_action(options, env, soap_act);
              
              axis2_options_set_action( options, env, soap_action );
            }
            
            axis2_options_set_soap_version(options, env, AXIOM_SOAP11 );
             

            callback = axis2_callback_create(env);
            /* Set our on_complete fucntion pointer to the callback object */
            axis2_callback_set_on_complete(callback, on_complete);
            /* Set our on_error function pointer to the callback object */
            axis2_callback_set_on_error(callback, on_error);

            /* Send request */
            axis2_svc_client_send_receive_non_blocking(svc_client, env, payload, callback);
         }

         

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to