Added nullness annotations and constructor injection for ConsoleCommandExtensions ()

Signed-off-by: Christoph Weitkamp <github@christophweitkamp.de>
pull/1554/head
Christoph Weitkamp 2020-07-17 21:12:08 +02:00 committed by GitHub
parent 236efd5862
commit 4b77d29f13
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 57 additions and 123 deletions
bundles
org.openhab.core.audio/src/main/java/org/openhab/core/audio/internal
org.openhab.core.config.discovery/src/main/java/org/openhab/core/config/discovery/internal/console
org.openhab.core.thing/src/main/java/org/openhab/core/thing/internal/console
org.openhab.core.voice/src/main/java/org/openhab/core/voice/internal

View File

@ -42,8 +42,8 @@ import org.osgi.service.component.annotations.Reference;
* @author Christoph Weitkamp - Added parameter to adjust the volume * @author Christoph Weitkamp - Added parameter to adjust the volume
* @author Wouter Born - Sort audio sink and source options * @author Wouter Born - Sort audio sink and source options
*/ */
@NonNullByDefault
@Component(service = ConsoleCommandExtension.class) @Component(service = ConsoleCommandExtension.class)
@NonNullByDefault
public class AudioConsoleCommandExtension extends AbstractConsoleCommandExtension { public class AudioConsoleCommandExtension extends AbstractConsoleCommandExtension {
static final String SUBCMD_PLAY = "play"; static final String SUBCMD_PLAY = "play";

View File

@ -18,6 +18,7 @@ import java.util.Dictionary;
import java.util.Hashtable; import java.util.Hashtable;
import java.util.List; import java.util.List;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.openhab.core.config.discovery.DiscoveryService; import org.openhab.core.config.discovery.DiscoveryService;
import org.openhab.core.config.discovery.DiscoveryServiceRegistry; import org.openhab.core.config.discovery.DiscoveryServiceRegistry;
import org.openhab.core.io.console.Console; import org.openhab.core.io.console.Console;
@ -26,6 +27,7 @@ import org.openhab.core.io.console.extensions.ConsoleCommandExtension;
import org.openhab.core.thing.ThingTypeUID; import org.openhab.core.thing.ThingTypeUID;
import org.osgi.service.cm.Configuration; import org.osgi.service.cm.Configuration;
import org.osgi.service.cm.ConfigurationAdmin; import org.osgi.service.cm.ConfigurationAdmin;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference; import org.osgi.service.component.annotations.Reference;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -38,6 +40,7 @@ import org.slf4j.LoggerFactory;
* @author Dennis Nobel - Added background discovery commands * @author Dennis Nobel - Added background discovery commands
*/ */
@Component(immediate = true, service = ConsoleCommandExtension.class) @Component(immediate = true, service = ConsoleCommandExtension.class)
@NonNullByDefault
public class DiscoveryConsoleCommandExtension extends AbstractConsoleCommandExtension { public class DiscoveryConsoleCommandExtension extends AbstractConsoleCommandExtension {
private static final String SUBCMD_START = "start"; private static final String SUBCMD_START = "start";
@ -46,12 +49,15 @@ public class DiscoveryConsoleCommandExtension extends AbstractConsoleCommandExte
private final Logger logger = LoggerFactory.getLogger(DiscoveryConsoleCommandExtension.class); private final Logger logger = LoggerFactory.getLogger(DiscoveryConsoleCommandExtension.class);
private DiscoveryServiceRegistry discoveryServiceRegistry; private final DiscoveryServiceRegistry discoveryServiceRegistry;
private final ConfigurationAdmin configurationAdmin;
private ConfigurationAdmin configurationAdmin; @Activate
public DiscoveryConsoleCommandExtension(final @Reference DiscoveryServiceRegistry discoveryServiceRegistry,
public DiscoveryConsoleCommandExtension() { final @Reference ConfigurationAdmin configurationAdmin) {
super("discovery", "Control the discovery mechanism."); super("discovery", "Control the discovery mechanism.");
this.discoveryServiceRegistry = discoveryServiceRegistry;
this.configurationAdmin = configurationAdmin;
} }
@Override @Override
@ -136,22 +142,4 @@ public class DiscoveryConsoleCommandExtension extends AbstractConsoleCommandExte
buildCommandUsage(SUBCMD_BACKGROUND_DISCOVERY_DISABLE + " <PID>", buildCommandUsage(SUBCMD_BACKGROUND_DISCOVERY_DISABLE + " <PID>",
"disables background discovery for the discovery service with the given PID") }); "disables background discovery for the discovery service with the given PID") });
} }
@Reference
protected void setDiscoveryServiceRegistry(DiscoveryServiceRegistry discoveryServiceRegistry) {
this.discoveryServiceRegistry = discoveryServiceRegistry;
}
protected void unsetDiscoveryServiceRegistry(DiscoveryServiceRegistry discoveryServiceRegistry) {
this.discoveryServiceRegistry = null;
}
@Reference
protected void setConfigurationAdmin(ConfigurationAdmin configurationAdmin) {
this.configurationAdmin = configurationAdmin;
}
protected void unsetConfigurationAdmin(ConfigurationAdmin configurationAdmin) {
this.configurationAdmin = null;
}
} }

