From 51bac950944feb351061ad78a8da3c4044020d89 Mon Sep 17 00:00:00 2001 From: carlosc Date: Mon, 17 Sep 2018 10:28:34 +0200 Subject: [PATCH 1/3] Adjusted Request and Response binders --- .gitignore | 4 +--- .../RpcLiteralRequestMessageBinder.php | 12 +++++++----- .../RpcLiteralResponseMessageBinder.php | 3 ++- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index 72bd9c9f..1c2d52b6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1 @@ -/vendor/ -composer.lock -phpunit.xml +.idea/* diff --git a/src/BeSimple/SoapBundle/ServiceBinding/RpcLiteralRequestMessageBinder.php b/src/BeSimple/SoapBundle/ServiceBinding/RpcLiteralRequestMessageBinder.php index 13abf080..7834607b 100644 --- a/src/BeSimple/SoapBundle/ServiceBinding/RpcLiteralRequestMessageBinder.php +++ b/src/BeSimple/SoapBundle/ServiceBinding/RpcLiteralRequestMessageBinder.php @@ -49,13 +49,15 @@ public function processMessage(Method $messageDefinition, $message, TypeReposito protected function processType($phpType, $message) { $isArray = false; + $arrayOfTypeName = ''; $type = $this->typeRepository->getType($phpType); if ($type instanceof ArrayOfType) { $isArray = true; $array = array(); + $arrayOfTypeName = str_replace('ArrayOf', '', $type->getXmlType()); - $type = $this->typeRepository->getType($type->get('item')->getType()); + $type = $this->typeRepository->getType($type->get($arrayOfTypeName)->getType()); } // @TODO Fix array reference @@ -63,8 +65,8 @@ protected function processType($phpType, $message) $phpType = $type->getPhpType(); if ($isArray) { - if (isset($message->item)) { - foreach ($message->item as $complexType) { + if (isset($message->{$arrayOfTypeName})) { + foreach ($message->{$arrayOfTypeName} as $complexType) { $array[] = $this->checkComplexType($phpType, $complexType); } @@ -84,8 +86,8 @@ protected function processType($phpType, $message) $message = $this->checkComplexType($phpType, $message); } } elseif ($isArray) { - if (isset($message->item)) { - $message = $message->item; + if (isset($message->{$arrayOfTypeName})) { + $message = $message->{$arrayOfTypeName}; } else { $message = $array; } diff --git a/src/BeSimple/SoapBundle/ServiceBinding/RpcLiteralResponseMessageBinder.php b/src/BeSimple/SoapBundle/ServiceBinding/RpcLiteralResponseMessageBinder.php index b6b4361c..2de156d1 100644 --- a/src/BeSimple/SoapBundle/ServiceBinding/RpcLiteralResponseMessageBinder.php +++ b/src/BeSimple/SoapBundle/ServiceBinding/RpcLiteralResponseMessageBinder.php @@ -42,8 +42,9 @@ private function processType($phpType, $message) $type = $this->typeRepository->getType($phpType); if ($type instanceof ArrayOfType) { $isArray = true; + $arrayOfTypeName = str_replace('ArrayOf', '', $type->getXmlType()); - $type = $this->typeRepository->getType($type->get('item')->getType()); + $type = $this->typeRepository->getType($type->get($arrayOfTypeName)->getType()); } if ($type instanceof ComplexType) { From f1c06d0cd5dd91bb6097202f745051c8ba923586 Mon Sep 17 00:00:00 2001 From: carlosc Date: Mon, 17 Sep 2018 10:35:25 +0200 Subject: [PATCH 2/3] Updated ArrayOfType to use xml type instead of item --- src/BeSimple/SoapCommon/Definition/Type/ArrayOfType.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/BeSimple/SoapCommon/Definition/Type/ArrayOfType.php b/src/BeSimple/SoapCommon/Definition/Type/ArrayOfType.php index 6f052152..007681b9 100644 --- a/src/BeSimple/SoapCommon/Definition/Type/ArrayOfType.php +++ b/src/BeSimple/SoapCommon/Definition/Type/ArrayOfType.php @@ -25,6 +25,6 @@ public function __construct($phpType, $arrayOf, $xmlTypeOf) parent::__construct($phpType, 'ArrayOf'.ucfirst($xmlTypeOf ?: $arrayOf)); - $this->add('item', $arrayOf); + $this->add($xmlTypeOf, $arrayOf); } } From 7188d49658d2e5a168e3e3332beedeec903dd6cf Mon Sep 17 00:00:00 2001 From: carlosc Date: Mon, 17 Sep 2018 10:37:31 +0200 Subject: [PATCH 3/3] Added idea to ignore file --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 1c2d52b6..cd1adfe5 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,4 @@ +/vendor/ +composer.lock +phpunit.xml .idea/*