From 396b9b14cf5b97e198267dd6acb22abef22d19c5 Mon Sep 17 00:00:00 2001 From: KrYounger <35814586+xt0fer@users.noreply.github.com> Date: Mon, 30 Nov 2020 09:40:01 -0500 Subject: [PATCH 1/2] Setting up GitHub Classroom Feedback From 2e07bad09c588d2a7bfb666efb1584c0c517f745 Mon Sep 17 00:00:00 2001 From: Peter Date: Sun, 13 Dec 2020 16:03:22 -0500 Subject: [PATCH 2/2] Done --- src/main/java/EventListener.java | 14 +++++++++++--- src/main/java/EventTracker.java | 17 +++++++++++++++-- src/test/java/EventListenerTest.java | 3 +-- src/test/java/EventTrackerTest.java | 2 +- 4 files changed, 28 insertions(+), 8 deletions(-) diff --git a/src/main/java/EventListener.java b/src/main/java/EventListener.java index 9119f82..ce1ca5d 100644 --- a/src/main/java/EventListener.java +++ b/src/main/java/EventListener.java @@ -1,4 +1,4 @@ -public class EventListener { +public class EventListener extends Thread{ private String messageToListenFor; private String messageToReplyWith; @@ -17,16 +17,24 @@ public EventListener(String message, String reply, Tracker tracker) { } public void run() { + while (!readyToQuit()) { + if (shouldReply()) { + reply(); + } + } } public Boolean readyToQuit() { - return null; + return eventTracker.has("quit"); } public Boolean shouldReply() { - return null; + return eventTracker.has(messageToListenFor); } public void reply() { + eventTracker.handle(messageToListenFor, () -> { + System.out.println(messageToReplyWith); + }); } } \ No newline at end of file diff --git a/src/main/java/EventTracker.java b/src/main/java/EventTracker.java index 84885a4..bdbedc3 100644 --- a/src/main/java/EventTracker.java +++ b/src/main/java/EventTracker.java @@ -12,17 +12,30 @@ private EventTracker() { } synchronized public static EventTracker getInstance() { - return null; + return INSTANCE; } synchronized public void push(String message) { + Integer count = tracker.getOrDefault(message, 0); + tracker.put(message, count + 1); } synchronized public Boolean has(String message) { - return null; + Integer count = tracker.getOrDefault(message, 0); + return tracker.containsKey(message) && count > 0; } synchronized public void handle(String message, EventHandler e) { + try { + e.handle(); + this.tracker.put(message, this.tracker.get(message) - 1); + } catch (NullPointerException n) { + System.out.println("Currently untracked."); + } + } + + public Map getTracker() { + return this.tracker; } // Do not use this. This constructor is for tests only diff --git a/src/test/java/EventListenerTest.java b/src/test/java/EventListenerTest.java index 3d4b2eb..c4cad51 100644 --- a/src/test/java/EventListenerTest.java +++ b/src/test/java/EventListenerTest.java @@ -37,7 +37,6 @@ class TrackerMock implements Tracker { public boolean itemWasPushed; public boolean eventWasHandled; - @Override public Map tracker() { return null; } @@ -48,7 +47,7 @@ public void push(String message) { } @Override - public boolean has(String message) { + public Boolean has(String message) { return true; } diff --git a/src/test/java/EventTrackerTest.java b/src/test/java/EventTrackerTest.java index 11cab9d..53905aa 100644 --- a/src/test/java/EventTrackerTest.java +++ b/src/test/java/EventTrackerTest.java @@ -32,7 +32,7 @@ public void tracker() { eventTracker.push("test"); - Assert.assertEquals(testList, eventTracker.tracker()); + Assert.assertEquals(testList, eventTracker.getTracker()); }