IncomingLogicalMessage   A
last analyzed

Complexity

Total Complexity 9

Size/Duplication

Total Lines 85
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 9
lcom 1
cbo 2
dl 0
loc 85
ccs 25
cts 25
cp 1
rs 10
c 0
b 0
f 0

6 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 10 2
A getMessageInstance() 0 4 1
A getMessageClass() 0 4 1
A getMessageInterfaces() 0 4 1
A getMessageTypes() 0 4 1
A updateInstance() 0 15 3
1
<?php
2
namespace PSB\Core\Pipeline\Incoming;
3
4
5
use PSB\Core\Exception\InvalidArgumentException;
6
7
class IncomingLogicalMessage
8
{
9
    /**
10
     * @var object
11
     */
12
    private $messageInstance;
13
14
    /**
15
     * @var string
16
     */
17
    private $messageClass;
18
19
    /**
20
     * @var array
21
     */
22
    private $messageInterfaces;
23
24
    /**
25
     * @param object $messageInstance
26
     * @param string $messageClass
27
     * @param array  $messageInterfaces
28
     */
29 14
    public function __construct($messageInstance, $messageClass, array $messageInterfaces = [])
30
    {
31 14
        if (!is_object($messageInstance)) {
32 1
            throw new InvalidArgumentException('Message instance must be an object.');
33
        }
34
35 13
        $this->messageInstance = $messageInstance;
36 13
        $this->messageClass = $messageClass;
37 13
        $this->messageInterfaces = $messageInterfaces;
38 13
    }
39
40
    /**
41
     * @return object
42
     */
43 5
    public function getMessageInstance()
44
    {
45 5
        return $this->messageInstance;
46
    }
47
48
    /**
49
     * @return string
50
     */
51 7
    public function getMessageClass()
52
    {
53 7
        return $this->messageClass;
54
    }
55
56
    /**
57
     * @return array
58
     */
59 5
    public function getMessageInterfaces()
60
    {
61 5
        return $this->messageInterfaces;
62
    }
63
64
    /**
65
     * @return array
66
     */
67 1
    public function getMessageTypes()
68
    {
69 1
        return array_merge([$this->messageClass], $this->messageInterfaces);
70
    }
71
72
    /**
73
     * @param object                        $messageInstance
74
     * @param IncomingLogicalMessageFactory $helperFactory
75
     */
76 3
    public function updateInstance($messageInstance, IncomingLogicalMessageFactory $helperFactory)
77
    {
78 3
        if (!is_object($messageInstance)) {
79 1
            throw new InvalidArgumentException('Message instance must be an object.');
80
        }
81
82 2
        if ($messageInstance === $this->messageInstance) {
83 1
            return;
84
        }
85
86 1
        $helperLogicalMessage = $helperFactory->createFromObject($messageInstance);
87 1
        $this->messageInstance = $messageInstance;
88 1
        $this->messageClass = $helperLogicalMessage->getMessageClass();
89 1
        $this->messageInterfaces = $helperLogicalMessage->getMessageInterfaces();
90 1
    }
91
}
92