Hydrator::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 1
dl 0
loc 4
rs 10
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