Make ClassMetadataFactory optional

This commit is contained in:
Guilhem Niot 2022-09-26 09:09:27 +02:00 committed by GitHub
parent a46458e1f3
commit 86745ae2eb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -33,7 +33,7 @@ class ObjectModelDescriber implements ModelDescriberInterface, ModelRegistryAwar
/** @var PropertyInfoExtractorInterface */ /** @var PropertyInfoExtractorInterface */
private $propertyInfo; private $propertyInfo;
/** @var ClassMetadataFactoryInterface */ /** @var ClassMetadataFactoryInterface|null */
private $classMetadataFactory; private $classMetadataFactory;
/** @var Reader */ /** @var Reader */
private $doctrineReader; private $doctrineReader;
@ -41,27 +41,27 @@ class ObjectModelDescriber implements ModelDescriberInterface, ModelRegistryAwar
private $propertyDescribers; private $propertyDescribers;
/** @var string[] */ /** @var string[] */
private $mediaTypes; private $mediaTypes;
/** @var NameConverterInterface[] */ /** @var NameConverterInterface|null */
private $nameConverter; private $nameConverter;
/** @var bool */ /** @var bool */
private $useValidationGroups; private $useValidationGroups;
public function __construct( public function __construct(
PropertyInfoExtractorInterface $propertyInfo, PropertyInfoExtractorInterface $propertyInfo,
ClassMetadataFactoryInterface $classMetadataFactory,
Reader $reader, Reader $reader,
iterable $propertyDescribers, iterable $propertyDescribers,
array $mediaTypes, array $mediaTypes,
NameConverterInterface $nameConverter = null, NameConverterInterface $nameConverter = null,
bool $useValidationGroups = false bool $useValidationGroups = false,
ClassMetadataFactoryInterface $classMetadataFactory = null
) { ) {
$this->propertyInfo = $propertyInfo; $this->propertyInfo = $propertyInfo;
$this->classMetadataFactory = $classMetadataFactory;
$this->doctrineReader = $reader; $this->doctrineReader = $reader;
$this->propertyDescribers = $propertyDescribers; $this->propertyDescribers = $propertyDescribers;
$this->mediaTypes = $mediaTypes; $this->mediaTypes = $mediaTypes;
$this->nameConverter = $nameConverter; $this->nameConverter = $nameConverter;
$this->useValidationGroups = $useValidationGroups; $this->useValidationGroups = $useValidationGroups;
$this->classMetadataFactory = $classMetadataFactory;
} }
public function describe(Model $model, OA\Schema $schema) public function describe(Model $model, OA\Schema $schema)
@ -89,9 +89,12 @@ class ObjectModelDescriber implements ModelDescriberInterface, ModelRegistryAwar
$schema->type = 'object'; $schema->type = 'object';
$mapping = $this->classMetadataFactory $mapping = false;
->getMetadataFor($class) if (null !== $this->classMetadataFactory) {
->getClassDiscriminatorMapping(); $mapping = $this->classMetadataFactory
->getMetadataFor($class)
->getClassDiscriminatorMapping();
}
if ($mapping && Generator::UNDEFINED === $schema->discriminator) { if ($mapping && Generator::UNDEFINED === $schema->discriminator) {
$this->applyOpenApiDiscriminator( $this->applyOpenApiDiscriminator(