Refactored event sending function to be more robust and thread safe
This commit is contained in:
parent
102d8aa266
commit
f5f3730281
4 changed files with 6 additions and 9 deletions
|
|
@ -175,14 +175,14 @@ public class EventControllerManager extends HalAbstractControllerManager<HalEven
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public void send(Event event){
|
public void send(Event event, HalEventData eventData){
|
||||||
Class<? extends HalEventController> controllerClass = (Class<? extends HalEventController>) event.getControllerClass();
|
Class<? extends HalEventController> controllerClass = (Class<? extends HalEventController>) event.getControllerClass();
|
||||||
HalEventController controller = getControllerInstance(controllerClass);
|
HalEventController controller = getControllerInstance(controllerClass);
|
||||||
|
|
||||||
if (controller != null) {
|
if (controller != null) {
|
||||||
event.getDeviceData().setTimestamp(System.currentTimeMillis()); // Set timestamp to now
|
event.getDeviceData().setTimestamp(System.currentTimeMillis()); // Set timestamp to now
|
||||||
controller.send(event.getDeviceConfig(), event.getDeviceData());
|
controller.send(event.getDeviceConfig(), eventData);
|
||||||
reportReceived(event.getDeviceConfig(), event.getDeviceData()); // save action to db
|
reportReceived(event.getDeviceConfig(), eventData); // save action to db
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
logger.warning("No controller found for event id: "+ event.getId());
|
logger.warning("No controller found for event id: "+ event.getId());
|
||||||
|
|
|
||||||
|
|
@ -31,9 +31,8 @@ public class SendEventAction implements HalAction {
|
||||||
if (event != null) {
|
if (event != null) {
|
||||||
HalEventData dataObj = (HalEventData) event.getDeviceConfig().getDeviceDataClass().getDeclaredConstructor().newInstance();
|
HalEventData dataObj = (HalEventData) event.getDeviceConfig().getDeviceDataClass().getDeclaredConstructor().newInstance();
|
||||||
dataObj.setData(data);
|
dataObj.setData(data);
|
||||||
event.setDeviceData(dataObj);
|
|
||||||
// Send
|
// Send
|
||||||
EventControllerManager.getInstance().send(event);
|
EventControllerManager.getInstance().send(event, dataObj);
|
||||||
} else
|
} else
|
||||||
logger.warning("Unable to find event with id: "+ event.getId());
|
logger.warning("Unable to find event with id: "+ event.getId());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|
|
||||||
|
|
@ -53,8 +53,7 @@ public class EventOverviewWebPage extends HalWebPage {
|
||||||
|
|
||||||
logger.info("Modifying Event(" + id + ") state: " + eventData.toString());
|
logger.info("Modifying Event(" + id + ") state: " + eventData.toString());
|
||||||
Event event = Event.getEvent(db, id);
|
Event event = Event.getEvent(db, id);
|
||||||
event.setDeviceData(eventData);
|
EventControllerManager.getInstance().send(event, eventData);
|
||||||
EventControllerManager.getInstance().send(event);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int id = (ObjectUtil.isEmpty(request.get("id")) ? -1 : Integer.parseInt(request.get("id")));
|
int id = (ObjectUtil.isEmpty(request.get("id")) ? -1 : Integer.parseInt(request.get("id")));
|
||||||
|
|
|
||||||
|
|
@ -75,8 +75,7 @@ public class OnOffTrait extends DeviceTrait {
|
||||||
else
|
else
|
||||||
eventData.turnOff();
|
eventData.turnOff();
|
||||||
|
|
||||||
device.setDeviceData(eventData);
|
EventControllerManager.getInstance().send((Event) device, eventData);
|
||||||
EventControllerManager.getInstance().send((Event) device);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue