Hydrator::getTaskFromTaskEvent()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 16

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
nc 2
nop 1
dl 0
loc 16
rs 9.7333
c 0
b 0
f 0
1
<?php
2
3
namespace Jarobe\TaskRunnerBundle\Hydrator;
4
5
use Jarobe\TaskRunnerBundle\Entity\TaskEventInterface;
6
use Jarobe\TaskRunnerBundle\Exception\TaskException;
7
use Jarobe\TaskRunnerBundle\TaskType\TaskTypeInterface;
8
9
class Hydrator implements HydratorInterface
10
{
11
    private $registry;
12
13
    public function __construct(RegistryInterface $registry)
14
    {
15
        $this->registry = $registry;
16
    }
17
18
    /**
19
     * @param TaskEventInterface $taskEvent
20
     * @return TaskTypeInterface
21
     * @throws TaskException
22
     */
23
    public function getTaskFromTaskEvent(TaskEventInterface $taskEvent)
24
    {
25
        $className = $this->registry->getClassByName($taskEvent->getTaskName());
26
27
        /** @var TaskTypeInterface $task */
28
        $task = new $className();
29
30
        if (!$task instanceof TaskTypeInterface) {
31
            $error = sprintf("Invalid Task Event provided. %s is not a valid task", $className);
32
            throw new TaskException($error);
33
        }
34
35
        $task->setFromPayload($taskEvent->getPayload());
36
37
        return $task;
38
    }
39
}
40