DiscriminatorDeserializer   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 29
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 4
c 1
b 0
f 0
dl 0
loc 29
ccs 5
cts 5
cp 1
rs 10
wmc 2

2 Methods

Rating   Name   Duplication   Size   Complexity  
A deserialize() 0 3 1
A __construct() 0 3 1
1
<?php
2
/*
3
 * Copyright (c) Nate Brunette.
4
 * Distributed under the MIT License (http://opensource.org/licenses/MIT)
5
 */
6
7
declare(strict_types=1);
8
9
namespace Tebru\Gson\Internal;
10
11
use Tebru\Gson\Discriminator;
12
use Tebru\Gson\JsonDeserializationContext;
13
use Tebru\Gson\JsonDeserializer;
14
use Tebru\PhpType\TypeToken;
15
16
/**
17
 * Class DiscriminatorDeserializer
18
 *
19
 * Uses a [@see Discriminator] to provide the target class and delegates deserialization.
20
 *
21
 * @author Nate Brunette <[email protected]>
22
 */
23
final class DiscriminatorDeserializer implements JsonDeserializer
24
{
25
    /**
26
     * @var Discriminator
27
     */
28
    private $discriminator;
29
30
    /**
31
     * Constructor
32
     *
33
     * @param Discriminator $discriminator
34
     */
35 3
    public function __construct(Discriminator $discriminator)
36
    {
37 3
        $this->discriminator = $discriminator;
38 3
    }
39
40
    /**
41
     * Called during deserialization process, passing in the decoded json. Use
42
     * the JsonDeserializationContext if you want to delegate deserialization of sub types.
43
     *
44
     * @param object $value
45
     * @param TypeToken $type
46
     * @param JsonDeserializationContext $context
47
     * @return mixed
48
     */
49 3
    public function deserialize($value, TypeToken $type, JsonDeserializationContext $context)
50
    {
51 3
        return $context->deserialize($value, $this->discriminator->getClass($value));
52
    }
53
}
54