mirror of
https://github.com/FriendsOfSymfony/FOSRestBundle.git
synced 2026-04-29 17:33:11 +02:00
35ccb78af3
* context adapter * update subscribing handlers * add JMSHandlerRegistry compatible with jms serializer 2.0 * update serializer tests * update jms serializer deps allowing jms serializer 2.0 * style changes * add conflict rule for jms bundle v1 * mark the new handler as final
62 lines
1.6 KiB
PHP
62 lines
1.6 KiB
PHP
<?php
|
|
|
|
/*
|
|
* This file is part of the FOSRestBundle package.
|
|
*
|
|
* (c) FriendsOfSymfony <http://friendsofsymfony.github.com/>
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*/
|
|
|
|
namespace FOS\RestBundle\Serializer;
|
|
|
|
use JMS\Serializer\Handler\SubscribingHandlerInterface;
|
|
use JMS\Serializer\Handler\HandlerRegistryInterface;
|
|
|
|
/**
|
|
* Search in the class parents to find an adapted handler.
|
|
*
|
|
* @author Ener-Getick <egetick@gmail.com>
|
|
*
|
|
* @internal do not depend on this class directly
|
|
*/
|
|
final class JMSHandlerRegistryV2 implements HandlerRegistryInterface
|
|
{
|
|
private $registry;
|
|
|
|
public function __construct(HandlerRegistryInterface $registry)
|
|
{
|
|
$this->registry = $registry;
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function registerSubscribingHandler(SubscribingHandlerInterface $handler): void
|
|
{
|
|
$this->registry->registerSubscribingHandler($handler);
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function registerHandler(int $direction, string $typeName, string $format, $handler): void
|
|
{
|
|
$this->registry->registerHandler($direction, $typeName, $format, $handler);
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function getHandler(int $direction, string $typeName, string $format)
|
|
{
|
|
do {
|
|
$handler = $this->registry->getHandler($direction, $typeName, $format);
|
|
if (null !== $handler) {
|
|
return $handler;
|
|
}
|
|
} while ($typeName = get_parent_class($typeName));
|
|
}
|
|
}
|