This commit is contained in:
2026-06-19 17:25:01 +02:00
parent 198c5d830e
commit ba412b905e
3 changed files with 36 additions and 0 deletions

View File

@@ -14,6 +14,10 @@ public interface StateMachineService {
// Quirky pattern 2: Generic Varargs
<T extends IEvent> void sendEventsVarargs(T... events);
// Functional quirks: passing functions and method references
<T extends IEvent> void executeFunctionalTransition(java.util.function.Supplier<T> eventSupplier,
java.util.function.Function<T, Void> transitionAction);
// Child class of Spring's GenericMessage with a generic payload
<T extends click.kamil.domain.OrderEvent, P> void sendCustomMessage(click.kamil.domain.CustomStateMachineMessage<T, P> customMessage);

View File

@@ -59,6 +59,15 @@ public class StateMachineServiceImpl implements StateMachineService {
}
}
@Override
public <T extends IEvent> void executeFunctionalTransition(java.util.function.Supplier<T> eventSupplier,
java.util.function.Function<T, Void> transitionAction) {
// Resolve the event from the getter / supplier function
T event = eventSupplier.get();
// Apply the transition via the provided function / method reference
transitionAction.apply(event);
}
@Override
public <T extends OrderEvent, P> void sendCustomMessage(click.kamil.domain.CustomStateMachineMessage<T, P> customMessage) {
// Because CustomStateMachineMessage extends GenericMessage<T> and implements Message<T>,