From 5b6983e179c86433af7d24b57a3e21e534136fdc Mon Sep 17 00:00:00 2001 From: Guilhem Niot Date: Wed, 9 Sep 2020 08:35:01 +0200 Subject: [PATCH] Fix the JMSModelDescriber --- ModelDescriber/JMSModelDescriber.php | 11 +++++++---- Tests/Functional/Entity/VirtualProperty.php | 1 + Tests/Functional/JMSFunctionalTest.php | 3 +++ 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/ModelDescriber/JMSModelDescriber.php b/ModelDescriber/JMSModelDescriber.php index 13cdb2e..1e77672 100644 --- a/ModelDescriber/JMSModelDescriber.php +++ b/ModelDescriber/JMSModelDescriber.php @@ -98,14 +98,17 @@ class JMSModelDescriber implements ModelDescriberInterface, ModelRegistryAwareIn $reflections[] = new \ReflectionProperty($item->class, $item->name); } - try { - if (null !== $item->getter) { + if (null !== $item->getter) { + try { $reflections[] = new \ReflectionMethod($item->class, $item->getter); + } catch (\ReflectionException $ignored) { } - if (null !== $item->setter) { + } + if (null !== $item->setter) { + try { $reflections[] = new \ReflectionMethod($item->class, $item->setter); + } catch (\ReflectionException $ignored) { } - } catch (\ReflectionExceptions $ignored) { } $groups = $this->computeGroups($context, $item->type); diff --git a/Tests/Functional/Entity/VirtualProperty.php b/Tests/Functional/Entity/VirtualProperty.php index e996256..52ab283 100644 --- a/Tests/Functional/Entity/VirtualProperty.php +++ b/Tests/Functional/Entity/VirtualProperty.php @@ -40,6 +40,7 @@ class VirtualProperty /** * @Serializer\Accessor(getter="getFoo", setter="setFoo") * @Serializer\Type("string") + * @Serializer\Expose * * Ensures https://github.com/nelmio/NelmioApiDocBundle/issues/1708 is fixed. */ diff --git a/Tests/Functional/JMSFunctionalTest.php b/Tests/Functional/JMSFunctionalTest.php index a1c459f..7940726 100644 --- a/Tests/Functional/JMSFunctionalTest.php +++ b/Tests/Functional/JMSFunctionalTest.php @@ -298,6 +298,9 @@ class JMSFunctionalTest extends WebTestCase 'email' => [ 'type' => 'string', ], + 'virtualprop' => [ + 'type' => 'string', + ], ], 'schema' => 'VirtualProperty', ], json_decode($this->getModel('VirtualProperty')->toJson(), true));