Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package modelbasedakka4j;
- import java.io.IOException;
- import org.requirementsascode.UseCaseModel;
- import org.requirementsascode.UseCaseModelBuilder;
- import org.requirementsascode.UseCaseModelRunner;
- import akka.actor.AbstractActor;
- import akka.actor.ActorRef;
- import akka.actor.ActorSystem;
- import akka.actor.Props;
- import akka.actor.UntypedAbstractActor;
- public class ModelBasedAkka4j {
- public static void main(String[] args) {
- ActorSystem actorSystem = ActorSystem.create("ModelBasedActorSystem");
- UseCaseModelRunner useCaseModelRunner = runnerOf(useCaseModel());
- ActorRef modelBasedActor = spawn(actorSystem, ModelBasedActor.class, useCaseModelRunner);
- modelBasedActor.tell(new SayHelloWorld(), ActorRef.noSender());
- modelBasedActor.tell(new SayHelloWorld(), ActorRef.noSender());
- modelBasedActor.tell(new SayHelloTo("Sandra"), ActorRef.noSender());
- waitForKeyPressed();
- actorSystem.terminate();
- }
- static UseCaseModelRunner runnerOf(UseCaseModel useCaseModel) {
- UseCaseModelRunner useCaseModelRunner = new UseCaseModelRunner();
- useCaseModelRunner.run(useCaseModel);
- return useCaseModelRunner;
- }
- static UseCaseModel useCaseModel() {
- UseCaseModel useCaseModel = UseCaseModelBuilder.newBuilder()
- .useCase("Say hello to world, then user")
- .basicFlow()
- .step("S1").user(SayHelloWorld.class).system(shw -> System.out.println("Hello, World."))
- .step("S2").user(SayHelloTo.class).system(sht -> System.out.println("Hello, " + sht.getName() + "."))
- .build();
- return useCaseModel;
- }
- static <T> ActorRef spawn(ActorSystem system, Class<? extends AbstractActor> actorClass, Object... constructorParams) {
- Props props = Props.create(actorClass, constructorParams);
- return system.actorOf(props);
- }
- static class ModelBasedActor extends UntypedAbstractActor {
- private UseCaseModelRunner useCaseModelRunner;
- public ModelBasedActor(UseCaseModelRunner useCaseModelRunner) {
- this.useCaseModelRunner = useCaseModelRunner;
- }
- @Override
- public void onReceive(Object msg) throws Exception {
- useCaseModelRunner.reactTo(msg);
- }
- }
- static class SayHelloTo {
- private String name;
- public SayHelloTo(String name) {
- this.name = name;
- }
- public String getName() {
- return name;
- }
- }
- static class SayHelloWorld {
- }
- static class AskForHello {
- }
- static void waitForKeyPressed() {
- try {
- System.in.read();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
Add Comment
Please, Sign In to add comment