use of won.bot.framework.eventbot.action.impl.MultipleActions in project webofneeds by researchstudio-sat.
the class DuplicateMessageURIFailureBot method initializeEventListeners.
@Override
protected void initializeEventListeners() {
EventListenerContext ctx = getEventListenerContext();
EventBus bus = getEventBus();
// log error if we can create 2 atoms
bus.subscribe(AtomCreatedEvent.class, new ActionOnceAfterNEventsListener(ctx, 2, new MultipleActions(ctx, new LogErrorAction(ctx, "Should not have been able to create 2 atoms using message with identical URIs"), new PublishEventAction(ctx, new TestFailedEvent(this, "Should not have been able to create 2 atoms with identical URI")))));
// log success if we could create 1 atom
bus.subscribe(AtomCreatedEvent.class, new ActionOnFirstNEventsListener(ctx, 1, new MultipleActions(ctx, new LogAction(ctx, "Good: could create one atom"), new PublishEventAction(ctx, new SuccessEvent()))));
// log success if we got an error for 2nd atom
bus.subscribe(AtomCreationFailedEvent.class, new ActionOnFirstNEventsListener(ctx, 1, new MultipleActions(ctx, new LogAction(ctx, "Good: atom creation failed for 2nd atom."), new PublishEventAction(ctx, new SuccessEvent()))));
// when we have 2 SuccessEvents, we're done. Deactivate the atoms and signal
// we're finished
bus.subscribe(SuccessEvent.class, new ActionOnceAfterNEventsListener(ctx, 2, new MultipleActions(ctx, new LogAction(ctx, "Test passed."), new PublishEventAction(ctx, new TestPassedEvent(this)), new DeactivateAllAtomsAction(ctx))));
// when we have a FailureEvent, we're done, too. Deactivate the atoms and signal
// we're finished
bus.subscribe(TestFailedEvent.class, new ActionOnceAfterNEventsListener(ctx, 1, new MultipleActions(ctx, new LogAction(ctx, "Test failed."), new DeactivateAllAtomsAction(ctx))));
// wait for the atomDeactivated event, then say we're done.
bus.subscribe(AtomDeactivatedEvent.class, new ActionOnceAfterNEventsListener(ctx, 1, new SignalWorkDoneAction(ctx, this)));
// TODO: fix: bot runs forever even if test fails.
// TODO: fix: atom 1 is not deactivated if test fails.
}
Aggregations