mirror of
https://github.com/retailcrm/NelmioApiDocBundle.git
synced 2025-02-02 15:51:48 +03:00
Merge pull request #2039 from nelmio/GuilhemN-patch-1
Make ClassMetadataFactory optional
This commit is contained in:
commit
b42ac43beb
@ -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)
|
||||
|
@ -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(
|
||||
|
@ -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>
|
||||
|
Loading…
x
Reference in New Issue
Block a user