Merge pull request #2039 from nelmio/GuilhemN-patch-1

Make ClassMetadataFactory optional
This commit is contained in:
Guilhem Niot 2022-09-28 22:10:51 +02:00 committed by GitHub
commit b42ac43beb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 13 additions and 10 deletions

View File

@ -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)

View File

@ -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(

View File

@ -71,12 +71,12 @@
<!-- Model Describers -->
<service id="nelmio_api_doc.model_describers.object" class="Nelmio\ApiDocBundle\ModelDescriber\ObjectModelDescriber" public="false">
<argument type="service" id="property_info" />
<argument type="service" id="serializer.mapping.class_metadata_factory" />
<argument type="service" id="annotations.reader" />
<argument type="tagged" tag="nelmio_api_doc.object_model.property_describer" />
<argument />
<argument type="service" id="serializer.name_converter.metadata_aware" on-invalid="ignore" />
<argument>%nelmio_api_doc.use_validation_groups%</argument>
<argument type="service" id="serializer.mapping.class_metadata_factory" on-invalid="ignore" />
<tag name="nelmio_api_doc.model_describer" />
</service>