Skip to content

Commit 73e6178

Browse files
authored
Merge pull request #388 from php-enqueue/bundle-transport-already-added-fix
[bundle] fix for "Transport factory with such name already added"
2 parents 9425621 + b8fe878 commit 73e6178

File tree

3 files changed

+41
-30
lines changed

3 files changed

+41
-30
lines changed

pkg/enqueue-bundle/DependencyInjection/EnqueueExtension.php

+14-3
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,24 @@ public function addTransportFactory(TransportFactoryInterface $transportFactory)
4141
{
4242
$name = $transportFactory->getName();
4343

44-
if (empty($name)) {
45-
throw new \LogicException('Transport factory name cannot be empty');
46-
}
4744
if (array_key_exists($name, $this->factories)) {
4845
throw new \LogicException(sprintf('Transport factory with such name already added. Name %s', $name));
4946
}
5047

48+
$this->setTransportFactory($transportFactory);
49+
}
50+
51+
/**
52+
* @param TransportFactoryInterface $transportFactory
53+
*/
54+
public function setTransportFactory(TransportFactoryInterface $transportFactory)
55+
{
56+
$name = $transportFactory->getName();
57+
58+
if (empty($name)) {
59+
throw new \LogicException('Transport factory name cannot be empty');
60+
}
61+
5162
$this->factories[$name] = $transportFactory;
5263
}
5364

pkg/enqueue-bundle/EnqueueBundle.php

+18-18
Original file line numberDiff line numberDiff line change
@@ -54,54 +54,54 @@ public function build(ContainerBuilder $container)
5454
$extension = $container->getExtension('enqueue');
5555

5656
if (class_exists(StompConnectionFactory::class)) {
57-
$extension->addTransportFactory(new StompTransportFactory('stomp'));
58-
$extension->addTransportFactory(new RabbitMqStompTransportFactory('rabbitmq_stomp'));
57+
$extension->setTransportFactory(new StompTransportFactory('stomp'));
58+
$extension->setTransportFactory(new RabbitMqStompTransportFactory('rabbitmq_stomp'));
5959
} else {
60-
$extension->addTransportFactory(new MissingTransportFactory('stomp', ['enqueue/stomp']));
61-
$extension->addTransportFactory(new MissingTransportFactory('rabbitmq_stomp', ['enqueue/stomp']));
60+
$extension->setTransportFactory(new MissingTransportFactory('stomp', ['enqueue/stomp']));
61+
$extension->setTransportFactory(new MissingTransportFactory('rabbitmq_stomp', ['enqueue/stomp']));
6262
}
6363

6464
if (
6565
class_exists(AmqpBunnyConnectionFactory::class) ||
6666
class_exists(AmqpExtConnectionFactory::class) ||
6767
class_exists(AmqpLibConnectionFactory::class)
6868
) {
69-
$extension->addTransportFactory(new AmqpTransportFactory('amqp'));
70-
$extension->addTransportFactory(new RabbitMqAmqpTransportFactory('rabbitmq_amqp'));
69+
$extension->setTransportFactory(new AmqpTransportFactory('amqp'));
70+
$extension->setTransportFactory(new RabbitMqAmqpTransportFactory('rabbitmq_amqp'));
7171
} else {
7272
$amppPackages = ['enqueue/amqp-ext', 'enqueue/amqp-bunny', 'enqueue/amqp-lib'];
73-
$extension->addTransportFactory(new MissingTransportFactory('amqp', $amppPackages));
74-
$extension->addTransportFactory(new MissingTransportFactory('rabbitmq_amqp', $amppPackages));
73+
$extension->setTransportFactory(new MissingTransportFactory('amqp', $amppPackages));
74+
$extension->setTransportFactory(new MissingTransportFactory('rabbitmq_amqp', $amppPackages));
7575
}
7676

7777
if (class_exists(FsConnectionFactory::class)) {
78-
$extension->addTransportFactory(new FsTransportFactory('fs'));
78+
$extension->setTransportFactory(new FsTransportFactory('fs'));
7979
} else {
80-
$extension->addTransportFactory(new MissingTransportFactory('fs', ['enqueue/fs']));
80+
$extension->setTransportFactory(new MissingTransportFactory('fs', ['enqueue/fs']));
8181
}
8282

8383
if (class_exists(RedisConnectionFactory::class)) {
84-
$extension->addTransportFactory(new RedisTransportFactory('redis'));
84+
$extension->setTransportFactory(new RedisTransportFactory('redis'));
8585
} else {
86-
$extension->addTransportFactory(new MissingTransportFactory('redis', ['enqueue/redis']));
86+
$extension->setTransportFactory(new MissingTransportFactory('redis', ['enqueue/redis']));
8787
}
8888

