Hi Carl,
You seems loading the library from axis2 1.3 (Check the quotes
*********by the Apache Axis2/C version: 1.3 Built on : Aug 10, 2007),
Make sure you have set CLASSPATH correctly to the newer jars.
In the latest svn the code should be generated as,
/*
* 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))
{
if(axiom_node_get_node_type(current_node, env) != AXIOM_ELEMENT)
{
continue;
}
Can you recheck with the updated CLASSPATH again,
Thanks
Dimuthu
On Wed, Mar 12, 2008 at 6:59 PM, Carl Lefrançois
<[EMAIL PROTECTED]> wrote:
> Hi Dimuthu,
>
> Sorry I should have thought of sending the problematic .c file
>
> I'll prefix the relevant lines with #####.
>
> Carl
>
>
> /**
> * adb_ResultStatusCodeFormat.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_ResultStatusCodeFormat.h"
>
> /**
> * This type was generated from the piece of schema that had
> * name = ResultStatusCodeFormat
> * Namespace URI =
> http://www.axa.ca/message/1.0/types/message-types
> * Namespace Prefix = ns5
> */
>
>
>
> struct adb_ResultStatusCodeFormat
> {
> axis2_char_t* attrib_ResultStatusCodeFormat;
>
> };
>
>
> /************************* Function Implmentations
> ********************************/
> AXIS2_EXTERN adb_ResultStatusCodeFormat_t* AXIS2_CALL
> adb_ResultStatusCodeFormat_create(
> const axutil_env_t *env )
> {
> adb_ResultStatusCodeFormat_t *_ResultStatusCodeFormat = NULL;
>
> AXIS2_ENV_CHECK(env, NULL);
>
> _ResultStatusCodeFormat = (adb_ResultStatusCodeFormat_t *)
> AXIS2_MALLOC(env->
> allocator, sizeof(adb_ResultStatusCodeFormat_t));
>
> if(NULL == _ResultStatusCodeFormat)
> {
> AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY,
> AXIS2_FAILURE);
> return NULL;
> }
>
>
>
> return _ResultStatusCodeFormat;
> }
>
> axis2_status_t AXIS2_CALL
> adb_ResultStatusCodeFormat_free (
> adb_ResultStatusCodeFormat_t* _ResultStatusCodeFormat,
> const axutil_env_t *env)
> {
>
>
>
> AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
>
>
>
> if(_ResultStatusCodeFormat)
> {
> AXIS2_FREE( env->allocator, _ResultStatusCodeFormat);
> _ResultStatusCodeFormat = NULL;
> }
> return AXIS2_SUCCESS;
> }
>
>
>
> axis2_status_t AXIS2_CALL
> adb_ResultStatusCodeFormat_deserialize(
> adb_ResultStatusCodeFormat_t* _ResultStatusCodeFormat,
> 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.axa.ca/message/1.0/types/message-types",
> "ns5");
>
> if ( NULL == parent )
> {
> /** This should be checked above */
> AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "NULL elemenet for
> ResultStatusCodeFormat"
> " %d :: %s",
> env->error->error_number,
>
> AXIS2_ERROR_GET_MESSAGE(env->error));
> return AXIS2_FAILURE;
> }
>
> first_node = parent;
>
>
>
> /**
> * building ResultStatusCodeFormat 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,
> "ResultStatusCodeFormat",
> "http://www.axa.ca/message/1.0/types/message-types", "ns5");
> 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_ResultStatusCodeFormat_set_ResultStatusCodeFormat(
> _ResultStatusCodeFormat, env,
>
> text_value);
>
> if( AXIS2_FAILURE == status)
> {
> AXIS2_LOG_ERROR(env->log,
> AXIS2_LOG_SI, "failed in setting the value for ResultStatusCodeFormat "
> " %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 ResultStatusCodeFormat missing"
> " %d :: %s",
> env->error->error_number,
>
> AXIS2_ERROR_GET_MESSAGE(env->error));
> return AXIS2_FAILURE;
> }
>
>
> return status;
> }
>
> axiom_node_t* AXIS2_CALL
> adb_ResultStatusCodeFormat_serialize(
> adb_ResultStatusCodeFormat_t* _ResultStatusCodeFormat,
> 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.axa.ca/message/1.0/types/message-types",
> "ns5");
>
> 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 ResultStatusCodeFormat element
> */
>
>
>
>
> start_input_str = "<ns5:ResultStatusCodeFormat>";
> start_input_str_len =
> axutil_strlen(start_input_str);
> end_input_str = "</ns5:ResultStatusCodeFormat>";
> end_input_str_len = axutil_strlen(end_input_str);
>
> text_value_1 =
> _ResultStatusCodeFormat->attrib_ResultStatusCodeFormat;
> 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 ResultStatusCodeFormat.
> */
> axis2_char_t* AXIS2_CALL
> adb_ResultStatusCodeFormat_get_ResultStatusCodeFormat(
> adb_ResultStatusCodeFormat_t* _ResultStatusCodeFormat,
> const axutil_env_t *env)
> {
> AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
>
> return _ResultStatusCodeFormat->
> attrib_ResultStatusCodeFormat;
> }
>
> /**
> * setter for ResultStatusCodeFormat
> */
> axis2_status_t AXIS2_CALL
> adb_ResultStatusCodeFormat_set_ResultStatusCodeFormat(
> adb_ResultStatusCodeFormat_t* _ResultStatusCodeFormat,
> const axutil_env_t *env,
> axis2_char_t* param_ResultStatusCodeFormat)
> {
>
>
> AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
> if(!_ResultStatusCodeFormat)
> {
> return AXIS2_FAILURE;
> }
>
>
> if( NULL == param_ResultStatusCodeFormat )
> {
> AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
> "ResultStatusCodeFormat is NULL, but not a nullable element"
> " %d :: %s",
> env->error->error_number,
>
> AXIS2_ERROR_GET_MESSAGE(env->error));
> return AXIS2_FAILURE;
> }
> _ResultStatusCodeFormat-> attrib_ResultStatusCodeFormat =
> param_ResultStatusCodeFormat;
> return AXIS2_SUCCESS;
> }
>
>
>
>
>
> 2008/3/11, Dimuthu Gamage <[EMAIL PROTECTED]>:
> >
> >
> >
> > Hi Carl,
> >
> > If you can send us the relevant generated adb_ file it would be easy
> > to track the problem.
> >
> > Thanks
> > Dimuthu
> >
> >
> > On Wed, Mar 12, 2008 at 12:42 AM, Carl Lefrançois
> > <[EMAIL PROTECTED]> wrote:
> > > Hi all,
> > >
> > > After much debugging I have found why an access violation is being
> caused in
> > > my WSDL2C-generated code.
> > >
> > > While processing the following document: (http : // removed due to
> problems
> > > with my emails being flagged as spam)
> > >
> > > <?xml version='1.0' encoding='UTF-8'?>
> > > <soapenv:Envelope xmlns:soapenv="schemas.xmlsoap.org/soap/envelope/">
> > > <soapenv:Body>
> > > <BrokerInformationResponse
> > > xmlns:xsi="www.w3.org/2001/XMLSchema-instance"
> > >
> > >
> xmlns="www.axa.ca/BrokerInformationService/1.0/BrokerInformationResponse"
> > > xmlns:xsd="www.w3.org/2001/XMLSchema"
> > > xmlns:soap="schemas.xmlsoap.org/soap/envelope/">
> > > <TrackingNumber>UNKNOWN</TrackingNumber>
> > > <Status>
> > > <Status xmlns="">ERROR</Status>
> > > <Detail xmlns="">
> > > <Code>ERROR</Code>
> > > <Description>Could not unbind Request from
> > > XML!</Description>
> > > </Detail>
> > > </Status>
> > > </BrokerInformationResponse>
> > > </soapenv:Body>
> > > </soapenv:Envelope>
> > >
> > >
> > > During construction of the node tree representing this document, an
> om_text
> > > data element is created to hold the text "ERROR" in the first Status
> > > element. This om_text element is then assigned to the data_element
> member
> > > of the axiom_node_t representing the first Status element on the
> following
> > > line:
> > >
> > > (line 603 of axiom\src\om\om_text.c:)
> > > axiom_node_set_data_element((*node), env, om_text);
> > >
> > > The node_type element of this node is correctly set to 8 (AXIOM_TEXT).
> > >
> > > however during deserialization in the WSDL2C generated code, the same
> data
> > > element is read into an axiom_element_t * defined as:
> > > axiom_element_t *current_element = NULL;
> > >
> > > in the following line:
> > > current_element = axiom_node_get_data_element( current_node, env);
> > >
> > >
> > > followed by a call which attempts to read the string value of
> > > (axiom_element_t *)current_element->ns->prefix:
> > > qname = axiom_element_get_qname( current_element, env, current_node);
> > >
> > > which causes an access violation.
> > >
> > > I would like to help with debugging the WSDL2C tool but my time on this
> > > project doesn't allow it at the moment. If the information above isn't
> > > detailed enough I'll gladly clarify so the problem can be fixed.
> > >
> > > Carl
> > >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]