Moved Classmap instance in ServiceDefinition
This commit is contained in:
parent
ea65831c12
commit
bacdc90870
|
@ -56,7 +56,6 @@
|
||||||
|
|
||||||
<service id="besimple.soap.definition.dumper.wsdl.rpcliteral" class="%besimple.soap.definition.dumper.wsdl.rpcliteral.class%">
|
<service id="besimple.soap.definition.dumper.wsdl.rpcliteral" class="%besimple.soap.definition.dumper.wsdl.rpcliteral.class%">
|
||||||
<argument type="service" id="besimple.soap.definition.loader.annot_complextype" />
|
<argument type="service" id="besimple.soap.definition.loader.annot_complextype" />
|
||||||
<argument type="service" id="besimple.soap.server.classmap" />
|
|
||||||
<argument type="service" id="besimple.soap.type.repository" />
|
<argument type="service" id="besimple.soap.type.repository" />
|
||||||
<argument type="collection">
|
<argument type="collection">
|
||||||
<argument key="stylesheet">%besimple.soap.definition.dumper.options.stylesheet%</argument>
|
<argument key="stylesheet">%besimple.soap.definition.dumper.options.stylesheet%</argument>
|
||||||
|
|
|
@ -18,25 +18,21 @@ use BeSimple\SoapBundle\ServiceDefinition\Loader\AnnotationComplexTypeLoader;
|
||||||
use BeSimple\SoapBundle\Util\Assert;
|
use BeSimple\SoapBundle\Util\Assert;
|
||||||
use BeSimple\SoapBundle\Util\QName;
|
use BeSimple\SoapBundle\Util\QName;
|
||||||
|
|
||||||
use BeSimple\SoapCommon\Classmap;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Christian Kerl <christian-kerl@web.de>
|
* @author Christian Kerl <christian-kerl@web.de>
|
||||||
*/
|
*/
|
||||||
class WsdlDumper implements DumperInterface
|
class WsdlDumper implements DumperInterface
|
||||||
{
|
{
|
||||||
private $loader;
|
private $loader;
|
||||||
private $classmap;
|
|
||||||
private $typeRepository;
|
private $typeRepository;
|
||||||
private $options;
|
private $options;
|
||||||
|
|
||||||
private $wsdl;
|
private $wsdl;
|
||||||
private $definition;
|
private $definition;
|
||||||
|
|
||||||
public function __construct(AnnotationComplexTypeLoader $loader, Classmap $classmap, TypeRepository $typeRepository, array $options)
|
public function __construct(AnnotationComplexTypeLoader $loader, TypeRepository $typeRepository, array $options)
|
||||||
{
|
{
|
||||||
$this->loader = $loader;
|
$this->loader = $loader;
|
||||||
$this->classmap = $classmap;
|
|
||||||
$this->typeRepository = $typeRepository;
|
$this->typeRepository = $typeRepository;
|
||||||
$this->options = $options;
|
$this->options = $options;
|
||||||
}
|
}
|
||||||
|
@ -46,7 +42,7 @@ class WsdlDumper implements DumperInterface
|
||||||
Assert::thatArgumentNotNull('definition', $definition);
|
Assert::thatArgumentNotNull('definition', $definition);
|
||||||
|
|
||||||
$this->definition = $definition;
|
$this->definition = $definition;
|
||||||
$this->wsdl = new Wsdl($this->typeRepository, $definition->getName(), $definition->getNamespace(), new WsdlTypeStrategy($this->loader, $this->classmap, $definition));
|
$this->wsdl = new Wsdl($this->typeRepository, $definition->getName(), $definition->getNamespace(), new WsdlTypeStrategy($this->loader, $definition));
|
||||||
$port = $this->wsdl->addPortType($this->getPortTypeName());
|
$port = $this->wsdl->addPortType($this->getPortTypeName());
|
||||||
$binding = $this->wsdl->addBinding($this->getBindingName(), $this->qualify($this->getPortTypeName()));
|
$binding = $this->wsdl->addBinding($this->getBindingName(), $this->qualify($this->getPortTypeName()));
|
||||||
|
|
||||||
|
|
|
@ -15,8 +15,6 @@ use BeSimple\SoapBundle\ServiceDefinition\Loader\AnnotationComplexTypeLoader;
|
||||||
use BeSimple\SoapBundle\ServiceDefinition\Strategy\ComplexType;
|
use BeSimple\SoapBundle\ServiceDefinition\Strategy\ComplexType;
|
||||||
use BeSimple\SoapBundle\Util\String;
|
use BeSimple\SoapBundle\Util\String;
|
||||||
|
|
||||||
use BeSimple\SoapCommon\Classmap;
|
|
||||||
|
|
||||||
use Zend\Soap\Exception;
|
use Zend\Soap\Exception;
|
||||||
use Zend\Soap\Wsdl as BaseWsdl;
|
use Zend\Soap\Wsdl as BaseWsdl;
|
||||||
use Zend\Soap\Wsdl\Strategy;
|
use Zend\Soap\Wsdl\Strategy;
|
||||||
|
@ -32,16 +30,14 @@ class WsdlTypeStrategy implements Strategy
|
||||||
private $context;
|
private $context;
|
||||||
|
|
||||||
private $loader;
|
private $loader;
|
||||||
private $classmap;
|
|
||||||
private $definition;
|
private $definition;
|
||||||
|
|
||||||
private $typeStrategy;
|
private $typeStrategy;
|
||||||
private $arrayStrategy;
|
private $arrayStrategy;
|
||||||
|
|
||||||
public function __construct(AnnotationComplexTypeLoader $loader, Classmap $classmap, ServiceDefinition $definition)
|
public function __construct(AnnotationComplexTypeLoader $loader, ServiceDefinition $definition)
|
||||||
{
|
{
|
||||||
$this->loader = $loader;
|
$this->loader = $loader;
|
||||||
$this->classmap = $classmap;
|
|
||||||
$this->definition = $definition;
|
$this->definition = $definition;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -90,7 +86,7 @@ class WsdlTypeStrategy implements Strategy
|
||||||
private function getTypeStrategy()
|
private function getTypeStrategy()
|
||||||
{
|
{
|
||||||
if (!$this->typeStrategy) {
|
if (!$this->typeStrategy) {
|
||||||
$this->typeStrategy = new ComplexType($this->loader, $this->classmap, $this->definition);
|
$this->typeStrategy = new ComplexType($this->loader, $this->definition);
|
||||||
$this->typeStrategy->setContext($this->context);
|
$this->typeStrategy->setContext($this->context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
namespace BeSimple\SoapBundle\ServiceDefinition;
|
namespace BeSimple\SoapBundle\ServiceDefinition;
|
||||||
|
|
||||||
use BeSimple\SoapBundle\Util\Collection;
|
use BeSimple\SoapBundle\Util\Collection;
|
||||||
|
use BeSimple\SoapCommon\Classmap;
|
||||||
|
|
||||||
class ServiceDefinition
|
class ServiceDefinition
|
||||||
{
|
{
|
||||||
|
@ -29,16 +30,22 @@ class ServiceDefinition
|
||||||
*/
|
*/
|
||||||
private $methods;
|
private $methods;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var \BeSimple\SoapCommon\Classmap
|
||||||
|
*/
|
||||||
|
private $classmap;
|
||||||
|
|
||||||
private $complexTypes = array();
|
private $complexTypes = array();
|
||||||
|
|
||||||
public function __construct($name = null, $namespace = null, array $methods = array())
|
public function __construct($name = null, $namespace = null, array $methods = array(), Classmap $classmap = null)
|
||||||
{
|
{
|
||||||
$this->setName($name);
|
$this->setName($name);
|
||||||
$this->setNamespace($namespace);
|
$this->setNamespace($namespace);
|
||||||
|
|
||||||
$this->methods = new Collection('getName', 'BeSimple\SoapBundle\ServiceDefinition\Method');
|
$this->methods = new Collection('getName', 'BeSimple\SoapBundle\ServiceDefinition\Method');
|
||||||
|
|
||||||
$this->setMethods($methods);
|
$this->setMethods($methods);
|
||||||
|
|
||||||
|
$this->classmap = $classmap;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -111,6 +118,16 @@ class ServiceDefinition
|
||||||
return $types;
|
return $types;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getClassmap()
|
||||||
|
{
|
||||||
|
return $this->classmap ?: array();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setClassmap(Classmap $classmap)
|
||||||
|
{
|
||||||
|
$this->classmap = $classmap;
|
||||||
|
}
|
||||||
|
|
||||||
public function addDefinitionComplexType($type, Collection $complexType)
|
public function addDefinitionComplexType($type, Collection $complexType)
|
||||||
{
|
{
|
||||||
$this->complexTypes[$type] = $complexType;
|
$this->complexTypes[$type] = $complexType;
|
||||||
|
|
|
@ -11,8 +11,6 @@
|
||||||
namespace BeSimple\SoapBundle\ServiceDefinition\Strategy;
|
namespace BeSimple\SoapBundle\ServiceDefinition\Strategy;
|
||||||
|
|
||||||
use BeSimple\SoapBundle\ServiceDefinition\Loader\AnnotationComplexTypeLoader;
|
use BeSimple\SoapBundle\ServiceDefinition\Loader\AnnotationComplexTypeLoader;
|
||||||
|
|
||||||
use BeSimple\SoapCommon\Classmap;
|
|
||||||
use Zend\Soap\Wsdl;
|
use Zend\Soap\Wsdl;
|
||||||
use Zend\Soap\Wsdl\Strategy\AbstractStrategy;
|
use Zend\Soap\Wsdl\Strategy\AbstractStrategy;
|
||||||
|
|
||||||
|
@ -22,13 +20,11 @@ use Zend\Soap\Wsdl\Strategy\AbstractStrategy;
|
||||||
class ComplexType extends AbstractStrategy
|
class ComplexType extends AbstractStrategy
|
||||||
{
|
{
|
||||||
private $loader;
|
private $loader;
|
||||||
private $classmap;
|
|
||||||
private $definition;
|
private $definition;
|
||||||
|
|
||||||
public function __construct(AnnotationComplexTypeLoader $loader, Classmap $classmap, $definition)
|
public function __construct(AnnotationComplexTypeLoader $loader, $definition)
|
||||||
{
|
{
|
||||||
$this->loader = $loader;
|
$this->loader = $loader;
|
||||||
$this->classmap = $classmap;
|
|
||||||
$this->definition = $definition;
|
$this->definition = $definition;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,7 +49,7 @@ class ComplexType extends AbstractStrategy
|
||||||
$soapTypeName = Wsdl::translateType($type);
|
$soapTypeName = Wsdl::translateType($type);
|
||||||
$soapType = 'tns:'.$soapTypeName;
|
$soapType = 'tns:'.$soapTypeName;
|
||||||
|
|
||||||
$this->classmap->add($soapTypeName, $type);
|
$this->definition->getClassmap()->add($soapTypeName, $type);
|
||||||
|
|
||||||
// Register type here to avoid recursion
|
// Register type here to avoid recursion
|
||||||
$this->getContext()->addType($type, $soapType);
|
$this->getContext()->addType($type, $soapType);
|
||||||
|
|
|
@ -69,6 +69,9 @@ class WebServiceContext
|
||||||
$this->serviceDefinition->setName($this->options['name']);
|
$this->serviceDefinition->setName($this->options['name']);
|
||||||
$this->serviceDefinition->setNamespace($this->options['namespace']);
|
$this->serviceDefinition->setNamespace($this->options['namespace']);
|
||||||
|
|
||||||
|
$this->serviceDefinition->setClassmap($this->classmap);
|
||||||
|
$this->classmap = null;
|
||||||
|
|
||||||
$this->typeRepository->fixTypeInformation($this->serviceDefinition);
|
$this->typeRepository->fixTypeInformation($this->serviceDefinition);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -117,7 +120,7 @@ class WebServiceContext
|
||||||
if (null === $this->serverBuilder) {
|
if (null === $this->serverBuilder) {
|
||||||
$this->serverBuilder = SoapServerBuilder::createWithDefaults()
|
$this->serverBuilder = SoapServerBuilder::createWithDefaults()
|
||||||
->withWsdl($this->getWsdlFile())
|
->withWsdl($this->getWsdlFile())
|
||||||
->withClassmap($this->classmap)
|
->withClassmap($this->getServiceDefinition()->getClassmap())
|
||||||
->withTypeConverters($this->converters)
|
->withTypeConverters($this->converters)
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue