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 , ¤t_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, ¤t_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]