diff --git a/src/Normalizer/AbsoluteDateNormalizer.php b/src/Normalizer/AbsoluteDateNormalizer.php index 77b4628..aaaa021 100644 --- a/src/Normalizer/AbsoluteDateNormalizer.php +++ b/src/Normalizer/AbsoluteDateNormalizer.php @@ -6,9 +6,10 @@ use AssoConnect\PHPDate\AbsoluteDate; use Symfony\Component\Serializer\Exception\InvalidArgumentException; -use Symfony\Component\Serializer\Exception\NotNormalizableValueException; +use Symfony\Component\Serializer\Exception\UnexpectedValueException; use Symfony\Component\Serializer\Normalizer\DenormalizerInterface; use Symfony\Component\Serializer\Normalizer\NormalizerInterface; +use Throwable; /** * Normalizes an instance of {@see AbsoluteDate} to a date string. @@ -40,7 +41,6 @@ public function normalize(mixed $data, ?string $format = null, array $context = /** * {@inheritdoc} - * @param mixed[] $context */ public function supportsNormalization(mixed $data, ?string $format = null, array $context = []): bool { @@ -49,18 +49,19 @@ public function supportsNormalization(mixed $data, ?string $format = null, array /** * {@inheritdoc} - * - * @param mixed[] $context - * @throws NotNormalizableValueException */ - public function denormalize($data, string $type, ?string $format = null, array $context = []): ?AbsoluteDate + public function denormalize($data, string $type, ?string $format = null, array $context = []): AbsoluteDate { + if ('' === $data || null === $data) { + throw new UnexpectedValueException(); + } + $dateTimeFormat = $context[self::FORMAT_KEY] ?? AbsoluteDate::DEFAULT_DATE_FORMAT; try { - return '' === $data || null === $data ? null : new AbsoluteDate($data, $dateTimeFormat); - } catch (\Exception $e) { - throw new NotNormalizableValueException($e->getMessage(), $e->getCode(), $e); + return new AbsoluteDate($data, $dateTimeFormat); + } catch (Throwable $e) { + throw new UnexpectedValueException(previous: $e); } } @@ -77,11 +78,8 @@ public function supportsDenormalization( return AbsoluteDate::class === $type; } - /** - * @return array<'*', bool> - */ public function getSupportedTypes(?string $format): array { - return ['*' => false]; + return [AbsoluteDate::class => true]; } } diff --git a/src/ThirdParty/Symfony/HttpKernel/Controller/ArgumentResolver/AbsoluteDateValueResolver.php b/src/ThirdParty/Symfony/HttpKernel/Controller/ArgumentResolver/AbsoluteDateValueResolver.php index 5227763..cdd66ba 100644 --- a/src/ThirdParty/Symfony/HttpKernel/Controller/ArgumentResolver/AbsoluteDateValueResolver.php +++ b/src/ThirdParty/Symfony/HttpKernel/Controller/ArgumentResolver/AbsoluteDateValueResolver.php @@ -14,7 +14,7 @@ class AbsoluteDateValueResolver implements ValueResolverInterface { /** - * @return array + * @return list */ public function resolve(Request $request, ArgumentMetadata $argument): iterable { diff --git a/tests/Normalizer/AbsoluteDateNormalizerTest.php b/tests/Normalizer/AbsoluteDateNormalizerTest.php index dff6d9a..d445e8e 100644 --- a/tests/Normalizer/AbsoluteDateNormalizerTest.php +++ b/tests/Normalizer/AbsoluteDateNormalizerTest.php @@ -8,7 +8,6 @@ use AssoConnect\PHPDateBundle\Normalizer\AbsoluteDateNormalizer; use PHPUnit\Framework\TestCase; use Symfony\Component\Serializer\Exception\InvalidArgumentException; -use Symfony\Component\Serializer\Exception\NotNormalizableValueException; use Symfony\Component\Serializer\Exception\UnexpectedValueException; class AbsoluteDateNormalizerTest extends TestCase @@ -79,7 +78,7 @@ public function testDenormalizeInvalidDataThrowsException(): void public function testDenormalizeFormatMismatchThrowsException(): void { - $this->expectException(NotNormalizableValueException::class); + $this->expectException(UnexpectedValueException::class); $this->normalizer->denormalize('2016/01/01', AbsoluteDate::class, null, [ AbsoluteDateNormalizer::FORMAT_KEY => 'Y-m-d|', ]);