@Override public EventMessage getEvent() { return new GenericEventMessage<>(event, () -> scheduleTime); }
private EventMessage<Object> timeCorrectedEventMessage(Object event) { EventMessage<?> msg = GenericEventMessage.asEventMessage(event); return new GenericEventMessage<>(msg.getIdentifier(), msg.getPayload(), msg.getMetaData(), currentTime()); }
@Override protected void describeTo(StringBuilder stringBuilder) { super.describeTo(stringBuilder); stringBuilder.append(", trackingToken={") .append(trackingToken()) .append('}'); }
@Override public GenericEventMessage<T> withMetaData(Map<String, ?> metaData) { if (getMetaData().equals(metaData)) { return this; } return new GenericEventMessage<>(getDelegate().withMetaData(metaData), timestampSupplier); }
@Override public ApplyMore andThenApply(Supplier<?> payloadOrMessageSupplier) { appliedMessages.add(GenericEventMessage.asEventMessage(payloadOrMessageSupplier.get())); return this; }
@Override protected void describeTo(StringBuilder stringBuilder) { super.describeTo(stringBuilder); stringBuilder.append(", timestamp='") .append(getTimestamp().toString()); }
@Override public GenericEventMessage<T> andMetaData(Map<String, ?> metaData) { if (metaData == null || metaData.isEmpty() || getMetaData().equals(metaData)) { return this; } return new GenericEventMessage<>(getDelegate().andMetaData(metaData), timestampSupplier); }
@Override public ScheduleToken schedule(Instant triggerDateTime, Object event) { EventMessage eventMessage = GenericEventMessage.asEventMessage(event); StubScheduleToken token = new StubScheduleToken(triggerDateTime, eventMessage, counter.getAndIncrement()); scheduledEvents.add(token); return token; }
@Override protected void describeTo(StringBuilder stringBuilder) { super.describeTo(stringBuilder); stringBuilder.append(", timestamp='") .append(getTimestamp().toString()); }
@Override protected <T> ApplyMore doApply(T payload, MetaData metaData) { appliedMessages.add(new GenericEventMessage<>(payload, metaData)); return new ApplyMore() { @Override public ApplyMore andThenApply(Supplier<?> payloadOrMessageSupplier) { appliedMessages.add(GenericEventMessage.asEventMessage(payloadOrMessageSupplier.get())); return this; } @Override public ApplyMore andThen(Runnable runnable) { runnable.run(); return this; } }; }
@Override public GenericEventMessage<T> withMetaData(Map<String, ?> metaData) { if (getMetaData().equals(metaData)) { return this; } return new GenericEventMessage<>(getDelegate().withMetaData(metaData), timestampSupplier); }
@Override public ScheduleToken schedule(Duration triggerDuration, Object event) { EventMessage eventMessage = GenericEventMessage.asEventMessage(event); Instant scheduleTime = currentDateTime.plus(triggerDuration); StubScheduleToken token = new StubScheduleToken(scheduleTime, eventMessage, counter.getAndIncrement()); scheduledEvents.add(token); return token; }
@Override protected void describeTo(StringBuilder stringBuilder) { super.describeTo(stringBuilder); stringBuilder.append('\'').append(", aggregateType='") .append(getType()).append('\'') .append(", aggregateIdentifier='") .append(getAggregateIdentifier()).append('\'') .append(", sequenceNumber=") .append(getSequenceNumber()); }
@Override protected void describeTo(StringBuilder stringBuilder) { super.describeTo(stringBuilder); stringBuilder.append(", timestamp='") .append(getTimestamp().toString()); }
/** * Creates a new message for the scheduled event. This ensures that a new identifier and timestamp will always * be generated, so that the timestamp will reflect the actual moment the trigger occurred. * * @param event The actual event (either a payload or an entire message) to create the message from * @return the message to publish */ private EventMessage<?> createMessage(Object event) { EventMessage<?> eventMessage; if (event instanceof EventMessage) { eventMessage = new GenericEventMessage<>(((EventMessage) event).getPayload(), ((EventMessage) event).getMetaData()); } else { eventMessage = new GenericEventMessage<>(event, MetaData.emptyInstance()); } return eventMessage; } }
@Override public GenericEventMessage<T> andMetaData(Map<String, ?> metaData) { if (metaData == null || metaData.isEmpty() || getMetaData().equals(metaData)) { return this; } return new GenericEventMessage<>(getDelegate().andMetaData(metaData), timestampSupplier); }
/** * Publishes (dispatches) an event. * * @param event The event to publish. */ protected void publish(Object event) { this.eventBus.publish(processInterceptors(asEventMessage(event))); }
@Override protected void describeTo(StringBuilder stringBuilder) { super.describeTo(stringBuilder); stringBuilder.append(", trackingToken={") .append(trackingToken()) .append('}'); }
/** * Creates a new message for the scheduled event. This ensures that a new identifier and timestamp will always * be generated, so that the timestamp will reflect the actual moment the trigger occurred. * * @return the message to publish */ private EventMessage<?> createMessage() { EventMessage<?> eventMessage; if (event instanceof EventMessage) { eventMessage = new GenericEventMessage<>(((EventMessage) event).getPayload(), ((EventMessage) event).getMetaData()); } else { eventMessage = new GenericEventMessage<>(event, MetaData.emptyInstance()); } return eventMessage; } }
@Override public GenericEventMessage<T> withMetaData(Map<String, ?> metaData) { if (getMetaData().equals(metaData)) { return this; } return new GenericEventMessage<>(getDelegate().withMetaData(metaData), timestampSupplier); }