use of io.spine.core.Event in project core-java by SpineEventEngine.
the class ExternalEventSubscriber method dispatch.
@Override
public Set<String> dispatch(ExternalMessageEnvelope envelope) {
final ExternalMessage externalMessage = envelope.getOuterObject();
final Message unpacked = AnyPacker.unpack(externalMessage.getOriginalMessage());
if (!(unpacked instanceof Event)) {
throw newIllegalStateException("Unexpected object %s while dispatching " + "the external event to the event subscriber.", Stringifiers.toString(unpacked));
}
final Event event = (Event) unpacked;
checkArgument(isExternal(event.getContext()), "External event expected, but got %s", Stringifiers.toString(event));
return delegate.dispatch(EventEnvelope.of(event));
}
use of io.spine.core.Event in project core-java by SpineEventEngine.
the class EventPlayingEntityShould method delegate_applying_events_to_tx_when_playing.
@Test
public void delegate_applying_events_to_tx_when_playing() {
final EventPlayingEntity entity = entityWithActiveTx(false);
final Transaction txMock = entity.getTransaction();
assertNotNull(txMock);
final Event firstEvent = eventFactory.createEvent(newUuidValue());
final Event secondEvent = eventFactory.createEvent(newUuidValue());
entity.play(newArrayList(firstEvent, secondEvent));
verifyEventApplied(txMock, firstEvent);
verifyEventApplied(txMock, secondEvent);
}
use of io.spine.core.Event in project core-java by SpineEventEngine.
the class TransactionShould method propagate_phase_failure_exception_as_ISE.
@Test(expected = IllegalStateException.class)
public void propagate_phase_failure_exception_as_ISE() {
final E entity = createEntity();
final Transaction<I, E, S, B> tx = createTx(entity);
final Event event = createEvent(createEventMessageThatFailsInHandler());
applyEvent(tx, event);
}
use of io.spine.core.Event in project core-java by SpineEventEngine.
the class TransactionShould method rollback_automatically_if_phase_failed.
@Test
public void rollback_automatically_if_phase_failed() {
final E entity = createEntity();
final S originalState = entity.getState();
final Version originalVersion = entity.getVersion();
final Transaction<I, E, S, B> tx = createTx(entity);
final Event event = createEvent(createEventMessageThatFailsInHandler());
try {
applyEvent(tx, event);
fail("Expected an `Exception` due to a failed phase execution.");
} catch (final Exception e) {
checkRollback(entity, originalState, originalVersion);
}
}
use of io.spine.core.Event in project core-java by SpineEventEngine.
the class DelegatingEventDispatcherShould method expose_external_dispatcher_that_delegates_onError.
@Test
public void expose_external_dispatcher_that_delegates_onError() {
final ExternalMessageDispatcher<String> extMessageDispatcher = delegatingDispatcher.getExternalDispatcher();
final TestEventFactory factory = TestEventFactory.newInstance(getClass());
final StringValue eventMsg = newUuidValue();
final Event event = factory.createEvent(eventMsg);
final ExternalMessage externalMessage = ExternalMessages.of(event, BoundedContext.newName(getClass().getName()));
final ExternalMessageEnvelope externalMessageEnvelope = ExternalMessageEnvelope.of(externalMessage, eventMsg);
final RuntimeException exception = new RuntimeException("test external dispatcher delegating onError");
extMessageDispatcher.onError(externalMessageEnvelope, exception);
assertTrue(delegate.onErrorCalled());
}
Aggregations