protected InMemoryRepository(Class<T> aggregateType, EventBus eventBus, RepositoryProvider repositoryProvider) { this.aggregateModel = AnnotatedAggregateMetaModelFactory.inspectAggregate(aggregateType); this.eventBus = eventBus; this.repositoryProvider = repositoryProvider; }
private AggregateModel<T> inspectAggregateModel() { if (parameterResolverFactory == null && handlerDefinition == null) { return AnnotatedAggregateMetaModelFactory.inspectAggregate(aggregateType); } else if (parameterResolverFactory != null && handlerDefinition == null) { handlerDefinition = ClasspathHandlerDefinition.forClass(aggregateType); } return AnnotatedAggregateMetaModelFactory.inspectAggregate( aggregateType, parameterResolverFactory, handlerDefinition ); }
private AggregateModel<T> inspectAggregateModel() { if (parameterResolverFactory == null) { parameterResolverFactory = ClasspathParameterResolverFactory.forClass(aggregateType); } return handlerDefinition == null ? AnnotatedAggregateMetaModelFactory.inspectAggregate(aggregateType, parameterResolverFactory) : AnnotatedAggregateMetaModelFactory.inspectAggregate(aggregateType, parameterResolverFactory, handlerDefinition); }
private DisruptorRepository(AggregateFactory<T> aggregateFactory, Cache cache, EventStore eventStore, ParameterResolverFactory parameterResolverFactory, SnapshotTriggerDefinition snapshotTriggerDefinition, RepositoryProvider repositoryProvider) { this.aggregateFactory = aggregateFactory; this.cache = cache; this.eventStore = eventStore; this.snapshotTriggerDefinition = snapshotTriggerDefinition; this.model = AnnotatedAggregateMetaModelFactory.inspectAggregate(aggregateFactory.getAggregateType(), parameterResolverFactory); this.repositoryProvider = repositoryProvider; }
private DisruptorRepository(AggregateFactory<T> aggregateFactory, Cache cache, EventStore eventStore, ParameterResolverFactory parameterResolverFactory, HandlerDefinition handlerDefinition, SnapshotTriggerDefinition snapshotTriggerDefinition, RepositoryProvider repositoryProvider) { this.aggregateFactory = aggregateFactory; this.cache = cache; this.eventStore = eventStore; this.snapshotTriggerDefinition = snapshotTriggerDefinition; this.model = AnnotatedAggregateMetaModelFactory.inspectAggregate(aggregateFactory.getAggregateType(), parameterResolverFactory, handlerDefinition); this.repositoryProvider = repositoryProvider; }
@SuppressWarnings("unchecked") @Override protected DomainEventMessage createSnapshot(Class<?> aggregateType, String aggregateIdentifier, DomainEventStream eventStream) { DomainEventMessage firstEvent = eventStream.peek(); AggregateFactory<?> aggregateFactory = getAggregateFactory(aggregateType); if (aggregateFactory == null) { throw new IllegalArgumentException( "Aggregate Type is unknown in this snapshotter: " + aggregateType.getName() ); } aggregateModels.computeIfAbsent(aggregateType, k -> AnnotatedAggregateMetaModelFactory .inspectAggregate(k, parameterResolverFactory, handlerDefinition)); Object aggregateRoot = aggregateFactory.createAggregateRoot(aggregateIdentifier, firstEvent); SnapshotAggregate<Object> aggregate = new SnapshotAggregate(aggregateRoot, aggregateModels.get(aggregateType), repositoryProvider); aggregate.initializeState(eventStream); if (aggregate.isDeleted()) { return null; } return new GenericDomainEventMessage<>(aggregate.type(), aggregate.identifierAsString(), aggregate.version(), aggregate.getAggregateRoot()); }
@Test public void testCommandsAreRoutedToCorrectEntity() throws Exception { AggregateModel<Book> bookAggregateModel = AnnotatedAggregateMetaModelFactory.inspectAggregate(Book.class); EventBus mockEventBus = SimpleEventBus.builder().build(); mockEventBus.subscribe(m -> m.forEach(i -> System.out.println(i.getPayloadType().getName()))); AnnotatedAggregate<Book> bookAggregate = AnnotatedAggregate.initialize((Book) null, bookAggregateModel, mockEventBus); bookAggregate.handle(command(new CreateBookCommand("book1"))); bookAggregate.handle(command(new CreatePageCommand("book1"))); bookAggregate.handle(command(new CreateParagraphCommand("book1", 0))); bookAggregate.handle(command(new CreateParagraphCommand("book1", 0))); bookAggregate.handle(command(new UpdateParagraphCommand("book1", 0, 0, "Hello world"))); bookAggregate.handle(command(new UpdateParagraphCommand("book1", 0, 1, "Hello world2"))); assertEquals("Hello world", bookAggregate.getAggregateRoot().getPages().get(0).getParagraphs().get(0).getText()); assertEquals("Hello world2", bookAggregate.getAggregateRoot().getPages().get(0).getParagraphs().get(1).getText()); }
private AggregateModel<T> inspectAggregateModel() { if (parameterResolverFactory == null && handlerDefinition == null) { return AnnotatedAggregateMetaModelFactory.inspectAggregate(aggregateType); } else if (parameterResolverFactory != null && handlerDefinition == null) { handlerDefinition = ClasspathHandlerDefinition.forClass(aggregateType); } return AnnotatedAggregateMetaModelFactory.inspectAggregate( aggregateType, parameterResolverFactory, handlerDefinition ); }
private AggregateModel<T> inspectAggregateModel() { if (parameterResolverFactory == null) { parameterResolverFactory = ClasspathParameterResolverFactory.forClass(aggregateType); } return handlerDefinition == null ? AnnotatedAggregateMetaModelFactory.inspectAggregate(aggregateType, parameterResolverFactory) : AnnotatedAggregateMetaModelFactory.inspectAggregate(aggregateType, parameterResolverFactory, handlerDefinition); }
private DisruptorRepository(AggregateFactory<T> aggregateFactory, Cache cache, EventStore eventStore, ParameterResolverFactory parameterResolverFactory, SnapshotTriggerDefinition snapshotTriggerDefinition, RepositoryProvider repositoryProvider) { this.aggregateFactory = aggregateFactory; this.cache = cache; this.eventStore = eventStore; this.snapshotTriggerDefinition = snapshotTriggerDefinition; this.model = AnnotatedAggregateMetaModelFactory.inspectAggregate(aggregateFactory.getAggregateType(), parameterResolverFactory); this.repositoryProvider = repositoryProvider; }
private DisruptorRepository(AggregateFactory<T> aggregateFactory, Cache cache, EventStore eventStore, ParameterResolverFactory parameterResolverFactory, HandlerDefinition handlerDefinition, SnapshotTriggerDefinition snapshotTriggerDefinition, RepositoryProvider repositoryProvider) { this.aggregateFactory = aggregateFactory; this.cache = cache; this.eventStore = eventStore; this.snapshotTriggerDefinition = snapshotTriggerDefinition; this.model = AnnotatedAggregateMetaModelFactory.inspectAggregate(aggregateFactory.getAggregateType(), parameterResolverFactory, handlerDefinition); this.repositoryProvider = repositoryProvider; }
@SuppressWarnings("unchecked") @Override protected DomainEventMessage createSnapshot(Class<?> aggregateType, String aggregateIdentifier, DomainEventStream eventStream) { DomainEventMessage firstEvent = eventStream.peek(); AggregateFactory<?> aggregateFactory = getAggregateFactory(aggregateType); if (aggregateFactory == null) { throw new IllegalArgumentException( "Aggregate Type is unknown in this snapshotter: " + aggregateType.getName() ); } aggregateModels.computeIfAbsent(aggregateType, k -> AnnotatedAggregateMetaModelFactory .inspectAggregate(k, parameterResolverFactory, handlerDefinition)); Object aggregateRoot = aggregateFactory.createAggregateRoot(aggregateIdentifier, firstEvent); SnapshotAggregate<Object> aggregate = new SnapshotAggregate(aggregateRoot, aggregateModels.get(aggregateType), repositoryProvider); aggregate.initializeState(eventStream); if (aggregate.isDeleted()) { return null; } return new GenericDomainEventMessage<>(aggregate.type(), aggregate.identifierAsString(), aggregate.version(), aggregate.getAggregateRoot()); }