summaryrefslogtreecommitdiff
path: root/domain/src/main/java/presentatie/Marco.java
diff options
context:
space:
mode:
authorMike Vink <mike1994vink@gmail.com>2021-08-04 18:45:54 +0200
committerMike Vink <mike1994vink@gmail.com>2021-08-04 18:45:54 +0200
commitba6e5201d3eea1a0a36f685d4e1a5f57fcefe199 (patch)
tree2a0f9789c564661ab9cbc7ee8299c7c87a7c7ee3 /domain/src/main/java/presentatie/Marco.java
parent4852e6c08a0dd759a60b34b0d03c1f1eedc23805 (diff)
feat(presentatie): testing gif
Diffstat (limited to 'domain/src/main/java/presentatie/Marco.java')
-rw-r--r--domain/src/main/java/presentatie/Marco.java101
1 files changed, 101 insertions, 0 deletions
diff --git a/domain/src/main/java/presentatie/Marco.java b/domain/src/main/java/presentatie/Marco.java
new file mode 100644
index 0000000..8da2f4f
--- /dev/null
+++ b/domain/src/main/java/presentatie/Marco.java
@@ -0,0 +1,101 @@
+package presentatie;
+
+import akka.actor.typed.ActorRef;
+import akka.actor.typed.ActorSystem;
+import akka.actor.typed.Behavior;
+import akka.actor.typed.javadsl.AbstractBehavior;
+import akka.actor.typed.javadsl.ActorContext;
+import akka.actor.typed.javadsl.Behaviors;
+import akka.actor.typed.javadsl.Receive;
+
+import java.time.Duration;
+import java.util.concurrent.TimeUnit;
+
+public class Marco extends AbstractBehavior<Marco.Bericht> {
+
+ public interface Bericht {}
+
+ private static class MarcoBegrijptReactieZo implements Bericht {
+ public String string;
+
+ public MarcoBegrijptReactieZo(String s) {
+ this.string = s;
+ }
+ }
+
+ public static Behavior<Marco.Bericht> create() {
+ return Behaviors.setup(context -> new Marco(context));
+ }
+
+ private boolean benalbezigOntvangen = false;
+
+ public Marco(ActorContext<Bericht> context) {
+ super(context);
+
+ ActorRef<Bart.Bericht> bart = getContext().spawn(Bart.create(), "bartsNaam");
+
+ final Duration timeout = Duration.ofSeconds(10);
+
+ getContext().getLog().info("Hey Bart, ik heb net Aurorus gerefactord kan je mijn code reviewen?");
+ context.ask(
+ Bart.isKlaarMetCodeReview.class,
+ bart,
+ timeout,
+ (ActorRef<Bart.isKlaarMetCodeReview> ref) -> new Bart.reviewMijnCodeAlsjeblieft(ref),
+ (reactie, throwable) -> {
+ if (reactie != null) {
+ return new MarcoBegrijptReactieZo(reactie.string);
+ } else {
+ return new MarcoBegrijptReactieZo("Code Review failed?!");
+ }
+ }
+ );
+
+ try {
+ TimeUnit.SECONDS.sleep(3);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+
+ context.ask(
+ Bart.isKlaarMetCodeReview.class,
+ bart,
+ timeout,
+ (ActorRef<Bart.isKlaarMetCodeReview> ref) -> new Bart.reviewMijnCodeAlsjeblieft(ref),
+ (reactie, throwable) -> {
+ if (reactie != null) {
+ return new MarcoBegrijptReactieZo(reactie.string);
+ } else {
+ return new MarcoBegrijptReactieZo("Code Review failed?!");
+ }
+ }
+ );
+ }
+
+ @Override
+ public Receive<Bericht> createReceive() {
+ return newReceiveBuilder()
+ .onMessage(MarcoBegrijptReactieZo.class, this::ontvangReactie)
+ .build();
+ }
+
+ private Behavior<Bericht> ontvangReactie(MarcoBegrijptReactieZo reactie) {
+ getContext().getLog().info("Marco ontvangt reactie van Bart: " + reactie.string);
+ return stopAlsDemoVoorbijIs();
+ }
+
+ private Behavior<Bericht> stopAlsDemoVoorbijIs() {
+ if (benalbezigOntvangen) {
+ return Behaviors.stopped();
+ } else {
+ this.benalbezigOntvangen = true;
+ return this;
+ }
+ }
+
+ public static void main(String[] args) {
+ System.out.println("Hello all!");
+ ActorRef<Bericht> system = ActorSystem.create(Marco.create(), "presentatie-voorbeeld");
+ }
+
+}