From f5f37302812885b6fa5480bca9855abe5dfec26d Mon Sep 17 00:00:00 2001 From: Ziver Koc Date: Mon, 30 Aug 2021 01:42:34 +0200 Subject: [PATCH] Refactored event sending function to be more robust and thread safe --- hal-core/src/se/hal/EventControllerManager.java | 6 +++--- hal-core/src/se/hal/action/SendEventAction.java | 3 +-- hal-core/src/se/hal/page/EventOverviewWebPage.java | 3 +-- .../se/hal/plugin/assistant/google/trait/OnOffTrait.java | 3 +-- 4 files changed, 6 insertions(+), 9 deletions(-) diff --git a/hal-core/src/se/hal/EventControllerManager.java b/hal-core/src/se/hal/EventControllerManager.java index 4fecbeea..03afee3a 100644 --- a/hal-core/src/se/hal/EventControllerManager.java +++ b/hal-core/src/se/hal/EventControllerManager.java @@ -175,14 +175,14 @@ public class EventControllerManager extends HalAbstractControllerManager controllerClass = (Class) event.getControllerClass(); HalEventController controller = getControllerInstance(controllerClass); if (controller != null) { event.getDeviceData().setTimestamp(System.currentTimeMillis()); // Set timestamp to now - controller.send(event.getDeviceConfig(), event.getDeviceData()); - reportReceived(event.getDeviceConfig(), event.getDeviceData()); // save action to db + controller.send(event.getDeviceConfig(), eventData); + reportReceived(event.getDeviceConfig(), eventData); // save action to db } else logger.warning("No controller found for event id: "+ event.getId()); diff --git a/hal-core/src/se/hal/action/SendEventAction.java b/hal-core/src/se/hal/action/SendEventAction.java index 4aa660d4..a44ddc59 100644 --- a/hal-core/src/se/hal/action/SendEventAction.java +++ b/hal-core/src/se/hal/action/SendEventAction.java @@ -31,9 +31,8 @@ public class SendEventAction implements HalAction { if (event != null) { HalEventData dataObj = (HalEventData) event.getDeviceConfig().getDeviceDataClass().getDeclaredConstructor().newInstance(); dataObj.setData(data); - event.setDeviceData(dataObj); // Send - EventControllerManager.getInstance().send(event); + EventControllerManager.getInstance().send(event, dataObj); } else logger.warning("Unable to find event with id: "+ event.getId()); } catch (Exception e) { diff --git a/hal-core/src/se/hal/page/EventOverviewWebPage.java b/hal-core/src/se/hal/page/EventOverviewWebPage.java index bf6820a6..52e2e033 100644 --- a/hal-core/src/se/hal/page/EventOverviewWebPage.java +++ b/hal-core/src/se/hal/page/EventOverviewWebPage.java @@ -53,8 +53,7 @@ public class EventOverviewWebPage extends HalWebPage { logger.info("Modifying Event(" + id + ") state: " + eventData.toString()); Event event = Event.getEvent(db, id); - event.setDeviceData(eventData); - EventControllerManager.getInstance().send(event); + EventControllerManager.getInstance().send(event, eventData); } int id = (ObjectUtil.isEmpty(request.get("id")) ? -1 : Integer.parseInt(request.get("id"))); diff --git a/plugins/hal-assistant-google/src/se/hal/plugin/assistant/google/trait/OnOffTrait.java b/plugins/hal-assistant-google/src/se/hal/plugin/assistant/google/trait/OnOffTrait.java index c2b704fc..8964a77a 100644 --- a/plugins/hal-assistant-google/src/se/hal/plugin/assistant/google/trait/OnOffTrait.java +++ b/plugins/hal-assistant-google/src/se/hal/plugin/assistant/google/trait/OnOffTrait.java @@ -75,8 +75,7 @@ public class OnOffTrait extends DeviceTrait { else eventData.turnOff(); - device.setDeviceData(eventData); - EventControllerManager.getInstance().send((Event) device); + EventControllerManager.getInstance().send((Event) device, eventData); } } }