diff --git a/ModelDescriber/ObjectModelDescriber.php b/ModelDescriber/ObjectModelDescriber.php index 925ea5c..368cb2c 100644 --- a/ModelDescriber/ObjectModelDescriber.php +++ b/ModelDescriber/ObjectModelDescriber.php @@ -215,6 +215,7 @@ class ObjectModelDescriber implements ModelDescriberInterface, ModelRegistryAwar public function supports(Model $model): bool { - return Type::BUILTIN_TYPE_OBJECT === $model->getType()->getBuiltinType() && class_exists($model->getType()->getClassName()); + return Type::BUILTIN_TYPE_OBJECT === $model->getType()->getBuiltinType() + && (class_exists($model->getType()->getClassName()) || interface_exists($model->getType()->getClassName())); } } diff --git a/Tests/Functional/Controller/ApiController80.php b/Tests/Functional/Controller/ApiController80.php index 9520a4d..72a59dd 100644 --- a/Tests/Functional/Controller/ApiController80.php +++ b/Tests/Functional/Controller/ApiController80.php @@ -11,6 +11,7 @@ namespace Nelmio\ApiDocBundle\Tests\Functional\Controller; +use Functional\Entity\ArticleInterface; use Nelmio\ApiDocBundle\Annotation\Areas; use Nelmio\ApiDocBundle\Annotation\Model; use Nelmio\ApiDocBundle\Annotation\Operation; @@ -51,6 +52,23 @@ class ApiController80 { } + /** + * @OA\Get( + * @OA\Response( + * response="200", + * description="Success", + * @Model(type=ArticleInterface::class, groups={"light"})) + * ) + * ) + * @OA\Parameter(ref="#/components/parameters/test") + * @Route("/article-interface/{id}", methods={"GET"}) + * @OA\Parameter(name="Accept-Version", in="header", @OA\Schema(type="string")) + * @OA\Parameter(name="Application-Name", in="header", @OA\Schema(type="string")) + */ + public function fetchArticleInterfaceAction() + { + } + /** * The method LINK is not supported by OpenAPI so the method will be ignored. * diff --git a/Tests/Functional/Entity/ArticleInterface.php b/Tests/Functional/Entity/ArticleInterface.php new file mode 100644 index 0000000..931d19a --- /dev/null +++ b/Tests/Functional/Entity/ArticleInterface.php @@ -0,0 +1,8 @@ +