Passed
Push — master ( 1624f2...3d792a )
by
unknown
01:39
created

ReferenceListSerializer   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 55
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Test Coverage

Coverage 93.75%

Importance

Changes 0
Metric Value
wmc 6
lcom 1
cbo 2
dl 0
loc 55
ccs 15
cts 16
cp 0.9375
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A isSerializerFor() 0 3 1
A getSerialized() 0 9 2
A serialize() 0 10 2
1
<?php
2
3
namespace Wikibase\DataModel\Serializers;
4
5
use Serializers\DispatchableSerializer;
6
use Serializers\Exceptions\SerializationException;
7
use Serializers\Exceptions\UnsupportedObjectException;
8
use Serializers\Serializer;
9
use Wikibase\DataModel\ReferenceList;
10
11
/**
12
 * Package private
13
 *
14
 * @license GPL-2.0+
15
 * @author Thomas Pellissier Tanon
16
 */
17
class ReferenceListSerializer implements DispatchableSerializer {
18
19
	/**
20
	 * @var Serializer
21
	 */
22
	private $referenceSerializer;
23
24
	/**
25
	 * @param Serializer $referenceSerializer
26
	 */
27 37
	public function __construct( Serializer $referenceSerializer ) {
28 37
		$this->referenceSerializer = $referenceSerializer;
29 37
	}
30
31
	/**
32
	 * @see Serializer::isSerializerFor
33
	 *
34
	 * @param mixed $object
35
	 *
36
	 * @return bool
37
	 */
38 15
	public function isSerializerFor( $object ) {
39 15
		return $object instanceof ReferenceList;
40
	}
41
42
	/**
43
	 * @see Serializer::serialize
44
	 *
45
	 * @param ReferenceList $object
46
	 *
47
	 * @throws SerializationException
48
	 * @return array[]
49
	 */
50 10
	public function serialize( $object ) {
51 10
		if ( !$this->isSerializerFor( $object ) ) {
52 3
			throw new UnsupportedObjectException(
53
				$object,
54 3
				'ReferenceListSerializer can only serialize ReferenceList objects'
55
			);
56
		}
57
58 7
		return $this->getSerialized( $object );
59
	}
60
61 7
	private function getSerialized( ReferenceList $references ) {
62 7
		$serialization = array();
63
64 7
		foreach ( $references as $reference ) {
65 3
			$serialization[] = $this->referenceSerializer->serialize( $reference );
66
		}
67
68 7
		return $serialization;
69
	}
70
71
}
72