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

ExtReferenceHandler   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 63
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Test Coverage

Coverage 0%
Metric Value
wmc 5
lcom 1
cbo 3
dl 0
loc 63
ccs 0
cts 30
cp 0
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A serializeExtReferenceToJson() 0 12 2
A deserializeExtReferenceFromJson() 0 14 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