Simplified the creation of WebServiceContext
This commit is contained in:
parent
c33005fed2
commit
9bd9677325
|
@ -25,10 +25,11 @@ use Symfony\Component\HttpKernel\DependencyInjection\Extension;
|
||||||
*/
|
*/
|
||||||
class BeSimpleSoapExtension extends Extension
|
class BeSimpleSoapExtension extends Extension
|
||||||
{
|
{
|
||||||
private $contextArguments;
|
|
||||||
|
|
||||||
// maps config options to service suffix
|
// maps config options to service suffix
|
||||||
private $bindingConfigToServiceSuffixMap = array('rpc-literal' => '.rpcliteral', 'document-wrapped' => '.documentwrapped');
|
private $bindingConfigToServiceSuffixMap = array(
|
||||||
|
'rpc-literal' => 'rpcliteral',
|
||||||
|
'document-wrapped' => 'documentwrapped'
|
||||||
|
);
|
||||||
|
|
||||||
public function load(array $configs, ContainerBuilder $container)
|
public function load(array $configs, ContainerBuilder $container)
|
||||||
{
|
{
|
||||||
|
@ -53,27 +54,14 @@ class BeSimpleSoapExtension extends Extension
|
||||||
$bindingSuffix = $this->bindingConfigToServiceSuffixMap[$config['binding']];
|
$bindingSuffix = $this->bindingConfigToServiceSuffixMap[$config['binding']];
|
||||||
unset($config['binding']);
|
unset($config['binding']);
|
||||||
|
|
||||||
if (null === $this->contextArguments) {
|
$contextId = 'besimple.soap.context.'.$config['name'];
|
||||||
$this->contextArguments = $container
|
$definition = new DefinitionDecorator('besimple.soap.context.'.$bindingSuffix);
|
||||||
->getDefinition('besimple.soap.context')
|
$context = $container->setDefinition($contextId, $definition);
|
||||||
->getArguments()
|
|
||||||
;
|
|
||||||
}
|
|
||||||
|
|
||||||
$contextId = 'besimple.soap.context.'.$config['name'];
|
$options = $container
|
||||||
$context = $container->setDefinition($contextId, $definition = new DefinitionDecorator('besimple.soap.context'));
|
->getDefinition('besimple.soap.context.'.$bindingSuffix)
|
||||||
|
->getArgument(6);
|
||||||
|
|
||||||
$arguments = array();
|
$definition->replaceArgument(6, array_merge($options, $config));
|
||||||
foreach($this->contextArguments as $i => $argument) {
|
|
||||||
if (in_array($i, array(1, 2, 3))) {
|
|
||||||
$argument = new Reference($argument->__toString().$bindingSuffix);
|
|
||||||
} elseif (6 === $i) {
|
|
||||||
$argument = array_merge($argument, $config);
|
|
||||||
} else {
|
|
||||||
$argument = new Reference($argument->__toString());
|
|
||||||
}
|
|
||||||
|
|
||||||
$definition->replaceArgument($i, $argument);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,13 +16,26 @@
|
||||||
</parameters>
|
</parameters>
|
||||||
|
|
||||||
<services>
|
<services>
|
||||||
<service id="besimple.soap.context" class="%besimple.soap.context.class%" abstract="true">
|
<service id="besimple.soap.context.rpcliteral" class="%besimple.soap.context.class%" abstract="true">
|
||||||
<argument type="service" id="besimple.soap.definition.loader"/>
|
<argument type="service" id="besimple.soap.definition.loader" />
|
||||||
<argument type="service" id="besimple.soap.definition.dumper.wsdl"/>
|
<argument type="service" id="besimple.soap.definition.dumper.wsdl.rpcliteral" />
|
||||||
<argument type="service" id="besimple.soap.binder.request"/>
|
<argument type="service" id="besimple.soap.binder.request.rpcliteral" />
|
||||||
<argument type="service" id="besimple.soap.binder.response"/>
|
<argument type="service" id="besimple.soap.binder.response.rpcliteral" />
|
||||||
<argument type="service" id="besimple.soap.type.repository"/>
|
<argument type="service" id="besimple.soap.type.repository" />
|
||||||
<argument type="service" id="besimple.soap.converter.repository"/>
|
<argument type="service" id="besimple.soap.converter.repository" />
|
||||||
|
<argument type="collection">
|
||||||
|
<argument key="cache_dir">%besimple.soap.cache_dir%</argument>
|
||||||
|
<argument key="debug">%kernel.debug%</argument>
|
||||||
|
</argument>
|
||||||
|
</service>
|
||||||
|
|
||||||
|
<service id="besimple.soap.context.documentwrapped" class="%besimple.soap.context.class%" abstract="true">
|
||||||
|
<argument type="service" id="besimple.soap.definition.loader" />
|
||||||
|
<argument type="service" id="besimple.soap.definition.dumper.wsdl.rpcliteral" />
|
||||||
|
<argument type="service" id="besimple.soap.binder.request.documentwrapped" />
|
||||||
|
<argument type="service" id="besimple.soap.binder.response.documentwrapped" />
|
||||||
|
<argument type="service" id="besimple.soap.type.repository" />
|
||||||
|
<argument type="service" id="besimple.soap.converter.repository" />
|
||||||
<argument type="collection">
|
<argument type="collection">
|
||||||
<argument key="cache_dir">%besimple.soap.cache_dir%</argument>
|
<argument key="cache_dir">%besimple.soap.cache_dir%</argument>
|
||||||
<argument key="debug">%kernel.debug%</argument>
|
<argument key="debug">%kernel.debug%</argument>
|
||||||
|
|
Loading…
Reference in New Issue