[ 
https://issues.apache.org/jira/browse/AXIS2C-557?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12483011
 ] 

Milinda Lakmal Pathirage commented on AXIS2C-557:
-------------------------------------------------

When the elements are ordered we don't have to check the name of the node. We 
only have to check if the element is nillable or minOccurs=0. 
This code part inside the Template will handle this situation:

 <xsl:if test="not(@nillable) and not(@minOccurs=0)">
else
{
             /** this is not a nillable element*/
              AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "non nillable or 
minOuccrs != 0 element <xsl:value-of select="$propertyName"/> missing"
                                                         " %d :: %s", 
env->error->error_number,
                                                         
AXIS2_ERROR_GET_MESSAGE(env->error));
               return AXIS2_FAILURE;
}
</xsl:if>

It is better if you can attach the WSDL to JIRA issue, then we can test it.

> WSDL2C: generated adb code does not allow any elements to be omitted - too 
> inflexible
> -------------------------------------------------------------------------------------
>
>                 Key: AXIS2C-557
>                 URL: https://issues.apache.org/jira/browse/AXIS2C-557
>             Project: Axis2-C
>          Issue Type: Bug
>          Components: code generation
>    Affects Versions: Current (Nightly)
>         Environment: Windows XP
>            Reporter: Dave Meier
>
> I am using WSDL2C with adb data binding.
> The code that is generated requires all elements specified in the WSDL for a 
> given web service call to be present.  It should instead check the name of 
> each node and allow some data elements to be omitted.
> Instead it generates code like the following, where it assumes the next node 
> is the node it expects.  It should check the name of the node and skip to the 
> next expected node if the name does not match:
>                      
>                                    /**
>                                      * because elements are ordered this 
> works fine
>                                      */
>                                    
>                                    if( current_node != NULL)
>                                    {
>                                        current_node = 
> AXIOM_NODE_GET_NEXT_SIBLING( current_node, env);
>                                    }
>                                  
>                            if ( current_node != NULL)
>                            {
>                               current_element = AXIOM_NODE_GET_DATA_ELEMENT( 
> current_node, env);
>                                       text_value = 
> AXIOM_ELEMENT_GET_TEXT(current_element, env, current_node );
> Here it blindly gets the text_value and sets it into the field that it 
> expects the value to be for.  This means that all the nodes must be present 
> or it will set the wrong values in the fields.  So if  new arguments are 
> added to an object passed in the call, it will no longer be backwards 
> compatible with clients that are using the older version of the WSDL.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


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

Reply via email to