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.
|
during transitions.
|
||||||
|
|
||||||
```java
|
```java
|
||||||
SimpleFsm<String> simpleFsm = SimpleFsm
|
SimpleFsm<String> simpleFsm = Fsm
|
||||||
.<SimpleFsm<String>, String>withStates(SimpleFsm::new)
|
.<SimpleFsm<String>, String>from(SimpleFsm::new)
|
||||||
|
.withStates()
|
||||||
.from("init")
|
.from("init")
|
||||||
.withBeforeHandler(fsm -> initBefore.set(true))
|
.withBeforeHandler(fsm -> initBefore.set(true))
|
||||||
.withAfterHandler(fsm -> initAfter.set(true))
|
.withAfterHandler(fsm -> initAfter.set(true))
|
||||||
|
@ -54,8 +54,9 @@ import java.util.function.Supplier;
|
|||||||
* during transitions.
|
* during transitions.
|
||||||
* <pre>
|
* <pre>
|
||||||
* {@code
|
* {@code
|
||||||
* SimpleFsm<String> simpleFsm = SimpleFsm
|
* SimpleFsm<String> simpleFsm = Fsm
|
||||||
* .<SimpleFsm<String>, String>withStates(SimpleFsm::new)
|
* .<SimpleFsm<String>, String>from(SimpleFsm::new)
|
||||||
|
* .withStates()
|
||||||
* .from("init")
|
* .from("init")
|
||||||
* .withBeforeHandler(fsm -> initBefore.set(true))
|
* .withBeforeHandler(fsm -> initBefore.set(true))
|
||||||
* .withAfterHandler(fsm -> initAfter.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
|
* @param <E> the class type of Events to be processed
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public static <T extends Fsm,E> FsmBuilder<T,E> withStates(Supplier<T> supplier) {
|
public static <T extends Fsm,E> FsmBuilderInitializer<T,E> from(Supplier<T> supplier) {
|
||||||
return new FsmBuilder<>(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;
|
package me.bvn13.fsm.tests;
|
||||||
|
|
||||||
import me.bvn13.fsm.ConditionBuilder;
|
|
||||||
import me.bvn13.fsm.Fsm;
|
import me.bvn13.fsm.Fsm;
|
||||||
import me.bvn13.fsm.FsmBuilder;
|
|
||||||
import me.bvn13.fsm.SimpleFsm;
|
import me.bvn13.fsm.SimpleFsm;
|
||||||
import me.bvn13.fsm.State;
|
import me.bvn13.fsm.State;
|
||||||
import me.bvn13.fsm.StateBuilder;
|
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
@ -86,8 +83,9 @@ public class FsmTest {
|
|||||||
|
|
||||||
// @formatter:off
|
// @formatter:off
|
||||||
|
|
||||||
SimpleFsm<String> simpleFsm = SimpleFsm
|
SimpleFsm<String> simpleFsm = Fsm
|
||||||
.<SimpleFsm<String>, String>withStates(SimpleFsm::new)
|
.<SimpleFsm<String>, String>from(SimpleFsm::new)
|
||||||
|
.withStates()
|
||||||
.from("init")
|
.from("init")
|
||||||
.withBeforeHandler(fsm -> initBefore.set(true))
|
.withBeforeHandler(fsm -> initBefore.set(true))
|
||||||
.withAfterHandler(fsm -> initAfter.set(true))
|
.withAfterHandler(fsm -> initAfter.set(true))
|
||||||
|
Loading…
Reference in New Issue
Block a user