From: Dmitry Stogov Date: Wed, 24 Aug 2005 11:46:11 +0000 (+0000) Subject: Fixed boolean encoding (from 0/1 to false/true) to support some buggy soap SDKs. X-Git-Tag: php-5.1.0RC2_PRE~78 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=da4096c210b0f4f931e06c370679a2ca00b94652;p=php Fixed boolean encoding (from 0/1 to false/true) to support some buggy soap SDKs. Fixed support for missing nillable elements of sequnces. --- diff --git a/ext/soap/php_encoding.c b/ext/soap/php_encoding.c index f5535a5e67..b53cf98937 100644 --- a/ext/soap/php_encoding.c +++ b/ext/soap/php_encoding.c @@ -931,9 +931,9 @@ static xmlNodePtr to_xml_bool(encodeTypePtr type, zval *data, int style, xmlNode } if (data->value.lval == 1) { - xmlNodeSetContent(ret, "1"); + xmlNodeSetContent(ret, "true"); } else { - xmlNodeSetContent(ret, "0"); + xmlNodeSetContent(ret, "false"); } if (data == &tmp) { @@ -1376,6 +1376,16 @@ static int model_to_xml_object(xmlNodePtr node, sdlContentModelPtr model, zval * } } return 1; + } else if (strict && model->u.element->nillable) { + property = xmlNewNode(NULL,model->u.element->name); + xmlAddChild(node, property); + if (style == SOAP_ENCODED) { + xmlSetProp(property, "xsi:nil", "1"); + } else { + xmlNsPtr xsi = encode_add_ns(property,XSI_NAMESPACE); + xmlSetNsProp(property, xsi, "nil", "1"); + } + return 1; } else if (model->min_occurs == 0) { return 2; } else { diff --git a/ext/soap/tests/interop/Round2/Base/r2_base_021p.phpt b/ext/soap/tests/interop/Round2/Base/r2_base_021p.phpt index 132cd0bcb4..69edf346d9 100644 --- a/ext/soap/tests/interop/Round2/Base/r2_base_021p.phpt +++ b/ext/soap/tests/interop/Round2/Base/r2_base_021p.phpt @@ -13,7 +13,7 @@ echo "ok\n"; ?> --EXPECT-- -1 +true -1 +true ok diff --git a/ext/soap/tests/interop/Round2/Base/r2_base_021s.phpt b/ext/soap/tests/interop/Round2/Base/r2_base_021s.phpt index fce28ed86e..8f2a66fc50 100644 --- a/ext/soap/tests/interop/Round2/Base/r2_base_021s.phpt +++ b/ext/soap/tests/interop/Round2/Base/r2_base_021s.phpt @@ -13,7 +13,7 @@ echo "ok\n"; ?> --EXPECT-- -1 +true -1 +true ok diff --git a/ext/soap/tests/interop/Round2/Base/r2_base_021w.phpt b/ext/soap/tests/interop/Round2/Base/r2_base_021w.phpt index e2ed997991..1e4cb4ee25 100644 --- a/ext/soap/tests/interop/Round2/Base/r2_base_021w.phpt +++ b/ext/soap/tests/interop/Round2/Base/r2_base_021w.phpt @@ -13,7 +13,7 @@ echo "ok\n"; ?> --EXPECT-- -1 +true -1 +true ok diff --git a/ext/soap/tests/interop/Round2/Base/r2_base_022p.phpt b/ext/soap/tests/interop/Round2/Base/r2_base_022p.phpt index 1aeb21d90b..07322b9876 100644 --- a/ext/soap/tests/interop/Round2/Base/r2_base_022p.phpt +++ b/ext/soap/tests/interop/Round2/Base/r2_base_022p.phpt @@ -13,7 +13,7 @@ echo "ok\n"; ?> --EXPECT-- -0 +false -0 +false ok diff --git a/ext/soap/tests/interop/Round2/Base/r2_base_022s.phpt b/ext/soap/tests/interop/Round2/Base/r2_base_022s.phpt index 8c43f420a4..9f4309cc31 100644 --- a/ext/soap/tests/interop/Round2/Base/r2_base_022s.phpt +++ b/ext/soap/tests/interop/Round2/Base/r2_base_022s.phpt @@ -13,7 +13,7 @@ echo "ok\n"; ?> --EXPECT-- -0 +false -0 +false ok diff --git a/ext/soap/tests/interop/Round2/Base/r2_base_022w.phpt b/ext/soap/tests/interop/Round2/Base/r2_base_022w.phpt index 62b32c45bd..5add7e5e83 100644 --- a/ext/soap/tests/interop/Round2/Base/r2_base_022w.phpt +++ b/ext/soap/tests/interop/Round2/Base/r2_base_022w.phpt @@ -13,7 +13,7 @@ echo "ok\n"; ?> --EXPECT-- -0 +false -0 +false ok diff --git a/ext/soap/tests/interop/Round2/Base/r2_base_023p.phpt b/ext/soap/tests/interop/Round2/Base/r2_base_023p.phpt index 885205e4d5..65dcad2733 100644 --- a/ext/soap/tests/interop/Round2/Base/r2_base_023p.phpt +++ b/ext/soap/tests/interop/Round2/Base/r2_base_023p.phpt @@ -15,5 +15,5 @@ echo "ok\n"; 1 -1 +true ok diff --git a/ext/soap/tests/interop/Round2/Base/r2_base_023s.phpt b/ext/soap/tests/interop/Round2/Base/r2_base_023s.phpt index f52184a78a..8985f38f4a 100644 --- a/ext/soap/tests/interop/Round2/Base/r2_base_023s.phpt +++ b/ext/soap/tests/interop/Round2/Base/r2_base_023s.phpt @@ -13,7 +13,7 @@ echo "ok\n"; ?> --EXPECT-- -1 +true -1 +true ok diff --git a/ext/soap/tests/interop/Round2/Base/r2_base_023w.phpt b/ext/soap/tests/interop/Round2/Base/r2_base_023w.phpt index 6603e1e312..ca4eff0fcb 100644 --- a/ext/soap/tests/interop/Round2/Base/r2_base_023w.phpt +++ b/ext/soap/tests/interop/Round2/Base/r2_base_023w.phpt @@ -13,7 +13,7 @@ echo "ok\n"; ?> --EXPECT-- -1 +true -1 +true ok diff --git a/ext/soap/tests/interop/Round2/Base/r2_base_024p.phpt b/ext/soap/tests/interop/Round2/Base/r2_base_024p.phpt index 543486df8a..f55f095019 100644 --- a/ext/soap/tests/interop/Round2/Base/r2_base_024p.phpt +++ b/ext/soap/tests/interop/Round2/Base/r2_base_024p.phpt @@ -15,5 +15,5 @@ echo "ok\n"; 0 -0 +false ok diff --git a/ext/soap/tests/interop/Round2/Base/r2_base_024s.phpt b/ext/soap/tests/interop/Round2/Base/r2_base_024s.phpt index dd3a3520b8..f10e7629ab 100644 --- a/ext/soap/tests/interop/Round2/Base/r2_base_024s.phpt +++ b/ext/soap/tests/interop/Round2/Base/r2_base_024s.phpt @@ -13,7 +13,7 @@ echo "ok\n"; ?> --EXPECT-- -0 +false -0 +false ok diff --git a/ext/soap/tests/interop/Round2/Base/r2_base_024w.phpt b/ext/soap/tests/interop/Round2/Base/r2_base_024w.phpt index 359e620849..96187fbb03 100644 --- a/ext/soap/tests/interop/Round2/Base/r2_base_024w.phpt +++ b/ext/soap/tests/interop/Round2/Base/r2_base_024w.phpt @@ -13,7 +13,7 @@ echo "ok\n"; ?> --EXPECT-- -0 +false -0 +false ok diff --git a/ext/soap/tests/interop/Round3/GroupD/r3_groupD_compound1_001w.phpt b/ext/soap/tests/interop/Round3/GroupD/r3_groupD_compound1_001w.phpt index 3a047a93c5..4b37558d1c 100644 --- a/ext/soap/tests/interop/Round3/GroupD/r3_groupD_compound1_001w.phpt +++ b/ext/soap/tests/interop/Round3/GroupD/r3_groupD_compound1_001w.phpt @@ -22,7 +22,7 @@ echo "ok\n"; ?> --EXPECT-- -3212345 +3212345 -3212345 +3212345 ok diff --git a/ext/soap/tests/interop/Round3/GroupD/r3_groupD_compound2_001w.phpt b/ext/soap/tests/interop/Round3/GroupD/r3_groupD_compound2_001w.phpt index ee74a962f6..9aa448ce9e 100644 --- a/ext/soap/tests/interop/Round3/GroupD/r3_groupD_compound2_001w.phpt +++ b/ext/soap/tests/interop/Round3/GroupD/r3_groupD_compound2_001w.phpt @@ -31,7 +31,7 @@ echo "ok\n"; ?> --EXPECT-- -Shane1100000012345 +Shanetrue100000012345 -Shane1100000012345 +Shanetrue100000012345 ok diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_007w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_007w.phpt index 2b5de618e4..77f3b24d53 100644 --- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_007w.phpt +++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_007w.phpt @@ -46,6 +46,6 @@ echo "ok\n"; ?> --EXPECT-- -1s111.11s222.22arg-35s333.33arg-351 +1s111.11s222.22arg-35s333.33arg-35true SOAP-ENV:ServerFault in response to 'echoMultipleFaults2'.s111.11 diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_008w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_008w.phpt index 1e4a1a2a2d..aebb9e9ef5 100644 --- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_008w.phpt +++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_008w.phpt @@ -46,6 +46,6 @@ echo "ok\n"; ?> --EXPECT-- -2s111.11s222.22arg-35s333.33arg-351 +2s111.11s222.22arg-35s333.33arg-35true SOAP-ENV:ServerFault in response to 'echoMultipleFaults2'.s222.22arg-35 diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_009w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_009w.phpt index 5993012b03..a27c2ad012 100644 --- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_009w.phpt +++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_009w.phpt @@ -46,6 +46,6 @@ echo "ok\n"; ?> --EXPECT-- -3s111.11s222.22arg-35s333.33arg-351 +3s111.11s222.22arg-35s333.33arg-35true -SOAP-ENV:ServerFault in response to 'echoMultipleFaults2'.s333.33arg-351 +SOAP-ENV:ServerFault in response to 'echoMultipleFaults2'.s333.33arg-35true diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_010w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_010w.phpt index b97f397ec6..adf98fc259 100644 --- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_010w.phpt +++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_010w.phpt @@ -46,6 +46,6 @@ echo "ok\n"; ?> --EXPECT-- -4s111.11s222.22arg-35s333.33arg-351 +4s111.11s222.22arg-35s333.33arg-35true SOAP-ENV:ServerFault in response to 'echoMultipleFaults2'.s111.11 diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_007w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_007w.phpt index 5bfe663760..1184b41e46 100644 --- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_007w.phpt +++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_007w.phpt @@ -36,6 +36,6 @@ echo "ok\n"; ?> --EXPECT-- -112.345112.3452arg-3512.3453arg-351 +112.345112.3452arg-3512.3453arg-35true SOAP-ENV:ServerFault in response to 'echoMultipleFaults2'.12.3451 diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_008w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_008w.phpt index a9424cb8a3..0d0a800fa1 100644 --- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_008w.phpt +++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_008w.phpt @@ -36,6 +36,6 @@ echo "ok\n"; ?> --EXPECT-- -212.345112.3452arg-3512.3453arg-351 +212.345112.3452arg-3512.3453arg-35true SOAP-ENV:ServerFault in response to 'echoMultipleFaults2'.12.3452arg-35 diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_009w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_009w.phpt index c2c4038da1..21f643a569 100644 --- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_009w.phpt +++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_009w.phpt @@ -36,6 +36,6 @@ echo "ok\n"; ?> --EXPECT-- -312.345112.3452arg-3512.3453arg-351 +312.345112.3452arg-3512.3453arg-35true -SOAP-ENV:ServerFault in response to 'echoMultipleFaults2'.12.3453arg-351 +SOAP-ENV:ServerFault in response to 'echoMultipleFaults2'.12.3453arg-35true diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_010w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_010w.phpt index 7099391bd8..7cf18fb366 100644 --- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_010w.phpt +++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_010w.phpt @@ -36,6 +36,6 @@ echo "ok\n"; ?> --EXPECT-- -412.345112.3452arg-3512.3453arg-351 +412.345112.3452arg-3512.3453arg-35true SOAP-ENV:ServerFault in response to 'echoMultipleFaults2'.12.3451 diff --git a/ext/soap/tests/interop/Round4/GroupI/r4_groupI_xsd_017w.phpt b/ext/soap/tests/interop/Round4/GroupI/r4_groupI_xsd_017w.phpt index 7661a60eb4..08900ac5e5 100644 --- a/ext/soap/tests/interop/Round4/GroupI/r4_groupI_xsd_017w.phpt +++ b/ext/soap/tests/interop/Round4/GroupI/r4_groupI_xsd_017w.phpt @@ -13,7 +13,7 @@ echo "ok\n"; ?> --EXPECT-- -1 +true -1 +true ok diff --git a/ext/soap/tests/soap12/T52.phpt b/ext/soap/tests/soap12/T52.phpt index 3034f0a297..9d75fb9823 100644 --- a/ext/soap/tests/soap12/T52.phpt +++ b/ext/soap/tests/soap12/T52.phpt @@ -21,5 +21,5 @@ include "soap12-test.inc"; ?> --EXPECT-- -return1 +returntrue ok diff --git a/ext/soap/tests/soap12/T77_1.phpt b/ext/soap/tests/soap12/T77_1.phpt index fea616a9be..d847b6cfd8 100644 --- a/ext/soap/tests/soap12/T77_1.phpt +++ b/ext/soap/tests/soap12/T77_1.phpt @@ -21,5 +21,5 @@ include "soap12-test.inc"; ?> --EXPECT-- -return1 +returntrue ok diff --git a/ext/soap/tests/soap12/T77_2.phpt b/ext/soap/tests/soap12/T77_2.phpt index 1e49e8a35e..c829b57892 100644 --- a/ext/soap/tests/soap12/T77_2.phpt +++ b/ext/soap/tests/soap12/T77_2.phpt @@ -20,5 +20,5 @@ include "soap12-test.inc"; ?> --EXPECT-- -return1 +returntrue ok diff --git a/ext/soap/tests/soap12/T77_3.phpt b/ext/soap/tests/soap12/T77_3.phpt index f404dd0bef..0e1355a5a2 100644 --- a/ext/soap/tests/soap12/T77_3.phpt +++ b/ext/soap/tests/soap12/T77_3.phpt @@ -23,5 +23,5 @@ include "soap12-test.inc"; ?> --EXPECT-- -return0 +returnfalse ok