Issue 30612  —   SOAP Call-In: Invalid date value not always correctly handled

Status:   Solved in 10.2.01

Solution available in patch(es):      MG01

Description:

 Summary:
 When a SOAP Client is sending a request (SOAP Call-In) that contains
 an invalid date value, this is not handled correctly in all cases.

 Environment:
 +Uniface: Version 9.x
 +Operating System: OS independent
 +Database: DBMS independent
 +Additional: SOAP Call-In

 Symptoms:
 When a SOAP Client is sending a request (SOAP Call-In) that contains an invalid
 date value then this is not handled correctly in all cases.

 How to reproduce:

 1. A service WEBSVC with an entity ENT1 is used. The service includes:

    * An entity ENT1 with one string (S1) and one date field (D1)
    * An operation testOper1 with an entity INOUT parameter (ENT1)

 2. WEBSVC is compiled

 3. The web service definitions (WSDLs) for WEBSCVC are exported:

    > idf.exe /sto /mwr=ws websvc

 3. The generated WSDL and XSD files are deployed on the Web Server

 4. The Uniface web service WEBSVC is called from a SOAP client

 The following four cases are examples of SOAP requests with their response.

 For cases A and B the wrong date format is handled correctly; for cases C and D
 the requests are handled incorrectly:

 A) Date D1 = "2014"

      > SOAP Request:

    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
 xmlns:urn="urn:uniface:applic:wrapped:services:WEBSVC"
 xmlns:urn1="urn:uniface:applic:services:WEBSERVICESWEBSVC">
       <soapenv:Header/>
       <soapenv:Body>
          <urn:ENT1>
             <urn:GENERATED_PARAMETER_NAME_1>
                <urn1:WEBSERVICESWEBSVCType>
                   <urn1:S1>String</urn1:S1>
                   <urn1:D1>2014</urn1:D1>
                </urn1:WEBSERVICESWEBSVCType>
             </urn:GENERATED_PARAMETER_NAME_1>
          </urn:ENT1>
       </soapenv:Body>
    </soapenv:Envelope>

    > Correct SOAP Response from Uniface:

    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
       <soapenv:Body>
          <soapenv:Fault>
             <faultcode>soapenv:Server</faultcode>
             <faultstring>Activation error occurred</faultstring>

 <faultactor>urn:uniface:applic:userver:doSoapRequest:Soap2UField</faultactor>
             <detail>
                <status>-150</status>
                <description>Could not convert Date</description>
             </detail>
          </soapenv:Fault>
       </soapenv:Body>
    </soapenv:Envelope>

 B) Date D1 = "2014-01"

      > SOAP Request:

    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
 xmlns:urn="urn:uniface:applic:wrapped:services:WEBSVC"
 xmlns:urn1="urn:uniface:applic:services:WEBSERVICESWEBSVC">
       <soapenv:Header/>
       <soapenv:Body>
          <urn:ENT1>
             <urn:GENERATED_PARAMETER_NAME_1>
                <urn1:WEBSERVICESWEBSVCType>
                   <urn1:S1>String</urn1:S1>
                   <urn1:D1>2014-01</urn1:D1>
                </urn1:WEBSERVICESWEBSVCType>
             </urn:GENERATED_PARAMETER_NAME_1>
          </urn:ENT1>
       </soapenv:Body>
    </soapenv:Envelope>

    > Correct SOAP Response from Uniface:

    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
       <soapenv:Body>
          <soapenv:Fault>
             <faultcode>soapenv:Server</faultcode>
             <faultstring>Activation error occurred</faultstring>

 <faultactor>urn:uniface:applic:userver:doSoapRequest:Soap2UField</faultactor>
             <detail>
                <status>-150</status>
                <description>Could not convert Date</description>
             </detail>
          </soapenv:Fault>
       </soapenv:Body>
    </soapenv:Envelope>

 C) Date D1 = "2014-02-32"

      > SOAP Request:

    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
 xmlns:urn="urn:uniface:applic:wrapped:services:WEBSVC"
 xmlns:urn1="urn:uniface:applic:services:WEBSERVICESWEBSVC">
       <soapenv:Header/>
       <soapenv:Body>
          <urn:ENT1>
             <urn:GENERATED_PARAMETER_NAME_1>
                <urn1:WEBSERVICESWEBSVCType>
                   <urn1:S1>String</urn1:S1>
                   <urn1:D1>2014-02-32</urn1:D1>
                </urn1:WEBSERVICESWEBSVCType>
             </urn:GENERATED_PARAMETER_NAME_1>
          </urn:ENT1>
       </soapenv:Body>
    </soapenv:Envelope>

    > Incorrect SOAP Response from Uniface (D1 = "2014-03-04"):

    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:ns0="urn:uniface:applic:services:WEBSERVICESWEBSVC">
       <soapenv:Body>
          <ENT1Response xmlns="urn:uniface:applic:wrapped:services:WEBSVC">
             <return>0</return>
             <GENERATED_PARAMETER_NAME_1>
                <ns0:WEBSERVICESWEBSVCType>
                   <ns0:S1>String</ns0:S1>
                   <ns0:D1>2014-03-04</ns0:D1>
                </ns0:WEBSERVICESWEBSVCType>
             </GENERATED_PARAMETER_NAME_1>
          </ENT1Response>
       </soapenv:Body>
    </soapenv:Envelope>

 D) Date D1 = "20140101"

      > SOAP Request:

    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
 xmlns:urn="urn:uniface:applic:wrapped:services:WEBSVC"
 xmlns:urn1="urn:uniface:applic:services:WEBSERVICESWEBSVC">
       <soapenv:Header/>
       <soapenv:Body>
          <urn:ENT1>
             <urn:GENERATED_PARAMETER_NAME_1>
                <urn1:WEBSERVICESWEBSVCType>
                   <urn1:S1>String</urn1:S1>
                   <urn1:D1>20140101</urn1:D1>
                </urn1:WEBSERVICESWEBSVCType>
             </urn:GENERATED_PARAMETER_NAME_1>
          </urn:ENT1>
       </soapenv:Body>
    </soapenv:Envelope>

    > The UServer will crash and the client will get the following response from
 the SRD:

    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
       <soapenv:Body>
          <soapenv:Fault>
             <faultcode>soapenv:Server</faultcode>
             <faultstring>-25 (see UNIFACE message guide)</faultstring>
             <faultactor>UNIFACE SRDServlet</faultactor>
          </soapenv:Fault>
       </soapenv:Body>
    </soapenv:Envelope>

Workaround:

 There is no known workaround for this problem.

Notes: