Completed
Push — master ( c5047e...3a177f )
by Gabriel
03:52
created

HasResolverPipelineTrait   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 59
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Test Coverage

Coverage 50%

Importance

Changes 0
Metric Value
wmc 7
lcom 1
cbo 1
dl 0
loc 59
ccs 9
cts 18
cp 0.5
rs 10
c 0
b 0
f 0

6 Methods

Rating   Name   Duplication   Size   Complexity  
A processCommand() 0 5 1
A buildCallPipeline() 0 4 1
A getCallPipelineBuilder() 0 7 2
A addCallPipeline() 0 4 1
A setCallPipelineBuilder() 0 4 1
A initCallPipeline() 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 6
    protected function buildCallPipeline()
37
    {
38 6
        return $this->getCallPipelineBuilder()->build();
39
    }
40
41
    /**
42
     * @return PipelineBuilder
43
     */
44 6
    public function getCallPipelineBuilder()
45
    {
46 6
        if ($this->callPipelineBuilder === null) {
47 1
            $this->initCallPipeline();
48
        }
49 6
        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