Skip to content
This repository was archived by the owner on Nov 9, 2025. It is now read-only.

Commit dd9c7fa

Browse files
committed
Add yadm store, hydrator, simple and bundle resource and model storages.
1 parent 1197b18 commit dd9c7fa

16 files changed

+3179
-20
lines changed

DI/QuartzConfiguration.php

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,27 +7,33 @@
77

88
class QuartzConfiguration implements ConfigurationInterface
99
{
10-
/**
11-
* {@inheritdoc}
12-
*/
1310
public function getConfigTreeBuilder()
1411
{
1512
$tb = new TreeBuilder();
1613
$rootNode = $tb->root('quartz');
1714

1815
$rootNode->children()
19-
->arrayNode('store')->addDefaultsIfNotSet()->children()
16+
->arrayNode('yadm_simple_store')->children()
2017
->scalarNode('uri')->defaultValue('mongodb://localhost:27017')->end()
2118
->variableNode('uriOptions')->defaultValue([])->end()
2219
->variableNode('driverOptions')->defaultValue([])->end()
2320
->scalarNode('sessionId')->defaultValue('quartz')->end()
2421
->scalarNode('dbName')->defaultValue(null)->end()
25-
->scalarNode('managementLockCol')->defaultValue('managementLock')->end()
26-
->scalarNode('calendarCol')->defaultValue('calendar')->end()
27-
->scalarNode('triggerCol')->defaultValue('trigger')->end()
28-
->scalarNode('firedTriggerCol')->defaultValue('firedTrigger')->end()
29-
->scalarNode('jobCol')->defaultValue('job')->end()
30-
->scalarNode('pausedTriggerCol')->defaultValue('pausedTrigger')->end()
22+
->scalarNode('managementLockCol')->defaultValue('quartz_management_lock')->end()
23+
->scalarNode('calendarCol')->defaultValue('quartz_calendar')->end()
24+
->scalarNode('triggerCol')->defaultValue('quartz_trigger')->end()
25+
->scalarNode('firedTriggerCol')->defaultValue('quartz_fired_trigger')->end()
26+
->scalarNode('jobCol')->defaultValue('quartz_job')->end()
27+
->scalarNode('pausedTriggerCol')->defaultValue('quartz_paused_trigger')->end()
28+
->end()->end()
29+
->arrayNode('yadm_bundle_store')->children()
30+
->scalarNode('sessionId')->defaultValue('quartz')->end()
31+
->scalarNode('managementLockCol')->defaultValue('quartz_management_lock')->end()
32+
->scalarNode('calendarStorage')->defaultValue('quartz_calendar')->end()
33+
->scalarNode('triggerStorage')->defaultValue('quartz_trigger')->end()
34+
->scalarNode('firedTriggerStorage')->defaultValue('quartz_fired_trigger')->end()
35+
->scalarNode('jobStorage')->defaultValue('quartz_job')->end()
36+
->scalarNode('pausedTriggerStorage')->defaultValue('quartz_paused_trigger')->end()
3137
->end()->end()
3238
->integerNode('misfireThreshold')->min(10)->defaultValue(60)->end()
3339
;

DI/QuartzExtension.php

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,13 @@
77
use Quartz\Bridge\Scheduler\EnqueueJobRunShell;
88
use Quartz\Bridge\Scheduler\JobRunShellProcessor;
99
use Quartz\Bridge\Scheduler\RpcProtocol;
10+
use Quartz\Bridge\Yadm\BundleStoreResource;
11+
use Quartz\Bridge\Yadm\SimpleStoreResource;
12+
use Quartz\Bridge\Yadm\YadmStore;
1013
use Quartz\Core\SimpleJobFactory;
1114
use Quartz\Scheduler\StdJobRunShell;
1215
use Quartz\Scheduler\StdJobRunShellFactory;
1316
use Quartz\Scheduler\StdScheduler;
14-
use Quartz\Scheduler\Store\YadmStore;
15-
use Quartz\Scheduler\Store\YadmStoreResource;
1617
use Symfony\Component\DependencyInjection\ContainerBuilder;
1718
use Symfony\Component\DependencyInjection\Extension\Extension;
1819
use Symfony\Component\DependencyInjection\Reference;
@@ -47,12 +48,30 @@ public function load(array $configs, ContainerBuilder $container)
4748
{
4849
$config = $this->processConfiguration(new QuartzConfiguration(), $configs);
4950

50-
$container->register($this->format('store_resource'), YadmStoreResource::class)
51-
->setArguments([$config['store']])
52-
;
51+
if (false == empty($config['yadm_simple_store']) && false == empty($config['yadm_bundle_store'])) {
52+
throw new \LogicException('Either yadm_simple_store or yadm_bundle_store must be set. Both are set');
53+
}
54+
if (empty($config['yadm_simple_store']) && empty($config['yadm_bundle_store'])) {
55+
throw new \LogicException('Either yadm_simple_store or yadm_bundle_store must be set. None is set');
56+
}
57+
58+
if (false == empty($config['yadm_simple_store'])) {
59+
$container->register($this->format('store_resource'), SimpleStoreResource::class)
60+
->addArgument($config['yadm_simple_store'])
61+
;
62+
}
63+
64+
if (false == empty($config['yadm_bundle_store'])) {
65+
$container->register($this->format('store_resource'), BundleStoreResource::class)
66+
->addArgument(new Reference('yadm.client_provider'))
67+
->addArgument(new Reference('yadm.collection_factory'))
68+
->addArgument(new Reference('yadm'))
69+
->addArgument($config['yadm_bundle_store'])
70+
;
71+
}
5372

5473
$container->register($this->format('store'), YadmStore::class)
55-
->setArguments([new Reference($this->format('store_resource'))])
74+
->addArgument(new Reference($this->format('store_resource')))
5675
->addMethodCall('setMisfireThreshold', [$config['misfireThreshold']])
5776
;
5877

Scheduler/SchedulerFactory.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@
55
use Quartz\Bridge\Enqueue\EnqueueRemoteTransport;
66
use Quartz\Bridge\Enqueue\EnqueueRemoteTransportProcessor;
77
use Quartz\Bridge\Enqueue\EnqueueResponseJob;
8+
use Quartz\Bridge\Yadm\SimpleStoreResource;
9+
use Quartz\Bridge\Yadm\YadmStore;
810
use Quartz\Core\Scheduler;
911
use Quartz\Core\SchedulerFactory as BaseSchedulerFactory;
1012
use Quartz\Core\SimpleJobFactory;
1113
use Quartz\Scheduler\JobRunShellFactory;
1214
use Quartz\Scheduler\StdJobRunShell;
1315
use Quartz\Scheduler\StdJobRunShellFactory;
1416
use Quartz\Scheduler\StdScheduler;
15-
use Quartz\Scheduler\Store\YadmStore;
16-
use Quartz\Scheduler\Store\YadmStoreResource;
1717
use Symfony\Component\EventDispatcher\EventDispatcher;
1818

1919
class SchedulerFactory implements BaseSchedulerFactory
@@ -134,7 +134,7 @@ public function getStore()
134134
{
135135
if (null == $this->store) {
136136
$config = isset($this->config['store']) ? $this->config['store'] : [];
137-
$this->store = new YadmStore(new YadmStoreResource($config));
137+
$this->store = new YadmStore(new SimpleStoreResource($config));
138138
}
139139

140140
return $this->store;

Tests/Scheduler/JobRunShellProcessorTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
use Interop\Queue\Processor;
1111
use PHPUnit\Framework\TestCase;
1212
use Quartz\Bridge\Scheduler\JobRunShellProcessor;
13+
use Quartz\Bridge\Yadm\YadmStore;
1314
use Quartz\Scheduler\StdJobRunShell;
14-
use Quartz\Scheduler\Store\YadmStore;
1515
use Quartz\Triggers\SimpleTrigger;
1616

1717
class JobRunShellProcessorTest extends TestCase

0 commit comments

Comments
 (0)