Browse Source

changed serialization visitors to use getElementType in AbstractVisitor

Jens Hassler 11 years ago
parent
commit
f8a4de87eb

+ 15 - 0
src/JMS/Serializer/AbstractVisitor.php

@@ -38,4 +38,19 @@ abstract class AbstractVisitor implements VisitorInterface
     {
         return $data;
     }
+
+    /**
+     * @param array $typeArray
+     */
+    protected function getElementType($typeArray)
+    {
+        if (false === isset($typeArray['params'][0]))
+            return null;
+
+        if (isset($typeArray['params'][1]) && is_array($typeArray['params'][1]))
+            return $typeArray['params'][1];
+        else
+            return $typeArray['params'][0];
+    }
+
 }

+ 0 - 14
src/JMS/Serializer/GenericSerializationVisitor.php

@@ -111,20 +111,6 @@ abstract class GenericSerializationVisitor extends AbstractVisitor
         return $rs;
     }
 
-    /**
-     * @param array $typeArray
-     */
-    protected function getElementType($typeArray)
-    {
-        if (false === isset($typeArray['params'][0]))
-            return null;
-
-        if (isset($typeArray['params'][1]) && is_array($typeArray['params'][1]))
-            return $typeArray['params'][1];
-        else
-            return $typeArray['params'][0];
-    }
-
     public function startVisitingObject(ClassMetadata $metadata, $data, array $type, Context $context)
     {
         if (null === $this->root) {

+ 2 - 2
src/JMS/Serializer/XmlSerializationVisitor.php

@@ -171,8 +171,7 @@ class XmlSerializationVisitor extends AbstractVisitor
                 $entryNode->setAttribute($keyAttributeName, (string) $k);
             }
 
-            $typeArray = isset($type['params'][0]) ? (isset($type['params'][1]) && is_array($type['params'][1]) ? $type['params'][1] : $type['params'][0]) : null;
-            if (null !== $node = $this->navigator->accept($v, $typeArray, $context)) {
+            if (null !== $node = $this->navigator->accept($v, $this->getElementType($type), $context)) {
                 $this->currentNode->appendChild($node);
             }
 
@@ -180,6 +179,7 @@ class XmlSerializationVisitor extends AbstractVisitor
         }
     }
 
+
     public function startVisitingObject(ClassMetadata $metadata, $data, array $type, Context $context)
     {
         if (null === $this->document) {

+ 1 - 2
src/JMS/Serializer/YamlSerializationVisitor.php

@@ -96,8 +96,7 @@ class YamlSerializationVisitor extends AbstractVisitor
 
             $this->writer->indent();
 
-            $typeArray = isset($type['params'][0]) ? (isset($type['params'][1]) && is_array($type['params'][1]) ? $type['params'][1] : $type['params'][0]) : null;
-            if (null !== $v = $this->navigator->accept($v, $typeArray, $context)) {
+            if (null !== $v = $this->navigator->accept($v, $this->getElementType($type), $context)) {
                 $this->writer
                     ->rtrim(false)
                     ->writeln(' '.$v)