I’m programmatically creating the following SagaManager:
GenericSagaFactory sagaFactory = new GenericSagaFactory();
List<Object> injectedResources = newArrayList(eventBus, commandGateway);
injectedResources.addAll(resources);
SimpleResourceInjector resourceInjector = new SimpleResourceInjector(injectedResources);
sagaFactory.setResourceInjector(resourceInjector);
sagaManager = new AsyncAnnotatedSagaManager(sagaTypes);
sagaManager.setSagaRepository(mongoSagaRepository);
// TODO: Are we breaking the default parameter resolvers for @MetaData and @Timestamp this way?
sagaManager.setSagaFactory(sagaFactory);
eventBus.subscribe(sagaManager);
sagaManager.start();
I have a SomethingSaga defined as follows:
public class SomethingSaga extends AbstractAnnotatedSaga {
private String userId;
private transient IdentityService identityService;
private transient CommandGateway gateway;
@StartSaga
@SagaEventHandler(associationProperty = "userId")
public void handle(final SomethingHappenedEvent evt) {
// (1) Gateway is automatically injected
gateway.send(...); // This command will apply(SomethingCreatedEvent)
}
@SagaEventHandler(associationProperty = "userId")
public void handle(final SomethingCreatedEvent evt) {