diff --git a/composer.json b/composer.json index bcba697..3fe661a 100644 --- a/composer.json +++ b/composer.json @@ -15,16 +15,18 @@ "symfony/http-kernel": "~2.7 || ~3.0", "scaytrase/json-rpc-client": "~1.0", "bankiru/rpc-server-bundle": "~1.1", - "nelmio/api-doc-bundle": "~2.9", - "jms/serializer-bundle": "~1.1" + "nelmio/api-doc-bundle": "~2.9" }, "require-dev": { "phpunit/phpunit": "~4.8 || ~5.1", "symfony/browser-kit": "~2.7 || ~3.0", + "phpunit/php-code-coverage": "~2.1 || ~3.0", + "jms/serializer-bundle": "~1.1", "doctrine/doctrine-bundle": "~1.6", "doctrine/orm": "~2.3" }, "suggest": { + "jms/serializer-bundle": "For serializing response", "doctrine/doctrine-bundle": "For relations handler", "doctrine/orm": "For relations handler" }, diff --git a/src/Bankiru/Api/JsonRpc/DependencyInjection/Compiler/JmsDriverPass.php b/src/Bankiru/Api/JsonRpc/DependencyInjection/Compiler/JmsDriverPass.php index de50fcf..7c1ac12 100644 --- a/src/Bankiru/Api/JsonRpc/DependencyInjection/Compiler/JmsDriverPass.php +++ b/src/Bankiru/Api/JsonRpc/DependencyInjection/Compiler/JmsDriverPass.php @@ -16,6 +16,10 @@ public function process(ContainerBuilder $container) return; } + if (!$container->has('jms_serializer.metadata.doctrine_type_driver')) { + return; + } + $container->register('jms_serializer.driver.relation', HandledTypeDriver::class) ->setArguments( [ diff --git a/src/Bankiru/Api/JsonRpc/DependencyInjection/Compiler/JmsSerializerPass.php b/src/Bankiru/Api/JsonRpc/DependencyInjection/Compiler/JmsSerializerPass.php new file mode 100644 index 0000000..7ab0284 --- /dev/null +++ b/src/Bankiru/Api/JsonRpc/DependencyInjection/Compiler/JmsSerializerPass.php @@ -0,0 +1,35 @@ +has('jms_serializer')) { + return; + } + + $definition = $container->register('jsonrpc.view.serialize_response', SerializedJsonRpcResponseListener::class); + $definition->setArguments( + [ + new Reference('jms_serializer'), + ] + ); + $definition->addTag( + 'kernel.event_listener', + [ + 'event' => RpcEvents::VIEW, + 'method' => 'onPlainResponse', + 'priority' => -254, + ] + ); + } +} diff --git a/src/Bankiru/Api/JsonRpc/JsonRpcBundle.php b/src/Bankiru/Api/JsonRpc/JsonRpcBundle.php index 554cdb9..32ba0e6 100644 --- a/src/Bankiru/Api/JsonRpc/JsonRpcBundle.php +++ b/src/Bankiru/Api/JsonRpc/JsonRpcBundle.php @@ -3,6 +3,7 @@ namespace Bankiru\Api\JsonRpc; use Bankiru\Api\JsonRpc\DependencyInjection\Compiler\JmsDriverPass; +use Bankiru\Api\JsonRpc\DependencyInjection\Compiler\JmsSerializerPass; use Symfony\Component\DependencyInjection\Compiler\PassConfig; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\HttpKernel\Bundle\Bundle; @@ -15,5 +16,6 @@ public function build(ContainerBuilder $container) { parent::build($container); $container->addCompilerPass(new JmsDriverPass(), PassConfig::TYPE_BEFORE_REMOVING); + $container->addCompilerPass(new JmsSerializerPass()); } } diff --git a/src/Bankiru/Api/JsonRpc/Resources/config/jsonrpc.yml b/src/Bankiru/Api/JsonRpc/Resources/config/jsonrpc.yml index e6c89bc..ba7c9a8 100644 --- a/src/Bankiru/Api/JsonRpc/Resources/config/jsonrpc.yml +++ b/src/Bankiru/Api/JsonRpc/Resources/config/jsonrpc.yml @@ -16,13 +16,6 @@ services: tags: - { name: kernel.event_listener, event: rpc.response, method: filterNotificationResponse, priority: -255 } - jsonrpc.view.serialize_response: - class: Bankiru\Api\JsonRpc\Listener\SerializedJsonRpcResponseListener - arguments: - - "@jms_serializer" - tags: - - { name: kernel.event_listener, event: rpc.view, method: onPlainResponse, priority: -254 } - jsonrpc.reponse_listener.match_id: class: Bankiru\Api\JsonRpc\Listener\IdMatcherListener tags: