diff --git a/src/Clock/FrozenClockFactory.php b/src/Clock/FrozenClockFactory.php new file mode 100644 index 00000000..b9fcadde --- /dev/null +++ b/src/Clock/FrozenClockFactory.php @@ -0,0 +1,17 @@ +register(GapResolverStoreMessageLoader::class) + ->setFactory([GapResolverMessageLoaderFactory::class, 'create']) ->setArguments([ new Reference(Store::class), new Reference('event_sourcing.clock'), $config['subscription']['gap_detection']['retries_in_ms'], - new DateInterval($config['subscription']['gap_detection']['detection_window']), + $config['subscription']['gap_detection']['detection_window'], ]); $container->setAlias(MessageLoader::class, GapResolverStoreMessageLoader::class); @@ -1068,7 +1069,8 @@ private function configureClock(array $config, ContainerBuilder $container): voi { if ($config['clock']['freeze'] !== null) { $container->register(FrozenClock::class) - ->setArguments([new DateTimeImmutable($config['clock']['freeze'])]); + ->setFactory([FrozenClockFactory::class, 'create']) + ->setArguments([$config['clock']['freeze']]); $container->setAlias('event_sourcing.clock', FrozenClock::class); diff --git a/src/Subscription/Engine/GapResolverMessageLoaderFactory.php b/src/Subscription/Engine/GapResolverMessageLoaderFactory.php new file mode 100644 index 00000000..5927c4c4 --- /dev/null +++ b/src/Subscription/Engine/GapResolverMessageLoaderFactory.php @@ -0,0 +1,29 @@ + $retriesInMs in milliseconds */ + public static function create( + Store $store, + ClockInterface $clock, + array $retriesInMs, + string|null $detectionWindow, + ): GapResolverStoreMessageLoader { + return new GapResolverStoreMessageLoader( + $store, + $clock, + $retriesInMs, + $detectionWindow !== null ? new DateInterval($detectionWindow) : null, + ); + } +} diff --git a/tests/Unit/PatchlevelEventSourcingBundleTest.php b/tests/Unit/PatchlevelEventSourcingBundleTest.php index d2b28281..fd20caff 100644 --- a/tests/Unit/PatchlevelEventSourcingBundleTest.php +++ b/tests/Unit/PatchlevelEventSourcingBundleTest.php @@ -115,6 +115,7 @@ use Symfony\Component\DependencyInjection\ChildDefinition; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Definition; +use Symfony\Component\DependencyInjection\Dumper\XmlDumper; use Symfony\Component\DependencyInjection\Reference; use Symfony\Component\HttpKernel\DependencyInjection\ServicesResetter; use Symfony\Component\Messenger\MessageBusInterface; @@ -1585,5 +1586,7 @@ private function compileContainer(ContainerBuilder $container, array $config): v $compilerPassConfig->addPass(new TestCaseAllPublicCompilerPass()); $container->compile(); + + (new XmlDumper($container))->dump(); } }