use of io.spine.server.integration.ExternalMessage in project core-java by SpineEventEngine.
the class DelegatingRejectionDispatcher method getExternalDispatcher.
/**
* Wraps this dispatcher to an external rejection dispatcher.
*
* @return the external rejection dispatcher proxying calls to the underlying instance
*/
public ExternalMessageDispatcher<I> getExternalDispatcher() {
return new ExternalMessageDispatcher<I>() {
@Override
public Set<ExternalMessageClass> getMessageClasses() {
final Set<RejectionClass> rejectionClasses = delegate.getExternalRejectionClasses();
return ExternalMessageClass.fromRejectionClasses(rejectionClasses);
}
@Override
public Set<I> dispatch(ExternalMessageEnvelope envelope) {
final ExternalMessage externalMessage = envelope.getOuterObject();
final Rejection rejection = unpack(externalMessage.getOriginalMessage());
final Set<I> ids = delegate.dispatchRejection(RejectionEnvelope.of(rejection));
return ids;
}
@Override
public void onError(ExternalMessageEnvelope envelope, RuntimeException exception) {
final MessageClass messageClass = envelope.getMessageClass();
final String messageId = Stringifiers.toString(envelope.getId());
final String errorMessage = format("Error dispatching external rejection (class: %s, id: %s)", messageClass, messageId);
log().error(errorMessage, exception);
}
};
}
use of io.spine.server.integration.ExternalMessage in project core-java by SpineEventEngine.
the class DelegatingEventDispatcher method asEventEnvelope.
private static EventEnvelope asEventEnvelope(ExternalMessageEnvelope envelope) {
final ExternalMessage externalMessage = envelope.getOuterObject();
final Event event = unpack(externalMessage.getOriginalMessage());
return EventEnvelope.of(event);
}
use of io.spine.server.integration.ExternalMessage 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