1<?php
2namespace GoetasWebservices\Xsd\XsdToPhpRuntime\Jms\Handler;
3
4use JMS\Serializer\Context;
5use JMS\Serializer\GraphNavigator;
6use JMS\Serializer\Handler\SubscribingHandlerInterface;
7use JMS\Serializer\XmlDeserializationVisitor;
8use JMS\Serializer\XmlSerializationVisitor;
9
10class BaseTypesHandler implements SubscribingHandlerInterface
11{
12
13    public static function getSubscribingMethods()
14    {
15        return array(
16            array(
17                'direction' => GraphNavigator::DIRECTION_SERIALIZATION,
18                'format' => 'xml',
19                'type' => 'GoetasWebservices\Xsd\XsdToPhp\Jms\SimpleListOf',
20                'method' => 'simpleListOfToXml'
21            ),
22            array(
23                'direction' => GraphNavigator::DIRECTION_DESERIALIZATION,
24                'format' => 'xml',
25                'type' => 'GoetasWebservices\Xsd\XsdToPhp\Jms\SimpleListOf',
26                'method' => 'simpleListOfFromXML'
27            )
28        );
29    }
30
31    public function simpleListOfToXml(XmlSerializationVisitor $visitor, $object, array $type, Context $context)
32    {
33
34        $newType = array(
35            'name' => $type["params"][0]["name"],
36            'params' => array()
37        );
38
39        $navigator = $context->getNavigator();
40        $ret = array();
41        foreach ($object as $v) {
42            $ret[] = $navigator->accept($v, $newType, $context)->data;
43        }
44
45        return $visitor->getDocument()->createTextNode(implode(" ", $ret));
46    }
47
48    public function simpleListOfFromXml(XmlDeserializationVisitor $visitor, $node, array $type, Context $context)
49    {
50        $newType = array(
51            'name' => $type["params"][0]["name"],
52            'params' => array()
53        );
54        $ret = array();
55        $navigator = $context->getNavigator();
56        foreach (explode(" ", (string)$node) as $v) {
57            $ret[] = $navigator->accept($v, $newType, $context);
58        }
59        return $ret;
60    }
61}
62
63