From 944c186c4730391e1d4ff61393f3bdcc2fb22d90 Mon Sep 17 00:00:00 2001 From: Alessandro Lai Date: Thu, 10 Mar 2022 12:17:25 +0100 Subject: [PATCH 1/5] Add RedeliveryStamp (de)normalizer to avoid deprecations --- .../FrameworkExtension.php | 1 + .../Resources/config/messenger.php | 4 +++ .../Normalizer/RedeliveryStampNormalizer.php | 26 +++++++++++++++++++ 3 files changed, 31 insertions(+) create mode 100644 src/Symfony/Component/Messenger/Transport/Serialization/Normalizer/RedeliveryStampNormalizer.php diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php index f174c4c8a1b09..8c41ba64e7640 100644 --- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php +++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php @@ -1958,6 +1958,7 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder if (!interface_exists(DenormalizerInterface::class)) { $container->removeDefinition('serializer.normalizer.flatten_exception'); + $container->removeDefinition('serializer.normalizer.redelivery_stamp'); } if (ContainerBuilder::willBeAvailable('symfony/amqp-messenger', AmqpTransportFactory::class, ['symfony/framework-bundle', 'symfony/messenger'], true)) { diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/messenger.php b/src/Symfony/Bundle/FrameworkBundle/Resources/config/messenger.php index 813d503000de4..e5b0fec6d9a1d 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/messenger.php +++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/messenger.php @@ -38,6 +38,7 @@ use Symfony\Component\Messenger\Transport\InMemoryTransportFactory; use Symfony\Component\Messenger\Transport\Sender\SendersLocator; use Symfony\Component\Messenger\Transport\Serialization\Normalizer\FlattenExceptionNormalizer; +use Symfony\Component\Messenger\Transport\Serialization\Normalizer\RedeliveryStampNormalizer; use Symfony\Component\Messenger\Transport\Serialization\PhpSerializer; use Symfony\Component\Messenger\Transport\Serialization\Serializer; use Symfony\Component\Messenger\Transport\Serialization\SerializerInterface; @@ -73,6 +74,9 @@ ->set('serializer.normalizer.flatten_exception', FlattenExceptionNormalizer::class) ->tag('serializer.normalizer', ['priority' => -880]) + ->set('serializer.normalizer.redelivery_stamp', RedeliveryStampNormalizer::class) + ->tag('serializer.normalizer') + ->set('messenger.transport.native_php_serializer', PhpSerializer::class) // Middleware diff --git a/src/Symfony/Component/Messenger/Transport/Serialization/Normalizer/RedeliveryStampNormalizer.php b/src/Symfony/Component/Messenger/Transport/Serialization/Normalizer/RedeliveryStampNormalizer.php new file mode 100644 index 0000000000000..d75f622c0adf2 --- /dev/null +++ b/src/Symfony/Component/Messenger/Transport/Serialization/Normalizer/RedeliveryStampNormalizer.php @@ -0,0 +1,26 @@ + Date: Thu, 10 Mar 2022 12:22:58 +0100 Subject: [PATCH 2/5] Fix code style --- .../Serialization/Normalizer/RedeliveryStampNormalizer.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Symfony/Component/Messenger/Transport/Serialization/Normalizer/RedeliveryStampNormalizer.php b/src/Symfony/Component/Messenger/Transport/Serialization/Normalizer/RedeliveryStampNormalizer.php index d75f622c0adf2..0fb04769ed155 100644 --- a/src/Symfony/Component/Messenger/Transport/Serialization/Normalizer/RedeliveryStampNormalizer.php +++ b/src/Symfony/Component/Messenger/Transport/Serialization/Normalizer/RedeliveryStampNormalizer.php @@ -2,7 +2,6 @@ namespace Symfony\Component\Messenger\Transport\Serialization\Normalizer; -use Symfony\Component\HttpKernel\Kernel; use Symfony\Component\Messenger\Stamp\RedeliveryStamp; use Symfony\Component\Serializer\Normalizer\DenormalizerInterface; @@ -18,7 +17,7 @@ public function denormalize($data, string $type, string $format = null, array $c public function supportsDenormalization($data, string $type, string $format = null): bool { - return $type === RedeliveryStamp::class + return RedeliveryStamp::class === $type && null === ($data['exceptionMessage'] ?? null) && null === ($data['flattenException'] ?? null) ; From 87431b0761f427656e9f9c1e6a1ce5b0e0f13306 Mon Sep 17 00:00:00 2001 From: Alessandro Lai Date: Thu, 10 Mar 2022 12:23:19 +0100 Subject: [PATCH 3/5] Add license header --- .../Normalizer/RedeliveryStampNormalizer.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/Symfony/Component/Messenger/Transport/Serialization/Normalizer/RedeliveryStampNormalizer.php b/src/Symfony/Component/Messenger/Transport/Serialization/Normalizer/RedeliveryStampNormalizer.php index 0fb04769ed155..6a540205bb44f 100644 --- a/src/Symfony/Component/Messenger/Transport/Serialization/Normalizer/RedeliveryStampNormalizer.php +++ b/src/Symfony/Component/Messenger/Transport/Serialization/Normalizer/RedeliveryStampNormalizer.php @@ -1,5 +1,14 @@ + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + namespace Symfony\Component\Messenger\Transport\Serialization\Normalizer; use Symfony\Component\Messenger\Stamp\RedeliveryStamp; From 07723c93a64f1aa4cb20d6b6ed7f7994ad2fff87 Mon Sep 17 00:00:00 2001 From: Alessandro Lai Date: Fri, 11 Mar 2022 12:50:51 +0100 Subject: [PATCH 4/5] Add normalization step too --- .../Normalizer/RedeliveryStampNormalizer.php | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/Messenger/Transport/Serialization/Normalizer/RedeliveryStampNormalizer.php b/src/Symfony/Component/Messenger/Transport/Serialization/Normalizer/RedeliveryStampNormalizer.php index 6a540205bb44f..66869d7707af0 100644 --- a/src/Symfony/Component/Messenger/Transport/Serialization/Normalizer/RedeliveryStampNormalizer.php +++ b/src/Symfony/Component/Messenger/Transport/Serialization/Normalizer/RedeliveryStampNormalizer.php @@ -12,15 +12,20 @@ namespace Symfony\Component\Messenger\Transport\Serialization\Normalizer; use Symfony\Component\Messenger\Stamp\RedeliveryStamp; +use Symfony\Component\Serializer\Exception\InvalidArgumentException; +use Symfony\Component\Serializer\Normalizer\DateTimeNormalizer; use Symfony\Component\Serializer\Normalizer\DenormalizerInterface; +use Symfony\Component\Serializer\Normalizer\NormalizerInterface; class RedeliveryStampNormalizer implements DenormalizerInterface { public function denormalize($data, string $type, string $format = null, array $context = []) { + $redeliveredAt = $data['redeliveredAt'] ?? null; + return new RedeliveryStamp( $data['retryCount'] ?? 0, - $data['redeliveredAt'] ?? null + $redeliveredAt ? new \DateTimeImmutable($redeliveredAt) : null ); } @@ -31,4 +36,25 @@ public function supportsDenormalization($data, string $type, string $format = nu && null === ($data['flattenException'] ?? null) ; } + + public function normalize($object, string $format = null, array $context = []) + { + if (! $object instanceof RedeliveryStamp) { + throw new InvalidArgumentException(); + } + + $dateTimeFormat = $context[DateTimeNormalizer::FORMAT_KEY] ?? \DateTimeInterface::RFC3339; + + return [ + 'retryCount' => $object->getRetryCount(), + 'redeliveredAt' => $object->getRedeliveredAt()->format($dateTimeFormat), + ]; + } + + public function supportsNormalization($data, string $format = null): bool + { + return Kernel::VERSION_ID >= 50200 + && $data instanceof RedeliveryStamp + ; + } } From 6f643d0219f591c5466df2eaed46f7c6af2d33c0 Mon Sep 17 00:00:00 2001 From: Alessandro Lai Date: Fri, 11 Mar 2022 13:30:45 +0100 Subject: [PATCH 5/5] Remove Kernel check --- .../Serialization/Normalizer/RedeliveryStampNormalizer.php | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/Symfony/Component/Messenger/Transport/Serialization/Normalizer/RedeliveryStampNormalizer.php b/src/Symfony/Component/Messenger/Transport/Serialization/Normalizer/RedeliveryStampNormalizer.php index 66869d7707af0..7dd1cc4041bd4 100644 --- a/src/Symfony/Component/Messenger/Transport/Serialization/Normalizer/RedeliveryStampNormalizer.php +++ b/src/Symfony/Component/Messenger/Transport/Serialization/Normalizer/RedeliveryStampNormalizer.php @@ -15,7 +15,6 @@ use Symfony\Component\Serializer\Exception\InvalidArgumentException; use Symfony\Component\Serializer\Normalizer\DateTimeNormalizer; use Symfony\Component\Serializer\Normalizer\DenormalizerInterface; -use Symfony\Component\Serializer\Normalizer\NormalizerInterface; class RedeliveryStampNormalizer implements DenormalizerInterface { @@ -53,8 +52,6 @@ public function normalize($object, string $format = null, array $context = []) public function supportsNormalization($data, string $format = null): bool { - return Kernel::VERSION_ID >= 50200 - && $data instanceof RedeliveryStamp - ; + return $data instanceof RedeliveryStamp; } }