From 86745ae2ebc1f010f4fd20a7ecafb9a50a353f5f Mon Sep 17 00:00:00 2001 From: Guilhem Niot Date: Mon, 26 Sep 2022 09:09:27 +0200 Subject: [PATCH 1/3] Make ClassMetadataFactory optional --- ModelDescriber/ObjectModelDescriber.php | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/ModelDescriber/ObjectModelDescriber.php b/ModelDescriber/ObjectModelDescriber.php index 8582ac5..6f81f7b 100644 --- a/ModelDescriber/ObjectModelDescriber.php +++ b/ModelDescriber/ObjectModelDescriber.php @@ -33,7 +33,7 @@ class ObjectModelDescriber implements ModelDescriberInterface, ModelRegistryAwar /** @var PropertyInfoExtractorInterface */ private $propertyInfo; - /** @var ClassMetadataFactoryInterface */ + /** @var ClassMetadataFactoryInterface|null */ private $classMetadataFactory; /** @var Reader */ private $doctrineReader; @@ -41,27 +41,27 @@ class ObjectModelDescriber implements ModelDescriberInterface, ModelRegistryAwar private $propertyDescribers; /** @var string[] */ private $mediaTypes; - /** @var NameConverterInterface[] */ + /** @var NameConverterInterface|null */ private $nameConverter; /** @var bool */ private $useValidationGroups; public function __construct( PropertyInfoExtractorInterface $propertyInfo, - ClassMetadataFactoryInterface $classMetadataFactory, Reader $reader, iterable $propertyDescribers, array $mediaTypes, NameConverterInterface $nameConverter = null, - bool $useValidationGroups = false + bool $useValidationGroups = false, + ClassMetadataFactoryInterface $classMetadataFactory = null ) { $this->propertyInfo = $propertyInfo; - $this->classMetadataFactory = $classMetadataFactory; $this->doctrineReader = $reader; $this->propertyDescribers = $propertyDescribers; $this->mediaTypes = $mediaTypes; $this->nameConverter = $nameConverter; $this->useValidationGroups = $useValidationGroups; + $this->classMetadataFactory = $classMetadataFactory; } public function describe(Model $model, OA\Schema $schema) @@ -89,9 +89,12 @@ class ObjectModelDescriber implements ModelDescriberInterface, ModelRegistryAwar $schema->type = 'object'; - $mapping = $this->classMetadataFactory - ->getMetadataFor($class) - ->getClassDiscriminatorMapping(); + $mapping = false; + if (null !== $this->classMetadataFactory) { + $mapping = $this->classMetadataFactory + ->getMetadataFor($class) + ->getClassDiscriminatorMapping(); + } if ($mapping && Generator::UNDEFINED === $schema->discriminator) { $this->applyOpenApiDiscriminator( From 364ee43ee97cf0419817bdc0bfd490dfa38d3caf Mon Sep 17 00:00:00 2001 From: Guilhem Niot Date: Mon, 26 Sep 2022 09:10:23 +0200 Subject: [PATCH 2/3] Update services.xml --- Resources/config/services.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/config/services.xml b/Resources/config/services.xml index 9772302..438d8b3 100644 --- a/Resources/config/services.xml +++ b/Resources/config/services.xml @@ -71,12 +71,12 @@ - %nelmio_api_doc.use_validation_groups% + From 40ad9c91f718b4a32660dc292396542d6a8d02d0 Mon Sep 17 00:00:00 2001 From: Guilhem Niot Date: Mon, 26 Sep 2022 09:13:39 +0200 Subject: [PATCH 3/3] fix --- DependencyInjection/NelmioApiDocExtension.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DependencyInjection/NelmioApiDocExtension.php b/DependencyInjection/NelmioApiDocExtension.php index a95beb9..1cb847e 100644 --- a/DependencyInjection/NelmioApiDocExtension.php +++ b/DependencyInjection/NelmioApiDocExtension.php @@ -144,7 +144,7 @@ final class NelmioApiDocExtension extends Extension implements PrependExtensionI )); $container->getDefinition('nelmio_api_doc.model_describers.object') - ->setArgument(4, $config['media_types']); + ->setArgument(3, $config['media_types']); // Add autoconfiguration for model describer $container->registerForAutoconfiguration(ModelDescriberInterface::class)