From e035a6fd9464f4e702b0ddb4f9f08617352384ff Mon Sep 17 00:00:00 2001 From: nobohan Date: Thu, 24 Feb 2022 14:54:56 +0100 Subject: [PATCH] chilldocstore: add normalizer for StoredObject --- .../Normalizer/StoredObjectDenormalizer.php | 50 +++++++++++++++++++ .../ChillDocStoreBundle/config/services.yaml | 7 +++ 2 files changed, 57 insertions(+) create mode 100644 src/Bundle/ChillDocStoreBundle/Serializer/Normalizer/StoredObjectDenormalizer.php diff --git a/src/Bundle/ChillDocStoreBundle/Serializer/Normalizer/StoredObjectDenormalizer.php b/src/Bundle/ChillDocStoreBundle/Serializer/Normalizer/StoredObjectDenormalizer.php new file mode 100644 index 000000000..1016871a8 --- /dev/null +++ b/src/Bundle/ChillDocStoreBundle/Serializer/Normalizer/StoredObjectDenormalizer.php @@ -0,0 +1,50 @@ +storedObjectRepository = $storedObjectRepository; + } + + public function denormalize($data, $type, $format = null, array $context = []) + { + if (array_key_exists(AbstractNormalizer::OBJECT_TO_POPULATE, $context)) { + return $context[AbstractNormalizer::OBJECT_TO_POPULATE]; + } + + return $this->storedObjectRepository->find($data['id']); + } + + public function supportsDenormalization($data, $type, $format = null) + { + if (false === is_array($data)) { + return false; + } + + if (false === array_key_exists('id', $data)) { + return false; + } + + return $type === StoredObject::class; + + } +} \ No newline at end of file diff --git a/src/Bundle/ChillDocStoreBundle/config/services.yaml b/src/Bundle/ChillDocStoreBundle/config/services.yaml index 5c73c3479..417e0676d 100644 --- a/src/Bundle/ChillDocStoreBundle/config/services.yaml +++ b/src/Bundle/ChillDocStoreBundle/config/services.yaml @@ -33,3 +33,10 @@ services: resource: './../Workflow/' autoconfigure: true autowire: true + + Chill\DocStoreBundle\Serializer\Normalizer\: + autowire: true + resource: '../Serializer/Normalizer/' + tags: + - { name: 'serializer.normalizer', priority: 128 } +