فهرست منبع

Moved readOnly check to GraphNavigator

Ruud Kamphuis 13 سال پیش
والد
کامیت
c4bdee40ee
3فایلهای تغییر یافته به همراه5 افزوده شده و 9 حذف شده
  1. 0 4
      Serializer/GenericDeserializationVisitor.php
  2. 4 0
      Serializer/GraphNavigator.php
  3. 1 5
      Serializer/XmlDeserializationVisitor.php

+ 0 - 4
Serializer/GenericDeserializationVisitor.php

@@ -173,10 +173,6 @@ abstract class GenericDeserializationVisitor extends AbstractDeserializationVisi
             return;
             return;
         }
         }
 
 
-        if ($metadata->readOnly) {
-	        return;
-	    }
-
         if (!$metadata->type) {
         if (!$metadata->type) {
             throw new RuntimeException(sprintf('You must define a type for %s::$%s.', $metadata->reflection->getDeclaringClass()->getName(), $metadata->name));
             throw new RuntimeException(sprintf('You must define a type for %s::$%s.', $metadata->reflection->getDeclaringClass()->getName(), $metadata->name));
         }
         }

+ 4 - 0
Serializer/GraphNavigator.php

@@ -114,6 +114,10 @@ final class GraphNavigator
                     continue;
                     continue;
                 }
                 }
 
 
+		        if (self::DIRECTION_DESERIALIZATION === $this->direction && $propertyMetadata->readOnly) {
+			        continue;
+			    }
+
                 // try custom handler
                 // try custom handler
                 if (!$visitor->visitPropertyUsingCustomHandler($propertyMetadata, $data)) {
                 if (!$visitor->visitPropertyUsingCustomHandler($propertyMetadata, $data)) {
                     $visitor->visitProperty($propertyMetadata, $data);
                     $visitor->visitProperty($propertyMetadata, $data);

+ 1 - 5
Serializer/XmlDeserializationVisitor.php

@@ -196,11 +196,7 @@ class XmlDeserializationVisitor extends AbstractDeserializationVisitor
     public function visitProperty(PropertyMetadata $metadata, $data)
     public function visitProperty(PropertyMetadata $metadata, $data)
     {
     {
         $name = $this->namingStrategy->translateName($metadata);
         $name = $this->namingStrategy->translateName($metadata);
-        
-        if ($metadata->readOnly) {
-	        return;
-	    }
-	
+
         if (!$metadata->type) {
         if (!$metadata->type) {
             throw new RuntimeException(sprintf('You must define a type for %s::$%s.', $metadata->reflection->getDeclaringClass()->getName(), $metadata->name));
             throw new RuntimeException(sprintf('You must define a type for %s::$%s.', $metadata->reflection->getDeclaringClass()->getName(), $metadata->name));
         }
         }