From 0385d103875aa2464a7443fc85b367911b1c1b80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Tue, 12 Jul 2016 23:26:38 +0200 Subject: [PATCH 1/3] [Serializer] Include the format in the cache key --- .../Normalizer/AbstractObjectNormalizer.php | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/Symfony/Component/Serializer/Normalizer/AbstractObjectNormalizer.php b/src/Symfony/Component/Serializer/Normalizer/AbstractObjectNormalizer.php index 088b01f9f14c5..4f852c2b10f64 100644 --- a/src/Symfony/Component/Serializer/Normalizer/AbstractObjectNormalizer.php +++ b/src/Symfony/Component/Serializer/Normalizer/AbstractObjectNormalizer.php @@ -56,7 +56,7 @@ public function supportsNormalization($data, $format = null) public function normalize($object, $format = null, array $context = array()) { if (!isset($context['cache_key'])) { - $context['cache_key'] = $this->getCacheKey($context); + $context['cache_key'] = $this->getCacheKey($format, $context); } if ($this->isCircularReference($object, $context)) { @@ -169,7 +169,7 @@ public function supportsDenormalization($data, $type, $format = null) public function denormalize($data, $class, $format = null, array $context = array()) { if (!isset($context['cache_key'])) { - $context['cache_key'] = $this->getCacheKey($context); + $context['cache_key'] = $this->getCacheKey($format, $context); } $allowedAttributes = $this->getAllowedAttributes($class, $context, true); $normalizedData = $this->prepareForDenormalization($data); @@ -336,14 +336,15 @@ private function isMaxDepthReached($class, $attribute, array &$context) /** * Gets the cache key to use. * - * @param array $context + * @param string|null $format + * @param array $context * * @return bool|string */ - private function getCacheKey(array $context) + private function getCacheKey($format, array $context) { try { - return md5(serialize($context)); + return $format.'-'.md5(serialize($context)); } catch (\Exception $exception) { // The context cannot be serialized, skip the cache return false; From 426b1094f84fe52ebac82bef34c3a6cb5c1f8db2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Wed, 13 Jul 2016 08:20:24 +0200 Subject: [PATCH 2/3] Put the format in the md5() call --- .../Serializer/Normalizer/AbstractObjectNormalizer.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Component/Serializer/Normalizer/AbstractObjectNormalizer.php b/src/Symfony/Component/Serializer/Normalizer/AbstractObjectNormalizer.php index 4f852c2b10f64..b5e8ed52f7e0c 100644 --- a/src/Symfony/Component/Serializer/Normalizer/AbstractObjectNormalizer.php +++ b/src/Symfony/Component/Serializer/Normalizer/AbstractObjectNormalizer.php @@ -344,7 +344,7 @@ private function isMaxDepthReached($class, $attribute, array &$context) private function getCacheKey($format, array $context) { try { - return $format.'-'.md5(serialize($context)); + return md5(serialize($format.$context)); } catch (\Exception $exception) { // The context cannot be serialized, skip the cache return false; From 05b24072f3d932e84783da15c69d389f65a3b936 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Wed, 13 Jul 2016 09:56:18 +0200 Subject: [PATCH 3/3] Fix the cache key generation --- .../Serializer/Normalizer/AbstractObjectNormalizer.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Component/Serializer/Normalizer/AbstractObjectNormalizer.php b/src/Symfony/Component/Serializer/Normalizer/AbstractObjectNormalizer.php index b5e8ed52f7e0c..2a8018dc0b1bc 100644 --- a/src/Symfony/Component/Serializer/Normalizer/AbstractObjectNormalizer.php +++ b/src/Symfony/Component/Serializer/Normalizer/AbstractObjectNormalizer.php @@ -344,7 +344,7 @@ private function isMaxDepthReached($class, $attribute, array &$context) private function getCacheKey($format, array $context) { try { - return md5(serialize($format.$context)); + return md5($format.serialize($context)); } catch (\Exception $exception) { // The context cannot be serialized, skip the cache return false;