View File

@ -20,6 +20,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.openhab.core.config.discovery.DiscoveryResult; import org.openhab.core.config.discovery.DiscoveryResult;
import org.openhab.core.config.discovery.DiscoveryResultFlag; import org.openhab.core.config.discovery.DiscoveryResultFlag;
import org.openhab.core.config.discovery.inbox.Inbox; import org.openhab.core.config.discovery.inbox.Inbox;
@ -29,6 +30,7 @@ import org.openhab.core.io.console.extensions.AbstractConsoleCommandExtension;
import org.openhab.core.io.console.extensions.ConsoleCommandExtension; import org.openhab.core.io.console.extensions.ConsoleCommandExtension;
import org.openhab.core.thing.ThingTypeUID; import org.openhab.core.thing.ThingTypeUID;
import org.openhab.core.thing.ThingUID; import org.openhab.core.thing.ThingUID;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference; import org.osgi.service.component.annotations.Reference;
@ -38,6 +40,7 @@ import org.osgi.service.component.annotations.Reference;
* @author Kai Kreuzer - Initial contribution * @author Kai Kreuzer - Initial contribution
*/ */
@Component(immediate = true, service = ConsoleCommandExtension.class) @Component(immediate = true, service = ConsoleCommandExtension.class)
@NonNullByDefault
public class InboxConsoleCommandExtension extends AbstractConsoleCommandExtension { public class InboxConsoleCommandExtension extends AbstractConsoleCommandExtension {
private static final String SUBCMD_APPROVE = "approve"; private static final String SUBCMD_APPROVE = "approve";
@ -47,10 +50,12 @@ public class InboxConsoleCommandExtension extends AbstractConsoleCommandExtensio
private static final String SUBCMD_CLEAR = "clear"; private static final String SUBCMD_CLEAR = "clear";
private static final String SUBCMD_REMOVE = "remove"; private static final String SUBCMD_REMOVE = "remove";
private Inbox inbox; private final Inbox inbox;
public InboxConsoleCommandExtension() { @Activate
public InboxConsoleCommandExtension(final @Reference Inbox inbox) {
super("inbox", "Manage your inbox."); super("inbox", "Manage your inbox.");
this.inbox = inbox;
} }
@Override @Override
@ -196,13 +201,4 @@ public class InboxConsoleCommandExtension extends AbstractConsoleCommandExtensio
"remove the inbox entries of a given thing id or thing type"), "remove the inbox entries of a given thing id or thing type"),
buildCommandUsage(SUBCMD_IGNORE + " <thingUID>", "ignores an inbox entry permanently") }); buildCommandUsage(SUBCMD_IGNORE + " <thingUID>", "ignores an inbox entry permanently") });
} }
@Reference
protected void setInbox(Inbox inbox) {
this.inbox = inbox;
}
protected void unsetInbox(Inbox inbox) {
this.inbox = null;
}
} }

View File

