Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit e10a894

Browse files
committed
Fix events compatibility
1 parent 0ea448c commit e10a894

File tree

3 files changed

+46
-13
lines changed

3 files changed

+46
-13
lines changed

‎pkg/async-event-dispatcher/DependencyInjection/AsyncEventsPass.php‎

Lines changed: 41 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
use Symfony\Component\DependencyInjection\ContainerBuilder;
77
use Symfony\Component\EventDispatcher\DependencyInjection\RegisterListenersPass;
88
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
9+
use Symfony\Component\HttpKernel\Kernel;
910

1011
class AsyncEventsPass implements CompilerPassInterface
1112
{
@@ -21,6 +22,9 @@ public function process(ContainerBuilder $container): void
2122

2223
$defaultClient = $container->getParameter('enqueue.default_client');
2324

25+
// TODO: Remove when dropping Symfony < 5.3
26+
$useLegacyDispatcherConfig = (Kernel::VERSION_ID < 50300);
27+
2428
$registeredToEvent = [];
2529
foreach ($container->findTaggedServiceIds('kernel.event_listener') as $serviceId => $tagAttributes) {
2630
foreach ($tagAttributes as $tagAttribute) {
@@ -32,8 +36,10 @@ public function process(ContainerBuilder $container): void
3236

3337
$service = $container->getDefinition($serviceId);
3438

35-
$service->clearTag('kernel.event_listener');
36-
$service->addTag('enqueue.async_event_listener', $tagAttribute);
39+
if ($useLegacyDispatcherConfig) {
40+
$service->clearTag('kernel.event_listener');
41+
$service->addTag('enqueue.async_event_listener', $tagAttribute);
42+
}
3743

3844
if (false == isset($registeredToEvent[$event])) {
3945
$container->getDefinition('enqueue.events.async_listener')
@@ -43,6 +49,16 @@ public function process(ContainerBuilder $container): void
4349
])
4450
;
4551

52+
if (!$useLegacyDispatcherConfig) {
53+
$container->getDefinition('enqueue.events.async_listener')
54+
->addTag('kernel.event_listener', [
55+
'event' => $event,
56+
'method' => 'onEvent',
57+
'dispatcher' => 'enqueue.events.event_dispatcher',
58+
])
59+
;
60+
}
61+
4662
$container->getDefinition('enqueue.events.async_processor')
4763
->addTag('enqueue.processor', [
4864
'topic' => 'event.'.$event,
@@ -62,8 +78,11 @@ public function process(ContainerBuilder $container): void
6278
}
6379

6480
$service = $container->getDefinition($serviceId);
65-
$service->clearTag('kernel.event_subscriber');
66-
$service->addTag('enqueue.async_event_subscriber', $tagAttribute);
81+
82+
if ($useLegacyDispatcherConfig) {
83+
$service->clearTag('kernel.event_subscriber');
84+
$service->addTag('enqueue.async_event_subscriber', $tagAttribute);
85+
}
6786

6887
/** @var EventSubscriberInterface $serviceClass */
6988
$serviceClass = $service->getClass();
@@ -77,6 +96,16 @@ public function process(ContainerBuilder $container): void
7796
])
7897
;
7998

99+
if (!$useLegacyDispatcherConfig) {
100+
$container->getDefinition('enqueue.events.async_listener')
101+
->addTag('kernel.event_listener', [
102+
'event' => $event,
103+
'method' => 'onEvent',
104+
'dispatcher' => 'enqueue.events.event_dispatcher',
105+
])
106+
;
107+
}
108+
80109
$container->getDefinition('enqueue.events.async_processor')
81110
->addTag('enqueue.processor', [
82111
'topicName' => 'event.'.$event,
@@ -90,11 +119,13 @@ public function process(ContainerBuilder $container): void
90119
}
91120
}
92121

93-
$registerListenersPass = new RegisterListenersPass(
94-
'enqueue.events.event_dispatcher',
95-
'enqueue.async_event_listener',
96-
'enqueue.async_event_subscriber'
97-
);
98-
$registerListenersPass->process($container);
122+
if ($useLegacyDispatcherConfig) {
123+
$registerListenersPass = new RegisterListenersPass(
124+
'enqueue.events.event_dispatcher',
125+
'enqueue.async_event_listener',
126+
'enqueue.async_event_subscriber'
127+
);
128+
$registerListenersPass->process($container);
129+
}
99130
}
100131
}

‎pkg/enqueue-bundle/Tests/Functional/App/config/config-sf5.yml‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ framework:
99
test: ~
1010
assets: false
1111
session:
12-
# the only option incompatible with Symfony 6
12+
# option incompatible with Symfony 6
1313
storage_id: session.storage.mock_file
1414
secret: '%secret%'
1515
router: { resource: '%kernel.project_dir%/config/routing.yml' }
@@ -88,6 +88,7 @@ services:
8888
public: true
8989
tags:
9090
- { name: 'kernel.event_listener', async: true, event: 'test_async', method: 'onEvent' }
91+
# In Symfony 6 you would also add "dispatcher: 'enqueue.events.event_dispatcher'"
9192

9293
test_command_subscriber_processor:
9394
class: 'Enqueue\Bundle\Tests\Functional\App\TestCommandSubscriberProcessor'
@@ -112,6 +113,7 @@ services:
112113
public: true
113114
tags:
114115
- { name: 'kernel.event_subscriber', async: true }
116+
# In Symfony 6 you would also add "dispatcher: 'enqueue.events.event_dispatcher'"
115117

116118
test_async_event_transformer:
117119
class: 'Enqueue\Bundle\Tests\Functional\App\TestAsyncEventTransformer'

‎pkg/enqueue-bundle/Tests/Functional/App/config/config.yml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ services:
8686
class: 'Enqueue\Bundle\Tests\Functional\App\TestAsyncListener'
8787
public: true
8888
tags:
89-
- { name: 'kernel.event_listener', async: true, event: 'test_async', method: 'onEvent' }
89+
- { name: 'kernel.event_listener', async: true, event: 'test_async', method: 'onEvent', dispatcher: 'enqueue.events.event_dispatcher' }
9090

9191
test_command_subscriber_processor:
9292
class: 'Enqueue\Bundle\Tests\Functional\App\TestCommandSubscriberProcessor'
@@ -110,7 +110,7 @@ services:
110110
class: 'Enqueue\Bundle\Tests\Functional\App\TestAsyncSubscriber'
111111
public: true
112112
tags:
113-
- { name: 'kernel.event_subscriber', async: true }
113+
- { name: 'kernel.event_subscriber', async: true, dispatcher: 'enqueue.events.event_dispatcher' }
114114

115115
test_async_event_transformer:
116116
class: 'Enqueue\Bundle\Tests\Functional\App\TestAsyncEventTransformer'

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /