DebugUnitOfWork   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 96
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Test Coverage

Coverage 0%

Importance

Changes 3
Bugs 0 Features 0
Metric Value
wmc 7
lcom 1
cbo 2
dl 0
loc 96
ccs 0
cts 50
cp 0
rs 10
c 3
b 0
f 0

7 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A start() 0 6 1
A commit() 0 6 1
A rollback() 0 6 1
A registerAggregate() 0 16 1
A publishEvents() 0 8 1
A saveAggregates() 0 6 1
1
<?php
2
3
/*
4
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
5
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
6
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
7
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
8
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
9
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
10
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
11
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
12
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
13
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
14
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
15
 *
16
 * The software is based on the Axon Framework project which is
17
 * licensed under the Apache 2.0 license. For more information on the Axon Framework
18
 * see <http://www.axonframework.org/>.
19
 *
20
 * This software consists of voluntary contributions made by many individuals
21
 * and is licensed under the MIT license. For more information, see
22
 * <http://www.governor-framework.org/>.
23
 */
24
25
namespace Governor\Bundle\GovernorBundle\UnitOfWork;
26
27
use Governor\Framework\Domain\AggregateRootInterface;
28
use Governor\Framework\EventHandling\EventBusInterface;
29
use Governor\Framework\UnitOfWork\SaveAggregateCallbackInterface;
30
use Governor\Framework\UnitOfWork\TransactionManagerInterface;
31
use Symfony\Component\Stopwatch\Stopwatch;
32
use Governor\Framework\UnitOfWork\DefaultUnitOfWork;
33
34
class DebugUnitOfWork extends DefaultUnitOfWork
35
{
36
    /**
37
     * @var int
38
     */
39
    private static $level = 0;
40
41
    /**
42
     * @var Stopwatch
43
     */
44
    private $stopwatch;
45
46
    /**
47
     * @param Stopwatch $stopwatch
48
     * @param TransactionManagerInterface $transactionManager
49
     */
50
    public function __construct(Stopwatch $stopwatch, TransactionManagerInterface $transactionManager = null)
51
    {
52
        parent::__construct($transactionManager);
53
        $this->stopwatch = $stopwatch;
54
    }
55
56
    /**
57
     * {@inheritdoc}
58
     */
59
    public function start()
60
    {
61
        $this->stopwatch->start('governor_uow');
62
        self::$level++;
63
        parent::start();
64
    }
65
66
    /**
67
     * {@inheritdoc}
68
     */
69
    public function commit()
70
    {
71
        parent::commit();
72
        $this->stopwatch->stop('governor_uow');
73
        self::$level--;
74
    }
75
76
    /**
77
     * {@inheritdoc}
78
     */
79
    public function rollback(\Exception $ex = null)
80
    {
81
        parent::rollback($ex);
82
        $this->stopwatch->stop('governor_uow');
83
        self::$level--;
84
    }
85
86
    /**
87
     * {@inheritdoc}
88
     */
89
    public function registerAggregate(
90
        AggregateRootInterface $aggregateRoot,
91
        EventBusInterface $eventBus,
92
        SaveAggregateCallbackInterface $saveAggregateCallback
93
    ) {
94
95
        $this->stopwatch->start('register_aggregates');
96
        $result = parent::registerAggregate(
97
            $aggregateRoot,
98
            $eventBus,
99
            $saveAggregateCallback
100
        );
101
        $this->stopwatch->stop('register_aggregates');
102
103
        return $result;
104
    }
105
106
    /**
107
     * {@inheritdoc}
108
     */
109
    protected function publishEvents()
110
    {
111
        $this->stopwatch->start('publish_events');
112
        $result = parent::publishEvents();
0 ignored issues
show
Bug introduced by
Are you sure the assignment to $result is correct as parent::publishEvents() (which targets Governor\Framework\UnitO...OfWork::publishEvents()) seems to always return null.

This check looks for function or method calls that always return null and whose return value is assigned to a variable.

class A
{
    function getObject()
    {
        return null;
    }

}

$a = new A();
$object = $a->getObject();

The method getObject() can return nothing but null, so it makes no sense to assign that value to a variable.

The reason is most likely that a function or method is imcomplete or has been reduced for debug purposes.

Loading history...
113
        $this->stopwatch->stop('publish_events');
114
115
        return $result;
116
    }
117
118
    /**
119
     * {@inheritdoc}
120
     */
121
    protected function saveAggregates()
122
    {
123
        $this->stopwatch->start('save_aggregates');
124
        parent::saveAggregates();
125
        $this->stopwatch->stop('save_aggregates');
126
    }
127
128
129
}