better DSL
This commit is contained in:
parent
f49fa7297b
commit
a124058a56
@ -29,8 +29,9 @@ Simple way to use it - to construct an inherited class specified with the type o
|
||||
during transitions.
|
||||
|
||||
```java
|
||||
SimpleFsm<String> simpleFsm = SimpleFsm
|
||||
.<SimpleFsm<String>, String>withStates(SimpleFsm::new)
|
||||
SimpleFsm<String> simpleFsm = Fsm
|
||||
.<SimpleFsm<String>, String>from(SimpleFsm::new)
|
||||
.withStates()
|
||||
.from("init")
|
||||
.withBeforeHandler(fsm -> initBefore.set(true))
|
||||
.withAfterHandler(fsm -> initAfter.set(true))
|
||||
|
@ -54,8 +54,9 @@ import java.util.function.Supplier;
|
||||
* during transitions.
|
||||
* <pre>
|
||||
* {@code
|
||||
* SimpleFsm<String> simpleFsm = SimpleFsm
|
||||
* .<SimpleFsm<String>, String>withStates(SimpleFsm::new)
|
||||
* SimpleFsm<String> simpleFsm = Fsm
|
||||
* .<SimpleFsm<String>, String>from(SimpleFsm::new)
|
||||
* .withStates()
|
||||
* .from("init")
|
||||
* .withBeforeHandler(fsm -> initBefore.set(true))
|
||||
* .withAfterHandler(fsm -> initAfter.set(true))
|
||||
@ -94,8 +95,8 @@ public class Fsm<T extends Fsm, E> {
|
||||
* @param <E> the class type of Events to be processed
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public static <T extends Fsm,E> FsmBuilder<T,E> withStates(Supplier<T> supplier) {
|
||||
return new FsmBuilder<>(supplier);
|
||||
public static <T extends Fsm,E> FsmBuilderInitializer<T,E> from(Supplier<T> supplier) {
|
||||
return new FsmBuilderInitializer<>(supplier);
|
||||
}
|
||||
|
||||
/**
|
||||
|
17
src/main/java/me/bvn13/fsm/FsmBuilderInitializer.java
Normal file
17
src/main/java/me/bvn13/fsm/FsmBuilderInitializer.java
Normal file
@ -0,0 +1,17 @@
|
||||
package me.bvn13.fsm;
|
||||
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class FsmBuilderInitializer<T extends Fsm, E> {
|
||||
|
||||
final Supplier<T> supplier;
|
||||
|
||||
FsmBuilderInitializer(Supplier<T> supplier) {
|
||||
this.supplier = supplier;
|
||||
}
|
||||
|
||||
public FsmBuilder<T,E> withStates() {
|
||||
return new FsmBuilder<>(supplier);
|
||||
}
|
||||
|
||||
}
|
@ -1,11 +1,8 @@
|
||||
package me.bvn13.fsm.tests;
|
||||
|
||||
import me.bvn13.fsm.ConditionBuilder;
|
||||
import me.bvn13.fsm.Fsm;
|
||||
import me.bvn13.fsm.FsmBuilder;
|
||||
import me.bvn13.fsm.SimpleFsm;
|
||||
import me.bvn13.fsm.State;
|
||||
import me.bvn13.fsm.StateBuilder;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
@ -86,8 +83,9 @@ public class FsmTest {
|
||||
|
||||
// @formatter:off
|
||||
|
||||
SimpleFsm<String> simpleFsm = SimpleFsm
|
||||
.<SimpleFsm<String>, String>withStates(SimpleFsm::new)
|
||||
SimpleFsm<String> simpleFsm = Fsm
|
||||
.<SimpleFsm<String>, String>from(SimpleFsm::new)
|
||||
.withStates()
|
||||
.from("init")
|
||||
.withBeforeHandler(fsm -> initBefore.set(true))
|
||||
.withAfterHandler(fsm -> initAfter.set(true))
|
||||
|
Loading…
Reference in New Issue
Block a user