Completed
Push — feature/fix-somescrutinizer-is... ( 03fa6a...7ccc0d )
by Narcotic
09:35
created

ExtReferenceHandler::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2
Metric Value
dl 0
loc 4
ccs 0
cts 4
cp 0
rs 10
cc 1
eloc 2
nc 1
nop 1
crap 2
1
<?php
2
/**
3
 * ExtReferenceHandler class file
4
 */
5
6
namespace Graviton\DocumentBundle\Serializer\Handler;
7
8
use Graviton\DocumentBundle\Entity\ExtReference;
9
use Graviton\DocumentBundle\Service\ExtReferenceConverterInterface;
10
use JMS\Serializer\Context;
11
use JMS\Serializer\JsonDeserializationVisitor;
12
use JMS\Serializer\JsonSerializationVisitor;
13
14
/**
15
 * JMS serializer handler for ExtReference
16
 *
17
 * @author   List of contributors <https://github.com/libgraviton/graviton/graphs/contributors>
18
 * @license  http://opensource.org/licenses/GPL GPL
19
 * @link     http://swisscom.ch
20
 */
21
class ExtReferenceHandler
22
{
23
    /**
24
     * @var ExtReferenceConverterInterface
25
     */
26
    private $converter;
27
28
    /**
29
     * Constructor
30
     *
31
     * @param ExtReferenceConverterInterface $converter Converter
32
     */
33
    public function __construct(ExtReferenceConverterInterface $converter)
34
    {
35
        $this->converter = $converter;
36
    }
37
38
    /**
39
     * Serialize extref to JSON
40
     *
41
     * @param JsonSerializationVisitor $visitor      Visitor
42
     * @param ExtReference             $extReference Extref
43
     * @param array                    $type         Type
44
     * @param Context                  $context      Context
45
     * @return string|null
46
     */
47
    public function serializeExtReferenceToJson(
48
        JsonSerializationVisitor $visitor,
49
        ExtReference $extReference,
50
        array $type,
51
        Context $context
52
    ) {
53
        try {
54
            return $visitor->visitString($this->converter->getUrl($extReference), $type, $context);
55
        } catch (\InvalidArgumentException $e) {
56
            return $visitor->visitNull(null, $type, $context);
57
        }
58
    }
59
60
    /**
61
     * Serialize extref to JSON
62
     *
63
     * @param JsonDeserializationVisitor $visitor Visitor
64
     * @param string                     $url     Extref URL
65
     * @param array                      $type    Type
66
     * @param Context                    $context Context
67
     * @return ExtReference|null
68
     */
69
    public function deserializeExtReferenceFromJson(
70
        JsonDeserializationVisitor $visitor,
71
        $url,
72
        array $type,
73
        Context $context
74
    ) {
75
        try {
76
            return $this->converter->getExtReference(
77
                $visitor->visitString($url, $type, $context)
78
            );
79
        } catch (\InvalidArgumentException $e) {
80
            return null;
81
        }
82
    }
83
}
84