diff --git a/Converter/ConverterRepository.php b/Converter/ConverterRepository.php deleted file mode 100644 index a3d9392..0000000 --- a/Converter/ConverterRepository.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace BeSimple\SoapBundle\Converter; - -use Symfony\Component\DependencyInjection\ContainerInterface; - -/** - * @author Christian Kerl - */ -class ConverterRepository -{ - private $typeConverters = array(); - - public function addTypeConverter(TypeConverterInterface $converter) - { - $this->typeConverters[] = $converter; - } - - public function getTypeConverters() - { - return $this->typeConverters; - } -} diff --git a/Converter/DateTimeTypeConverter.php b/Converter/DateTimeTypeConverter.php deleted file mode 100644 index 9f692fc..0000000 --- a/Converter/DateTimeTypeConverter.php +++ /dev/null @@ -1,44 +0,0 @@ - - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace BeSimple\SoapBundle\Converter; - -use BeSimple\SoapBundle\Soap\SoapRequest; -use BeSimple\SoapBundle\Soap\SoapResponse; -use BeSimple\SoapBundle\Util\String; - -/** - * @author Christian Kerl - */ -class DateTimeTypeConverter implements TypeConverterInterface -{ - public function getTypeNamespace() - { - return 'http://www.w3.org/2001/XMLSchema'; - } - - public function getTypeName() - { - return 'dateTime'; - } - - public function convertXmlToPhp(SoapRequest $request, $data) - { - $doc = new \DOMDocument(); - $doc->loadXML($data); - - return new \DateTime($doc->textContent); - } - - public function convertPhpToXml(SoapResponse $response, $data) - { - return sprintf('<%1$s>%2$s', $this->getTypeName(), $data->format('Y-m-d\TH:i:sP')); - } -} diff --git a/Converter/DateTypeConverter.php b/Converter/DateTypeConverter.php deleted file mode 100644 index 61f7119..0000000 --- a/Converter/DateTypeConverter.php +++ /dev/null @@ -1,44 +0,0 @@ - - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace BeSimple\SoapBundle\Converter; - -use BeSimple\SoapBundle\Soap\SoapRequest; -use BeSimple\SoapBundle\Soap\SoapResponse; -use BeSimple\SoapBundle\Util\String; - -/** - * @author Francis Besset - */ -class DateTypeConverter implements TypeConverterInterface -{ - public function getTypeNamespace() - { - return 'http://www.w3.org/2001/XMLSchema'; - } - - public function getTypeName() - { - return 'date'; - } - - public function convertXmlToPhp(SoapRequest $request, $data) - { - $doc = new \DOMDocument(); - $doc->loadXML($data); - - return new \DateTime($doc->textContent); - } - - public function convertPhpToXml(SoapResponse $response, $data) - { - return sprintf('<%1$s>%2$s', $this->getTypeName(), $data->format('Y-m-d')); - } -} diff --git a/Converter/TypeConverterInterface.php b/Converter/TypeConverterInterface.php deleted file mode 100644 index ae74ed3..0000000 --- a/Converter/TypeConverterInterface.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace BeSimple\SoapBundle\Converter; - -use BeSimple\SoapBundle\Soap\SoapRequest; -use BeSimple\SoapBundle\Soap\SoapResponse; - -/** - * @author Christian Kerl - */ -interface TypeConverterInterface -{ - function getTypeNamespace(); - - function getTypeName(); - - function convertXmlToPhp(SoapRequest $request, $data); - - function convertPhpToXml(SoapResponse $response, $data); -} \ No newline at end of file diff --git a/DependencyInjection/Compiler/TypeConverterPass.php b/DependencyInjection/Compiler/TypeConverterPass.php index be97bb6..828c9c9 100644 --- a/DependencyInjection/Compiler/TypeConverterPass.php +++ b/DependencyInjection/Compiler/TypeConverterPass.php @@ -23,14 +23,14 @@ class TypeConverterPass implements CompilerPassInterface { public function process(ContainerBuilder $container) { - if (false === $container->hasDefinition('besimple.soap.converter.repository')) { + if (false === $container->hasDefinition('besimple.soap.converter.collection')) { return; } - $definition = $container->getDefinition('besimple.soap.converter.repository'); + $definition = $container->getDefinition('besimple.soap.converter.collection'); foreach ($container->findTaggedServiceIds('besimple.soap.converter') as $id => $attributes) { - $definition->addMethodCall('addTypeConverter', array(new Reference($id))); + $definition->addMethodCall('add', array(new Reference($id))); } } } diff --git a/Resources/config/converters.xml b/Resources/config/converters.xml index ec6e5c5..f3f9c52 100644 --- a/Resources/config/converters.xml +++ b/Resources/config/converters.xml @@ -5,13 +5,13 @@ xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd"> - BeSimple\SoapBundle\Converter\ConverterRepository - BeSimple\SoapBundle\Converter\DateTimeTypeConverter - BeSimple\SoapBundle\Converter\DateTypeConverter + BeSimple\SoapCommon\Converter\TypeConverterCollection + BeSimple\SoapCommon\Converter\DateTimeTypeConverter + BeSimple\SoapCommon\Converter\DateTypeConverter - + diff --git a/Resources/config/webservice.xml b/Resources/config/webservice.xml index 71adcfa..d23f7ed 100644 --- a/Resources/config/webservice.xml +++ b/Resources/config/webservice.xml @@ -24,7 +24,7 @@ - + %besimple.soap.cache_dir% %kernel.debug% @@ -40,7 +40,7 @@ - + %besimple.soap.cache_dir% %kernel.debug% diff --git a/Soap/SoapServerFactory.php b/Soap/SoapServerFactory.php index 00d9204..8db8b85 100644 --- a/Soap/SoapServerFactory.php +++ b/Soap/SoapServerFactory.php @@ -10,8 +10,9 @@ namespace BeSimple\SoapBundle\Soap; -use BeSimple\SoapBundle\Converter\ConverterRepository; use BeSimple\SoapCommon\Cache; +use BeSimple\SoapCommon\Converter\TypeConverterCollection; + use Zend\Soap\Wsdl; /** @@ -24,7 +25,7 @@ class SoapServerFactory private $converters; private $options; - public function __construct($wsdlFile, array $classmap, ConverterRepository $converters, array $options = array()) + public function __construct($wsdlFile, array $classmap, TypeConverterCollection $converters, array $options = array()) { $this->wsdlFile = $wsdlFile; $this->classmap = $this->fixSoapServerClassmap($classmap); @@ -77,15 +78,15 @@ class SoapServerFactory { $typemap = array(); - foreach($this->converters->getTypeConverters() as $typeConverter) { + foreach($this->converters->all() as $typeConverter) { $typemap[] = array( 'type_name' => $typeConverter->getTypeName(), 'type_ns' => $typeConverter->getTypeNamespace(), - 'from_xml' => function($input) use ($request, $typeConverter) { - return $typeConverter->convertXmlToPhp($request, $input); + 'from_xml' => function($input) use ($typeConverter) { + return $typeConverter->convertXmlToPhp($input); }, - 'to_xml' => function($input) use ($response, $typeConverter) { - return $typeConverter->convertPhpToXml($response, $input); + 'to_xml' => function($input) use ($typeConverter) { + return $typeConverter->convertPhpToXml($input); }, ); } diff --git a/Tests/Converter/DateTimeTypeConverterTest.php b/Tests/Converter/DateTimeTypeConverterTest.php deleted file mode 100644 index b04acd3..0000000 --- a/Tests/Converter/DateTimeTypeConverterTest.php +++ /dev/null @@ -1,43 +0,0 @@ - - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace BeSimple\SoapBundle\Tests\Converter; - -use BeSimple\SoapBundle\Soap\SoapRequest; -use BeSimple\SoapBundle\Soap\SoapResponse; -use BeSimple\SoapBundle\Converter\DateTimeTypeConverter; - -/** - * UnitTest for \BeSimple\SoapBundle\Converter\DateTimeTypeConverter. - * - * @author Christian Kerl - */ -class DateTimeTypeConverterTest extends \PHPUnit_Framework_TestCase -{ - public function testConvertXmlToPhp() - { - $converter = new DateTimeTypeConverter(); - - $dateXml = '2002-10-10T12:00:00-05:00'; - $date = $converter->convertXmlToPhp(new SoapRequest(), $dateXml); - - $this->assertEquals(new \DateTime('2002-10-10T12:00:00-05:00'), $date); - } - - public function testConvertPhpToXml() - { - $converter = new DateTimeTypeConverter(); - - $date = new \DateTime('2002-10-10T12:00:00-05:00'); - $dateXml = $converter->convertPhpToXml(new SoapResponse(), $date); - - $this->assertEquals('2002-10-10T12:00:00-05:00', $dateXml); - } -} diff --git a/Tests/Converter/DateTypeConverterTest.php b/Tests/Converter/DateTypeConverterTest.php deleted file mode 100644 index db53dd1..0000000 --- a/Tests/Converter/DateTypeConverterTest.php +++ /dev/null @@ -1,41 +0,0 @@ - - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace BeSimple\SoapBundle\Tests\Converter; - -use BeSimple\SoapBundle\Soap\SoapRequest; -use BeSimple\SoapBundle\Soap\SoapResponse; -use BeSimple\SoapBundle\Converter\DateTypeConverter; - -/** - * UnitTest for \BeSimple\SoapBundle\Converter\DateTimeTypeConverter. - */ -class DateTypeConverterTest extends \PHPUnit_Framework_TestCase -{ - public function testConvertXmlToPhp() - { - $converter = new DateTypeConverter(); - - $dateXml = '2002-10-10'; - $date = $converter->convertXmlToPhp(new SoapRequest(), $dateXml); - - $this->assertEquals(new \DateTime('2002-10-10'), $date); - } - - public function testConvertPhpToXml() - { - $converter = new DateTypeConverter(); - - $date = new \DateTime('2002-10-10'); - $dateXml = $converter->convertPhpToXml(new SoapResponse(), $date); - - $this->assertEquals('2002-10-10', $dateXml); - } -} diff --git a/WebServiceContext.php b/WebServiceContext.php index a5d4e4a..e03b200 100644 --- a/WebServiceContext.php +++ b/WebServiceContext.php @@ -10,13 +10,14 @@ namespace BeSimple\SoapBundle; -use BeSimple\SoapBundle\Converter\ConverterRepository; use BeSimple\SoapBundle\Converter\TypeRepository; use BeSimple\SoapBundle\ServiceBinding\MessageBinderInterface; use BeSimple\SoapBundle\ServiceBinding\ServiceBinder; use BeSimple\SoapBundle\ServiceDefinition\Dumper\DumperInterface; use BeSimple\SoapBundle\Soap\SoapServerFactory; +use BeSimple\SoapCommon\Converter\TypeConverterCollection; + use Symfony\Component\Config\ConfigCache; use Symfony\Component\Config\Loader\LoaderInterface; @@ -38,12 +39,12 @@ class WebServiceContext private $serviceBinder; private $serverFactory; - public function __construct(LoaderInterface $loader, DumperInterface $dumper, TypeRepository $typeRepository, ConverterRepository $converterRepository, array $options) { + public function __construct(LoaderInterface $loader, DumperInterface $dumper, TypeRepository $typeRepository, TypeConverterCollection $converters, array $options) { $this->loader = $loader; $this->wsdlFileDumper = $dumper; - $this->typeRepository = $typeRepository; - $this->converterRepository = $converterRepository; + $this->typeRepository = $typeRepository; + $this->converters = $converters; $this->options = $options; } @@ -102,7 +103,7 @@ class WebServiceContext $this->serverFactory = new SoapServerFactory( $this->getWsdlFile(), $this->serviceDefinition->getDefinitionComplexTypes(), - $this->converterRepository, + $this->converters, array( 'debug' => $this->options['debug'], 'cache_type' => isset($this->options['cache_type']) ? $this->options['cache_type'] : null,