HasResolverPipelineTrait   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 57
Duplicated Lines 0 %

Test Coverage

Coverage 47.06%

Importance

Changes 1
Bugs 0 Features 1
Metric Value
eloc 11
c 1
b 0
f 1
dl 0
loc 57
ccs 8
cts 17
cp 0.4706
rs 10
wmc 7

6 Methods

Rating   Name   Duplication   Size   Complexity  
A setCallPipelineBuilder() 0 3 1
A buildCallPipeline() 0 3 1
A addCallPipeline() 0 3 1
A getCallPipelineBuilder() 0 6 2
A initCallPipeline() 0 3 1
A processCommand() 0 4 1
1
<?php
2
3
namespace Nip\Records\Locator\Resolver;
4
5
use League\Pipeline\InterruptibleProcessor;
6
use Nip\Records\Locator\Resolver\Commands\Command;
7
use Nip\Records\Locator\Resolver\Pipeline\PipelineBuilder;
8
use Nip\Records\Locator\Resolver\Pipeline\Stages\StageInterface;
9
use Psr\Http\Message\ResponseInterface;
10
11
/**
12
 * Trait HasResolverPipelineTrait
13
 * @package Nip\Records\Locator\Resolver
14
 */
15
trait HasResolverPipelineTrait
16
{
17
    /**
18
     * @var null|PipelineBuilder
19
     */
20
    protected $callPipelineBuilder = null;
21
22
    /**
23
     * @param Command $command
24
     * @return Command
25
     * @throws ForwardException
26
     */
27
    protected function processCommand(Command $command)
28
    {
29
        $pipeline = $this->buildCallPipeline();
30
        return $pipeline->process($command);
31
    }
32
33
    /**
34
     * @return \League\Pipeline\PipelineInterface|\League\Pipeline\Pipeline
35
     */
36 3
    protected function buildCallPipeline()
37
    {
38 3
        return $this->getCallPipelineBuilder()->build();
39
    }
40
41
    /**
42
     * @return PipelineBuilder
43
     */
44 3
    public function getCallPipelineBuilder()
45
    {
46 3
        if ($this->callPipelineBuilder === null) {
47 1
            $this->initCallPipeline();
48
        }
49 3
        return $this->callPipelineBuilder;
50
    }
51
52
    /**
53
     * @param StageInterface $stage
54
     */
55
    public function addCallPipeline(StageInterface $stage)
56
    {
57
        $this->getCallPipelineBuilder()->add($stage);
58
    }
59
60
    /**
61
     * @param PipelineBuilder $callPipelineBuilder
62
     */
63
    public function setCallPipelineBuilder(PipelineBuilder $callPipelineBuilder): void
64
    {
65
        $this->callPipelineBuilder = $callPipelineBuilder;
66
    }
67
68
69 1
    public function initCallPipeline()
70
    {
71 1
        $this->callPipelineBuilder = (new PipelineBuilder);
72 1
    }
73
}
74