mirror of
https://github.com/retailcrm/NelmioApiDocBundle.git
synced 2025-02-02 23:59:26 +03:00
7357de9c16
If this was turned on by default, that seems like a _large_ BC break as folks entire OpenAPI doc could change underneath them. The config option defaults to false and users can enable it if they desire.
65 lines
2.1 KiB
PHP
65 lines
2.1 KiB
PHP
<?php
|
|
|
|
/*
|
|
* This file is part of the NelmioApiDocBundle package.
|
|
*
|
|
* (c) Nelmio
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*/
|
|
|
|
namespace Nelmio\ApiDocBundle\ModelDescriber\Annotations;
|
|
|
|
use Doctrine\Common\Annotations\Reader;
|
|
use Nelmio\ApiDocBundle\Model\ModelRegistry;
|
|
use OpenApi\Annotations as OA;
|
|
|
|
/**
|
|
* @internal
|
|
*/
|
|
class AnnotationsReader
|
|
{
|
|
private $annotationsReader;
|
|
private $modelRegistry;
|
|
|
|
private $phpDocReader;
|
|
private $openApiAnnotationsReader;
|
|
private $symfonyConstraintAnnotationReader;
|
|
|
|
public function __construct(
|
|
Reader $annotationsReader,
|
|
ModelRegistry $modelRegistry,
|
|
array $mediaTypes,
|
|
bool $useValidationGroups = false
|
|
) {
|
|
$this->annotationsReader = $annotationsReader;
|
|
$this->modelRegistry = $modelRegistry;
|
|
|
|
$this->phpDocReader = new PropertyPhpDocReader();
|
|
$this->openApiAnnotationsReader = new OpenApiAnnotationsReader($annotationsReader, $modelRegistry, $mediaTypes);
|
|
$this->symfonyConstraintAnnotationReader = new SymfonyConstraintAnnotationReader(
|
|
$annotationsReader,
|
|
$useValidationGroups
|
|
);
|
|
}
|
|
|
|
public function updateDefinition(\ReflectionClass $reflectionClass, OA\Schema $schema): void
|
|
{
|
|
$this->openApiAnnotationsReader->updateSchema($reflectionClass, $schema);
|
|
$this->symfonyConstraintAnnotationReader->setSchema($schema);
|
|
}
|
|
|
|
public function getPropertyName($reflection, string $default): string
|
|
{
|
|
return $this->openApiAnnotationsReader->getPropertyName($reflection, $default);
|
|
}
|
|
|
|
public function updateProperty($reflection, OA\Property $property, array $serializationGroups = null): void
|
|
{
|
|
$this->openApiAnnotationsReader->updateProperty($reflection, $property, $serializationGroups);
|
|
$this->phpDocReader->updateProperty($reflection, $property);
|
|
$this->symfonyConstraintAnnotationReader->updateProperty($reflection, $property, $serializationGroups);
|
|
}
|
|
}
|