From f5ca0374f1f28c7d59a79e212cb08cf13f9f800d Mon Sep 17 00:00:00 2001 From: Djordy Koert Date: Mon, 22 Jul 2024 10:37:52 +0200 Subject: [PATCH] Revert "Support php7.4 nullable typed properties for JMS serializer. (#2103)" This reverts commit c21aead2b93095a1e23ff22dc06f295bd3142c87. --- src/ModelDescriber/JMSModelDescriber.php | 31 ------------- .../Functional/Controller/JMSController80.php | 15 ------ .../Functional/Controller/JMSController81.php | 11 ----- tests/Functional/Entity/JMSTyped80.php | 46 ------------------- tests/Functional/Entity/JMSTyped81.php | 36 --------------- tests/Functional/JMSFunctionalTest.php | 25 ---------- tests/Functional/TestKernel.php | 10 ---- 7 files changed, 174 deletions(-) delete mode 100644 tests/Functional/Entity/JMSTyped80.php delete mode 100644 tests/Functional/Entity/JMSTyped81.php diff --git a/src/ModelDescriber/JMSModelDescriber.php b/src/ModelDescriber/JMSModelDescriber.php index d46f908ed..a5a9ea66c 100644 --- a/src/ModelDescriber/JMSModelDescriber.php +++ b/src/ModelDescriber/JMSModelDescriber.php @@ -152,7 +152,6 @@ public function describe(Model $model, OA\Schema $schema) } catch (\ReflectionException $ignored) { } } - $this->checkRequiredFields($reflections, $schema, $name); if (null !== $item->setter) { try { $reflections[] = new \ReflectionMethod($item->class, $item->setter); @@ -398,34 +397,4 @@ private function propertyTypeUsesGroups(array $type): ?bool return null; } } - - /** - * Mark property as required if it is not nullable. - * - * @param array<\ReflectionProperty|\ReflectionMethod> $reflections - */ - private function checkRequiredFields(array $reflections, OA\Schema $schema, string $name): void - { - foreach ($reflections as $reflection) { - $nullable = false; - if ($reflection instanceof \ReflectionProperty) { - $type = PHP_VERSION_ID >= 70400 ? $reflection->getType() : null; - if (null !== $type && !$type->allowsNull()) { - $nullable = true; - } - } elseif ($reflection instanceof \ReflectionMethod) { - $returnType = $reflection->getReturnType(); - if (null !== $returnType && !$returnType->allowsNull()) { - $nullable = true; - } - } - if ($nullable) { - $required = Generator::UNDEFINED !== $schema->required ? $schema->required : []; - $required[] = $name; - - $schema->required = $required; - break; - } - } - } } diff --git a/tests/Functional/Controller/JMSController80.php b/tests/Functional/Controller/JMSController80.php index 3f99afa37..0f9f57d8b 100644 --- a/tests/Functional/Controller/JMSController80.php +++ b/tests/Functional/Controller/JMSController80.php @@ -16,7 +16,6 @@ use Nelmio\ApiDocBundle\Tests\Functional\Entity\JMSComplex80; use Nelmio\ApiDocBundle\Tests\Functional\Entity\JMSDualComplex; use Nelmio\ApiDocBundle\Tests\Functional\Entity\JMSNamingStrategyConstraints; -use Nelmio\ApiDocBundle\Tests\Functional\Entity\JMSTyped80; use Nelmio\ApiDocBundle\Tests\Functional\Entity\JMSUser; use Nelmio\ApiDocBundle\Tests\Functional\Entity\NestedGroup\JMSChat; use Nelmio\ApiDocBundle\Tests\Functional\Entity\NestedGroup\JMSChatRoomUser; @@ -167,18 +166,4 @@ public function minUserNestedAction() public function discriminatorMapAction() { } - - /** - * @Route("/api/jms_typed", methods={"GET"}) - * - * @OA\Response( - * response=200, - * description="Success", - * - * @Model(type=JMSTyped80::class) - * ) - */ - public function typedAction() - { - } } diff --git a/tests/Functional/Controller/JMSController81.php b/tests/Functional/Controller/JMSController81.php index a367e2209..8848e196a 100644 --- a/tests/Functional/Controller/JMSController81.php +++ b/tests/Functional/Controller/JMSController81.php @@ -17,7 +17,6 @@ use Nelmio\ApiDocBundle\Tests\Functional\Entity\JMSComplex81; use Nelmio\ApiDocBundle\Tests\Functional\Entity\JMSDualComplex; use Nelmio\ApiDocBundle\Tests\Functional\Entity\JMSNamingStrategyConstraints; -use Nelmio\ApiDocBundle\Tests\Functional\Entity\JMSTyped81; use Nelmio\ApiDocBundle\Tests\Functional\Entity\JMSUser; use Nelmio\ApiDocBundle\Tests\Functional\Entity\NestedGroup\JMSChat; use Nelmio\ApiDocBundle\Tests\Functional\Entity\NestedGroup\JMSChatRoomUser; @@ -142,14 +141,4 @@ public function enum() public function discriminatorMapAction() { } - - #[Route('/api/jms_typed', methods: ['GET'])] - #[OA\Response( - response: 200, - description: 'Success', - content: new Model(type: JMSTyped81::class)) - ] - public function typedAction() - { - } } diff --git a/tests/Functional/Entity/JMSTyped80.php b/tests/Functional/Entity/JMSTyped80.php deleted file mode 100644 index 9602dbeac..000000000 --- a/tests/Functional/Entity/JMSTyped80.php +++ /dev/null @@ -1,46 +0,0 @@ - 'Article81', - 'required' => [ - 'id', - 'type', - 'int_backed_type', - 'not_backed_type', - ], ], json_decode($this->getModel('Article81')->toJson(), true)); self::assertEquals([ @@ -426,23 +420,4 @@ protected static function createKernel(array $options = []): KernelInterface { return new TestKernel(TestKernel::USE_JMS); } - - public function testModelTypedDocumentation(): void - { - self::assertEquals([ - 'type' => 'object', - 'properties' => [ - 'id' => ['type' => 'integer'], - 'user' => ['$ref' => '#/components/schemas/JMSUser'], - 'name' => ['type' => 'string'], - 'virtual_friend' => ['$ref' => '#/components/schemas/JMSUser'], - ], - 'required' => [ - 'virtual_friend', - 'id', - 'user', - ], - 'schema' => 'JMSTyped', - ], json_decode($this->getModel('JMSTyped')->toJson(), true)); - } } diff --git a/tests/Functional/TestKernel.php b/tests/Functional/TestKernel.php index 2f5e94dc1..2e6d96b08 100644 --- a/tests/Functional/TestKernel.php +++ b/tests/Functional/TestKernel.php @@ -22,8 +22,6 @@ use Nelmio\ApiDocBundle\Tests\Functional\Entity\BazingaUser; use Nelmio\ApiDocBundle\Tests\Functional\Entity\JMSComplex80; use Nelmio\ApiDocBundle\Tests\Functional\Entity\JMSComplex81; -use Nelmio\ApiDocBundle\Tests\Functional\Entity\JMSTyped80; -use Nelmio\ApiDocBundle\Tests\Functional\Entity\JMSTyped81; use Nelmio\ApiDocBundle\Tests\Functional\Entity\NestedGroup\JMSPicture; use Nelmio\ApiDocBundle\Tests\Functional\Entity\PrivateProtectedExposure; use Nelmio\ApiDocBundle\Tests\Functional\Entity\SymfonyConstraintsWithValidationGroups; @@ -223,10 +221,6 @@ protected function configureContainer(ContainerBuilder $c, LoaderInterface $load 'type' => JMSComplex80::class, 'groups' => null, ], - [ - 'alias' => 'JMSTyped', - 'type' => JMSTyped80::class, - ], ]); } elseif (self::isAttributesAvailable()) { $models = array_merge($models, [ @@ -244,10 +238,6 @@ protected function configureContainer(ContainerBuilder $c, LoaderInterface $load 'type' => JMSComplex81::class, 'groups' => null, ], - [ - 'alias' => 'JMSTyped', - 'type' => JMSTyped81::class, - ], ]); }