* * 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 * * @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; }