From 3227bfcd3a3cf84010df7f37c597dd372d5f0537 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Fastr=C3=A9?= Date: Tue, 16 Sep 2025 12:43:39 +0200 Subject: [PATCH] Remove `serializer.yaml` configuration, update `PersonJsonNormalizer` and `PersonJsonDenormalizer` for improved logic handling, adjust type hints in closures, and rename `id` to `definition_id` in `PersonIdentifierWorkerNormalizer`. --- .../DependencyInjection/ChillPersonExtension.php | 1 - .../Normalizer/PersonIdentifierWorkerNormalizer.php | 2 +- .../Serializer/Normalizer/PersonJsonDenormalizer.php | 8 ++++---- .../Serializer/Normalizer/PersonJsonNormalizer.php | 3 ++- .../ChillPersonBundle/config/services/serializer.yaml | 11 ----------- 5 files changed, 7 insertions(+), 18 deletions(-) delete mode 100644 src/Bundle/ChillPersonBundle/config/services/serializer.yaml diff --git a/src/Bundle/ChillPersonBundle/DependencyInjection/ChillPersonExtension.php b/src/Bundle/ChillPersonBundle/DependencyInjection/ChillPersonExtension.php index ffff789c2..095566b91 100644 --- a/src/Bundle/ChillPersonBundle/DependencyInjection/ChillPersonExtension.php +++ b/src/Bundle/ChillPersonBundle/DependencyInjection/ChillPersonExtension.php @@ -96,7 +96,6 @@ class ChillPersonExtension extends Extension implements PrependExtensionInterfac // We can get rid of this file when the service 'chill.person.repository.person' is no more used. // We should use the PersonRepository service instead of a custom service name. $loader->load('services/repository.yaml'); - $loader->load('services/serializer.yaml'); $loader->load('services/security.yaml'); $loader->load('services/doctrineEventListener.yaml'); $loader->load('services/accompanyingPeriodConsistency.yaml'); diff --git a/src/Bundle/ChillPersonBundle/PersonIdentifier/Normalizer/PersonIdentifierWorkerNormalizer.php b/src/Bundle/ChillPersonBundle/PersonIdentifier/Normalizer/PersonIdentifierWorkerNormalizer.php index 59b58ff39..e49fac559 100644 --- a/src/Bundle/ChillPersonBundle/PersonIdentifier/Normalizer/PersonIdentifierWorkerNormalizer.php +++ b/src/Bundle/ChillPersonBundle/PersonIdentifier/Normalizer/PersonIdentifierWorkerNormalizer.php @@ -24,7 +24,7 @@ final readonly class PersonIdentifierWorkerNormalizer implements NormalizerInter return [ 'type' => 'person_identifier_worker', - 'id' => $object->getDefinition()->getId(), + 'definition_id' => $object->getDefinition()->getId(), 'engine' => $object->getDefinition()->getEngine(), 'label' => $object->getDefinition()->getLabel(), 'isActive' => $object->getDefinition()->isActive(), diff --git a/src/Bundle/ChillPersonBundle/Serializer/Normalizer/PersonJsonDenormalizer.php b/src/Bundle/ChillPersonBundle/Serializer/Normalizer/PersonJsonDenormalizer.php index f95e1ff93..d32fabe44 100644 --- a/src/Bundle/ChillPersonBundle/Serializer/Normalizer/PersonJsonDenormalizer.php +++ b/src/Bundle/ChillPersonBundle/Serializer/Normalizer/PersonJsonDenormalizer.php @@ -62,7 +62,7 @@ final class PersonJsonDenormalizer implements DenormalizerInterface, Denormalize $person->setMobilenumber($this->denormalizer->denormalize($data['mobilenumber'], PhoneNumber::class, $format, $context)); } - if (\array_key_exists('gender', $data)) { + if (\array_key_exists('gender', $data) && null !== $data['gender']) { $gender = $this->denormalizer->denormalize($data['gender'], Gender::class, $format, []); $person->setGender($gender); } @@ -93,7 +93,7 @@ final class PersonJsonDenormalizer implements DenormalizerInterface, Denormalize $altNameKey = $altNameData['key']; $altNameValue = $altNameData['value']; - $altName = $person->getAltNames()->findFirst(fn (PersonAltName $personAltName) => $personAltName->getKey() === $altNameKey); + $altName = $person->getAltNames()->findFirst(fn (int $key, PersonAltName $personAltName) => $personAltName->getKey() === $altNameKey); if (null === $altName) { $altName = new PersonAltName(); $person->addAltName($altName); @@ -117,7 +117,7 @@ final class PersonJsonDenormalizer implements DenormalizerInterface, Denormalize $worker = $this->personIdentifierManager->buildWorkerByPersonIdentifierDefinition($definitionId); - $personIdentifier = $person->getIdentifiers()->findFirst(fn (PersonIdentifier $personIdentifier) => $personIdentifier->getId() === $definitionId); + $personIdentifier = $person->getIdentifiers()->findFirst(fn (int $key, PersonIdentifier $personIdentifier) => $personIdentifier->getId() === $definitionId); if (null === $personIdentifier) { $personIdentifier = new PersonIdentifier($worker->getDefinition()); $person->addIdentifier($personIdentifier); @@ -132,7 +132,7 @@ final class PersonJsonDenormalizer implements DenormalizerInterface, Denormalize $person->setEmail($data['email']); } - if (\array_key_exists('civility', $data)) { + if (\array_key_exists('civility', $data) && null !== $data['civility']) { $civility = $this->denormalizer->denormalize($data['civility'], Civility::class, $format, []); $person->setCivility($civility); } diff --git a/src/Bundle/ChillPersonBundle/Serializer/Normalizer/PersonJsonNormalizer.php b/src/Bundle/ChillPersonBundle/Serializer/Normalizer/PersonJsonNormalizer.php index d19531584..be8c693cd 100644 --- a/src/Bundle/ChillPersonBundle/Serializer/Normalizer/PersonJsonNormalizer.php +++ b/src/Bundle/ChillPersonBundle/Serializer/Normalizer/PersonJsonNormalizer.php @@ -21,11 +21,12 @@ use Doctrine\Common\Collections\Collection; use Symfony\Component\Serializer\Normalizer\AbstractNormalizer; use Symfony\Component\Serializer\Normalizer\NormalizerAwareInterface; use Symfony\Component\Serializer\Normalizer\NormalizerAwareTrait; +use Symfony\Component\Serializer\Normalizer\NormalizerInterface; /** * Serialize a Person entity. */ -class PersonJsonNormalizer implements NormalizerAwareInterface +class PersonJsonNormalizer implements NormalizerAwareInterface, NormalizerInterface { use NormalizerAwareTrait; diff --git a/src/Bundle/ChillPersonBundle/config/services/serializer.yaml b/src/Bundle/ChillPersonBundle/config/services/serializer.yaml deleted file mode 100644 index 5a1e54400..000000000 --- a/src/Bundle/ChillPersonBundle/config/services/serializer.yaml +++ /dev/null @@ -1,11 +0,0 @@ ---- -services: - # note: normalizers are loaded from ../services.yaml - - Chill\PersonBundle\Serializer\Normalizer\: - autowire: true - autoconfigure: true - resource: '../../Serializer/Normalizer' - tags: - - { name: 'serializer.normalizer', priority: 64 } -