Issue 29572  —   Complex parameters that are not defined nillable should not be specified as such

Status:   Solved in 10.2.01

Solution available in patch(es):      MX07    G101

Description:

 Summary:
 Database i/o that is done in a Server Stored Procedure (SSP) is not part of the
 main transaction.

 Environment:
 +Uniface Version: all
 +Operating System: OS independent
 +Database: All databases

 Scenario:
 Parameters must normally be present in a SOAP call. This is
 governed by two attributes in the element definition in the
 WSDL:
 - 'minoccurs' : specifies the minimum number of occurrences
                 of the element.
 - 'maxoccurs' : specifies the maximum number of occurrence

 If the element is defined with minoccurs="0", then it does not
 need to appear at all in the SOAP envelope. If minoccurs is
 greater than 0, then the element must appear, even if it
 has no value.

 A third attribute that may appear in the element definition
 in the WSDL is called
 - 'nillable' : detemines whether the value can be
                'NILL' (NULL) or just empty. Only elements
                that must be present and are defined as
                nillable="true" may contain the  attribute
                nil="true" in the SOAP envelope.

 For parameters that are too complex to be mapped onto
 a Uniface type, the parameter is defined as a string
 in the Uniface signature and the developer has to
 provide the parameter in the activate call.

 In this case maxoccurs plays a role:
 - When maxoccurs is greater than "1", it is the
   developer's responsibility to provide the
   element and the contents.
 - When maxoccurs="1", the SOAP driver will provide
   the parameter element and the developer has to provide
   the content.

 It is in this *last* case, when there is no content, that
 the SOAP driver erroneously adds the nill="true" attribute
 to the parameter.

Workaround:

 There is no known workaround for this problem.

Notes: