50 lines
1.6 KiB
PHP
50 lines
1.6 KiB
PHP
|
<?php
|
||
|
|
||
|
/*
|
||
|
* This file is part of the Symfony package.
|
||
|
*
|
||
|
* (c) Fabien Potencier <fabien@symfony.com>
|
||
|
*
|
||
|
* For the full copyright and license information, please view the LICENSE
|
||
|
* file that was distributed with this source code.
|
||
|
*/
|
||
|
|
||
|
namespace Symfony\Bridge\Doctrine\Messenger;
|
||
|
|
||
|
use Doctrine\ORM\EntityManagerInterface;
|
||
|
use Doctrine\Persistence\ManagerRegistry;
|
||
|
use Symfony\Component\Messenger\Envelope;
|
||
|
use Symfony\Component\Messenger\Exception\UnrecoverableMessageHandlingException;
|
||
|
use Symfony\Component\Messenger\Middleware\MiddlewareInterface;
|
||
|
use Symfony\Component\Messenger\Middleware\StackInterface;
|
||
|
|
||
|
/**
|
||
|
* @author Konstantin Myakshin <molodchick@gmail.com>
|
||
|
*
|
||
|
* @internal
|
||
|
*/
|
||
|
abstract class AbstractDoctrineMiddleware implements MiddlewareInterface
|
||
|
{
|
||
|
protected ManagerRegistry $managerRegistry;
|
||
|
protected ?string $entityManagerName;
|
||
|
|
||
|
public function __construct(ManagerRegistry $managerRegistry, ?string $entityManagerName = null)
|
||
|
{
|
||
|
$this->managerRegistry = $managerRegistry;
|
||
|
$this->entityManagerName = $entityManagerName;
|
||
|
}
|
||
|
|
||
|
final public function handle(Envelope $envelope, StackInterface $stack): Envelope
|
||
|
{
|
||
|
try {
|
||
|
$entityManager = $this->managerRegistry->getManager($this->entityManagerName);
|
||
|
} catch (\InvalidArgumentException $e) {
|
||
|
throw new UnrecoverableMessageHandlingException($e->getMessage(), 0, $e);
|
||
|
}
|
||
|
|
||
|
return $this->handleForManager($entityManager, $envelope, $stack);
|
||
|
}
|
||
|
|
||
|
abstract protected function handleForManager(EntityManagerInterface $entityManager, Envelope $envelope, StackInterface $stack): Envelope;
|
||
|
}
|