Program crashes if optional attributes are not provided
-------------------------------------------------------
Key: AXIS2C-769
URL: https://issues.apache.org/jira/browse/AXIS2C-769
Project: Axis2-C
Issue Type: Bug
Components: code generation
Affects Versions: Current (Nightly)
Environment: Windows + UNIX
Reporter: Michael Mole
Priority: Critical
This is similar to AXIS2C-753.
The generated serialize method of this complex type assumes that attributes
will be provided even if the WSDL specifies them as Optional. If the WSDL
specifies an attribute as required, there should be some error checking that
provides a useful error message if it is not supplied. Currently, the program
will just crash.
I have a complex type defined as follows:
<complexType name="Foo">
<sequence>
<element name="my_element" type="anyType" minOccurs="0">
</element>
</sequence>
<attribute name="property" use="required" type="QName">
</attribute>
<attribute name="length" type="unsignedInt" use="optional">
</attribute>
</complexType>
The generated code around both attributes looks like this:
text_value = (axis2_char_t*) AXIS2_MALLOC (env-> allocator, sizeof
(axis2_char_t) * (64 + strlen("length")));
sprintf(text_value, " ns2:length=\"%d\"", _Foo->property_length);
axutil_stream_write(stream, env, text_value, axutil_strlen(text_value));
AXIS2_FREE(env-> allocator, text_value);
For the length attribute, this should check and only try to write to the stream
if the length was provided:
Ex.
if ( _Foo->property_length != NULL ) {
...write to stream...
}
For the property attribute, this should check if the attribute was provided and
return an error if it was not.
Ex.
if ( _Foo->property_property == NULL ) {
return Error;
}
else {
... write to stream ...
}
--
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]