Fix ServerVariable management (#1694)

* Fix ServerVariable management

* Fix cs

* Apply StyleCI fixes
This commit is contained in:
Guilhem Niot 2020-08-11 16:44:05 +02:00 committed by GitHub
parent 23fdbf0412
commit eeb4a8b90e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 21 additions and 101 deletions

View File

@ -27,8 +27,6 @@ class DumpCommand extends Command
/** /**
* DumpCommand constructor. * DumpCommand constructor.
*
* @param ContainerInterface $generatorLocator
*/ */
public function __construct(ContainerInterface $generatorLocator) public function __construct(ContainerInterface $generatorLocator)
{ {
@ -50,9 +48,6 @@ class DumpCommand extends Command
} }
/** /**
* @param InputInterface $input
* @param OutputInterface $output
*
* @throws InvalidArgumentException If the area to dump is not valid * @throws InvalidArgumentException If the area to dump is not valid
* *
* @return int|void * @return int|void

View File

@ -85,7 +85,7 @@ class ObjectModelDescriber implements ModelDescriberInterface, ModelRegistryAwar
$serializedName = $annotationsReader->getPropertyName($reflection, $serializedName); $serializedName = $annotationsReader->getPropertyName($reflection, $serializedName);
} }
$property = Util::getProperty($schema, $annotationsReader->getPropertyName($reflection, $serializedName)); $property = Util::getProperty($schema, $annotationsReader->getPropertyName($reflection, $serializedName));
// Interpret additional options // Interpret additional options
$groups = $model->getGroups(); $groups = $model->getGroups();

View File

@ -54,7 +54,7 @@ final class ModelRegister
// Misusage of ::$ref // Misusage of ::$ref
if (($annotation instanceof OA\Response || $annotation instanceof OA\RequestBody) && $annotation->ref instanceof ModelAnnotation) { if (($annotation instanceof OA\Response || $annotation instanceof OA\RequestBody) && $annotation->ref instanceof ModelAnnotation) {
throw new \InvalidArgumentException(sprintf('Using @Model inside @%s::$ref is not allowed. You should use ::$ref with @Property, @Parameter, @Schema, @Items but within @Response or @RequestBody you should put @Model directly at the root of the annotation : `@Response(..., @Model(...))`.', get_class($annotation))); throw new \InvalidArgumentException(sprintf('Using @Model inside @%s::$ref is not allowed. You should use ::$ref with @Property, @Parameter, @Schema, @Items but within @Response or @RequestBody you should put @Model directly at the root of the annotation : `@Response(..., @Model(...))`.', get_class($annotation)));
} }
// Implicit usages // Implicit usages

View File

@ -65,10 +65,7 @@ final class Util
* @see OA\OpenApi::$paths * @see OA\OpenApi::$paths
* @see OA\PathItem::path * @see OA\PathItem::path
* *
* @param OA\OpenApi $api * @param string $path
* @param string $path
*
* @return OA\PathItem
*/ */
public static function getPath(OA\OpenApi $api, $path): OA\PathItem public static function getPath(OA\OpenApi $api, $path): OA\PathItem
{ {
@ -79,10 +76,7 @@ final class Util
* Return an existing Schema object from $api->components->schemas[] having its member schema set to $schema. * Return an existing Schema object from $api->components->schemas[] having its member schema set to $schema.
* Create, add to $api->components->schemas[] and return this new Schema object and set the property if none found. * Create, add to $api->components->schemas[] and return this new Schema object and set the property if none found.
* *
* @param OA\OpenApi $api * @param string $schema
* @param string $schema
*
* @return OA\Schema
* *
* @see OA\Schema::$schema * @see OA\Schema::$schema
* @see OA\Components::$schemas * @see OA\Components::$schemas
@ -106,10 +100,7 @@ final class Util
* @see OA\Schema::$properties * @see OA\Schema::$properties
* @see OA\Property::$property * @see OA\Property::$property
* *
* @param OA\Schema $schema * @param string $property
* @param string $property
*
* @return OA\Property
*/ */
public static function getProperty(OA\Schema $schema, $property): OA\Property public static function getProperty(OA\Schema $schema, $property): OA\Property
{ {
@ -128,10 +119,7 @@ final class Util
* @see OA\PathItem::$options * @see OA\PathItem::$options
* @see OA\PathItem::$head * @see OA\PathItem::$head
* *
* @param OA\PathItem $path * @param string $method
* @param string $method
*
* @return OA\Operation
*/ */
public static function getOperation(OA\PathItem $path, $method): OA\Operation public static function getOperation(OA\PathItem $path, $method): OA\Operation
{ {
@ -151,11 +139,8 @@ final class Util
* @see OA\Parameter::$name * @see OA\Parameter::$name
* @see OA\Parameter::$in * @see OA\Parameter::$in
* *
* @param OA\Operation $operation * @param string $name
* @param string $name * @param string $in
* @param string $in
*
* @return OA\Parameter
*/ */
public static function getOperationParameter(OA\Operation $operation, $name, $in): OA\Parameter public static function getOperationParameter(OA\Operation $operation, $name, $in): OA\Parameter
{ {
@ -171,11 +156,7 @@ final class Util
* *
* @see OA\AbstractAnnotation::$_nested * @see OA\AbstractAnnotation::$_nested
* *
* @param OA\AbstractAnnotation $parent
* @param $class * @param $class
* @param array $properties
*
* @return OA\AbstractAnnotation
*/ */
public static function getChild(OA\AbstractAnnotation $parent, $class, array $properties = []): OA\AbstractAnnotation public static function getChild(OA\AbstractAnnotation $parent, $class, array $properties = []): OA\AbstractAnnotation
{ {
@ -201,11 +182,7 @@ final class Util
* *
* @see OA\AbstractAnnotation::$_nested * @see OA\AbstractAnnotation::$_nested
* *
* @param OA\AbstractAnnotation $parent * @param string $class
* @param string $class
* @param array $properties
*
* @return OA\AbstractAnnotation
*/ */
public static function getCollectionItem(OA\AbstractAnnotation $parent, $class, array $properties = []): OA\AbstractAnnotation public static function getCollectionItem(OA\AbstractAnnotation $parent, $class, array $properties = []): OA\AbstractAnnotation
{ {
@ -238,11 +215,8 @@ final class Util
* *
* @see OA\AbstractAnnotation::$_nested * @see OA\AbstractAnnotation::$_nested
* *
* @param OA\AbstractAnnotation $parent * @param string $class
* @param string $class * @param mixed $value
* @param mixed $value
*
* @return OA\AbstractAnnotation
*/ */
public static function getIndexedCollectionItem(OA\AbstractAnnotation $parent, $class, $value): OA\AbstractAnnotation public static function getIndexedCollectionItem(OA\AbstractAnnotation $parent, $class, $value): OA\AbstractAnnotation
{ {
@ -266,9 +240,6 @@ final class Util
* Search for an Annotation within $collection that has all members set * Search for an Annotation within $collection that has all members set
* to the respective values in the associative array $properties. * to the respective values in the associative array $properties.
* *
* @param array $collection
* @param array $properties
*
* @return int|string|null * @return int|string|null
*/ */
public static function searchCollectionItem(array $collection, array $properties) public static function searchCollectionItem(array $collection, array $properties)
@ -289,7 +260,6 @@ final class Util
/** /**
* Search for an Annotation within the $collection that has its member $index set to $value. * Search for an Annotation within the $collection that has its member $index set to $value.
* *
* @param array $collection
* @param string $member * @param string $member
* @param mixed $value * @param mixed $value
* *
@ -304,12 +274,8 @@ final class Util
* Create a new Object of $class with members $properties within $parent->{$collection}[] * Create a new Object of $class with members $properties within $parent->{$collection}[]
* and return the created index. * and return the created index.
* *
* @param OA\AbstractAnnotation $parent * @param string $collection
* @param string $collection * @param string $class
* @param string $class
* @param array $properties
*
* @return int
*/ */
public static function createCollectionItem(OA\AbstractAnnotation $parent, $collection, $class, array $properties = []): int public static function createCollectionItem(OA\AbstractAnnotation $parent, $collection, $class, array $properties = []): int
{ {
@ -326,14 +292,9 @@ final class Util
/** /**
* Create a new Object of $class with members $properties and set the context parent to be $parent. * Create a new Object of $class with members $properties and set the context parent to be $parent.
* *
* * @param string $class
* @param OA\AbstractAnnotation $parent
* @param string $class
* @param array $properties
* *
* @throws \InvalidArgumentException at an attempt to pass in properties that are found in $parent::$_nested * @throws \InvalidArgumentException at an attempt to pass in properties that are found in $parent::$_nested
*
* @return OA\AbstractAnnotation
*/ */
public static function createChild(OA\AbstractAnnotation $parent, $class, array $properties = []): OA\AbstractAnnotation public static function createChild(OA\AbstractAnnotation $parent, $class, array $properties = []): OA\AbstractAnnotation
{ {
@ -352,11 +313,6 @@ final class Util
* Create a new Context with members $properties and parent context $parent. * Create a new Context with members $properties and parent context $parent.
* *
* @see Context * @see Context
*
* @param array $properties
* @param Context|null $parent
*
* @return Context
*/ */
public static function createContext(array $properties = [], Context $parent = null): Context public static function createContext(array $properties = [], Context $parent = null): Context
{ {
@ -371,9 +327,7 @@ final class Util
* The main purpose is to create a Swagger Object from array config values * The main purpose is to create a Swagger Object from array config values
* in the structure of a json serialized Swagger object. * in the structure of a json serialized Swagger object.
* *
* @param OA\AbstractAnnotation $annotation
* @param array|\ArrayObject|OA\AbstractAnnotation $from * @param array|\ArrayObject|OA\AbstractAnnotation $from
* @param bool $overwrite
*/ */
public static function merge(OA\AbstractAnnotation $annotation, $from, bool $overwrite = false) public static function merge(OA\AbstractAnnotation $annotation, $from, bool $overwrite = false)
{ {
@ -496,42 +450,7 @@ final class Util
function ($value) { function ($value) {
return \is_array($value) ? $value[0] : $value; return \is_array($value) ? $value[0] : $value;
}, },
self::getNesting($class) ?? [] $class::$_nested
)); ));
} }
private static function getNesting($class)
{
switch ($class) {
case OA\OpenApi::class:
return OA\OpenApi::$_nested;
case OA\Info::class:
return OA\Info::$_nested;
case OA\PathItem::class:
return OA\PathItem::$_nested;
case OA\Get::class:
case OA\Post::class:
case OA\Put::class:
case OA\Delete::class:
case OA\Patch::class:
case OA\Head::class:
case OA\Options::class:
return OA\Operation::$_nested;
case OA\Parameter::class:
return OA\Parameter::$_nested;
case OA\Items::class:
return OA\Items::$_nested;
case OA\Property::class:
case OA\Schema::class:
return OA\Schema::$_nested;
case OA\Tag::class:
return OA\Tag::$_nested;
case OA\Response::class:
return OA\Response::$_nested;
case OA\Header::class:
return OA\Header::$_nested;
default:
return null;
}
}
} }

View File

@ -169,6 +169,12 @@ class TestKernel extends Kernel
// Filter routes // Filter routes
$c->loadFromExtension('nelmio_api_doc', [ $c->loadFromExtension('nelmio_api_doc', [
'documentation' => [ 'documentation' => [
'servers' => [ // from https://github.com/nelmio/NelmioApiDocBundle/issues/1691
[
'url' => 'https://api.example.com/secured/{version}',
'variables' => ['version' => ['default' => 'v1']],
],
],
'info' => [ 'info' => [
'title' => 'My Default App', 'title' => 'My Default App',
], ],