Skip to content

Commit b62e2a3

Browse files
committed
Add event source for StartLevel event
This pull request adds an event source to the StartLevel event. With this rules can distinguish between events from the StartLevelService and events from the RuleEngine after a rule was changed. Signed-off-by: TheNetStriker <david@masshardt.ch>
1 parent 636c476 commit b62e2a3

File tree

4 files changed

+13
-9
lines changed

4 files changed

+13
-9
lines changed

bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/RuleEngineImpl.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -878,8 +878,10 @@ private boolean activateRule(final WrappedRule rule) {
878878
if (slTriggers.stream()
879879
.anyMatch(t -> ((BigDecimal) t.getConfiguration().get(SystemTriggerHandler.CFG_STARTLEVEL))
880880
.intValue() <= startLevelService.getStartLevel())) {
881-
runNow(rule.getUID(), true, Map.of(SystemTriggerHandler.OUT_STARTLEVEL, StartLevelService.STARTLEVEL_RULES,
882-
"event", SystemEventFactory.createStartlevelEvent(StartLevelService.STARTLEVEL_RULES)));
881+
runNow(rule.getUID(), true,
882+
Map.of(SystemTriggerHandler.OUT_STARTLEVEL, StartLevelService.STARTLEVEL_RULES, "event",
883+
SystemEventFactory.createStartlevelEvent(StartLevelService.STARTLEVEL_RULES,
884+
RuleEngineImpl.class.getName())));
883885
}
884886

885887
return true;
@@ -1599,7 +1601,8 @@ private void executeRulesWithStartLevel() {
15991601
.filter(this::mustTrigger) //
16001602
.forEach(r -> runNow(r.getUID(), true,
16011603
Map.of(SystemTriggerHandler.OUT_STARTLEVEL, StartLevelService.STARTLEVEL_RULES, "event",
1602-
SystemEventFactory.createStartlevelEvent(StartLevelService.STARTLEVEL_RULES))));
1604+
SystemEventFactory.createStartlevelEvent(StartLevelService.STARTLEVEL_RULES,
1605+
RuleEngineImpl.class.getName()))));
16031606
started = true;
16041607
readyService.markReady(MARKER);
16051608
logger.info("Rule engine started.");

bundles/org.openhab.core.automation/src/test/java/org/openhab/core/automation/internal/module/handler/SystemTriggerHandlerTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ public void testDoesNotTriggerIfStartLevelEventLower() {
8080
SystemTriggerHandler triggerHandler = new SystemTriggerHandler(triggerMock, bundleContextMock);
8181
triggerHandler.setCallback(callbackMock);
8282

83-
Event event = SystemEventFactory.createStartlevelEvent(70);
83+
Event event = SystemEventFactory.createStartlevelEvent(70, null);
8484
triggerHandler.receive(event);
8585

8686
verifyNoInteractions(callbackMock);
@@ -93,7 +93,7 @@ public void testDoesTriggerIfStartLevelEventHigher() {
9393
SystemTriggerHandler triggerHandler = new SystemTriggerHandler(triggerMock, bundleContextMock);
9494
triggerHandler.setCallback(callbackMock);
9595

96-
Event event = SystemEventFactory.createStartlevelEvent(100);
96+
Event event = SystemEventFactory.createStartlevelEvent(100, null);
9797
triggerHandler.receive(event);
9898

9999
verify(callbackMock).triggered(eq(triggerMock), captor.capture());
@@ -109,7 +109,7 @@ public void testDoesNotTriggerAfterEventTrigger() {
109109
SystemTriggerHandler triggerHandler = new SystemTriggerHandler(triggerMock, bundleContextMock);
110110
triggerHandler.setCallback(callbackMock);
111111

112-
Event event = SystemEventFactory.createStartlevelEvent(100);
112+
Event event = SystemEventFactory.createStartlevelEvent(100, null);
113113
triggerHandler.receive(event);
114114

115115
verify(callbackMock).triggered(eq(triggerMock), captor.capture());

bundles/org.openhab.core/src/main/java/org/openhab/core/events/system/SystemEventFactory.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,10 @@ public SystemEventFactory() {
4242
* @param startlevel Startlevel of system
4343
* @return Created start level event.
4444
*/
45-
public static StartlevelEvent createStartlevelEvent(Integer startlevel) {
45+
public static StartlevelEvent createStartlevelEvent(Integer startlevel, @Nullable String source) {
4646
SystemEventPayloadBean bean = new SystemEventPayloadBean(startlevel);
4747
String payload = serializePayload(bean);
48-
return new StartlevelEvent(SYSTEM_STARTLEVEL_TOPIC, payload, null, startlevel);
48+
return new StartlevelEvent(SYSTEM_STARTLEVEL_TOPIC, payload, source, startlevel);
4949
}
5050

5151
@Override

bundles/org.openhab.core/src/main/java/org/openhab/core/service/StartLevelService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,8 @@ private void setStartLevel(int level) {
255255
}
256256
openHABStartLevel = level;
257257
scheduler.submit(() -> {
258-
StartlevelEvent startlevelEvent = SystemEventFactory.createStartlevelEvent(level);
258+
StartlevelEvent startlevelEvent = SystemEventFactory.createStartlevelEvent(level,
259+
StartLevelService.class.getName());
259260
eventPublisher.post(startlevelEvent);
260261
logger.debug("Reached start level {}", level);
261262
});

0 commit comments

Comments
 (0)