Skip to content

Commit 49637d9

Browse files
committed
fix issue 67
1 parent 9ee6e17 commit 49637d9

File tree

6 files changed

+87
-130
lines changed

6 files changed

+87
-130
lines changed

DependencyInjection/EnqueueExtension.php

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,12 @@
88
use Symfony\Component\Config\FileLocator;
99
use Symfony\Component\Config\Resource\FileResource;
1010
use Symfony\Component\DependencyInjection\ContainerBuilder;
11+
use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface;
1112
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
1213
use Symfony\Component\DependencyInjection\Reference;
1314
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
1415

15-
class EnqueueExtension extends Extension
16+
class EnqueueExtension extends Extension implements PrependExtensionInterface
1617
{
1718
/**
1819
* @var TransportFactoryInterface[]
@@ -132,4 +133,43 @@ public function getConfiguration(array $config, ContainerBuilder $container)
132133

133134
return new Configuration($this->factories);
134135
}
136+
137+
public function prepend(ContainerBuilder $container)
138+
{
139+
$this->registerJobQueueDoctrineEntityMapping($container);
140+
}
141+
142+
private function registerJobQueueDoctrineEntityMapping(ContainerBuilder $container)
143+
{
144+
if (false == class_exists(Job::class)) {
145+
return;
146+
}
147+
148+
$bundles = $container->getParameter('kernel.bundles');
149+
150+
if (false == isset($bundles['DoctrineBundle'])) {
151+
return;
152+
}
153+
154+
foreach ($container->getExtensionConfig('doctrine') as $config) {
155+
// do not register mappings if dbal not configured.
156+
if (false == empty($config['dbal'])) {
157+
$rc = new \ReflectionClass(Job::class);
158+
$jobQueueRootDir = dirname($rc->getFileName());
159+
$container->prependExtensionConfig('doctrine', [
160+
'orm' => [
161+
'mappings' => [
162+
'enqueue_job_queue' => [
163+
'is_bundle' => false,
164+
'type' => 'xml',
165+
'dir' => $jobQueueRootDir.'/Doctrine/mapping',
166+
'prefix' => 'Enqueue\JobQueue\Doctrine\Entity',
167+
],
168+
],
169+
],
170+
]);
171+
break;
172+
}
173+
}
174+
}
135175
}

Entity/Job.php

Lines changed: 0 additions & 108 deletions
This file was deleted.

Entity/JobUnique.php

Lines changed: 0 additions & 18 deletions
This file was deleted.

Resources/config/job.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ parameters:
33

44
services:
55
enqueue.job.storage:
6-
class: 'Enqueue\JobQueue\JobStorage'
6+
class: 'Enqueue\JobQueue\Doctrine\JobStorage'
77
arguments:
88
- '@doctrine'
9-
- 'Enqueue\Bundle\Entity\Job'
9+
- 'Enqueue\JobQueue\Doctrine\Entity\Job'
1010
- '%enqueue.job.unique_job_table_name%'
1111

1212
enqueue.job.processor:

Tests/Functional/Job/JobStorageTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
namespace Enqueue\Bundle\Tests\Functional\Job;
44

55
use Enqueue\Bundle\Tests\Functional\WebTestCase;
6-
use Enqueue\JobQueue\JobStorage;
6+
use Enqueue\JobQueue\Doctrine\JobStorage;
77

88
/**
99
* @group functional

Tests/Unit/DependencyInjection/EnqueueExtensionTest.php

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -434,4 +434,47 @@ public function testShouldNotLoadSignalExtensionServiceIfDisabled()
434434

435435
self::assertFalse($container->hasDefinition('enqueue.consumption.signal_extension'));
436436
}
437+
438+
public function testShouldAddJobQueueEntityMapping()
439+
{
440+
$container = new ContainerBuilder();
441+
$container->setParameter('kernel.bundles', ['DoctrineBundle' => true]);
442+
$container->prependExtensionConfig('doctrine', ['dbal' => true]);
443+
444+
$extension = new EnqueueExtension();
445+
446+
$extension->prepend($container);
447+
448+
$expectedConfig = [
449+
[
450+
'orm' => [
451+
'mappings' => [
452+
'enqueue_job_queue' => [
453+
'is_bundle' => false,
454+
'type' => 'xml',
455+
'dir' => '/mqdev/pkg/job-queue/Doctrine/mapping',
456+
'prefix' => 'Enqueue\JobQueue\Doctrine\Entity',
457+
],
458+
],
459+
],
460+
],
461+
[
462+
'dbal' => true,
463+
],
464+
];
465+
466+
$this->assertSame($expectedConfig, $container->getExtensionConfig('doctrine'));
467+
}
468+
469+
public function testShouldNotAddJobQueueEntityMappingIfDoctrineBundleIsNotRegistered()
470+
{
471+
$container = new ContainerBuilder();
472+
$container->setParameter('kernel.bundles', []);
473+
474+
$extension = new EnqueueExtension();
475+
476+
$extension->prepend($container);
477+
478+
$this->assertSame([], $container->getExtensionConfig('doctrine'));
479+
}
437480
}

0 commit comments

Comments
 (0)