mirror of
https://github.com/retailcrm/NelmioApiDocBundle.git
synced 2025-02-02 15:51:48 +03:00
use the configured context factory to create the serialization context
This commit is contained in:
parent
3d38bba7cd
commit
883049a9e0
@ -12,6 +12,7 @@
|
|||||||
namespace Nelmio\ApiDocBundle\DependencyInjection;
|
namespace Nelmio\ApiDocBundle\DependencyInjection;
|
||||||
|
|
||||||
use FOS\RestBundle\Controller\Annotations\ParamInterface;
|
use FOS\RestBundle\Controller\Annotations\ParamInterface;
|
||||||
|
use JMS\Serializer\ContextFactory\SerializationContextFactoryInterface;
|
||||||
use JMS\Serializer\Visitor\SerializationVisitorInterface;
|
use JMS\Serializer\Visitor\SerializationVisitorInterface;
|
||||||
use Nelmio\ApiDocBundle\ApiDocGenerator;
|
use Nelmio\ApiDocBundle\ApiDocGenerator;
|
||||||
use Nelmio\ApiDocBundle\Describer\ExternalDocDescriber;
|
use Nelmio\ApiDocBundle\Describer\ExternalDocDescriber;
|
||||||
@ -169,6 +170,7 @@ final class NelmioApiDocExtension extends Extension implements PrependExtensionI
|
|||||||
// JMS metadata support
|
// JMS metadata support
|
||||||
if ($config['models']['use_jms']) {
|
if ($config['models']['use_jms']) {
|
||||||
$jmsNamingStrategy = interface_exists(SerializationVisitorInterface::class) ? null : new Reference('jms_serializer.naming_strategy');
|
$jmsNamingStrategy = interface_exists(SerializationVisitorInterface::class) ? null : new Reference('jms_serializer.naming_strategy');
|
||||||
|
$contextFactory = interface_exists(SerializationContextFactoryInterface::class) ? new Reference('jms_serializer.serialization_context_factory') : null;
|
||||||
|
|
||||||
$container->register('nelmio_api_doc.model_describers.jms', JMSModelDescriber::class)
|
$container->register('nelmio_api_doc.model_describers.jms', JMSModelDescriber::class)
|
||||||
->setPublic(false)
|
->setPublic(false)
|
||||||
@ -178,6 +180,7 @@ final class NelmioApiDocExtension extends Extension implements PrependExtensionI
|
|||||||
$config['media_types'],
|
$config['media_types'],
|
||||||
$jmsNamingStrategy,
|
$jmsNamingStrategy,
|
||||||
$container->getParameter('nelmio_api_doc.use_validation_groups'),
|
$container->getParameter('nelmio_api_doc.use_validation_groups'),
|
||||||
|
$contextFactory,
|
||||||
])
|
])
|
||||||
->addTag('nelmio_api_doc.model_describer', ['priority' => 50]);
|
->addTag('nelmio_api_doc.model_describer', ['priority' => 50]);
|
||||||
|
|
||||||
|
@ -13,6 +13,7 @@ namespace Nelmio\ApiDocBundle\ModelDescriber;
|
|||||||
|
|
||||||
use Doctrine\Common\Annotations\Reader;
|
use Doctrine\Common\Annotations\Reader;
|
||||||
use JMS\Serializer\Context;
|
use JMS\Serializer\Context;
|
||||||
|
use JMS\Serializer\ContextFactory\SerializationContextFactoryInterface;
|
||||||
use JMS\Serializer\Exclusion\GroupsExclusionStrategy;
|
use JMS\Serializer\Exclusion\GroupsExclusionStrategy;
|
||||||
use JMS\Serializer\Naming\PropertyNamingStrategyInterface;
|
use JMS\Serializer\Naming\PropertyNamingStrategyInterface;
|
||||||
use JMS\Serializer\SerializationContext;
|
use JMS\Serializer\SerializationContext;
|
||||||
@ -35,6 +36,8 @@ class JMSModelDescriber implements ModelDescriberInterface, ModelRegistryAwareIn
|
|||||||
|
|
||||||
private $factory;
|
private $factory;
|
||||||
|
|
||||||
|
private $contextFactory;
|
||||||
|
|
||||||
private $namingStrategy;
|
private $namingStrategy;
|
||||||
|
|
||||||
private $doctrineReader;
|
private $doctrineReader;
|
||||||
@ -60,13 +63,15 @@ class JMSModelDescriber implements ModelDescriberInterface, ModelRegistryAwareIn
|
|||||||
Reader $reader,
|
Reader $reader,
|
||||||
array $mediaTypes,
|
array $mediaTypes,
|
||||||
?PropertyNamingStrategyInterface $namingStrategy = null,
|
?PropertyNamingStrategyInterface $namingStrategy = null,
|
||||||
bool $useValidationGroups = false
|
bool $useValidationGroups = false,
|
||||||
|
?SerializationContextFactoryInterface $contextFactory = null
|
||||||
) {
|
) {
|
||||||
$this->factory = $factory;
|
$this->factory = $factory;
|
||||||
$this->namingStrategy = $namingStrategy;
|
$this->namingStrategy = $namingStrategy;
|
||||||
$this->doctrineReader = $reader;
|
$this->doctrineReader = $reader;
|
||||||
$this->mediaTypes = $mediaTypes;
|
$this->mediaTypes = $mediaTypes;
|
||||||
$this->useValidationGroups = $useValidationGroups;
|
$this->useValidationGroups = $useValidationGroups;
|
||||||
|
$this->contextFactory = $contextFactory;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -187,7 +192,7 @@ class JMSModelDescriber implements ModelDescriberInterface, ModelRegistryAwareIn
|
|||||||
$stack->unshift($metadataCopy);
|
$stack->unshift($metadataCopy);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$context = SerializationContext::create();
|
$context = $this->contextFactory ? $this->contextFactory->createSerializationContext() : SerializationContext::create();
|
||||||
|
|
||||||
if (null !== $model->getGroups()) {
|
if (null !== $model->getGroups()) {
|
||||||
$context->addExclusionStrategy(new GroupsExclusionStrategy($model->getGroups()));
|
$context->addExclusionStrategy(new GroupsExclusionStrategy($model->getGroups()));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user