8989
if (class_exists(DbalConnectionFactory::class)) {
90-
$extension->addTransportFactory(new DbalTransportFactory('dbal'));
90+
$extension->setTransportFactory(new DbalTransportFactory('dbal'));
9191
} else {
92-
$extension->addTransportFactory(new MissingTransportFactory('dbal', ['enqueue/dbal']));
92+
$extension->setTransportFactory(new MissingTransportFactory('dbal', ['enqueue/dbal']));
9393
}
9494

9595
if (class_exists(SqsConnectionFactory::class)) {
96-
$extension->addTransportFactory(new SqsTransportFactory('sqs'));
96+
$extension->setTransportFactory(new SqsTransportFactory('sqs'));
9797
} else {
98-
$extension->addTransportFactory(new MissingTransportFactory('sqs', ['enqueue/sqs']));
98+
$extension->setTransportFactory(new MissingTransportFactory('sqs', ['enqueue/sqs']));
9999
}
100100

101101
if (class_exists(GpsConnectionFactory::class)) {
102-
$extension->addTransportFactory(new GpsTransportFactory('gps'));
102+
$extension->setTransportFactory(new GpsTransportFactory('gps'));
103103
} else {
104-
$extension->addTransportFactory(new MissingTransportFactory('gps', ['enqueue/gps']));
104+
$extension->setTransportFactory(new MissingTransportFactory('gps', ['enqueue/gps']));
105105
}
106106

107107
$container->addCompilerPass(new AsyncEventsPass(), PassConfig::TYPE_BEFORE_OPTIMIZATION, 100);

pkg/enqueue-bundle/Tests/Unit/EnqueueBundleTest.php

+9-9
Original file line numberDiff line numberDiff line change
@@ -98,12 +98,12 @@ public function testShouldRegisterStompAndRabbitMqStompTransportFactories()
9898

9999
$extensionMock
100100
->expects($this->at(0))
101-
->method('addTransportFactory')
101+
->method('setTransportFactory')
102102
->with($this->isInstanceOf(StompTransportFactory::class))
103103
;
104104
$extensionMock
105105
->expects($this->at(1))
106-
->method('addTransportFactory')
106+
->method('setTransportFactory')
107107
->with($this->isInstanceOf(RabbitMqStompTransportFactory::class))
108108
;
109109

@@ -120,15 +120,15 @@ public function testShouldRegisterAmqpAndRabbitMqAmqpTransportFactories()
120120

121121
$extensionMock
122122
->expects($this->at(2))
123-
->method('addTransportFactory')
123+
->method('setTransportFactory')
124124
->with($this->isInstanceOf(AmqpTransportFactory::class))
125125
->willReturnCallback(function (AmqpTransportFactory $factory) {
126126
$this->assertSame('amqp', $factory->getName());
127127
})
128128
;
129129
$extensionMock
130130
->expects($this->at(3))
131-
->method('addTransportFactory')
131+
->method('setTransportFactory')
132132
->with($this->isInstanceOf(RabbitMqAmqpTransportFactory::class))
133133
->willReturnCallback(function (RabbitMqAmqpTransportFactory $factory) {
134134
$this->assertSame('rabbitmq_amqp', $factory->getName());
@@ -148,7 +148,7 @@ public function testShouldRegisterFSTransportFactory()
148148

149149
$extensionMock
150150
->expects($this->at(4))
151-
->method('addTransportFactory')
151+
->method('setTransportFactory')
152152
->with($this->isInstanceOf(FsTransportFactory::class))
153153
;
154154

@@ -165,7 +165,7 @@ public function testShouldRegisterRedisTransportFactory()
165165

166166
$extensionMock
167167
->expects($this->at(5))
168-
->method('addTransportFactory')
168+
->method('setTransportFactory')
169169
->with($this->isInstanceOf(RedisTransportFactory::class))
170170
;
171171

@@ -182,7 +182,7 @@ public function testShouldRegisterDbalTransportFactory()
182182

183183
$extensionMock
184184
->expects($this->at(6))
185-
->method('addTransportFactory')
185+
->method('setTransportFactory')
186186
->with($this->isInstanceOf(DbalTransportFactory::class))
187187
;
188188

@@ -199,7 +199,7 @@ public function testShouldRegisterSqsTransportFactory()
199199

200200
$extensionMock
201201
->expects($this->at(7))
202-
->method('addTransportFactory')
202+
->method('setTransportFactory')
203203
->with($this->isInstanceOf(SqsTransportFactory::class))
204204
;
205205

@@ -216,7 +216,7 @@ public function testShouldRegisterGpsTransportFactory()
216216

217217
$extensionMock
218218
->expects($this->at(8))
219-
->method('addTransportFactory')
219+
->method('setTransportFactory')
220220
->with($this->isInstanceOf(GpsTransportFactory::class))
221221
;
222222

0 commit comments

Comments
 (0)