@ -17,6 +17,8 @@ import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CopyOnWriteArrayList;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;
import org.openhab.core.io.console.Console; import org.openhab.core.io.console.Console;
import org.openhab.core.io.console.extensions.AbstractConsoleCommandExtension; import org.openhab.core.io.console.extensions.AbstractConsoleCommandExtension;
import org.openhab.core.io.console.extensions.ConsoleCommandExtension; import org.openhab.core.io.console.extensions.ConsoleCommandExtension;
@ -28,6 +30,7 @@ import org.openhab.core.thing.binding.firmware.FirmwareUpdateHandler;
import org.openhab.core.thing.firmware.FirmwareRegistry; import org.openhab.core.thing.firmware.FirmwareRegistry;
import org.openhab.core.thing.firmware.FirmwareStatusInfo; import org.openhab.core.thing.firmware.FirmwareStatusInfo;
import org.openhab.core.thing.firmware.FirmwareUpdateService; import org.openhab.core.thing.firmware.FirmwareUpdateService;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference; import org.osgi.service.component.annotations.Reference;
import org.osgi.service.component.annotations.ReferenceCardinality; import org.osgi.service.component.annotations.ReferenceCardinality;
@ -41,6 +44,7 @@ import org.osgi.service.component.annotations.ReferencePolicy;
* @author Dimitar Ivanov - The listing of the firmwares is done for thing UID * @author Dimitar Ivanov - The listing of the firmwares is done for thing UID
*/ */
@Component(immediate = true, service = ConsoleCommandExtension.class) @Component(immediate = true, service = ConsoleCommandExtension.class)
@NonNullByDefault
public final class FirmwareUpdateConsoleCommandExtension extends AbstractConsoleCommandExtension { public final class FirmwareUpdateConsoleCommandExtension extends AbstractConsoleCommandExtension {
private static final String SUBCMD_LIST = "list"; private static final String SUBCMD_LIST = "list";
@ -48,13 +52,18 @@ public final class FirmwareUpdateConsoleCommandExtension extends AbstractConsole
private static final String SUBCMD_UPDATE = "update"; private static final String SUBCMD_UPDATE = "update";
private static final String SUBCMD_CANCEL = "cancel"; private static final String SUBCMD_CANCEL = "cancel";
private FirmwareUpdateService firmwareUpdateService; private final FirmwareUpdateService firmwareUpdateService;
private FirmwareRegistry firmwareRegistry; private final FirmwareRegistry firmwareRegistry;
private ThingRegistry thingRegistry; private final ThingRegistry thingRegistry;
private final List<FirmwareUpdateHandler> firmwareUpdateHandlers = new CopyOnWriteArrayList<>(); private final List<FirmwareUpdateHandler> firmwareUpdateHandlers = new CopyOnWriteArrayList<>();
public FirmwareUpdateConsoleCommandExtension() { @Activate
public FirmwareUpdateConsoleCommandExtension(final @Reference FirmwareUpdateService firmwareUpdateService,
final @Reference FirmwareRegistry firmwareRegistry, final @Reference ThingRegistry thingRegistry) {
super("firmware", "Manage your things' firmwares."); super("firmware", "Manage your things' firmwares.");
this.firmwareUpdateService = firmwareUpdateService;
this.firmwareRegistry = firmwareRegistry;
this.thingRegistry = thingRegistry;
} }
@Override @Override
@ -176,7 +185,7 @@ public final class FirmwareUpdateConsoleCommandExtension extends AbstractConsole
console.println("Firmware update started."); console.println("Firmware update started.");
} }
private FirmwareUpdateHandler getFirmwareUpdateHandler(ThingUID thingUID) { private @Nullable FirmwareUpdateHandler getFirmwareUpdateHandler(ThingUID thingUID) {
for (FirmwareUpdateHandler firmwareUpdateHandler : firmwareUpdateHandlers) { for (FirmwareUpdateHandler firmwareUpdateHandler : firmwareUpdateHandlers) {
if (thingUID.equals(firmwareUpdateHandler.getThing().getUID())) { if (thingUID.equals(firmwareUpdateHandler.getThing().getUID())) {
return firmwareUpdateHandler; return firmwareUpdateHandler;
@ -194,33 +203,6 @@ public final class FirmwareUpdateConsoleCommandExtension extends AbstractConsole
SUBCMD_UPDATE + " <thingUID> <firmware version>", "updates the firmware for a thing") }); SUBCMD_UPDATE + " <thingUID> <firmware version>", "updates the firmware for a thing") });
} }
@Reference
protected void setFirmwareUpdateService(FirmwareUpdateService firmwareUpdateService) {
this.firmwareUpdateService = firmwareUpdateService;
}
protected void unsetFirmwareUpdateService(FirmwareUpdateService firmwareUpdateService) {
this.firmwareUpdateService = null;
}
@Reference
protected void setFirmwareRegistry(FirmwareRegistry firmwareRegistry) {
this.firmwareRegistry = firmwareRegistry;
}
protected void unsetFirmwareRegistry(FirmwareRegistry firmwareRegistry) {
this.firmwareRegistry = null;
}
@Reference
protected void setThingRegistry(ThingRegistry thingRegistry) {
this.thingRegistry = thingRegistry;
}
protected void unsetThingRegistry(ThingRegistry thingRegistry) {
this.thingRegistry = null;
}
@Reference(cardinality = ReferenceCardinality.MULTIPLE, policy = ReferencePolicy.DYNAMIC) @Reference(cardinality = ReferenceCardinality.MULTIPLE, policy = ReferencePolicy.DYNAMIC)
protected void addFirmwareUpdateHandler(FirmwareUpdateHandler firmwareUpdateHandler) { protected void addFirmwareUpdateHandler(FirmwareUpdateHandler firmwareUpdateHandler) {
firmwareUpdateHandlers.add(firmwareUpdateHandler); firmwareUpdateHandlers.add(firmwareUpdateHandler);

View File

@ -18,6 +18,7 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.openhab.core.io.console.Console; import org.openhab.core.io.console.Console;
import org.openhab.core.io.console.extensions.AbstractConsoleCommandExtension; import org.openhab.core.io.console.extensions.AbstractConsoleCommandExtension;
import org.openhab.core.io.console.extensions.ConsoleCommandExtension; import org.openhab.core.io.console.extensions.ConsoleCommandExtension;
@ -43,6 +44,7 @@ import org.osgi.service.component.annotations.Reference;
* @author Jan N. Klug - Add orphan link handling * @author Jan N. Klug - Add orphan link handling
*/ */
@Component(immediate = true, service = ConsoleCommandExtension.class) @Component(immediate = true, service = ConsoleCommandExtension.class)
@NonNullByDefault
public class LinkConsoleCommandExtension extends AbstractConsoleCommandExtension { public class LinkConsoleCommandExtension extends AbstractConsoleCommandExtension {
private static final String SUBCMD_LIST = "list"; private static final String SUBCMD_LIST = "list";

View File

@ -12,8 +12,6 @@
*/ */
package org.openhab.core.thing.internal.console; package org.openhab.core.thing.internal.console;
import static java.util.Arrays.asList;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
@ -21,6 +19,8 @@ import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;
import org.openhab.core.events.EventPublisher; import org.openhab.core.events.EventPublisher;
import org.openhab.core.io.console.Console; import org.openhab.core.io.console.Console;
import org.openhab.core.io.console.extensions.AbstractConsoleCommandExtension; import org.openhab.core.io.console.extensions.AbstractConsoleCommandExtension;
@ -36,6 +36,7 @@ import org.openhab.core.thing.ThingStatusInfo;
import org.openhab.core.thing.ThingUID; import org.openhab.core.thing.ThingUID;
import org.openhab.core.thing.events.ThingEventFactory; import org.openhab.core.thing.events.ThingEventFactory;
import org.openhab.core.thing.i18n.ThingStatusInfoI18nLocalizationService; import org.openhab.core.thing.i18n.ThingStatusInfoI18nLocalizationService;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference; import org.osgi.service.component.annotations.Reference;
@ -48,6 +49,7 @@ import org.osgi.service.component.annotations.Reference;
* @author Henning Sudbrock - Added show command * @author Henning Sudbrock - Added show command
*/ */
@Component(immediate = true, service = ConsoleCommandExtension.class) @Component(immediate = true, service = ConsoleCommandExtension.class)
@NonNullByDefault
public class ThingConsoleCommandExtension extends AbstractConsoleCommandExtension { public class ThingConsoleCommandExtension extends AbstractConsoleCommandExtension {
private static final String CMD_THINGS = "things"; private static final String CMD_THINGS = "things";
@ -59,14 +61,23 @@ public class ThingConsoleCommandExtension extends AbstractConsoleCommandExtensio
private static final String SUBCMD_DISABLE = "disable"; private static final String SUBCMD_DISABLE = "disable";
private static final String SUBCMD_ENABLE = "enable"; private static final String SUBCMD_ENABLE = "enable";
private ManagedThingProvider managedThingProvider; private final ManagedThingProvider managedThingProvider;
private ThingRegistry thingRegistry; private final ThingRegistry thingRegistry;
private ThingStatusInfoI18nLocalizationService thingStatusInfoI18nLocalizationService; private final ThingStatusInfoI18nLocalizationService thingStatusInfoI18nLocalizationService;
private EventPublisher eventPublisher; private final EventPublisher eventPublisher;
private ThingManager thingManager; private final ThingManager thingManager;
public ThingConsoleCommandExtension() { @Activate
public ThingConsoleCommandExtension(final @Reference ManagedThingProvider managedThingProvider,
final @Reference ThingRegistry thingRegistry,
final @Reference ThingStatusInfoI18nLocalizationService thingStatusInfoI18nLocalizationService,
final @Reference EventPublisher eventPublisher, final @Reference ThingManager thingManager) {
super(CMD_THINGS, "Access your thing registry."); super(CMD_THINGS, "Access your thing registry.");
this.managedThingProvider = managedThingProvider;
this.thingRegistry = thingRegistry;
this.thingStatusInfoI18nLocalizationService = thingStatusInfoI18nLocalizationService;
this.eventPublisher = eventPublisher;
this.thingManager = thingManager;
} }
@Override @Override
@ -79,7 +90,7 @@ public class ThingConsoleCommandExtension extends AbstractConsoleCommandExtensio
printThings(console, things); printThings(console, things);
return; return;
case SUBCMD_SHOW: case SUBCMD_SHOW:
printThingsDetails(console, asList(args).subList(1, args.length)); printThingsDetails(console, Arrays.asList(args).subList(1, args.length));
return; return;
case SUBCMD_CLEAR: case SUBCMD_CLEAR:
removeAllThings(console, things); removeAllThings(console, things);
@ -119,7 +130,7 @@ public class ThingConsoleCommandExtension extends AbstractConsoleCommandExtensio
} }
} }
private void triggerChannel(Console console, String channelUid, String event) { private void triggerChannel(Console console, String channelUid, @Nullable String event) {
eventPublisher.post(ThingEventFactory.createTriggerEvent(event, new ChannelUID(channelUid))); eventPublisher.post(ThingEventFactory.createTriggerEvent(event, new ChannelUID(channelUid)));
} }
@ -267,51 +278,4 @@ public class ThingConsoleCommandExtension extends AbstractConsoleCommandExtensio
} }
} }
} }
@Reference
protected void setManagedThingProvider(ManagedThingProvider managedThingProvider) {
this.managedThingProvider = managedThingProvider;
}
@Reference
protected void setThingRegistry(ThingRegistry thingRegistry) {
this.thingRegistry = thingRegistry;
}
protected void unsetManagedThingProvider(ManagedThingProvider managedThingProvider) {
this.managedThingProvider = null;
}
protected void unsetThingRegistry(ThingRegistry thingRegistry) {
this.thingRegistry = null;
}
@Reference
protected void setThingStatusInfoI18nLocalizationService(
ThingStatusInfoI18nLocalizationService thingStatusInfoI18nLocalizationService) {
this.thingStatusInfoI18nLocalizationService = thingStatusInfoI18nLocalizationService;
}
protected void unsetThingStatusInfoI18nLocalizationService(
ThingStatusInfoI18nLocalizationService thingStatusInfoI18nLocalizationService) {
this.thingStatusInfoI18nLocalizationService = null;
}
@Reference
protected void setEventPublisher(EventPublisher eventPublisher) {
this.eventPublisher = eventPublisher;
}
protected void unsetEventPublisher(EventPublisher eventPublisher) {
this.eventPublisher = null;
}
@Reference
protected void setThingManager(ThingManager thingManager) {
this.thingManager = thingManager;
}
protected void unsetThingManager(ThingManager thingManager) {
this.thingManager = null;
}
} }

View File

@ -16,6 +16,7 @@ import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable; import org.eclipse.jdt.annotation.Nullable;
import org.openhab.core.i18n.LocaleProvider; import org.openhab.core.i18n.LocaleProvider;
import org.openhab.core.io.console.Console; import org.openhab.core.io.console.Console;
@ -40,6 +41,7 @@ import org.osgi.service.component.annotations.Reference;
* @author Wouter Born - Sort TTS voices * @author Wouter Born - Sort TTS voices
*/ */
@Component(service = ConsoleCommandExtension.class) @Component(service = ConsoleCommandExtension.class)
@NonNullByDefault
public class VoiceConsoleCommandExtension extends AbstractConsoleCommandExtension { public class VoiceConsoleCommandExtension extends AbstractConsoleCommandExtension {
private static final String SUBCMD_SAY = "say"; private static final String SUBCMD_SAY = "say";