From abab07dfb97d9656668961b7baa92ffda40a80a8 Mon Sep 17 00:00:00 2001 From: Christoph Weitkamp Date: Mon, 8 Jul 2019 10:53:25 +0200 Subject: [PATCH] [automation] Added nullness annotations (#910) * Added nullness annotations Signed-off-by: Christoph Weitkamp --- .../media/internal/PlayActionHandler.java | 8 ++-- .../media/internal/SayActionHandler.java | 8 ++-- .../SimpleActionHandlerDelegate.java | 7 ++- .../SimpleConditionHandlerDelegate.java | 8 ++-- .../SimpleTriggerHandlerDelegate.java | 8 ++-- .../handler/AbstractScriptModuleHandler.java | 46 +++++++++---------- .../internal/handler/ScriptActionHandler.java | 8 ++-- .../handler/ScriptConditionHandler.java | 4 +- .../org/openhab/core/automation/Trigger.java | 4 +- .../automation/handler/ActionHandler.java | 9 ++-- .../handler/BaseActionModuleHandler.java | 30 ++++++++++++ .../handler/BaseConditionModuleHandler.java | 30 ++++++++++++ .../automation/handler/BaseModuleHandler.java | 5 +- .../handler/BaseTriggerModuleHandler.java | 2 + .../automation/handler/ConditionHandler.java | 10 ++-- .../automation/handler/ModuleHandler.java | 2 +- .../automation/handler/TriggerHandler.java | 11 +++-- .../handler/AnnotationActionHandler.java | 8 ++-- .../handler/CompareConditionHandler.java | 8 ++-- .../handler/DayOfWeekConditionHandler.java | 8 ++-- .../handler/GenericEventConditionHandler.java | 9 ++-- .../handler/ItemCommandActionHandler.java | 8 ++-- .../handler/ItemStateConditionHandler.java | 8 ++-- .../handler/RuleEnablementActionHandler.java | 8 ++-- .../module/handler/RunRuleActionHandler.java | 6 +-- .../handler/TimeOfDayConditionHandler.java | 8 ++-- .../smarthome/core/events/EventFilter.java | 11 +++-- 27 files changed, 169 insertions(+), 113 deletions(-) create mode 100644 bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/handler/BaseActionModuleHandler.java create mode 100644 bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/handler/BaseConditionModuleHandler.java diff --git a/bundles/org.openhab.core.automation.module.media/src/main/java/org/openhab/core/automation/module/media/internal/PlayActionHandler.java b/bundles/org.openhab.core.automation.module.media/src/main/java/org/openhab/core/automation/module/media/internal/PlayActionHandler.java index b3c89a2c8d..09fd906a8a 100644 --- a/bundles/org.openhab.core.automation.module.media/src/main/java/org/openhab/core/automation/module/media/internal/PlayActionHandler.java +++ b/bundles/org.openhab.core.automation.module.media/src/main/java/org/openhab/core/automation/module/media/internal/PlayActionHandler.java @@ -17,18 +17,16 @@ import java.util.Map; import org.eclipse.smarthome.core.audio.AudioException; import org.eclipse.smarthome.core.audio.AudioManager; import org.openhab.core.automation.Action; -import org.openhab.core.automation.handler.ActionHandler; -import org.openhab.core.automation.handler.BaseModuleHandler; +import org.openhab.core.automation.handler.BaseActionModuleHandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * This is an ModuleHandler implementation for Actions that play a sound file from the file system. * - * @author Kai Kreuzer - Initial contribution and API - * + * @author Kai Kreuzer - Initial contribution */ -public class PlayActionHandler extends BaseModuleHandler implements ActionHandler { +public class PlayActionHandler extends BaseActionModuleHandler { public static final String TYPE_ID = "media.PlayAction"; public static final String PARAM_SOUND = "sound"; diff --git a/bundles/org.openhab.core.automation.module.media/src/main/java/org/openhab/core/automation/module/media/internal/SayActionHandler.java b/bundles/org.openhab.core.automation.module.media/src/main/java/org/openhab/core/automation/module/media/internal/SayActionHandler.java index 4d7d8fbe5a..de92b74c9b 100644 --- a/bundles/org.openhab.core.automation.module.media/src/main/java/org/openhab/core/automation/module/media/internal/SayActionHandler.java +++ b/bundles/org.openhab.core.automation.module.media/src/main/java/org/openhab/core/automation/module/media/internal/SayActionHandler.java @@ -16,16 +16,14 @@ import java.util.Map; import org.eclipse.smarthome.core.voice.VoiceManager; import org.openhab.core.automation.Action; -import org.openhab.core.automation.handler.ActionHandler; -import org.openhab.core.automation.handler.BaseModuleHandler; +import org.openhab.core.automation.handler.BaseActionModuleHandler; /** * This is an ModuleHandler implementation for Actions that trigger a TTS output through "say". * - * @author Kai Kreuzer - Initial contribution and API - * + * @author Kai Kreuzer - Initial contribution */ -public class SayActionHandler extends BaseModuleHandler implements ActionHandler { +public class SayActionHandler extends BaseActionModuleHandler { public static final String TYPE_ID = "media.SayAction"; public static final String PARAM_TEXT = "text"; diff --git a/bundles/org.openhab.core.automation.module.script.rulesupport/src/main/java/org/openhab/core/automation/module/script/rulesupport/internal/delegates/SimpleActionHandlerDelegate.java b/bundles/org.openhab.core.automation.module.script.rulesupport/src/main/java/org/openhab/core/automation/module/script/rulesupport/internal/delegates/SimpleActionHandlerDelegate.java index fd0325aa86..015c017300 100644 --- a/bundles/org.openhab.core.automation.module.script.rulesupport/src/main/java/org/openhab/core/automation/module/script/rulesupport/internal/delegates/SimpleActionHandlerDelegate.java +++ b/bundles/org.openhab.core.automation.module.script.rulesupport/src/main/java/org/openhab/core/automation/module/script/rulesupport/internal/delegates/SimpleActionHandlerDelegate.java @@ -18,16 +18,15 @@ import java.util.Map; import java.util.Set; import org.openhab.core.automation.Action; -import org.openhab.core.automation.handler.ActionHandler; -import org.openhab.core.automation.handler.BaseModuleHandler; +import org.openhab.core.automation.handler.BaseActionModuleHandler; import org.openhab.core.automation.module.script.rulesupport.shared.simple.SimpleActionHandler; /** * The SimpleActionHandlerDelegate allows the registration of {@link SimpleActionHandler}s to the RuleManager. * - * @author Simon Merschjohann + * @author Simon Merschjohann - Initial contribution */ -public class SimpleActionHandlerDelegate extends BaseModuleHandler implements ActionHandler { +public class SimpleActionHandlerDelegate extends BaseActionModuleHandler { private org.openhab.core.automation.module.script.rulesupport.shared.simple.SimpleActionHandler actionHandler; diff --git a/bundles/org.openhab.core.automation.module.script.rulesupport/src/main/java/org/openhab/core/automation/module/script/rulesupport/internal/delegates/SimpleConditionHandlerDelegate.java b/bundles/org.openhab.core.automation.module.script.rulesupport/src/main/java/org/openhab/core/automation/module/script/rulesupport/internal/delegates/SimpleConditionHandlerDelegate.java index 4e000c2a7f..91418b935c 100644 --- a/bundles/org.openhab.core.automation.module.script.rulesupport/src/main/java/org/openhab/core/automation/module/script/rulesupport/internal/delegates/SimpleConditionHandlerDelegate.java +++ b/bundles/org.openhab.core.automation.module.script.rulesupport/src/main/java/org/openhab/core/automation/module/script/rulesupport/internal/delegates/SimpleConditionHandlerDelegate.java @@ -15,17 +15,15 @@ package org.openhab.core.automation.module.script.rulesupport.internal.delegates import java.util.Map; import org.openhab.core.automation.Condition; -import org.openhab.core.automation.handler.BaseModuleHandler; -import org.openhab.core.automation.handler.ConditionHandler; +import org.openhab.core.automation.handler.BaseConditionModuleHandler; import org.openhab.core.automation.module.script.rulesupport.shared.simple.SimpleConditionHandler; /** * The SimpleConditionHandlerDelegate allows the registration of {@link SimpleConditionHandler}s to the RuleManager. * - * @author Simon Merschjohann - * + * @author Simon Merschjohann - Initial contribution */ -public class SimpleConditionHandlerDelegate extends BaseModuleHandler implements ConditionHandler { +public class SimpleConditionHandlerDelegate extends BaseConditionModuleHandler { private SimpleConditionHandler conditionHandler; diff --git a/bundles/org.openhab.core.automation.module.script.rulesupport/src/main/java/org/openhab/core/automation/module/script/rulesupport/internal/delegates/SimpleTriggerHandlerDelegate.java b/bundles/org.openhab.core.automation.module.script.rulesupport/src/main/java/org/openhab/core/automation/module/script/rulesupport/internal/delegates/SimpleTriggerHandlerDelegate.java index d83d584060..fa0d16723a 100644 --- a/bundles/org.openhab.core.automation.module.script.rulesupport/src/main/java/org/openhab/core/automation/module/script/rulesupport/internal/delegates/SimpleTriggerHandlerDelegate.java +++ b/bundles/org.openhab.core.automation.module.script.rulesupport/src/main/java/org/openhab/core/automation/module/script/rulesupport/internal/delegates/SimpleTriggerHandlerDelegate.java @@ -14,16 +14,16 @@ package org.openhab.core.automation.module.script.rulesupport.internal.delegates import org.openhab.core.automation.ModuleHandlerCallback; import org.openhab.core.automation.Trigger; -import org.openhab.core.automation.handler.BaseModuleHandler; -import org.openhab.core.automation.handler.TriggerHandler; +import org.openhab.core.automation.handler.BaseTriggerModuleHandler; import org.openhab.core.automation.handler.TriggerHandlerCallback; /** * The {@link SimpleTriggerHandlerDelegate} allows to define triggers in a script language in different ways. * - * @author Simon Merschjohann + * @author Simon Merschjohann - Initial contribution */ -public class SimpleTriggerHandlerDelegate extends BaseModuleHandler implements TriggerHandler { +public class SimpleTriggerHandlerDelegate extends BaseTriggerModuleHandler { + private final org.openhab.core.automation.module.script.rulesupport.shared.simple.SimpleTriggerHandler triggerHandler; public SimpleTriggerHandlerDelegate(Trigger module, diff --git a/bundles/org.openhab.core.automation.module.script/src/main/java/org/openhab/core/automation/module/script/internal/handler/AbstractScriptModuleHandler.java b/bundles/org.openhab.core.automation.module.script/src/main/java/org/openhab/core/automation/module/script/internal/handler/AbstractScriptModuleHandler.java index fbc9441d0c..e5e1c0d872 100644 --- a/bundles/org.openhab.core.automation.module.script/src/main/java/org/openhab/core/automation/module/script/internal/handler/AbstractScriptModuleHandler.java +++ b/bundles/org.openhab.core.automation.module.script/src/main/java/org/openhab/core/automation/module/script/internal/handler/AbstractScriptModuleHandler.java @@ -21,6 +21,8 @@ import java.util.UUID; import javax.script.ScriptContext; import javax.script.ScriptEngine; +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.smarthome.config.core.Configuration; import org.openhab.core.automation.Module; import org.openhab.core.automation.handler.BaseModuleHandler; import org.openhab.core.automation.module.script.ScriptEngineContainer; @@ -36,7 +38,9 @@ import org.slf4j.LoggerFactory; * * @param the type of module the concrete handler can handle */ +@NonNullByDefault public abstract class AbstractScriptModuleHandler extends BaseModuleHandler { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); /** Constant defining the configuration parameter of modules that specifies the mime type of a script */ @@ -45,13 +49,13 @@ public abstract class AbstractScriptModuleHandler extends Base /** Constant defining the configuration parameter of modules that specifies the script itself */ protected static final String SCRIPT = "script"; - protected ScriptEngineManager scriptEngineManager; + protected final ScriptEngineManager scriptEngineManager; private final String engineIdentifier; private Optional scriptEngine = Optional.empty(); - private String type; - protected String script; + private final String type; + protected final String script; private final String ruleUID; @@ -59,16 +63,25 @@ public abstract class AbstractScriptModuleHandler extends Base super(module); this.scriptEngineManager = scriptEngineManager; this.ruleUID = ruleUID; - engineIdentifier = UUID.randomUUID().toString(); + this.engineIdentifier = UUID.randomUUID().toString(); - loadConfig(); + this.type = getValidConfigParameter(SCRIPT_TYPE, module.getConfiguration(), module.getId()); + this.script = getValidConfigParameter(SCRIPT, module.getConfiguration(), module.getId()); + } + + private static String getValidConfigParameter(String parameter, Configuration config, String moduleId) { + Object value = config.get(parameter); + if (value != null && value instanceof String && !((String) value).trim().isEmpty()) { + return (String) value; + } else { + throw new IllegalStateException(String.format( + "Config parameter '%s' is missing in the configuration of module '%s'.", parameter, moduleId)); + } } @Override public void dispose() { - if (scriptEngine != null) { - scriptEngineManager.removeEngine(engineIdentifier); - } + scriptEngineManager.removeEngine(engineIdentifier); } protected Optional getScriptEngine() { @@ -87,23 +100,6 @@ public abstract class AbstractScriptModuleHandler extends Base } } - private void loadConfig() { - Object type = module.getConfiguration().get(SCRIPT_TYPE); - Object script = module.getConfiguration().get(SCRIPT); - if (!isValid(type)) { - throw new IllegalStateException(String.format("Type is missing in the configuration of module '%s'.", module.getId())); - } else if (!isValid(script)) { - throw new IllegalStateException(String.format("Script is missing in the configuration of module '%s'.", module.getId())); - } else { - this.type = (String) type; - this.script = (String) script; - } - } - - private boolean isValid(Object parameter) { - return parameter != null && parameter instanceof String && !((String) parameter).trim().isEmpty(); - } - /** * Adds the passed context variables of the rule engine to the context scope of the ScriptEngine, this should be * updated each time the module is executed diff --git a/bundles/org.openhab.core.automation.module.script/src/main/java/org/openhab/core/automation/module/script/internal/handler/ScriptActionHandler.java b/bundles/org.openhab.core.automation.module.script/src/main/java/org/openhab/core/automation/module/script/internal/handler/ScriptActionHandler.java index f189437037..40360ef242 100644 --- a/bundles/org.openhab.core.automation.module.script/src/main/java/org/openhab/core/automation/module/script/internal/handler/ScriptActionHandler.java +++ b/bundles/org.openhab.core.automation.module.script/src/main/java/org/openhab/core/automation/module/script/internal/handler/ScriptActionHandler.java @@ -17,6 +17,8 @@ import java.util.Map; import javax.script.ScriptException; +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; import org.openhab.core.automation.Action; import org.openhab.core.automation.handler.ActionHandler; import org.openhab.core.automation.module.script.ScriptEngineManager; @@ -28,8 +30,8 @@ import org.slf4j.LoggerFactory; * * @author Kai Kreuzer - Initial contribution * @author Simon Merschjohann - * */ +@NonNullByDefault public class ScriptActionHandler extends AbstractScriptModuleHandler implements ActionHandler { public static final String TYPE_ID = "script.ScriptAction"; @@ -51,8 +53,8 @@ public class ScriptActionHandler extends AbstractScriptModuleHandler imp } @Override - public Map execute(final Map context) { - HashMap resultMap = new HashMap(); + public @Nullable Map execute(final Map context) { + HashMap resultMap = new HashMap<>(); getScriptEngine().ifPresent(scriptEngine -> { setExecutionContext(scriptEngine, context); diff --git a/bundles/org.openhab.core.automation.module.script/src/main/java/org/openhab/core/automation/module/script/internal/handler/ScriptConditionHandler.java b/bundles/org.openhab.core.automation.module.script/src/main/java/org/openhab/core/automation/module/script/internal/handler/ScriptConditionHandler.java index 46d4380c5b..540a348524 100644 --- a/bundles/org.openhab.core.automation.module.script/src/main/java/org/openhab/core/automation/module/script/internal/handler/ScriptConditionHandler.java +++ b/bundles/org.openhab.core.automation.module.script/src/main/java/org/openhab/core/automation/module/script/internal/handler/ScriptConditionHandler.java @@ -18,6 +18,7 @@ import java.util.Optional; import javax.script.ScriptEngine; import javax.script.ScriptException; +import org.eclipse.jdt.annotation.NonNullByDefault; import org.openhab.core.automation.Condition; import org.openhab.core.automation.handler.ConditionHandler; import org.openhab.core.automation.module.script.ScriptEngineManager; @@ -29,8 +30,8 @@ import org.slf4j.LoggerFactory; * * @author Kai Kreuzer - Initial contribution * @author Simon Merschjohann - * */ +@NonNullByDefault public class ScriptConditionHandler extends AbstractScriptModuleHandler implements ConditionHandler { public static final String TYPE_ID = "script.ScriptCondition"; @@ -63,5 +64,4 @@ public class ScriptConditionHandler extends AbstractScriptModuleHandlertriggers section of the {@link Rule} definition. * * @see Module - * @author Yordan Mihaylov - Initial Contribution + * @author Yordan Mihaylov - Initial contribution */ +@NonNullByDefault public interface Trigger extends Module { } diff --git a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/handler/ActionHandler.java b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/handler/ActionHandler.java index 39cd24d6e0..628f5ca728 100644 --- a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/handler/ActionHandler.java +++ b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/handler/ActionHandler.java @@ -24,9 +24,10 @@ import org.openhab.core.automation.Trigger; * This interface should be implemented by external modules which provide functionality for processing {@link Action} * modules. This functionality is called to execute the {@link Action}s of the {@link Rule} when it is needed. * - * @author Yordan Mihaylov - Initial Contribution - * @author Ana Dimova - Initial Contribution - * @author Vasil Ilchev - Initial Contribution + * @author Yordan Mihaylov - Initial contribution + * @author Ana Dimova - Initial contribution + * @author Vasil Ilchev - Initial ontribution + * @see ModuleHandler */ @NonNullByDefault public interface ActionHandler extends ModuleHandler { @@ -35,7 +36,7 @@ public interface ActionHandler extends ModuleHandler { * Called to execute an {@link Action} of the {@link Rule} when it is needed. * * @param context an unmodifiable map containing the outputs of the {@link Trigger} that triggered the {@link Rule}, - * the outputs of all preceding {@link Action}s, and the inputs for this {@link Action}. + * the outputs of all preceding {@link Action}s, and the inputs for this {@link Action}. * * @return a map with the {@code outputs} which are the result of the {@link Action}'s execution (may be null). */ diff --git a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/handler/BaseActionModuleHandler.java b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/handler/BaseActionModuleHandler.java new file mode 100644 index 0000000000..2ef9ff79c9 --- /dev/null +++ b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/handler/BaseActionModuleHandler.java @@ -0,0 +1,30 @@ +/** + * Copyright (c) 2010-2019 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.core.automation.handler; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.openhab.core.automation.Action; + +/** + * This is a base class that can be used by ActionModuleHandler implementations + * + * @author Christoph Weitkamp - Initial contribution + */ +@NonNullByDefault +public abstract class BaseActionModuleHandler extends BaseModuleHandler implements ActionHandler { + + public BaseActionModuleHandler(Action module) { + super(module); + } + +} diff --git a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/handler/BaseConditionModuleHandler.java b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/handler/BaseConditionModuleHandler.java new file mode 100644 index 0000000000..5b41202fc1 --- /dev/null +++ b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/handler/BaseConditionModuleHandler.java @@ -0,0 +1,30 @@ +/** + * Copyright (c) 2010-2019 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.core.automation.handler; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.openhab.core.automation.Condition; + +/** + * This is a base class that can be used by ConditionModuleHandler implementations + * + * @author Christoph Weitkamp - Initial contribution + */ +@NonNullByDefault +public abstract class BaseConditionModuleHandler extends BaseModuleHandler implements ConditionHandler { + + public BaseConditionModuleHandler(Condition module) { + super(module); + } + +} diff --git a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/handler/BaseModuleHandler.java b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/handler/BaseModuleHandler.java index 6b15883102..f27887869a 100644 --- a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/handler/BaseModuleHandler.java +++ b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/handler/BaseModuleHandler.java @@ -12,6 +12,8 @@ */ package org.openhab.core.automation.handler; +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; import org.openhab.core.automation.Module; import org.openhab.core.automation.ModuleHandlerCallback; @@ -20,10 +22,11 @@ import org.openhab.core.automation.ModuleHandlerCallback; * * @author Kai Kreuzer - Initial Contribution */ +@NonNullByDefault public class BaseModuleHandler implements ModuleHandler { protected T module; - protected ModuleHandlerCallback callback; + protected @Nullable ModuleHandlerCallback callback; public BaseModuleHandler(T module) { this.module = module; diff --git a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/handler/BaseTriggerModuleHandler.java b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/handler/BaseTriggerModuleHandler.java index a82c2729ab..62f29a425e 100644 --- a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/handler/BaseTriggerModuleHandler.java +++ b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/handler/BaseTriggerModuleHandler.java @@ -12,6 +12,7 @@ */ package org.openhab.core.automation.handler; +import org.eclipse.jdt.annotation.NonNullByDefault; import org.openhab.core.automation.Trigger; /** @@ -19,6 +20,7 @@ import org.openhab.core.automation.Trigger; * * @author Vasil Ilchev - Initial contribution */ +@NonNullByDefault public class BaseTriggerModuleHandler extends BaseModuleHandler implements TriggerHandler { public BaseTriggerModuleHandler(Trigger module) { diff --git a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/handler/ConditionHandler.java b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/handler/ConditionHandler.java index c800952f82..d2fd496d55 100644 --- a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/handler/ConditionHandler.java +++ b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/handler/ConditionHandler.java @@ -14,6 +14,7 @@ package org.openhab.core.automation.handler; import java.util.Map; +import org.eclipse.jdt.annotation.NonNullByDefault; import org.openhab.core.automation.Condition; import org.openhab.core.automation.Rule; import org.openhab.core.automation.Trigger; @@ -21,18 +22,19 @@ import org.openhab.core.automation.Trigger; /** * This interface provides common functionality for processing {@link Condition} modules. * + * @author Yordan Mihaylov - Initial contribution + * @author Ana Dimova - Initial contribution + * @author Vasil Ilchev - Initial contribution * @see ModuleHandler - * @author Yordan Mihaylov - Initial Contribution - * @author Ana Dimova - Initial Contribution - * @author Vasil Ilchev - Initial Contribution */ +@NonNullByDefault public interface ConditionHandler extends ModuleHandler { /** * Checks if the Condition is satisfied in the given {@code context}. * * @param context an unmodifiable map containing the outputs of the {@link Trigger} that triggered the {@link Rule} - * and the inputs of the {@link Condition}. + * and the inputs of the {@link Condition}. * @return {@code true} if {@link Condition} is satisfied, {@code false} otherwise. */ public boolean isSatisfied(Map context); diff --git a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/handler/ModuleHandler.java b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/handler/ModuleHandler.java index 27d04ea8a6..4f76ab3a0f 100644 --- a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/handler/ModuleHandler.java +++ b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/handler/ModuleHandler.java @@ -19,7 +19,7 @@ import org.openhab.core.automation.ModuleHandlerCallback; * A common interface for all module Handler interfaces. The Handler interfaces are * bridge between RuleManager and external modules used by the RuleManager. * - * @author Yordan Mihaylov - Initial Contribution + * @author Yordan Mihaylov - Initial contribution * @see ModuleHandlerFactory */ @NonNullByDefault diff --git a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/handler/TriggerHandler.java b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/handler/TriggerHandler.java index 4008c8df90..06c8363253 100644 --- a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/handler/TriggerHandler.java +++ b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/handler/TriggerHandler.java @@ -12,14 +12,19 @@ */ package org.openhab.core.automation.handler; +import org.eclipse.jdt.annotation.NonNullByDefault; + /** * This Handler interface is used by the RuleManager to set a callback interface to * itself. The callback has to implemented {@link TriggerHandlerCallback} interface * and it is used to notify the RuleManager when {@link TriggerHandler} was triggered * - * @author Yordan Mihaylov - Initial Contribution - * @author Ana Dimova - Initial Contribution - * @author Vasil Ilchev - Initial Contribution + * @author Yordan Mihaylov - Initial contribution + * @author Ana Dimova - Initial contribution + * @author Vasil Ilchev - Initial contribution + * @see ModuleHandler */ +@NonNullByDefault public interface TriggerHandler extends ModuleHandler { + } diff --git a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/module/handler/AnnotationActionHandler.java b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/module/handler/AnnotationActionHandler.java index 44704dd54b..10b34a7556 100644 --- a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/module/handler/AnnotationActionHandler.java +++ b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/module/handler/AnnotationActionHandler.java @@ -23,8 +23,7 @@ import java.util.Map.Entry; import org.openhab.core.automation.Action; import org.openhab.core.automation.annotation.ActionInput; -import org.openhab.core.automation.handler.ActionHandler; -import org.openhab.core.automation.handler.BaseModuleHandler; +import org.openhab.core.automation.handler.BaseActionModuleHandler; import org.openhab.core.automation.type.ActionType; import org.openhab.core.automation.type.Input; import org.openhab.core.automation.type.Output; @@ -34,10 +33,9 @@ import org.slf4j.LoggerFactory; /** * ActionHandler which is dynamically created upon annotation on services * - * @author Stefan Triller - initial contribution - * + * @author Stefan Triller - Initial contribution */ -public class AnnotationActionHandler extends BaseModuleHandler implements ActionHandler { +public class AnnotationActionHandler extends BaseActionModuleHandler { private static final String MODULE_RESULT = "result"; diff --git a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/module/handler/CompareConditionHandler.java b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/module/handler/CompareConditionHandler.java index c8d76811ec..3a8436bf90 100644 --- a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/module/handler/CompareConditionHandler.java +++ b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/module/handler/CompareConditionHandler.java @@ -21,8 +21,7 @@ import java.util.Map; import org.eclipse.smarthome.core.types.State; import org.eclipse.smarthome.core.types.TypeParser; import org.openhab.core.automation.Condition; -import org.openhab.core.automation.handler.BaseModuleHandler; -import org.openhab.core.automation.handler.ConditionHandler; +import org.openhab.core.automation.handler.BaseConditionModuleHandler; import org.openhab.core.automation.internal.module.exception.UncomparableException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -33,7 +32,7 @@ import org.slf4j.LoggerFactory; * @author Benedikt Niehues - Initial contribution and API * */ -public class CompareConditionHandler extends BaseModuleHandler implements ConditionHandler { +public class CompareConditionHandler extends BaseConditionModuleHandler { public final Logger logger = LoggerFactory.getLogger(CompareConditionHandler.class); @@ -56,7 +55,8 @@ public class CompareConditionHandler extends BaseModuleHandler implem String rightOperandString = (rightObj != null && rightObj instanceof String) ? (String) rightObj : null; Object leftObjFieldNameObj = this.module.getConfiguration().get(INPUT_LEFT_FIELD); String leftObjectFieldName = (leftObjFieldNameObj != null && leftObjFieldNameObj instanceof String) - ? (String) leftObjFieldNameObj : null; + ? (String) leftObjFieldNameObj + : null; if (rightOperandString == null || operator == null) { return false; } else { diff --git a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/module/handler/DayOfWeekConditionHandler.java b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/module/handler/DayOfWeekConditionHandler.java index f7b45f89f8..6a104f753a 100644 --- a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/module/handler/DayOfWeekConditionHandler.java +++ b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/module/handler/DayOfWeekConditionHandler.java @@ -18,18 +18,16 @@ import java.util.Map; import java.util.Set; import org.openhab.core.automation.Condition; -import org.openhab.core.automation.handler.BaseModuleHandler; -import org.openhab.core.automation.handler.ConditionHandler; +import org.openhab.core.automation.handler.BaseConditionModuleHandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * This is a ConditionHandler implementation, which checks the current day of the week against a specified list. * - * @author Kai Kreuzer - Initial Contribution - * + * @author Kai Kreuzer - Initial contribution */ -public class DayOfWeekConditionHandler extends BaseModuleHandler implements ConditionHandler { +public class DayOfWeekConditionHandler extends BaseConditionModuleHandler { private final Logger logger = LoggerFactory.getLogger(DayOfWeekConditionHandler.class); diff --git a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/module/handler/GenericEventConditionHandler.java b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/module/handler/GenericEventConditionHandler.java index 78e54731ee..011b57c056 100644 --- a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/module/handler/GenericEventConditionHandler.java +++ b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/module/handler/GenericEventConditionHandler.java @@ -16,19 +16,18 @@ import java.util.Map; import org.eclipse.smarthome.core.events.Event; import org.openhab.core.automation.Condition; -import org.openhab.core.automation.handler.BaseModuleHandler; -import org.openhab.core.automation.handler.ConditionHandler; +import org.openhab.core.automation.handler.BaseConditionModuleHandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * This is the implementation of a event condition which checks if inputs matches configured values. * - * @author Benedikt Niehues - Initial contribution and API + * @author Benedikt Niehues - Initial contribution * @author Kai Kreuzer - refactored and simplified customized module handling - * */ -public class GenericEventConditionHandler extends BaseModuleHandler implements ConditionHandler { +public class GenericEventConditionHandler extends BaseConditionModuleHandler { + public final Logger logger = LoggerFactory.getLogger(GenericEventConditionHandler.class); public static final String MODULETYPE_ID = "core.GenericEventCondition"; diff --git a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/module/handler/ItemCommandActionHandler.java b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/module/handler/ItemCommandActionHandler.java index 63c1776fe3..2573bad119 100644 --- a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/module/handler/ItemCommandActionHandler.java +++ b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/module/handler/ItemCommandActionHandler.java @@ -23,20 +23,18 @@ import org.eclipse.smarthome.core.items.events.ItemEventFactory; import org.eclipse.smarthome.core.types.Command; import org.eclipse.smarthome.core.types.TypeParser; import org.openhab.core.automation.Action; -import org.openhab.core.automation.handler.ActionHandler; -import org.openhab.core.automation.handler.BaseModuleHandler; +import org.openhab.core.automation.handler.BaseActionModuleHandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * This is an implementation of an ActionHandler. It sends commands for items. * - * @author Benedikt Niehues - Initial contribution and API + * @author Benedikt Niehues - Initial contribution * @author Kai Kreuzer - refactored and simplified customized module handling * @author Stefan Triller - use command from input first and if not set, use command from configuration - * */ -public class ItemCommandActionHandler extends BaseModuleHandler implements ActionHandler { +public class ItemCommandActionHandler extends BaseActionModuleHandler { private final Logger logger = LoggerFactory.getLogger(ItemCommandActionHandler.class); diff --git a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/module/handler/ItemStateConditionHandler.java b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/module/handler/ItemStateConditionHandler.java index 0711f9e56e..fc85212fbf 100644 --- a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/module/handler/ItemStateConditionHandler.java +++ b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/module/handler/ItemStateConditionHandler.java @@ -21,19 +21,17 @@ import org.eclipse.smarthome.core.library.types.DecimalType; import org.eclipse.smarthome.core.types.State; import org.eclipse.smarthome.core.types.TypeParser; import org.openhab.core.automation.Condition; -import org.openhab.core.automation.handler.BaseModuleHandler; -import org.openhab.core.automation.handler.ConditionHandler; +import org.openhab.core.automation.handler.BaseConditionModuleHandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * ConditionHandler implementation to check item state * - * @author Benedikt Niehues - Initial contribution and API + * @author Benedikt Niehues - Initial contribution * @author Kai Kreuzer - refactored and simplified customized module handling - * */ -public class ItemStateConditionHandler extends BaseModuleHandler implements ConditionHandler { +public class ItemStateConditionHandler extends BaseConditionModuleHandler { private final Logger logger = LoggerFactory.getLogger(ItemStateConditionHandler.class); diff --git a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/module/handler/RuleEnablementActionHandler.java b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/module/handler/RuleEnablementActionHandler.java index 4df0c22730..08e80583f7 100644 --- a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/module/handler/RuleEnablementActionHandler.java +++ b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/module/handler/RuleEnablementActionHandler.java @@ -18,8 +18,7 @@ import java.util.Map; import org.eclipse.smarthome.config.core.Configuration; import org.openhab.core.automation.Action; import org.openhab.core.automation.RuleRegistry; -import org.openhab.core.automation.handler.ActionHandler; -import org.openhab.core.automation.handler.BaseModuleHandler; +import org.openhab.core.automation.handler.BaseActionModuleHandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -39,11 +38,10 @@ import org.slf4j.LoggerFactory; * } * * - * @author Plamen Peev - Initial contribution and API + * @author Plamen Peev - Initial contribution * @author Kai Kreuzer - use rule engine instead of registry - * */ -public class RuleEnablementActionHandler extends BaseModuleHandler implements ActionHandler { +public class RuleEnablementActionHandler extends BaseActionModuleHandler { /** * This filed contains the type of this handler so it can be recognized from the factory. diff --git a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/module/handler/RunRuleActionHandler.java b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/module/handler/RunRuleActionHandler.java index 0dc452ae5e..b17dec792c 100644 --- a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/module/handler/RunRuleActionHandler.java +++ b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/module/handler/RunRuleActionHandler.java @@ -17,8 +17,7 @@ import java.util.Map; import org.eclipse.smarthome.config.core.Configuration; import org.openhab.core.automation.Action; -import org.openhab.core.automation.handler.ActionHandler; -import org.openhab.core.automation.handler.BaseModuleHandler; +import org.openhab.core.automation.handler.BaseActionModuleHandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -39,9 +38,8 @@ import org.slf4j.LoggerFactory; * * @author Benedikt Niehues - Initial contribution * @author Kai Kreuzer - use rule engine instead of registry - * */ -public class RunRuleActionHandler extends BaseModuleHandler implements ActionHandler { +public class RunRuleActionHandler extends BaseActionModuleHandler { /** * The UID for this handler for identification in the factory. diff --git a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/module/handler/TimeOfDayConditionHandler.java b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/module/handler/TimeOfDayConditionHandler.java index 6d7b4a05da..13f9616ff8 100644 --- a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/module/handler/TimeOfDayConditionHandler.java +++ b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/module/handler/TimeOfDayConditionHandler.java @@ -18,18 +18,16 @@ import java.util.Map; import org.eclipse.smarthome.config.core.Configuration; import org.openhab.core.automation.Condition; -import org.openhab.core.automation.handler.BaseModuleHandler; -import org.openhab.core.automation.handler.ConditionHandler; +import org.openhab.core.automation.handler.BaseConditionModuleHandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * ConditionHandler implementation for time based conditions. * - * @author Dominik Schlierf - initial contribution - * + * @author Dominik Schlierf - Initial contribution */ -public class TimeOfDayConditionHandler extends BaseModuleHandler implements ConditionHandler { +public class TimeOfDayConditionHandler extends BaseConditionModuleHandler { private final Logger logger = LoggerFactory.getLogger(TimeOfDayConditionHandler.class); diff --git a/bundles/org.openhab.core/src/main/java/org/eclipse/smarthome/core/events/EventFilter.java b/bundles/org.openhab.core/src/main/java/org/eclipse/smarthome/core/events/EventFilter.java index 7c9c6b628e..92dbbbdd73 100644 --- a/bundles/org.openhab.core/src/main/java/org/eclipse/smarthome/core/events/EventFilter.java +++ b/bundles/org.openhab.core/src/main/java/org/eclipse/smarthome/core/events/EventFilter.java @@ -12,19 +12,24 @@ */ package org.eclipse.smarthome.core.events; +import org.eclipse.jdt.annotation.NonNullByDefault; + /** * An {@link EventFilter} can be provided by an {@link EventSubscriber} in order * to receive specific {@link Event}s by an {@link EventPublisher} if the filter applies. - * + * * @author Stefan Bußweiler - Initial contribution */ +@NonNullByDefault public interface EventFilter { /** - * Apply the filter on an event.

This method is called for each subscribed {@link Event} of an + * Apply the filter on an event. + *

+ * This method is called for each subscribed {@link Event} of an * {@link EventSubscriber}. If the filter applies, the event will be dispatched to the * {@link EventSubscriber#receive(Event)} method. - * + * * @param event the event (not null) * @return true if the filter criterion applies */