ReferenceListDeserializer::deserialize()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 7
ccs 4
cts 4
cp 1
rs 10
c 0
b 0
f 0
cc 2
nc 2
nop 1
crap 2
1
<?php
2
3
namespace Wikibase\DataModel\Deserializers;
4
5
use Deserializers\Deserializer;
6
use Deserializers\Exceptions\DeserializationException;
7
use Wikibase\DataModel\Reference;
8
use Wikibase\DataModel\ReferenceList;
9
10
/**
11
 * Package private
12
 *
13
 * @license GPL-2.0-or-later
14
 * @author Thomas Pellissier Tanon
15
 */
16
class ReferenceListDeserializer implements Deserializer {
17
18
	/**
19
	 * @var Deserializer
20
	 */
21
	private $referenceDeserializer;
22
23 36
	public function __construct( Deserializer $referenceDeserializer ) {
24 36
		$this->referenceDeserializer = $referenceDeserializer;
25 36
	}
26
27
	/**
28
	 * @see Deserializer::deserialize
29
	 *
30
	 * @param array[] $serialization
31
	 *
32
	 * @throws DeserializationException
33
	 * @return ReferenceList
34
	 */
35 11
	public function deserialize( $serialization ) {
36 11
		if ( !is_array( $serialization ) ) {
37 1
			throw new DeserializationException( 'The ReferenceList serialization should be an array' );
38
		}
39
40 10
		return $this->getDeserialized( $serialization );
41
	}
42
43
	/**
44
	 * @param array[] $serialization
45
	 *
46
	 * @return ReferenceList
47
	 */
48 10
	private function getDeserialized( array $serialization ) {
49 10
		$referenceList = new ReferenceList();
50
51 10
		foreach ( $serialization as $referenceSerialization ) {
52
			/** @var Reference $reference */
53 7
			$reference = $this->referenceDeserializer->deserialize( $referenceSerialization );
54 7
			$referenceList->addReference( $reference );
55
		}
56
57 10
		return $referenceList;
58
	}
59
60
}
61