Add listeners cleanup
[MAILPOET-3833]
This commit is contained in:
@@ -51,6 +51,7 @@ class EntityManagerFactory {
|
|||||||
|
|
||||||
public function createEntityManager(): EntityManager {
|
public function createEntityManager(): EntityManager {
|
||||||
$entityManager = EntityManager::create($this->connection, $this->configuration);
|
$entityManager = EntityManager::create($this->connection, $this->configuration);
|
||||||
|
$this->cleanupListeners($entityManager);
|
||||||
$this->setupListeners($entityManager);
|
$this->setupListeners($entityManager);
|
||||||
if (
|
if (
|
||||||
class_exists(Debugger::class)
|
class_exists(Debugger::class)
|
||||||
@@ -61,6 +62,22 @@ class EntityManagerFactory {
|
|||||||
return $entityManager;
|
return $entityManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* We sometimes work with more EntityManager in tests, and the behavior could be inconsistent with multiple listeners
|
||||||
|
*/
|
||||||
|
private function cleanupListeners(EntityManager $entityManager) {
|
||||||
|
$eventManager = $entityManager->getEventManager();
|
||||||
|
foreach ($eventManager->getListeners() as $event => $listeners) {
|
||||||
|
if (!is_array($listeners)) {
|
||||||
|
$eventManager->removeEventListener($event, $listeners);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
foreach ($listeners as $listener) {
|
||||||
|
$eventManager->removeEventListener($event, $listener);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private function setupListeners(EntityManager $entityManager) {
|
private function setupListeners(EntityManager $entityManager) {
|
||||||
$entityManager->getEventManager()->addEventListener(
|
$entityManager->getEventManager()->addEventListener(
|
||||||
[Events::prePersist, Events::preUpdate],
|
[Events::prePersist, Events::preUpdate],
|
||||||
|
Reference in New Issue
Block a user