diff --git a/bundles/org.openhab.core.automation.module.script/src/main/java/org/openhab/core/automation/module/script/internal/defaultscope/ScriptBusEvent.java b/bundles/org.openhab.core.automation.module.script/src/main/java/org/openhab/core/automation/module/script/internal/defaultscope/ScriptBusEvent.java
index 4f7e3e784f..a9ee1c5c58 100644
--- a/bundles/org.openhab.core.automation.module.script/src/main/java/org/openhab/core/automation/module/script/internal/defaultscope/ScriptBusEvent.java
+++ b/bundles/org.openhab.core.automation.module.script/src/main/java/org/openhab/core/automation/module/script/internal/defaultscope/ScriptBusEvent.java
@@ -91,7 +91,11 @@ public class ScriptBusEvent {
try {
Item item = itemRegistry.getItem(itemName);
Command command = TypeParser.parseCommand(item.getAcceptedCommandTypes(), commandString);
- eventPublisher.post(ItemEventFactory.createCommandEvent(itemName, command));
+ if (command != null) {
+ eventPublisher.post(ItemEventFactory.createCommandEvent(itemName, command));
+ } else {
+ LoggerFactory.getLogger(ScriptBusEvent.class).warn("Command '{}' cannot be parsed.", commandString);
+ }
} catch (ItemNotFoundException e) {
LoggerFactory.getLogger(ScriptBusEvent.class).warn("Item '{}' does not exist.", itemName);
}
@@ -151,7 +155,11 @@ public class ScriptBusEvent {
try {
Item item = itemRegistry.getItem(itemName);
State state = TypeParser.parseState(item.getAcceptedDataTypes(), stateString);
- eventPublisher.post(ItemEventFactory.createStateEvent(itemName, state));
+ if (state != null) {
+ eventPublisher.post(ItemEventFactory.createStateEvent(itemName, state));
+ } else {
+ LoggerFactory.getLogger(ScriptBusEvent.class).warn("State '{}' cannot be parsed.", stateString);
+ }
} catch (ItemNotFoundException e) {
LoggerFactory.getLogger(ScriptBusEvent.class).warn("Item '{}' does not exist.", itemName);
}
diff --git a/bundles/org.openhab.core/src/main/java/org/openhab/core/events/EventPublisher.java b/bundles/org.openhab.core/src/main/java/org/openhab/core/events/EventPublisher.java
index 03babb2bec..d7f13d1be7 100644
--- a/bundles/org.openhab.core/src/main/java/org/openhab/core/events/EventPublisher.java
+++ b/bundles/org.openhab.core/src/main/java/org/openhab/core/events/EventPublisher.java
@@ -12,17 +12,20 @@
*/
package org.openhab.core.events;
+import org.eclipse.jdt.annotation.NonNullByDefault;
+
/**
* The {@link EventPublisher} posts {@link Event}s through the openHAB event bus in an asynchronous way.
* Posted events can be received by implementing the {@link EventSubscriber} callback interface.
*
* @author Stefan Bußweiler - Initial contribution
*/
+@NonNullByDefault
public interface EventPublisher {
/**
* Posts an event through the event bus in an asynchronous way.
- *
+ *
* @param event the event posted through the event bus
* @throws IllegalArgumentException if the event is null
* @throws IllegalArgumentException if one of the event properties type, payload or topic is null
diff --git a/bundles/org.openhab.core/src/main/java/org/openhab/core/events/TopicEventFilter.java b/bundles/org.openhab.core/src/main/java/org/openhab/core/events/TopicEventFilter.java
index ef426cbaba..9c29fc2522 100644
--- a/bundles/org.openhab.core/src/main/java/org/openhab/core/events/TopicEventFilter.java
+++ b/bundles/org.openhab.core/src/main/java/org/openhab/core/events/TopicEventFilter.java
@@ -12,19 +12,22 @@
*/
package org.openhab.core.events;
+import org.eclipse.jdt.annotation.NonNullByDefault;
+
/**
* The {@link TopicEventFilter} is a default openHAB {@link EventFilter} implementation that ensures filtering
* of events based on an event topic.
- *
+ *
* @author Stefan Bußweiler - Initial contribution
*/
+@NonNullByDefault
public class TopicEventFilter implements EventFilter {
private final String topicRegex;
/**
* Constructs a new topic event filter.
- *
+ *
* @param topicRegex the regular expression of a topic
* @see Java Regex
*/
diff --git a/bundles/org.openhab.core/src/main/java/org/openhab/core/internal/events/OSGiEventPublisher.java b/bundles/org.openhab.core/src/main/java/org/openhab/core/internal/events/OSGiEventPublisher.java
index 7d9a28a067..6d9152f6c3 100644
--- a/bundles/org.openhab.core/src/main/java/org/openhab/core/internal/events/OSGiEventPublisher.java
+++ b/bundles/org.openhab.core/src/main/java/org/openhab/core/internal/events/OSGiEventPublisher.java
@@ -20,6 +20,7 @@ import java.util.Hashtable;
import org.openhab.core.events.Event;
import org.openhab.core.events.EventPublisher;
+import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
import org.osgi.service.event.EventAdmin;
@@ -36,17 +37,13 @@ import org.osgi.service.event.EventAdmin;
@Component
public class OSGiEventPublisher implements EventPublisher {
- private EventAdmin osgiEventAdmin;
+ private final EventAdmin osgiEventAdmin;
- @Reference
- protected void setEventAdmin(EventAdmin eventAdmin) {
+ @Activate
+ public OSGiEventPublisher(final @Reference EventAdmin eventAdmin) {
this.osgiEventAdmin = eventAdmin;
}
- protected void unsetEventAdmin(EventAdmin eventAdmin) {
- this.osgiEventAdmin = null;
- }
-
@Override
public void post(final Event event) throws IllegalArgumentException, IllegalStateException {
EventAdmin eventAdmin = this.osgiEventAdmin;
@@ -64,8 +61,9 @@ public class OSGiEventPublisher implements EventPublisher {
properties.put("type", event.getType());
properties.put("payload", event.getPayload());
properties.put("topic", event.getTopic());
- if (event.getSource() != null) {
- properties.put("source", event.getSource());
+ String source = event.getSource();
+ if (source != null) {
+ properties.put("source", source);
}
eventAdmin.postEvent(new org.osgi.service.event.Event("openhab", properties));
return null;
diff --git a/bundles/org.openhab.core/src/main/java/org/openhab/core/items/events/AbstractItemEventSubscriber.java b/bundles/org.openhab.core/src/main/java/org/openhab/core/items/events/AbstractItemEventSubscriber.java
index 045d8b1ad0..912a982ff5 100644
--- a/bundles/org.openhab.core/src/main/java/org/openhab/core/items/events/AbstractItemEventSubscriber.java
+++ b/bundles/org.openhab.core/src/main/java/org/openhab/core/items/events/AbstractItemEventSubscriber.java
@@ -14,6 +14,8 @@ package org.openhab.core.items.events;
import java.util.Set;
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
import org.openhab.core.events.Event;
import org.openhab.core.events.EventFilter;
import org.openhab.core.events.EventSubscriber;
@@ -28,6 +30,7 @@ import org.openhab.core.events.EventSubscriber;
*
* @author Stefan Bußweiler - Initial contribution
*/
+@NonNullByDefault
public abstract class AbstractItemEventSubscriber implements EventSubscriber {
private final Set subscribedEventTypes = Set.of(ItemStateEvent.TYPE, ItemCommandEvent.TYPE);
@@ -38,7 +41,7 @@ public abstract class AbstractItemEventSubscriber implements EventSubscriber {
}
@Override
- public EventFilter getEventFilter() {
+ public @Nullable EventFilter getEventFilter() {
return null;
}
diff --git a/bundles/org.openhab.core/src/main/java/org/openhab/core/items/events/AbstractItemRegistryEvent.java b/bundles/org.openhab.core/src/main/java/org/openhab/core/items/events/AbstractItemRegistryEvent.java
index fa1440ea6f..d5ef1041cf 100644
--- a/bundles/org.openhab.core/src/main/java/org/openhab/core/items/events/AbstractItemRegistryEvent.java
+++ b/bundles/org.openhab.core/src/main/java/org/openhab/core/items/events/AbstractItemRegistryEvent.java
@@ -12,6 +12,8 @@
*/
package org.openhab.core.items.events;
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
import org.openhab.core.events.AbstractEvent;
import org.openhab.core.items.ItemRegistry;
import org.openhab.core.items.dto.ItemDTO;
@@ -22,6 +24,7 @@ import org.openhab.core.items.dto.ItemDTO;
*
* @author Stefan Bußweiler - Initial contribution
*/
+@NonNullByDefault
public abstract class AbstractItemRegistryEvent extends AbstractEvent {
private final ItemDTO item;
@@ -31,17 +34,17 @@ public abstract class AbstractItemRegistryEvent extends AbstractEvent {
*
* @param topic the topic
* @param payload the payload
- * @param source the source, can be null
+ * @param source the source
* @param item the item data transfer object
*/
- protected AbstractItemRegistryEvent(String topic, String payload, String source, ItemDTO item) {
+ protected AbstractItemRegistryEvent(String topic, String payload, @Nullable String source, ItemDTO item) {
super(topic, payload, source);
this.item = item;
}
/**
* Gets the item.
- *
+ *
* @return the item
*/
public ItemDTO getItem() {
diff --git a/bundles/org.openhab.core/src/main/java/org/openhab/core/items/events/ItemAddedEvent.java b/bundles/org.openhab.core/src/main/java/org/openhab/core/items/events/ItemAddedEvent.java
index c9b1a380d3..25534fcf50 100644
--- a/bundles/org.openhab.core/src/main/java/org/openhab/core/items/events/ItemAddedEvent.java
+++ b/bundles/org.openhab.core/src/main/java/org/openhab/core/items/events/ItemAddedEvent.java
@@ -12,6 +12,7 @@
*/
package org.openhab.core.items.events;
+import org.eclipse.jdt.annotation.NonNullByDefault;
import org.openhab.core.items.dto.ItemDTO;
/**
@@ -20,6 +21,7 @@ import org.openhab.core.items.dto.ItemDTO;
*
* @author Stefan Bußweiler - Initial contribution
*/
+@NonNullByDefault
public class ItemAddedEvent extends AbstractItemRegistryEvent {
/**
diff --git a/bundles/org.openhab.core/src/main/java/org/openhab/core/items/events/ItemEventFactory.java b/bundles/org.openhab.core/src/main/java/org/openhab/core/items/events/ItemEventFactory.java
index e8bb48a038..2a44ac1e8b 100644
--- a/bundles/org.openhab.core/src/main/java/org/openhab/core/items/events/ItemEventFactory.java
+++ b/bundles/org.openhab.core/src/main/java/org/openhab/core/items/events/ItemEventFactory.java
@@ -16,9 +16,10 @@ import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.LinkedList;
import java.util.List;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
+import java.util.Set;
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
import org.openhab.core.events.AbstractEventFactory;
import org.openhab.core.events.Event;
import org.openhab.core.events.EventFactory;
@@ -39,8 +40,8 @@ import org.osgi.service.component.annotations.Component;
* @author Stefan Bußweiler - Initial contribution
*/
@Component(immediate = true, service = EventFactory.class)
+@NonNullByDefault
public class ItemEventFactory extends AbstractEventFactory {
-
private static final String TYPE_POSTFIX = "Type";
private static final String CORE_LIBRARY_PACKAGE = "org.openhab.core.library.types.";
@@ -65,13 +66,14 @@ public class ItemEventFactory extends AbstractEventFactory {
* Constructs a new ItemEventFactory.
*/
public ItemEventFactory() {
- super(Stream.of(ItemCommandEvent.TYPE, ItemStateEvent.TYPE, ItemStatePredictedEvent.TYPE,
+ super(Set.of(ItemCommandEvent.TYPE, ItemStateEvent.TYPE, ItemStatePredictedEvent.TYPE,
ItemStateChangedEvent.TYPE, ItemAddedEvent.TYPE, ItemUpdatedEvent.TYPE, ItemRemovedEvent.TYPE,
- GroupItemStateChangedEvent.TYPE).collect(Collectors.toSet()));
+ GroupItemStateChangedEvent.TYPE));
}
@Override
- protected Event createEventByType(String eventType, String topic, String payload, String source) throws Exception {
+ protected Event createEventByType(String eventType, String topic, String payload, @Nullable String source)
+ throws Exception {
if (ItemCommandEvent.TYPE.equals(eventType)) {
return createCommandEvent(topic, payload, source);
} else if (ItemStateEvent.TYPE.equals(eventType)) {
@@ -101,14 +103,14 @@ public class ItemEventFactory extends AbstractEventFactory {
return new GroupItemStateChangedEvent(topic, payload, itemName, memberName, state, oldState);
}
- private Event createCommandEvent(String topic, String payload, String source) {
+ private Event createCommandEvent(String topic, String payload, @Nullable String source) {
String itemName = getItemName(topic);
ItemEventPayloadBean bean = deserializePayload(payload, ItemEventPayloadBean.class);
Command command = parseType(bean.getType(), bean.getValue(), Command.class);
return new ItemCommandEvent(topic, payload, itemName, command, source);
}
- private Event createStateEvent(String topic, String payload, String source) {
+ private Event createStateEvent(String topic, String payload, @Nullable String source) {
String itemName = getItemName(topic);
ItemEventPayloadBean bean = deserializePayload(payload, ItemEventPayloadBean.class);
State state = getState(bean.getType(), bean.getValue());
@@ -165,7 +167,7 @@ public class ItemEventFactory extends AbstractEventFactory {
return desiredClass.cast(parsedObject);
}
- private Object parseSimpleClassName(String simpleClassName, String valueToParse) {
+ private @Nullable Object parseSimpleClassName(String simpleClassName, String valueToParse) {
if (simpleClassName.equals(UnDefType.class.getSimpleName())) {
return UnDefType.valueOf(valueToParse);
}
@@ -176,7 +178,7 @@ public class ItemEventFactory extends AbstractEventFactory {
try {
Class> stateClass = Class.forName(CORE_LIBRARY_PACKAGE + simpleClassName);
Method valueOfMethod = stateClass.getMethod("valueOf", String.class);
- return valueOfMethod.invoke(null, valueToParse);
+ return valueOfMethod.invoke(stateClass, valueToParse);
} catch (ClassNotFoundException e) {
throw new IllegalArgumentException("Error getting class for simple name: '" + simpleClassName
+ "' using package name '" + CORE_LIBRARY_PACKAGE + "'.", e);
@@ -217,7 +219,7 @@ public class ItemEventFactory extends AbstractEventFactory {
* @return the created item command event
* @throws IllegalArgumentException if itemName or command is null
*/
- public static ItemCommandEvent createCommandEvent(String itemName, Command command, String source) {
+ public static ItemCommandEvent createCommandEvent(String itemName, Command command, @Nullable String source) {
assertValidArguments(itemName, command, "command");
String topic = buildTopic(ITEM_COMAND_EVENT_TOPIC, itemName);
ItemEventPayloadBean bean = new ItemEventPayloadBean(getCommandType(command), command.toString());
@@ -246,7 +248,7 @@ public class ItemEventFactory extends AbstractEventFactory {
* @return the created item state event
* @throws IllegalArgumentException if itemName or state is null
*/
- public static ItemStateEvent createStateEvent(String itemName, State state, String source) {
+ public static ItemStateEvent createStateEvent(String itemName, State state, @Nullable String source) {
assertValidArguments(itemName, state, "state");
String topic = buildTopic(ITEM_STATE_EVENT_TOPIC, itemName);
ItemEventPayloadBean bean = new ItemEventPayloadBean(getStateType(state), state.toFullString());
@@ -415,8 +417,8 @@ public class ItemEventFactory extends AbstractEventFactory {
* This is a java bean that is used to serialize/deserialize item event payload.
*/
private static class ItemEventPayloadBean {
- private String type;
- private String value;
+ private @NonNullByDefault({}) String type;
+ private @NonNullByDefault({}) String value;
/**
* Default constructor for deserialization e.g. by Gson.
@@ -443,8 +445,8 @@ public class ItemEventFactory extends AbstractEventFactory {
* This is a java bean that is used to serialize/deserialize item state changed event payload.
*/
private static class ItemStatePredictedEventPayloadBean {
- private String predictedType;
- private String predictedValue;
+ private @NonNullByDefault({}) String predictedType;
+ private @NonNullByDefault({}) String predictedValue;
private boolean isConfirmation;
/**
@@ -477,10 +479,10 @@ public class ItemEventFactory extends AbstractEventFactory {
* This is a java bean that is used to serialize/deserialize item state changed event payload.
*/
private static class ItemStateChangedEventPayloadBean {
- private String type;
- private String value;
- private String oldType;
- private String oldValue;
+ private @NonNullByDefault({}) String type;
+ private @NonNullByDefault({}) String value;
+ private @NonNullByDefault({}) String oldType;
+ private @NonNullByDefault({}) String oldValue;
/**
* Default constructor for deserialization e.g. by Gson.
diff --git a/bundles/org.openhab.core/src/main/java/org/openhab/core/items/events/ItemRemovedEvent.java b/bundles/org.openhab.core/src/main/java/org/openhab/core/items/events/ItemRemovedEvent.java
index 1c4007f378..ae9eba6204 100644
--- a/bundles/org.openhab.core/src/main/java/org/openhab/core/items/events/ItemRemovedEvent.java
+++ b/bundles/org.openhab.core/src/main/java/org/openhab/core/items/events/ItemRemovedEvent.java
@@ -12,6 +12,7 @@
*/
package org.openhab.core.items.events;
+import org.eclipse.jdt.annotation.NonNullByDefault;
import org.openhab.core.items.dto.ItemDTO;
/**
@@ -20,6 +21,7 @@ import org.openhab.core.items.dto.ItemDTO;
*
* @author Stefan Bußweiler - Initial contribution
*/
+@NonNullByDefault
public class ItemRemovedEvent extends AbstractItemRegistryEvent {
/**
diff --git a/bundles/org.openhab.core/src/main/java/org/openhab/core/items/events/ItemUpdatedEvent.java b/bundles/org.openhab.core/src/main/java/org/openhab/core/items/events/ItemUpdatedEvent.java
index ae733be41c..837e21ef29 100644
--- a/bundles/org.openhab.core/src/main/java/org/openhab/core/items/events/ItemUpdatedEvent.java
+++ b/bundles/org.openhab.core/src/main/java/org/openhab/core/items/events/ItemUpdatedEvent.java
@@ -12,6 +12,7 @@
*/
package org.openhab.core.items.events;
+import org.eclipse.jdt.annotation.NonNullByDefault;
import org.openhab.core.items.dto.ItemDTO;
/**
@@ -20,6 +21,7 @@ import org.openhab.core.items.dto.ItemDTO;
*
* @author Stefan Bußweiler - Initial contribution
*/
+@NonNullByDefault
public class ItemUpdatedEvent extends AbstractItemRegistryEvent {
private final ItemDTO oldItem;
@@ -49,7 +51,7 @@ public class ItemUpdatedEvent extends AbstractItemRegistryEvent {
/**
* Gets the old item.
- *
+ *
* @return the oldItem
*/
public ItemDTO getOldItem() {
diff --git a/bundles/org.openhab.core/src/test/java/org/openhab/core/items/events/AbstractEventFactoryTest.java b/bundles/org.openhab.core/src/test/java/org/openhab/core/events/AbstractEventFactoryTest.java
similarity index 89%
rename from bundles/org.openhab.core/src/test/java/org/openhab/core/items/events/AbstractEventFactoryTest.java
rename to bundles/org.openhab.core/src/test/java/org/openhab/core/events/AbstractEventFactoryTest.java
index bfdb4d4487..0856694357 100644
--- a/bundles/org.openhab.core/src/test/java/org/openhab/core/items/events/AbstractEventFactoryTest.java
+++ b/bundles/org.openhab.core/src/test/java/org/openhab/core/events/AbstractEventFactoryTest.java
@@ -10,18 +10,20 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
-package org.openhab.core.items.events;
+package org.openhab.core.events;
import static org.junit.jupiter.api.Assertions.*;
+import org.eclipse.jdt.annotation.NonNullByDefault;
import org.junit.jupiter.api.Test;
-import org.openhab.core.events.AbstractEventFactory;
+import org.openhab.core.items.events.ItemEventFactory;
/**
- * {@link AbstractEventFactoryTests} tests the {@link AbstractEventFactory}.
+ * {@link AbstractEventFactoryTests} tests the {@link org.openhab.core.events.AbstractEventFactory}.
*
* @author Stefan Bußweiler - Initial contribution
*/
+@NonNullByDefault
public class AbstractEventFactoryTest {
private final ItemEventFactory factory = new ItemEventFactory();
diff --git a/bundles/org.openhab.core/src/test/java/org/openhab/core/items/events/ItemEventFactoryTest.java b/bundles/org.openhab.core/src/test/java/org/openhab/core/items/events/ItemEventFactoryTest.java
index 0336f2e8c3..f212a3d036 100644
--- a/bundles/org.openhab.core/src/test/java/org/openhab/core/items/events/ItemEventFactoryTest.java
+++ b/bundles/org.openhab.core/src/test/java/org/openhab/core/items/events/ItemEventFactoryTest.java
@@ -16,6 +16,7 @@ import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import static org.junit.jupiter.api.Assertions.*;
+import org.eclipse.jdt.annotation.NonNullByDefault;
import org.junit.jupiter.api.Test;
import org.openhab.core.events.Event;
import org.openhab.core.items.Item;
@@ -36,6 +37,7 @@ import com.google.gson.Gson;
*
* @author Stefan Bußweiler - Initial contribution
*/
+@NonNullByDefault
public class ItemEventFactoryTest {
private final ItemEventFactory factory = new ItemEventFactory();
diff --git a/itests/org.openhab.core.automation.module.core.tests/src/main/java/org/openhab/core/automation/internal/module/RuntimeRuleTest.java b/itests/org.openhab.core.automation.module.core.tests/src/main/java/org/openhab/core/automation/internal/module/RuntimeRuleTest.java
index 3222288553..bf2fb9c564 100644
--- a/itests/org.openhab.core.automation.module.core.tests/src/main/java/org/openhab/core/automation/internal/module/RuntimeRuleTest.java
+++ b/itests/org.openhab.core.automation.module.core.tests/src/main/java/org/openhab/core/automation/internal/module/RuntimeRuleTest.java
@@ -59,6 +59,7 @@ import org.openhab.core.library.types.OnOffType;
import org.openhab.core.service.ReadyMarker;
import org.openhab.core.test.java.JavaOSGiTest;
import org.openhab.core.test.storage.VolatileStorageService;
+import org.openhab.core.types.Command;
import org.openhab.core.types.TypeParser;
import org.osgi.framework.ServiceReference;
import org.slf4j.Logger;
@@ -417,8 +418,11 @@ public class RuntimeRuleTest extends JavaOSGiTest {
final ItemRegistry itemRegistry = getService(ItemRegistry.class);
final EventPublisher eventPublisher = getService(EventPublisher.class);
final Item myMotionItem = itemRegistry.getItem("myMotionItem3");
- eventPublisher.post(ItemEventFactory.createCommandEvent("myMotionItem3",
- TypeParser.parseCommand(myMotionItem.getAcceptedCommandTypes(), "ON")));
+ Command command = TypeParser.parseCommand(myMotionItem.getAcceptedCommandTypes(), "ON");
+ assertNotNull(command);
+ if (command != null) {
+ eventPublisher.post(ItemEventFactory.createCommandEvent("myMotionItem3", command));
+ }
waitForAssert(() -> {
assertEquals(RuleStatusDetail.DISABLED, ruleEngine.getStatusInfo(firstRuleUID).getStatusDetail());
@@ -438,8 +442,11 @@ public class RuntimeRuleTest extends JavaOSGiTest {
.build();
ruleRegistry.add(rule2);
- eventPublisher.post(ItemEventFactory.createCommandEvent("myMotionItem3",
- TypeParser.parseCommand(myMotionItem.getAcceptedCommandTypes(), "OFF")));
+ command = TypeParser.parseCommand(myMotionItem.getAcceptedCommandTypes(), "OFF");
+ assertNotNull(command);
+ if (command != null) {
+ eventPublisher.post(ItemEventFactory.createCommandEvent("myMotionItem3", command));
+ }
waitForAssert(() -> {
assertEquals(RuleStatus.IDLE, ruleEngine.getStatus(firstRuleUID));
diff --git a/itests/org.openhab.core.tests/src/main/java/org/openhab/core/internal/events/OSGiEventManagerOSGiTest.java b/itests/org.openhab.core.tests/src/main/java/org/openhab/core/internal/events/OSGiEventManagerOSGiTest.java
index 6a4d61532f..cb43fe3e9f 100644
--- a/itests/org.openhab.core.tests/src/main/java/org/openhab/core/internal/events/OSGiEventManagerOSGiTest.java
+++ b/itests/org.openhab.core.tests/src/main/java/org/openhab/core/internal/events/OSGiEventManagerOSGiTest.java
@@ -180,16 +180,6 @@ public class OSGiEventManagerOSGiTest extends JavaOSGiTest {
assertEventCount(subscriber4, 0);
}
- @Test
- public void testValidationEvent() {
- try {
- eventPublisher.post(null);
- fail("IllegalArgumentException expected!");
- } catch (IllegalArgumentException e) {
- assertEquals("Argument 'event' must not be null.", e.getMessage());
- }
- }
-
@Test
public void testValidationType() {
Event event = createEvent(null, "{a: 'A', b: 'B'}", TOPIC);