From c4bdee40ee96eee4753d9ee6b8bd2003e8fda50f Mon Sep 17 00:00:00 2001 From: Ruud Kamphuis Date: Thu, 8 Mar 2012 20:56:21 +0100 Subject: [PATCH] Moved readOnly check to GraphNavigator --- Serializer/GenericDeserializationVisitor.php | 4 ---- Serializer/GraphNavigator.php | 4 ++++ Serializer/XmlDeserializationVisitor.php | 6 +----- 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/Serializer/GenericDeserializationVisitor.php b/Serializer/GenericDeserializationVisitor.php index e2b6a592..6d5ffeda 100644 --- a/Serializer/GenericDeserializationVisitor.php +++ b/Serializer/GenericDeserializationVisitor.php @@ -173,10 +173,6 @@ public function visitProperty(PropertyMetadata $metadata, $data) return; } - if ($metadata->readOnly) { - return; - } - if (!$metadata->type) { throw new RuntimeException(sprintf('You must define a type for %s::$%s.', $metadata->reflection->getDeclaringClass()->getName(), $metadata->name)); } diff --git a/Serializer/GraphNavigator.php b/Serializer/GraphNavigator.php index c4a9ef42..f0918ee2 100644 --- a/Serializer/GraphNavigator.php +++ b/Serializer/GraphNavigator.php @@ -114,6 +114,10 @@ public function accept($data, $type, VisitorInterface $visitor) continue; } + if (self::DIRECTION_DESERIALIZATION === $this->direction && $propertyMetadata->readOnly) { + continue; + } + // try custom handler if (!$visitor->visitPropertyUsingCustomHandler($propertyMetadata, $data)) { $visitor->visitProperty($propertyMetadata, $data); diff --git a/Serializer/XmlDeserializationVisitor.php b/Serializer/XmlDeserializationVisitor.php index b71f4f34..259eb500 100644 --- a/Serializer/XmlDeserializationVisitor.php +++ b/Serializer/XmlDeserializationVisitor.php @@ -196,11 +196,7 @@ public function startVisitingObject(ClassMetadata $metadata, $data, $type) public function visitProperty(PropertyMetadata $metadata, $data) { $name = $this->namingStrategy->translateName($metadata); - - if ($metadata->readOnly) { - return; - } - + if (!$metadata->type) { throw new RuntimeException(sprintf('You must define a type for %s::$%s.', $metadata->reflection->getDeclaringClass()->getName(), $metadata->name)); }