Hi,

After the issue AXIS2C-330 was fixed I have made tests with different wsdl files and it works now, but I have been able to reproduce exactly the same problem by modifying the googlesearch.wsdl file as follows:

[...]
 <portType name="GoogleSearchPort">

   <operation name="doGetCachedPage">
<documentation>test</documentation> <-- I have added this documentation element
     <input message="typens:doGetCachedPage"/>
     <output message="typens:doGetCachedPageResponse"/>
   </operation>

   <operation name="doSpellingSuggestion">
     <input message="typens:doSpellingSuggestion"/>
     <output message="typens:doSpellingSuggestionResponse"/>
   </operation>

   <operation name="doGoogleSearch">
     <input message="typens:doGoogleSearch"/>
     <output message="typens:doGoogleSearchResponse"/>
   </operation>

 </portType>
[...]

Without adding the documentation element to the operation it works.

The problem is the same, WODEN_DOCUMENTABLE_ADD_DOCUMENTATION_ELEMENT fails because the method add_documentation_element is null.

I have updated the AXIS2C-330 issue.

Many thanks,

Jose M. Sánchez


-------- Original Message --------
Subject:        Problems with woden
Date:   Wed, 11 Oct 2006 10:57:00 +0200
From:   Jose M. Sanchez <[EMAIL PROTECTED]>
To:     [email protected]




Hi,

I would like to invoke a web service operation without using the stub generator, to that goal I am using the woden parser to parse the WSDL file and generate the request message accordingly. But it crashes (I am testing this on Windows). While debugging I have found the following situation:

file: /c/woden/src/wsdl/documentable.c

I see that:

   documentable_impl_l = NULL

   woden_documentable_resolve_methods(
       woden_documentable_t *documentable,
       const axis2_env_t *env,
       woden_documentable_t *documentable_impl,
       axis2_hash_t *methods)
   {
   [...]
       documentable->ops->add_documentation_element =
   axis2_hash_get(methods, <-- after this, add_documentation_element = NULL
               "add_documentation_element", AXIS2_HASH_KEY_STRING);
       if (!documentable->ops->add_documentation_element &&
   documentable_impl_l) <-- it does not enter here
           documentable->ops->add_documentation_element =
documentable_impl_l->documentable.ops->add_documentation_element;
   [...]
   }


after the execution of this function, the operation add_documentation_element = NULL, then in the following function it fails:


file: /c/woden/src/builder/wsdl10_reader.c

   static void *
   parse_interface_op(
       void *reader,
       const axis2_env_t *env,
       axiom_node_t *op_el_node,
       void *desc,
       void *parent)
   {
   [...]
           if (AXIS2_TRUE == axis2_qname_util_matches(env,
                   q_elem_documentation, temp_el_node))
           {
               void *documentation = NULL;

               documentation = parse_documentation(reader, env,
   temp_el_node, desc);
               op = woden_interface_op_to_documentable(op, env);
               WODEN_DOCUMENTABLE_ADD_DOCUMENTATION_ELEMENT(op, env,
   documentation); <-- Fails here
           }

   [...]
   }



The call to WODEN_DOCUMENTABLE_ADD_DOCUMENTATION_ELEMENT fails, because the method add_documentation_element is null.

I have tested this with my own code, as well as with the test_woden sample program (which is very similar to my code), using different wsdl files, for example the googlesearch.wsdl file, and the result was always the same.

Can this be a bug or am I doing something wrong?

Thanks & regards,

jms.



Reply via email to