6161use Patchlevel \EventSourcing \Metadata \AggregateRoot \AggregateRootMetadataAwareMetadataFactory ;
6262use Patchlevel \EventSourcing \Metadata \AggregateRoot \AggregateRootMetadataFactory ;
6363use Patchlevel \EventSourcing \Metadata \AggregateRoot \AggregateRootRegistry ;
64- use Patchlevel \EventSourcing \Metadata \AggregateRoot \AttributeAggregateRootRegistryFactory ;
6564use Patchlevel \EventSourcing \Metadata \Event \AttributeEventMetadataFactory ;
66- use Patchlevel \EventSourcing \Metadata \Event \AttributeEventRegistryFactory ;
6765use Patchlevel \EventSourcing \Metadata \Event \EventMetadataFactory ;
6866use Patchlevel \EventSourcing \Metadata \Event \EventRegistry ;
6967use Patchlevel \EventSourcing \Metadata \Message \AttributeMessageHeaderRegistryFactory ;
153151use Symfony \Component \DependencyInjection \ContainerInterface ;
154152use Symfony \Component \DependencyInjection \Exception \InvalidArgumentException ;
155153use Symfony \Component \DependencyInjection \Extension \Extension ;
154+ use Symfony \Component \DependencyInjection \Parameter ;
156155use Symfony \Component \DependencyInjection \Reference ;
157156
158157use function class_exists ;
@@ -164,8 +163,6 @@ final class PatchlevelEventSourcingExtension extends Extension
164163 /** @param array<array-key, mixed> $configs */
165164 public function load (array $ configs , ContainerBuilder $ container ): void
166165 {
167- $ this ->removeNonServices ($ container );
168-
169166 $ configuration = new Configuration ();
170167
171168 /** @var Config $config */
@@ -185,7 +182,7 @@ public function load(array $configs, ContainerBuilder $container): void
185182 $ this ->configureConnection ($ config , $ container );
186183 $ this ->configureStore ($ config , $ container );
187184 $ this ->configureSnapshots ($ config , $ container );
188- $ this ->configureAggregates ($ config , $ container );
185+ $ this ->configureAggregates ($ container );
189186 $ this ->configureCommands ($ container );
190187 $ this ->configureProfiler ($ container );
191188 $ this ->configureClock ($ config , $ container );
@@ -202,11 +199,17 @@ public function load(array $configs, ContainerBuilder $container): void
202199 /** @param Config $config */
203200 private function configureSerializer (array $ config , ContainerBuilder $ container ): void
204201 {
205- $ container ->register (AttributeEventRegistryFactory::class);
202+ $ container ->registerAttributeForAutoconfiguration (
203+ Event::class,
204+ static function (ChildDefinition $ definition , Event $ attribute ): void {
205+ $ definition ->addResourceTag ('event_sourcing.event ' , ['name ' => $ attribute ->name ]);
206+ },
207+ );
208+
209+ $ container ->setParameter ('event_sourcing.events ' , []);
206210
207211 $ container ->register (EventRegistry::class)
208- ->setFactory ([new Reference (AttributeEventRegistryFactory::class), 'create ' ])
209- ->setArguments ([$ config ['events ' ]]);
212+ ->setArguments ([new Parameter ('event_sourcing.events ' )]);
210213
211214 $ container ->register (AttributeEventMetadataFactory::class);
212215 $ container ->setAlias (EventMetadataFactory::class, AttributeEventMetadataFactory::class);
@@ -879,17 +882,22 @@ private function configureSnapshots(array $config, ContainerBuilder $container):
879882 $ container ->setAlias (SnapshotStore::class, DefaultSnapshotStore::class);
880883 }
881884
882- /** @param Config $config */
883- private function configureAggregates (array $ config , ContainerBuilder $ container ): void
885+ private function configureAggregates (ContainerBuilder $ container ): void
884886 {
887+ $ container ->registerAttributeForAutoconfiguration (
888+ Aggregate::class,
889+ static function (ChildDefinition $ definition , Aggregate $ attribute ): void {
890+ $ definition ->addResourceTag ('event_sourcing.aggregate ' , ['name ' => $ attribute ->name ]);
891+ },
892+ );
893+
885894 $ container ->register (AggregateRootMetadataAwareMetadataFactory::class);
886895 $ container ->setAlias (AggregateRootMetadataFactory::class, AggregateRootMetadataAwareMetadataFactory::class);
887896
888- $ container ->register (AttributeAggregateRootRegistryFactory::class );
897+ $ container ->setParameter ( ' event_sourcing.aggregates ' , [] );
889898
890899 $ container ->register (AggregateRootRegistry::class)
891- ->setFactory ([new Reference (AttributeAggregateRootRegistryFactory::class), 'create ' ])
892- ->setArguments ([$ config ['aggregates ' ]]);
900+ ->setArguments ([new Parameter ('event_sourcing.aggregates ' )]);
893901
894902 $ container ->register (DefaultRepositoryManager::class)
895903 ->setArguments ([
@@ -1221,26 +1229,4 @@ private function configureValueResolver(ContainerBuilder $container): void
12211229 $ container ->register (IdentifierValueResolver::class)
12221230 ->addTag ('controller.argument_value_resolver ' , ['priority ' => 200 ]);
12231231 }
1224-
1225- private function removeNonServices (ContainerBuilder $ container ): void
1226- {
1227- $ container ->registerAttributeForAutoconfiguration (
1228- Aggregate::class,
1229- static function (ChildDefinition $ definition ): void {
1230- $ definition ->setAbstract (true )->addTag (
1231- 'container.excluded ' ,
1232- ['source ' => sprintf ('with #[%s] attribute ' , Aggregate::class)],
1233- );
1234- },
1235- );
1236- $ container ->registerAttributeForAutoconfiguration (
1237- Event::class,
1238- static function (ChildDefinition $ definition ): void {
1239- $ definition ->setAbstract (true )->addTag (
1240- 'container.excluded ' ,
1241- ['source ' => sprintf ('with #[%s] attribute ' , Event::class)],
1242- );
1243- },
1244- );
1245- }
12461232}
0 commit comments