Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -878,8 +878,10 @@ private boolean activateRule(final WrappedRule rule) {
if (slTriggers.stream()
.anyMatch(t -> ((BigDecimal) t.getConfiguration().get(SystemTriggerHandler.CFG_STARTLEVEL))
.intValue() <= startLevelService.getStartLevel())) {
runNow(rule.getUID(), true, Map.of(SystemTriggerHandler.OUT_STARTLEVEL, StartLevelService.STARTLEVEL_RULES,
"event", SystemEventFactory.createStartlevelEvent(StartLevelService.STARTLEVEL_RULES)));
runNow(rule.getUID(), true,
Map.of(SystemTriggerHandler.OUT_STARTLEVEL, StartLevelService.STARTLEVEL_RULES, "event",
SystemEventFactory.createStartlevelEvent(StartLevelService.STARTLEVEL_RULES,
RuleEngineImpl.class.getName() + ".activateRule")));
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

event sources should generally be the package name, not the class name. so just org.openhab.core.automation here...

}

return true;
Expand Down Expand Up @@ -1599,7 +1601,8 @@ private void executeRulesWithStartLevel() {
.filter(this::mustTrigger) //
.forEach(r -> runNow(r.getUID(), true,
Map.of(SystemTriggerHandler.OUT_STARTLEVEL, StartLevelService.STARTLEVEL_RULES, "event",
SystemEventFactory.createStartlevelEvent(StartLevelService.STARTLEVEL_RULES))));
SystemEventFactory.createStartlevelEvent(StartLevelService.STARTLEVEL_RULES,
RuleEngineImpl.class.getName() + ".executeRulesWithStartLevel"))));
Copy link
Member

@ccutrer ccutrer Dec 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

... and here (and don't add the method name; users shouldn't know or care, as commented on the PR itself) ...

started = true;
readyService.markReady(MARKER);
logger.info("Rule engine started.");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ public void testDoesNotTriggerIfStartLevelEventLower() {
SystemTriggerHandler triggerHandler = new SystemTriggerHandler(triggerMock, bundleContextMock);
triggerHandler.setCallback(callbackMock);

Event event = SystemEventFactory.createStartlevelEvent(70);
Event event = SystemEventFactory.createStartlevelEvent(70, null);
triggerHandler.receive(event);

verifyNoInteractions(callbackMock);
Expand All @@ -93,7 +93,7 @@ public void testDoesTriggerIfStartLevelEventHigher() {
SystemTriggerHandler triggerHandler = new SystemTriggerHandler(triggerMock, bundleContextMock);
triggerHandler.setCallback(callbackMock);

Event event = SystemEventFactory.createStartlevelEvent(100);
Event event = SystemEventFactory.createStartlevelEvent(100, null);
triggerHandler.receive(event);

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

Event event = SystemEventFactory.createStartlevelEvent(100);
Event event = SystemEventFactory.createStartlevelEvent(100, null);
triggerHandler.receive(event);

verify(callbackMock).triggered(eq(triggerMock), captor.capture());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,10 @@ public SystemEventFactory() {
* @param startlevel Startlevel of system
* @return Created start level event.
*/
Copy link

Copilot AI Dec 17, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a breaking API change to a public static method. The method signature has been changed to add a required parameter, which will break any external code calling this method. Consider maintaining backward compatibility by either:

  1. Creating a new overloaded method with the source parameter while keeping the old method and marking it as @deprecated
  2. Making the source parameter have a default value by creating an overload that calls this method with null

This would allow existing code to continue working while providing the new functionality.

Suggested change
*/
*/
@Deprecated
public static StartlevelEvent createStartlevelEvent(Integer startlevel) {
return createStartlevelEvent(startlevel, null);
}

Copilot uses AI. Check for mistakes.
public static StartlevelEvent createStartlevelEvent(Integer startlevel) {
public static StartlevelEvent createStartlevelEvent(Integer startlevel, @Nullable String source) {
SystemEventPayloadBean bean = new SystemEventPayloadBean(startlevel);
String payload = serializePayload(bean);
return new StartlevelEvent(SYSTEM_STARTLEVEL_TOPIC, payload, null, startlevel);
return new StartlevelEvent(SYSTEM_STARTLEVEL_TOPIC, payload, source, startlevel);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 +255,8 @@ private void setStartLevel(int level) {
}
openHABStartLevel = level;
scheduler.submit(() -> {
StartlevelEvent startlevelEvent = SystemEventFactory.createStartlevelEvent(level);
StartlevelEvent startlevelEvent = SystemEventFactory.createStartlevelEvent(level,
StartLevelService.class.getName());
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

... and org.openhab.core here

eventPublisher.post(startlevelEvent);
logger.debug("Reached start level {}", level);
});
Expand Down