From aa0b750f47f400476e7673115eebbbbd53423b5c Mon Sep 17 00:00:00 2001 From: William Petit Date: Thu, 12 Sep 2019 11:43:53 +0200 Subject: [PATCH] Revert "Array support change" This reverts commit 3f2a99adf6133910f36bf00f19a57accb59e1e40. --- .../Controller/SoapWebServiceController.php | 39 +++++++++---------- .../RpcLiteralRequestMessageBinder.php | 18 +-------- .../Annotation/ComplexType.php | 21 ---------- .../ServiceDefinition/ComplexType.php | 21 ---------- .../Loader/AnnotationClassLoader.php | 2 +- .../Loader/AnnotationComplexTypeLoader.php | 1 - src/BeSimple/SoapBundle/WebServiceContext.php | 5 +-- .../SoapCommon/Definition/Message.php | 4 +- src/BeSimple/SoapCommon/Definition/Part.php | 24 +----------- src/BeSimple/SoapWsdl/Dumper/Dumper.php | 21 +++------- 10 files changed, 30 insertions(+), 126 deletions(-) diff --git a/src/BeSimple/SoapBundle/Controller/SoapWebServiceController.php b/src/BeSimple/SoapBundle/Controller/SoapWebServiceController.php index 97246eb..05631c9 100644 --- a/src/BeSimple/SoapBundle/Controller/SoapWebServiceController.php +++ b/src/BeSimple/SoapBundle/Controller/SoapWebServiceController.php @@ -19,7 +19,6 @@ use BeSimple\SoapBundle\WebServiceContext; use BeSimple\SoapServer\SoapServerBuilder; use Symfony\Component\DependencyInjection\ContainerAwareInterface; use Symfony\Component\DependencyInjection\ContainerAwareTrait; -use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Debug\Exception\FlattenException; @@ -59,7 +58,7 @@ class SoapWebServiceController implements ContainerAwareInterface /** * @var array */ - private $headers = array(); + private $headers = []; /** * @return \BeSimple\SoapBundle\Soap\SoapResponse @@ -67,12 +66,12 @@ class SoapWebServiceController implements ContainerAwareInterface public function callAction($webservice) { /** @var WebServiceContext $webServiceContext */ - $webServiceContext = $this->getWebServiceContext($webservice); + $webServiceContext = $this->getWebServiceContext($webservice); $this->serviceBinder = $webServiceContext->getServiceBinder(); $this->soapRequest = SoapRequest::createFromHttpRequest($this->container->get('request_stack')->getCurrentRequest()); - $this->soapServer = $webServiceContext + $this->soapServer = $webServiceContext ->getServerBuilder() ->withSoapVersion11() ->withHandler($this) @@ -96,14 +95,14 @@ class SoapWebServiceController implements ContainerAwareInterface { $routeName = $webservice . '_webservice_call'; $result = $this->container->get('router')->getRouteCollection()->get($routeName); - if ($result === null) { + if (null === $result) { $routeName = '_webservice_call'; } $response = new Response($this->getWebServiceContext($webservice)->getWsdlFileContent( $this->container->get('router')->generate( $routeName, - array('webservice' => $webservice), + ['webservice' => $webservice], UrlGeneratorInterface::ABSOLUTE_URL ) )); @@ -135,14 +134,14 @@ class SoapWebServiceController implements ContainerAwareInterface throw new \LogicException(sprintf('The parameter "%s" is required in Request::$query parameter bag to generate the SoapFault.', '_besimple_soap_webservice'), null, $e); } - $view = '@Twig/Exception/'.($this->container->get('kernel')->isDebug() ? 'exception' : 'error').'.txt.twig'; + $view = '@Twig/Exception/' . ($this->container->get('kernel')->isDebug() ? 'exception' : 'error') . '.txt.twig'; $code = $exception->getStatusCode(); - $details = $this->container->get('twig')->render($view, array( + $details = $this->container->get('twig')->render($view, [ 'status_code' => $code, 'status_text' => isset(Response::$statusTexts[$code]) ? Response::$statusTexts[$code] : '', - 'exception' => $exception, - 'logger' => $logger, - )); + 'exception' => $exception, + 'logger' => $logger, + ]); $handler = new ExceptionHandler($exception, $details); if ($soapFault = $request->query->get('_besimple_soap_fault')) { @@ -153,7 +152,7 @@ class SoapWebServiceController implements ContainerAwareInterface } $server = SoapServerBuilder::createWithDefaults() - ->withWsdl(__DIR__.'/../Handler/wsdl/exception.wsdl') + ->withWsdl(__DIR__ . '/../Handler/wsdl/exception.wsdl') ->withWsdlCacheNone() ->withHandler($handler) ->build() @@ -161,11 +160,11 @@ class SoapWebServiceController implements ContainerAwareInterface ob_start(); $server->handle( - ''. - ''. - ''. - ''. - ''. + '' . + '' . + '' . + '' . + '' . '' ); @@ -176,8 +175,8 @@ class SoapWebServiceController implements ContainerAwareInterface * This method gets called once for every SOAP header the \SoapServer received * and afterwards once for the called SOAP operation. * - * @param string $method The SOAP header or SOAP operation name - * @param array $arguments + * @param string $method The SOAP header or SOAP operation name + * @param array $arguments * * @return mixed */ @@ -234,7 +233,7 @@ class SoapWebServiceController implements ContainerAwareInterface } /** - * Set the SoapResponse + * Set the SoapResponse. * * @param Response $response A response to check and set * diff --git a/src/BeSimple/SoapBundle/ServiceBinding/RpcLiteralRequestMessageBinder.php b/src/BeSimple/SoapBundle/ServiceBinding/RpcLiteralRequestMessageBinder.php index b743a51..13abf08 100644 --- a/src/BeSimple/SoapBundle/ServiceBinding/RpcLiteralRequestMessageBinder.php +++ b/src/BeSimple/SoapBundle/ServiceBinding/RpcLiteralRequestMessageBinder.php @@ -55,8 +55,7 @@ class RpcLiteralRequestMessageBinder implements MessageBinderInterface $isArray = true; $array = array(); - $phpType = substr($type->getPhpType(), 0, strlen($type->getPhpType()) - 2); - $type = $this->typeRepository->getType($phpType); + $type = $this->typeRepository->getType($type->get('item')->getType()); } // @TODO Fix array reference @@ -79,21 +78,6 @@ class RpcLiteralRequestMessageBinder implements MessageBinderInterface $array = $assocArray; } } - if (is_array($message)) { - foreach ($message as $complexType) { - $array[] = $this->checkComplexType($phpType, $complexType); - } - - // See https://github.com/BeSimple/BeSimpleSoapBundle/issues/29 - if (in_array('BeSimple\SoapCommon\Type\AbstractKeyValue', class_parents($phpType))) { - $assocArray = array(); - foreach ($array as $keyValue) { - $assocArray[$keyValue->getKey()] = $keyValue->getValue(); - } - - $array = $assocArray; - } - } $message = $array; } else { diff --git a/src/BeSimple/SoapBundle/ServiceDefinition/Annotation/ComplexType.php b/src/BeSimple/SoapBundle/ServiceDefinition/Annotation/ComplexType.php index d3d2a78..49122cf 100644 --- a/src/BeSimple/SoapBundle/ServiceDefinition/Annotation/ComplexType.php +++ b/src/BeSimple/SoapBundle/ServiceDefinition/Annotation/ComplexType.php @@ -18,7 +18,6 @@ class ComplexType extends Configuration private $name; private $value; private $isNillable = false; - private $isAttribute = false; public function getName() { @@ -60,26 +59,6 @@ class ComplexType extends Configuration $this->isNillable = (bool) $isNillable; } - /** - * @return bool - */ - public function isAttribute() - { - return $this->isAttribute; - } - - /** - * @param bool $isAttribute - * - * @return $this - */ - public function setIsAttribute($isAttribute) - { - $this->isAttribute = $isAttribute; - - return $this; - } - public function getAliasName() { return 'complextype'; diff --git a/src/BeSimple/SoapBundle/ServiceDefinition/ComplexType.php b/src/BeSimple/SoapBundle/ServiceDefinition/ComplexType.php index 7dca7f2..d0ae464 100644 --- a/src/BeSimple/SoapBundle/ServiceDefinition/ComplexType.php +++ b/src/BeSimple/SoapBundle/ServiceDefinition/ComplexType.php @@ -20,7 +20,6 @@ class ComplexType private $name; private $value; private $isNillable = false; - private $isAttribute = false; public function getName() { @@ -47,26 +46,6 @@ class ComplexType $this->value = $value; } - /** - * @return bool - */ - public function isAttribute() - { - return $this->isAttribute; - } - - /** - * @param bool $isAttribute - * - * @return $this - */ - public function setIsAttribute($isAttribute) - { - $this->isAttribute = $isAttribute; - - return $this; - } - public function setNillable($isNillable) { $this->isNillable = (bool) $isNillable; diff --git a/src/BeSimple/SoapBundle/ServiceDefinition/Loader/AnnotationClassLoader.php b/src/BeSimple/SoapBundle/ServiceDefinition/Loader/AnnotationClassLoader.php index 0903f18..5460a85 100644 --- a/src/BeSimple/SoapBundle/ServiceDefinition/Loader/AnnotationClassLoader.php +++ b/src/BeSimple/SoapBundle/ServiceDefinition/Loader/AnnotationClassLoader.php @@ -160,7 +160,7 @@ class AnnotationClassLoader extends Loader $loaded = $complexTypeResolver->load($phpType); $complexType = new ComplexType($phpType, isset($loaded['alias']) ? $loaded['alias'] : $phpType); foreach ($loaded['properties'] as $name => $property) { - $complexType->add($name, $this->loadType($property->getValue()), $property->isNillable(), $property->isAttribute()); + $complexType->add($name, $this->loadType($property->getValue()), $property->isNillable()); } $this->typeRepository->addComplexType($complexType); diff --git a/src/BeSimple/SoapBundle/ServiceDefinition/Loader/AnnotationComplexTypeLoader.php b/src/BeSimple/SoapBundle/ServiceDefinition/Loader/AnnotationComplexTypeLoader.php index 44089b6..1d3e095 100644 --- a/src/BeSimple/SoapBundle/ServiceDefinition/Loader/AnnotationComplexTypeLoader.php +++ b/src/BeSimple/SoapBundle/ServiceDefinition/Loader/AnnotationComplexTypeLoader.php @@ -58,7 +58,6 @@ class AnnotationComplexTypeLoader extends AnnotationClassLoader $propertyComplexType = new ComplexType(); $propertyComplexType->setValue($complexType->getValue()); $propertyComplexType->setNillable($complexType->isNillable()); - $propertyComplexType->setIsAttribute($complexType->isAttribute()); $propertyComplexType->setName($property->getName()); $annotations['properties']->add($propertyComplexType); } diff --git a/src/BeSimple/SoapBundle/WebServiceContext.php b/src/BeSimple/SoapBundle/WebServiceContext.php index 7947278..875659e 100644 --- a/src/BeSimple/SoapBundle/WebServiceContext.php +++ b/src/BeSimple/SoapBundle/WebServiceContext.php @@ -79,10 +79,7 @@ class WebServiceContext } $dumper = new Dumper($definition, array('stylesheet' => $this->options['wsdl_stylesheet'])); - - $wsdl = $dumper->dump(); - - $cache->write($wsdl); + $cache->write($dumper->dump()); } return $cache->getPath(); diff --git a/src/BeSimple/SoapCommon/Definition/Message.php b/src/BeSimple/SoapCommon/Definition/Message.php index 506c56d..caa78fe 100644 --- a/src/BeSimple/SoapCommon/Definition/Message.php +++ b/src/BeSimple/SoapCommon/Definition/Message.php @@ -48,13 +48,13 @@ class Message return 0 === count($this->parts) ? true : false; } - public function add($name, $phpType, $nillable = false, $attribute = false) + public function add($name, $phpType, $nillable = false) { if ($phpType instanceof TypeInterface) { $phpType = $phpType->getPhpType(); } - $this->parts[$name] = new Part($name, $phpType, $nillable, $attribute); + $this->parts[$name] = new Part($name, $phpType, $nillable); return $this; } diff --git a/src/BeSimple/SoapCommon/Definition/Part.php b/src/BeSimple/SoapCommon/Definition/Part.php index 925d293..317f046 100644 --- a/src/BeSimple/SoapCommon/Definition/Part.php +++ b/src/BeSimple/SoapCommon/Definition/Part.php @@ -20,14 +20,12 @@ class Part protected $name; protected $type; protected $nillable; - protected $attribute; - public function __construct($name, $type, $nillable = false, $attribute = false) + public function __construct($name, $type, $nillable = false) { $this->name = $name; $this->type = $type; $this->setNillable($nillable); - $this->setAttribute($attribute); } public function getName() @@ -35,26 +33,6 @@ class Part return $this->name; } - /** - * @return bool - */ - public function isAttribute() - { - return $this->attribute; - } - - /** - * @param bool $attribute - * - * @return $this - */ - public function setAttribute($attribute) - { - $this->attribute = $attribute; - - return $this; - } - public function getType() { return $this->type; diff --git a/src/BeSimple/SoapWsdl/Dumper/Dumper.php b/src/BeSimple/SoapWsdl/Dumper/Dumper.php index 736b608..a66120e 100644 --- a/src/BeSimple/SoapWsdl/Dumper/Dumper.php +++ b/src/BeSimple/SoapWsdl/Dumper/Dumper.php @@ -217,13 +217,11 @@ class Dumper protected function addComplexTypes() { - $types = $this->document->createElement(static::WSDL_NS . ':types'); + $types = $this->document->createElement('types'); $this->domDefinitions->appendChild($types); $this->domSchema = $this->document->createElement(static::XSD_NS.':schema'); $this->domSchema->setAttribute('targetNamespace', $this->definition->getNamespace()); - $this->domSchema->setAttribute('elementFormDefault', 'unqualified'); - $this->domSchema->setAttribute(static::XML_NS.':'.static::XSD_NS, static::XSD_NS_URI); $types->appendChild($this->domSchema); foreach ($this->definition->getTypeRepository()->getComplexTypes() as $type) { @@ -238,18 +236,13 @@ class Dumper $complexType = $this->document->createElement(static::XSD_NS.':complexType'); $complexType->setAttribute('name', $type->getXmlType()); - $all = $this->document->createElement(static::XSD_NS.':'.'sequence'); + $all = $this->document->createElement(static::XSD_NS.':'.($type instanceof ArrayOfType ? 'sequence' : 'all')); $complexType->appendChild($all); foreach ($type->all() as $child) { - $isArray = false; $childType = $this->definition->getTypeRepository()->getType($child->getType()); - if ($child->isAttribute()) { - $element = $this->document->createElement(static::XSD_NS.':attribute'); - } else { - $element = $this->document->createElement(static::XSD_NS.':element'); - } + $element = $this->document->createElement(static::XSD_NS.':element'); $element->setAttribute('name', $child->getName()); if ($childType instanceof ComplexType) { @@ -269,18 +262,14 @@ class Dumper $element->setAttribute('minOccurs', 1); } - if ($type instanceof ArrayOfType || $isArray) { + if ($type instanceof ArrayOfType) { $element->setAttribute('minOccurs', 0); $element->setAttribute('maxOccurs', 'unbounded'); } else { $element->setAttribute('maxOccurs', 1); } - if ($child->isAttribute()) { - $complexType->appendChild($element); - } else { - $all->appendChild($element); - } + $all->appendChild($element); } $this->domSchema->appendChild($complexType);