]> git.basschouten.com Git - openhab-addons.git/commitdiff
Java 17 features (H-M) (#15520)
authorHolger Friedrich <holgerfriedrich@users.noreply.github.com>
Fri, 8 Sep 2023 12:36:59 +0000 (14:36 +0200)
committerGitHub <noreply@github.com>
Fri, 8 Sep 2023 12:36:59 +0000 (14:36 +0200)
- add missing @override
- Java style array syntax
- remove redundant modifiers
- always move String constants to left side in comparisons
- simplify lambda expressions and return statements
- use replace instead of replaceAll w/o regex
- instanceof matching and multiline strings
- remove null check before instanceof

Signed-off-by: Holger Friedrich <mail@holger-friedrich.de>
519 files changed:
bundles/org.openhab.binding.haassohnpelletstove/src/main/java/org/openhab/binding/haassohnpelletstove/internal/HaasSohnpelletstoveHandler.java
bundles/org.openhab.binding.haassohnpelletstove/src/main/java/org/openhab/binding/haassohnpelletstove/internal/MD5Utils.java
bundles/org.openhab.binding.harmonyhub/src/main/java/org/openhab/binding/harmonyhub/internal/handler/HarmonyDeviceHandler.java
bundles/org.openhab.binding.harmonyhub/src/main/java/org/openhab/binding/harmonyhub/internal/handler/HarmonyHubHandler.java
bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/HaywardBindingConstants.java
bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/HaywardThingHandler.java
bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/discovery/HaywardDiscoveryService.java
bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/handler/HaywardBackyardHandler.java
bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/handler/HaywardBridgeHandler.java
bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/handler/HaywardChlorinatorHandler.java
bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/handler/HaywardColorLogicHandler.java
bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/handler/HaywardFilterHandler.java
bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/handler/HaywardHeaterHandler.java
bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/handler/HaywardPumpHandler.java
bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/handler/HaywardVirtualHeaterHandler.java
bundles/org.openhab.binding.hccrubbishcollection/src/main/java/org/openhab/binding/hccrubbishcollection/internal/HCCRubbishCollectionHandlerFactory.java
bundles/org.openhab.binding.hdanywhere/src/main/java/org/openhab/binding/hdanywhere/internal/handler/Mhub4K431Handler.java
bundles/org.openhab.binding.hdanywhere/src/main/java/org/openhab/binding/hdanywhere/internal/handler/MultiroomPlusHandler.java
bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/GatewayWebTargets.java
bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/builders/AutomationChannelBuilder.java
bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/console/HDPowerViewCommandExtension.java
bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/database/ShadeCapabilitiesDatabase.java
bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/discovery/HDPowerViewDeviceDiscoveryService.java
bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/discovery/HDPowerViewHubDiscoveryParticipant.java
bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/discovery/HDPowerViewHubDiscoveryService.java
bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/discovery/ShadeDiscoveryService.java
bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/dto/ShadePosition.java
bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/dto/gen3/PowerType.java
bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/handler/GatewayBridgeHandler.java
bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/handler/HDPowerViewHubHandler.java
bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/handler/HDPowerViewShadeHandler.java
bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/handler/ShadeThingHandler.java
bundles/org.openhab.binding.hdpowerview/src/test/java/org/openhab/binding/hdpowerview/internal/providers/MockedLocaleProvider.java
bundles/org.openhab.binding.helios/src/main/java/org/openhab/binding/helios/internal/handler/HeliosHandler221.java
bundles/org.openhab.binding.heliosventilation/src/main/java/org/openhab/binding/heliosventilation/internal/HeliosVentilationHandlerFactory.java
bundles/org.openhab.binding.heos/src/main/java/org/openhab/binding/heos/internal/action/HeosActions.java
bundles/org.openhab.binding.heos/src/main/java/org/openhab/binding/heos/internal/discovery/HeosDiscoveryParticipant.java
bundles/org.openhab.binding.heos/src/main/java/org/openhab/binding/heos/internal/handler/HeosBridgeHandler.java
bundles/org.openhab.binding.heos/src/main/java/org/openhab/binding/heos/internal/handler/HeosThingBaseHandler.java
bundles/org.openhab.binding.heos/src/main/java/org/openhab/binding/heos/internal/resources/Telnet.java
bundles/org.openhab.binding.heos/src/test/java/org/openhab/binding/heos/internal/json/HeosJsonParserResponseTest.java
bundles/org.openhab.binding.herzborg/src/main/java/org/openhab/binding/herzborg/internal/CurtainHandler.java
bundles/org.openhab.binding.homeconnect/src/main/java/org/openhab/binding/homeconnect/internal/client/HomeConnectApiClient.java
bundles/org.openhab.binding.homeconnect/src/main/java/org/openhab/binding/homeconnect/internal/discovery/HomeConnectDiscoveryService.java
bundles/org.openhab.binding.homeconnect/src/main/java/org/openhab/binding/homeconnect/internal/handler/AbstractHomeConnectThingHandler.java
bundles/org.openhab.binding.homeconnect/src/main/java/org/openhab/binding/homeconnect/internal/handler/HomeConnectBridgeHandler.java
bundles/org.openhab.binding.homeconnect/src/main/java/org/openhab/binding/homeconnect/internal/handler/HomeConnectHoodHandler.java
bundles/org.openhab.binding.homematic/src/main/java/org/openhab/binding/homematic/internal/common/HomematicConfig.java
bundles/org.openhab.binding.homematic/src/main/java/org/openhab/binding/homematic/internal/communicator/client/XmlRpcClient.java
bundles/org.openhab.binding.homematic/src/main/java/org/openhab/binding/homematic/internal/communicator/message/BinRpcMessage.java
bundles/org.openhab.binding.homematic/src/main/java/org/openhab/binding/homematic/internal/communicator/message/RpcUtils.java
bundles/org.openhab.binding.homematic/src/main/java/org/openhab/binding/homematic/internal/communicator/message/XmlRpcRequest.java
bundles/org.openhab.binding.homematic/src/main/java/org/openhab/binding/homematic/internal/communicator/message/XmlRpcResponse.java
bundles/org.openhab.binding.homematic/src/main/java/org/openhab/binding/homematic/internal/communicator/parser/CommonRpcParser.java
bundles/org.openhab.binding.homematic/src/main/java/org/openhab/binding/homematic/internal/communicator/parser/GetParamsetParser.java
bundles/org.openhab.binding.homematic/src/main/java/org/openhab/binding/homematic/internal/communicator/server/BinRpcNetworkService.java
bundles/org.openhab.binding.homematic/src/main/java/org/openhab/binding/homematic/internal/communicator/virtual/DeleteDeviceModeVirtualDatapointHandler.java
bundles/org.openhab.binding.homematic/src/main/java/org/openhab/binding/homematic/internal/communicator/virtual/DeleteDeviceVirtualDatapointHandler.java
bundles/org.openhab.binding.homematic/src/main/java/org/openhab/binding/homematic/internal/communicator/virtual/DisplayOptionsVirtualDatapointHandler.java
bundles/org.openhab.binding.homematic/src/main/java/org/openhab/binding/homematic/internal/communicator/virtual/OnTimeAutomaticVirtualDatapointHandler.java
bundles/org.openhab.binding.homematic/src/main/java/org/openhab/binding/homematic/internal/discovery/CcuDiscoveryService.java
bundles/org.openhab.binding.homematic/src/main/java/org/openhab/binding/homematic/internal/discovery/HomegearDiscoveryParticipant.java
bundles/org.openhab.binding.homematic/src/main/java/org/openhab/binding/homematic/internal/discovery/HomematicDeviceDiscoveryService.java
bundles/org.openhab.binding.homematic/src/main/java/org/openhab/binding/homematic/internal/handler/HomematicBridgeHandler.java
bundles/org.openhab.binding.homematic/src/main/java/org/openhab/binding/homematic/internal/handler/HomematicThingHandler.java
bundles/org.openhab.binding.homematic/src/main/java/org/openhab/binding/homematic/internal/model/HmDatapoint.java
bundles/org.openhab.binding.homematic/src/main/java/org/openhab/binding/homematic/internal/model/HmDatapointInfo.java
bundles/org.openhab.binding.homematic/src/main/java/org/openhab/binding/homematic/internal/model/HmDevice.java
bundles/org.openhab.binding.homematic/src/main/java/org/openhab/binding/homematic/internal/type/HomematicTypeGeneratorImpl.java
bundles/org.openhab.binding.homewizard/src/main/java/org/openhab/binding/homewizard/internal/P1Payload.java
bundles/org.openhab.binding.hpprinter/src/main/java/org/openhab/binding/hpprinter/internal/api/HPFeatures.java
bundles/org.openhab.binding.hpprinter/src/main/java/org/openhab/binding/hpprinter/internal/api/HPUsage.java
bundles/org.openhab.binding.http/src/main/java/org/openhab/binding/http/internal/Util.java
bundles/org.openhab.binding.http/src/main/java/org/openhab/binding/http/internal/converter/ColorItemConverter.java
bundles/org.openhab.binding.http/src/main/java/org/openhab/binding/http/internal/converter/DimmerItemConverter.java
bundles/org.openhab.binding.http/src/main/java/org/openhab/binding/http/internal/converter/GenericItemConverter.java
bundles/org.openhab.binding.http/src/main/java/org/openhab/binding/http/internal/converter/RollershutterItemConverter.java
bundles/org.openhab.binding.http/src/main/java/org/openhab/binding/http/internal/http/HttpResponseListener.java
bundles/org.openhab.binding.hydrawise/src/main/java/org/openhab/binding/hydrawise/internal/api/graphql/HydrawiseGraphQLClient.java
bundles/org.openhab.binding.hydrawise/src/main/java/org/openhab/binding/hydrawise/internal/api/graphql/dto/MutationResponse.java
bundles/org.openhab.binding.hydrawise/src/main/java/org/openhab/binding/hydrawise/internal/api/local/HydrawiseLocalApiClient.java
bundles/org.openhab.binding.hydrawise/src/main/java/org/openhab/binding/hydrawise/internal/discovery/HydrawiseCloudControllerDiscoveryService.java
bundles/org.openhab.binding.hydrawise/src/main/java/org/openhab/binding/hydrawise/internal/handler/HydrawiseAccountHandler.java
bundles/org.openhab.binding.hydrawise/src/main/java/org/openhab/binding/hydrawise/internal/handler/HydrawiseLocalHandler.java
bundles/org.openhab.binding.hyperion/src/main/java/org/openhab/binding/hyperion/internal/HyperionDiscoveryParticipant.java
bundles/org.openhab.binding.hyperion/src/main/java/org/openhab/binding/hyperion/internal/connection/JsonTcpConnection.java
bundles/org.openhab.binding.hyperion/src/main/java/org/openhab/binding/hyperion/internal/handler/HyperionHandler.java
bundles/org.openhab.binding.hyperion/src/main/java/org/openhab/binding/hyperion/internal/handler/HyperionNgHandler.java
bundles/org.openhab.binding.iammeter/src/main/java/org/openhab/binding/iammeter/internal/Iammeter3080THandler.java
bundles/org.openhab.binding.iaqualink/src/main/java/org/openhab/binding/iaqualink/internal/handler/IAqualinkHandler.java
bundles/org.openhab.binding.icalendar/src/main/java/org/openhab/binding/icalendar/internal/ICalendarHandlerFactory.java
bundles/org.openhab.binding.icalendar/src/main/java/org/openhab/binding/icalendar/internal/handler/EventFilterHandler.java
bundles/org.openhab.binding.icalendar/src/main/java/org/openhab/binding/icalendar/internal/handler/ICalendarHandler.java
bundles/org.openhab.binding.icalendar/src/main/java/org/openhab/binding/icalendar/internal/logic/EventTextFilter.java
bundles/org.openhab.binding.icloud/src/main/java/org/openhab/binding/icloud/internal/ICloudHandlerFactory.java
bundles/org.openhab.binding.icloud/src/main/java/org/openhab/binding/icloud/internal/handler/ICloudAccountBridgeHandler.java
bundles/org.openhab.binding.icloud/src/main/java/org/openhab/binding/icloud/internal/handler/ICloudDeviceHandler.java
bundles/org.openhab.binding.icloud/src/test/java/org/openhab/binding/icloud/TestICloud.java
bundles/org.openhab.binding.ihc/src/main/java/org/openhab/binding/ihc/internal/handler/IhcHandler.java
bundles/org.openhab.binding.ihc/src/main/java/org/openhab/binding/ihc/internal/profiles/PushButtonToCommandProfile.java
bundles/org.openhab.binding.ihc/src/main/java/org/openhab/binding/ihc/internal/ws/http/IhcConnectionPool.java
bundles/org.openhab.binding.ihc/src/main/java/org/openhab/binding/ihc/internal/ws/projectfile/ProjectFileUtils.java
bundles/org.openhab.binding.ihc/src/main/java/org/openhab/binding/ihc/internal/ws/services/IhcAuthenticationService.java
bundles/org.openhab.binding.ihc/src/main/java/org/openhab/binding/ihc/internal/ws/services/IhcBaseService.java
bundles/org.openhab.binding.ihc/src/main/java/org/openhab/binding/ihc/internal/ws/services/IhcControllerService.java
bundles/org.openhab.binding.ihc/src/main/java/org/openhab/binding/ihc/internal/ws/services/IhcResourceInteractionService.java
bundles/org.openhab.binding.insteon/src/main/java/org/openhab/binding/insteon/internal/device/CommandHandler.java
bundles/org.openhab.binding.insteon/src/main/java/org/openhab/binding/insteon/internal/device/DeviceFeature.java
bundles/org.openhab.binding.insteon/src/main/java/org/openhab/binding/insteon/internal/device/DeviceTypeLoader.java
bundles/org.openhab.binding.insteon/src/main/java/org/openhab/binding/insteon/internal/device/FeatureTemplateLoader.java
bundles/org.openhab.binding.insteon/src/main/java/org/openhab/binding/insteon/internal/device/GroupMessageStateMachine.java
bundles/org.openhab.binding.insteon/src/main/java/org/openhab/binding/insteon/internal/device/InsteonDevice.java
bundles/org.openhab.binding.insteon/src/main/java/org/openhab/binding/insteon/internal/device/MessageHandler.java
bundles/org.openhab.binding.insteon/src/main/java/org/openhab/binding/insteon/internal/device/ModemDBBuilder.java
bundles/org.openhab.binding.insteon/src/main/java/org/openhab/binding/insteon/internal/handler/InsteonDeviceHandler.java
bundles/org.openhab.binding.insteon/src/main/java/org/openhab/binding/insteon/internal/message/Field.java
bundles/org.openhab.binding.insteon/src/main/java/org/openhab/binding/insteon/internal/message/XMLMessageReader.java
bundles/org.openhab.binding.insteon/src/main/java/org/openhab/binding/insteon/internal/utils/Utils.java
bundles/org.openhab.binding.intesis/src/main/java/org/openhab/binding/intesis/internal/handler/IntesisBoxHandler.java
bundles/org.openhab.binding.intesis/src/main/java/org/openhab/binding/intesis/internal/handler/IntesisHomeHandler.java
bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/AmcrestHandler.java
bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/DoorBirdHandler.java
bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/Helper.java
bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/InstarHandler.java
bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/IpCameraBindingConstants.java
bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/MyNettyAuthHandler.java
bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/ReolinkHandler.java
bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/handler/IpCameraHandler.java
bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/onvif/OnvifCodec.java
bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/onvif/OnvifConnection.java
bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/onvif/OnvifDiscovery.java
bundles/org.openhab.binding.ipobserver/src/main/java/org/openhab/binding/ipobserver/internal/IpObserverDiscoveryService.java
bundles/org.openhab.binding.ipp/src/main/java/org/openhab/binding/ipp/internal/handler/IppPrinterHandler.java
bundles/org.openhab.binding.irobot/src/main/java/org/openhab/binding/irobot/internal/IRobotHandlerFactory.java
bundles/org.openhab.binding.irobot/src/main/java/org/openhab/binding/irobot/internal/dto/MQTTProtocol.java
bundles/org.openhab.binding.irtrans/src/main/java/org/openhab/binding/irtrans/internal/IrCommand.java
bundles/org.openhab.binding.jablotron/src/main/java/org/openhab/binding/jablotron/internal/discovery/JablotronDiscoveryService.java
bundles/org.openhab.binding.jablotron/src/main/java/org/openhab/binding/jablotron/internal/handler/JablotronBridgeHandler.java
bundles/org.openhab.binding.jeelink/src/main/java/org/openhab/binding/jeelink/internal/ec3k/Ec3kReadingConverter.java
bundles/org.openhab.binding.jeelink/src/main/java/org/openhab/binding/jeelink/internal/lacrosse/LgwSensorHandler.java
bundles/org.openhab.binding.jeelink/src/main/java/org/openhab/binding/jeelink/internal/lacrosse/Tx22SensorHandler.java
bundles/org.openhab.binding.jeelink/src/main/java/org/openhab/binding/jeelink/internal/pca301/Pca301SensorHandler.java
bundles/org.openhab.binding.jeelink/src/main/java/org/openhab/binding/jeelink/internal/revolt/RevoltReadingConverter.java
bundles/org.openhab.binding.jeelink/src/main/java/org/openhab/binding/jeelink/internal/revolt/RevoltSensorHandler.java
bundles/org.openhab.binding.jellyfin/src/main/java/org/openhab/binding/jellyfin/internal/JellyfinHandlerFactory.java
bundles/org.openhab.binding.jellyfin/src/main/java/org/openhab/binding/jellyfin/internal/discovery/JellyfinClientDiscoveryService.java
bundles/org.openhab.binding.jellyfin/src/main/java/org/openhab/binding/jellyfin/internal/discovery/JellyfinServerDiscoveryService.java
bundles/org.openhab.binding.jellyfin/src/main/java/org/openhab/binding/jellyfin/internal/handler/JellyfinClientHandler.java
bundles/org.openhab.binding.jellyfin/src/main/java/org/openhab/binding/jellyfin/internal/handler/JellyfinServerHandler.java
bundles/org.openhab.binding.jellyfin/src/main/java/org/openhab/binding/jellyfin/internal/util/SyncResponse.java
bundles/org.openhab.binding.juicenet/src/main/java/org/openhab/binding/juicenet/internal/discovery/JuiceNetDiscoveryService.java
bundles/org.openhab.binding.juicenet/src/main/java/org/openhab/binding/juicenet/internal/handler/JuiceNetBridgeHandler.java
bundles/org.openhab.binding.kaleidescape/src/main/java/org/openhab/binding/kaleidescape/internal/discovery/KaleidescapeDiscoveryService.java
bundles/org.openhab.binding.kaleidescape/src/main/java/org/openhab/binding/kaleidescape/internal/handler/KaleidescapeHandler.java
bundles/org.openhab.binding.keba/src/main/java/org/openhab/binding/keba/internal/KebaHandlerFactory.java
bundles/org.openhab.binding.keba/src/main/java/org/openhab/binding/keba/internal/handler/KeContactHandler.java
bundles/org.openhab.binding.keba/src/main/java/org/openhab/binding/keba/internal/handler/KeContactTransceiver.java
bundles/org.openhab.binding.km200/src/main/java/org/openhab/binding/km200/internal/KM200Device.java
bundles/org.openhab.binding.km200/src/main/java/org/openhab/binding/km200/internal/handler/KM200DataHandler.java
bundles/org.openhab.binding.km200/src/main/java/org/openhab/binding/km200/internal/handler/KM200GatewayHandler.java
bundles/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/ValueDecoder.java
bundles/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/DeviceThingHandler.java
bundles/org.openhab.binding.kodi/src/main/java/org/openhab/binding/kodi/internal/KodiAudioSink.java
bundles/org.openhab.binding.kodi/src/main/java/org/openhab/binding/kodi/internal/KodiBindingConstants.java
bundles/org.openhab.binding.kodi/src/main/java/org/openhab/binding/kodi/internal/discovery/KodiUpnpDiscoveryParticipant.java
bundles/org.openhab.binding.kodi/src/main/java/org/openhab/binding/kodi/internal/handler/KodiHandler.java
bundles/org.openhab.binding.kodi/src/main/java/org/openhab/binding/kodi/internal/protocol/KodiConnection.java
bundles/org.openhab.binding.konnected/src/main/java/org/openhab/binding/konnected/internal/KonnectedHandlerFactory.java
bundles/org.openhab.binding.konnected/src/main/java/org/openhab/binding/konnected/internal/discovery/KonnectedUPnPServer.java
bundles/org.openhab.binding.konnected/src/main/java/org/openhab/binding/konnected/internal/handler/KonnectedHandler.java
bundles/org.openhab.binding.kostalinverter/src/main/java/org/openhab/binding/kostalinverter/internal/secondgeneration/SecondGenerationConfigurationHandler.java
bundles/org.openhab.binding.kostalinverter/src/main/java/org/openhab/binding/kostalinverter/internal/secondgeneration/SecondGenerationHandler.java
bundles/org.openhab.binding.kvv/src/main/java/org/openhab/binding/kvv/internal/KVVBridgeHandler.java
bundles/org.openhab.binding.lametrictime/src/3rdparty/java/org/openhab/binding/lametrictime/internal/api/authentication/HttpAuthenticationFeature.java
bundles/org.openhab.binding.lametrictime/src/3rdparty/java/org/openhab/binding/lametrictime/internal/api/authentication/HttpAuthenticationFilter.java
bundles/org.openhab.binding.lametrictime/src/main/java/org/openhab/binding/lametrictime/internal/discovery/LaMetricTimeDiscoveryParticipant.java
bundles/org.openhab.binding.lametrictime/src/main/java/org/openhab/binding/lametrictime/internal/handler/LaMetricTimeHandler.java
bundles/org.openhab.binding.lametrictime/src/main/java/org/openhab/binding/lametrictime/internal/handler/RadioAppHandler.java
bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/DimmerOutputProfile.java
bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/LcnModuleDiscoveryService.java
bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/LcnModuleHandler.java
bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/LcnProfileFactory.java
bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/PckGatewayHandler.java
bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/common/LcnDefs.java
bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/connection/Connection.java
bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/converter/S0Converter.java
bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/converter/ValueConverter.java
bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/subhandler/AbstractLcnModuleRollershutterRelaySubHandler.java
bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/subhandler/LcnModuleBinarySensorSubHandler.java
bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/subhandler/LcnModuleHostCommandSubHandler.java
bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/subhandler/LcnModuleKeyLockTableSubHandler.java
bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/subhandler/LcnModuleMetaFirmwareSubHandler.java
bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/subhandler/LcnModuleRelaySubHandler.java
bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/subhandler/LcnModuleS0CounterSubHandler.java
bundles/org.openhab.binding.leapmotion/src/main/java/org/openhab/binding/leapmotion/internal/LeapMotionColorProfile.java
bundles/org.openhab.binding.leapmotion/src/main/java/org/openhab/binding/leapmotion/internal/LeapMotionHandlerFactory.java
bundles/org.openhab.binding.leapmotion/src/main/java/org/openhab/binding/leapmotion/internal/discovery/LeapMotionDiscoveryService.java
bundles/org.openhab.binding.lghombot/src/main/java/org/openhab/binding/lghombot/internal/LGHomBotBindingConstants.java
bundles/org.openhab.binding.lghombot/src/main/java/org/openhab/binding/lghombot/internal/LGHomBotHandlerFactory.java
bundles/org.openhab.binding.lghombot/src/main/java/org/openhab/binding/lghombot/internal/discovery/LGHomBotDiscovery.java
bundles/org.openhab.binding.lgtvserial/src/main/java/org/openhab/binding/lgtvserial/internal/protocol/serial/responses/OnOffResponse.java
bundles/org.openhab.binding.lgwebos/src/main/java/org/openhab/binding/lgwebos/internal/LGWebOSBindingConstants.java
bundles/org.openhab.binding.lgwebos/src/main/java/org/openhab/binding/lgwebos/internal/PowerControlPower.java
bundles/org.openhab.binding.lgwebos/src/main/java/org/openhab/binding/lgwebos/internal/VolumeControlVolume.java
bundles/org.openhab.binding.lgwebos/src/main/java/org/openhab/binding/lgwebos/internal/WakeOnLanUtility.java
bundles/org.openhab.binding.lgwebos/src/main/java/org/openhab/binding/lgwebos/internal/action/LGWebOSActions.java
bundles/org.openhab.binding.lgwebos/src/main/java/org/openhab/binding/lgwebos/internal/console/LGWebOSCommandExtension.java
bundles/org.openhab.binding.lgwebos/src/main/java/org/openhab/binding/lgwebos/internal/handler/LGWebOSHandler.java
bundles/org.openhab.binding.lifx/src/main/java/org/openhab/binding/lifx/internal/LifxLightCommunicationHandler.java
bundles/org.openhab.binding.lifx/src/main/java/org/openhab/binding/lifx/internal/LifxLightCurrentStateUpdater.java
bundles/org.openhab.binding.lifx/src/main/java/org/openhab/binding/lifx/internal/LifxLightDiscovery.java
bundles/org.openhab.binding.lifx/src/main/java/org/openhab/binding/lifx/internal/LifxLightPropertiesUpdater.java
bundles/org.openhab.binding.lifx/src/main/java/org/openhab/binding/lifx/internal/LifxSequenceNumberSupplier.java
bundles/org.openhab.binding.lifx/src/main/java/org/openhab/binding/lifx/internal/dto/LightLastHevCycleResult.java
bundles/org.openhab.binding.lifx/src/main/java/org/openhab/binding/lifx/internal/fields/LittleField.java
bundles/org.openhab.binding.lifx/src/main/java/org/openhab/binding/lifx/internal/handler/LifxLightHandler.java
bundles/org.openhab.binding.lifx/src/main/java/org/openhab/binding/lifx/internal/util/LifxMessageUtil.java
bundles/org.openhab.binding.lifx/src/main/java/org/openhab/binding/lifx/internal/util/LifxNetworkUtil.java
bundles/org.openhab.binding.lifx/src/main/java/org/openhab/binding/lifx/internal/util/LifxSelectorUtil.java
bundles/org.openhab.binding.linky/src/main/java/org/openhab/binding/linky/internal/console/LinkyCommandExtension.java
bundles/org.openhab.binding.linky/src/main/java/org/openhab/binding/linky/internal/dto/AuthData.java
bundles/org.openhab.binding.linky/src/main/java/org/openhab/binding/linky/internal/handler/LinkyHandler.java
bundles/org.openhab.binding.linuxinput/src/main/java/org/openhab/binding/linuxinput/internal/LinuxInputDiscoveryService.java
bundles/org.openhab.binding.linuxinput/src/main/java/org/openhab/binding/linuxinput/internal/LinuxInputHandler.java
bundles/org.openhab.binding.linuxinput/src/main/java/org/openhab/binding/linuxinput/internal/LinuxInputHandlerFactory.java
bundles/org.openhab.binding.liquidcheck/src/main/java/org/openhab/binding/liquidcheck/internal/LiquidCheckHandler.java
bundles/org.openhab.binding.lirc/src/main/java/org/openhab/binding/lirc/internal/LIRCBindingConstants.java
bundles/org.openhab.binding.livisismarthome/src/main/java/org/openhab/binding/livisismarthome/internal/discovery/LivisiDeviceDiscoveryService.java
bundles/org.openhab.binding.livisismarthome/src/main/java/org/openhab/binding/livisismarthome/internal/handler/LivisiBridgeHandler.java
bundles/org.openhab.binding.livisismarthome/src/main/java/org/openhab/binding/livisismarthome/internal/handler/LivisiDeviceHandler.java
bundles/org.openhab.binding.livisismarthome/src/test/java/org/openhab/binding/livisismarthome/internal/client/LivisiClientTest.java
bundles/org.openhab.binding.livisismarthome/src/test/java/org/openhab/binding/livisismarthome/internal/client/entity/device/DeviceDTOTest.java
bundles/org.openhab.binding.livisismarthome/src/test/java/org/openhab/binding/livisismarthome/internal/handler/LivisiBridgeHandlerTest.java
bundles/org.openhab.binding.livisismarthome/src/test/java/org/openhab/binding/livisismarthome/internal/handler/LivisiDeviceHandlerTest.java
bundles/org.openhab.binding.logreader/src/3rdparty/java/org/apache/commons/io/input/Tailer.java
bundles/org.openhab.binding.logreader/src/main/java/org/openhab/binding/logreader/internal/handler/LogHandler.java
bundles/org.openhab.binding.logreader/src/main/java/org/openhab/binding/logreader/internal/searchengine/SearchEngine.java
bundles/org.openhab.binding.loxone/src/main/java/org/openhab/binding/loxone/internal/LxHandlerFactory.java
bundles/org.openhab.binding.loxone/src/main/java/org/openhab/binding/loxone/internal/LxServerHandler.java
bundles/org.openhab.binding.loxone/src/main/java/org/openhab/binding/loxone/internal/LxWebSocket.java
bundles/org.openhab.binding.loxone/src/main/java/org/openhab/binding/loxone/internal/controls/LxControl.java
bundles/org.openhab.binding.loxone/src/main/java/org/openhab/binding/loxone/internal/controls/LxControlAlarm.java
bundles/org.openhab.binding.loxone/src/main/java/org/openhab/binding/loxone/internal/controls/LxControlColorPickerV2.java
bundles/org.openhab.binding.loxone/src/main/java/org/openhab/binding/loxone/internal/controls/LxControlEIBDimmer.java
bundles/org.openhab.binding.loxone/src/main/java/org/openhab/binding/loxone/internal/controls/LxControlIRoomControllerV2.java
bundles/org.openhab.binding.loxone/src/main/java/org/openhab/binding/loxone/internal/controls/LxControlJalousie.java
bundles/org.openhab.binding.loxone/src/main/java/org/openhab/binding/loxone/internal/controls/LxControlLightController.java
bundles/org.openhab.binding.loxone/src/main/java/org/openhab/binding/loxone/internal/controls/LxControlLightControllerV2.java
bundles/org.openhab.binding.loxone/src/main/java/org/openhab/binding/loxone/internal/controls/LxControlMeter.java
bundles/org.openhab.binding.loxone/src/main/java/org/openhab/binding/loxone/internal/controls/LxControlPushbutton.java
bundles/org.openhab.binding.loxone/src/main/java/org/openhab/binding/loxone/internal/controls/LxControlRadio.java
bundles/org.openhab.binding.loxone/src/main/java/org/openhab/binding/loxone/internal/controls/LxControlSauna.java
bundles/org.openhab.binding.loxone/src/main/java/org/openhab/binding/loxone/internal/controls/LxControlSwitch.java
bundles/org.openhab.binding.loxone/src/main/java/org/openhab/binding/loxone/internal/controls/LxControlUpDownAnalog.java
bundles/org.openhab.binding.loxone/src/main/java/org/openhab/binding/loxone/internal/controls/LxControlUpDownDigital.java
bundles/org.openhab.binding.loxone/src/main/java/org/openhab/binding/loxone/internal/controls/LxControlValueSelector.java
bundles/org.openhab.binding.loxone/src/main/java/org/openhab/binding/loxone/internal/types/LxTags.java
bundles/org.openhab.binding.loxone/src/main/java/org/openhab/binding/loxone/internal/types/LxUuid.java
bundles/org.openhab.binding.loxone/src/test/java/org/openhab/binding/loxone/internal/controls/LxControlAlarmNoPresenceTest.java
bundles/org.openhab.binding.loxone/src/test/java/org/openhab/binding/loxone/internal/controls/LxControlInfoOnlyAnalogTempTagTest.java
bundles/org.openhab.binding.loxone/src/test/java/org/openhab/binding/loxone/internal/controls/LxControlJalousieTest.java
bundles/org.openhab.binding.loxone/src/test/java/org/openhab/binding/loxone/internal/controls/LxControlLightControllerV2Test.java
bundles/org.openhab.binding.loxone/src/test/java/org/openhab/binding/loxone/internal/controls/LxControlPushbuttonTest.java
bundles/org.openhab.binding.loxone/src/test/java/org/openhab/binding/loxone/internal/controls/LxControlSwitchTest.java
bundles/org.openhab.binding.loxone/src/test/java/org/openhab/binding/loxone/internal/controls/LxControlTimedSwitchTest.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/LutronHandlerFactory.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/action/DimmerActions.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/discovery/LeapDeviceDiscoveryService.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/discovery/LutronDeviceDiscoveryService.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/discovery/LutronMcastBridgeDiscoveryService.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/discovery/LutronMdnsBridgeDiscoveryService.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/grxprg/GrafikEyeHandler.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/grxprg/PrgBridgeHandler.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/grxprg/PrgProtocolHandler.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/grxprg/SocketSession.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/handler/BlindHandler.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/handler/DimmerHandler.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/handler/FanHandler.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/handler/GreenModeHandler.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/handler/IPBridgeHandler.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/handler/QSIOHandler.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/handler/ShadeHandler.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/handler/SysvarHandler.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/handler/TimeclockHandler.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/handler/VcrxHandler.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/handler/WciHandler.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/hw/HwDimmerHandler.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/hw/HwDiscoveryService.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/hw/HwSerialBridgeHandler.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/keypadconfig/KeypadConfig.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/keypadconfig/KeypadConfigGrafikEye.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/keypadconfig/KeypadConfigIntlSeetouch.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/keypadconfig/KeypadConfigPalladiom.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/keypadconfig/KeypadConfigPico.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/keypadconfig/KeypadConfigSeetouch.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/keypadconfig/KeypadConfigTabletopSeetouch.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/protocol/LIPCommand.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/protocol/leap/LeapMessageParser.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/protocol/leap/Request.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/protocol/lip/TargetType.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/radiora/RS232Connection.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/radiora/handler/DimmerHandler.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/radiora/handler/LutronHandler.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/radiora/handler/PhantomButtonHandler.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/radiora/handler/RS232Handler.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/radiora/handler/SwitchHandler.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/radiora/protocol/ButtonPressCommand.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/radiora/protocol/SetDimmerLevelCommand.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/radiora/protocol/SetSwitchLevelCommand.java
bundles/org.openhab.binding.luxom/src/main/java/org/openhab/binding/luxom/internal/handler/LuxomDimmerHandler.java
bundles/org.openhab.binding.luxom/src/main/java/org/openhab/binding/luxom/internal/handler/LuxomThingHandler.java
bundles/org.openhab.binding.luxom/src/main/java/org/openhab/binding/luxom/internal/protocol/LuxomCommunication.java
bundles/org.openhab.binding.luxtronikheatpump/src/main/java/org/openhab/binding/luxtronikheatpump/internal/LuxtronikHeatpumpBindingConstants.java
bundles/org.openhab.binding.luxtronikheatpump/src/main/java/org/openhab/binding/luxtronikheatpump/internal/LuxtronikHeatpumpHandler.java
bundles/org.openhab.binding.luxtronikheatpump/src/main/java/org/openhab/binding/luxtronikheatpump/internal/enums/HeatpumpType.java
bundles/org.openhab.binding.magentatv/src/main/java/org/openhab/binding/magentatv/internal/MagentaTVBindingConstants.java
bundles/org.openhab.binding.magentatv/src/main/java/org/openhab/binding/magentatv/internal/config/MagentaTVDynamicConfig.java
bundles/org.openhab.binding.magentatv/src/main/java/org/openhab/binding/magentatv/internal/discovery/MagentaTVDiscoveryParticipant.java
bundles/org.openhab.binding.magentatv/src/main/java/org/openhab/binding/magentatv/internal/handler/MagentaTVControl.java
bundles/org.openhab.binding.magentatv/src/main/java/org/openhab/binding/magentatv/internal/handler/MagentaTVHandler.java
bundles/org.openhab.binding.magentatv/src/main/java/org/openhab/binding/magentatv/internal/network/MagentaTVHttp.java
bundles/org.openhab.binding.magentatv/src/main/java/org/openhab/binding/magentatv/internal/network/MagentaTVNetwork.java
bundles/org.openhab.binding.magentatv/src/main/java/org/openhab/binding/magentatv/internal/network/MagentaTVNotifyServlet.java
bundles/org.openhab.binding.magentatv/src/main/java/org/openhab/binding/magentatv/internal/network/MagentaTVOAuth.java
bundles/org.openhab.binding.mail/src/3rdparty/java/javax/activation/PatchedMailcapCommandMap.java
bundles/org.openhab.binding.mail/src/main/java/org/openhab/binding/mail/internal/POP3IMAPHandler.java
bundles/org.openhab.binding.mail/src/main/java/org/openhab/binding/mail/internal/SMTPHandler.java
bundles/org.openhab.binding.mail/src/main/java/org/openhab/binding/mail/internal/action/SendMailActions.java
bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/Utils.java
bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/actions/MaxCubeActions.java
bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/actions/MaxDevicesActions.java
bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/command/CCommand.java
bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/command/UdpCubeCommand.java
bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/discovery/MaxCubeBridgeDiscovery.java
bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/discovery/MaxDeviceDiscoveryService.java
bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/handler/MaxDevicesHandler.java
bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/handler/SendCommand.java
bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/message/MessageProcessor.java
bundles/org.openhab.binding.max/src/test/java/org/openhab/binding/max/internal/command/MCommandTest.java
bundles/org.openhab.binding.max/src/test/java/org/openhab/binding/max/internal/message/UtilsTest.java
bundles/org.openhab.binding.mcd/src/main/java/org/openhab/binding/mcd/internal/handler/SensorThingHandler.java
bundles/org.openhab.binding.mcd/src/test/java/org/openhab/binding/mcd/internal/handler/SensorThingHandlerTest.java
bundles/org.openhab.binding.mcp23017/src/main/java/org/openhab/binding/mcp23017/internal/Mcp23017HandlerFactory.java
bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/api/MeaterRestAPI.java
bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/console/MeaterCommandExtension.java
bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/discovery/MeaterDiscoveryService.java
bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/handler/MeaterBridgeHandler.java
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/MelCloudHandlerFactory.java
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/MelCloudConnection.java
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/discovery/MelCloudDiscoveryService.java
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/handler/MelCloudAccountHandler.java
bundles/org.openhab.binding.mercedesme/src/main/java/org/openhab/binding/mercedesme/internal/handler/AccountHandler.java
bundles/org.openhab.binding.mercedesme/src/main/java/org/openhab/binding/mercedesme/internal/handler/VehicleHandler.java
bundles/org.openhab.binding.mercedesme/src/main/java/org/openhab/binding/mercedesme/internal/server/CallbackServer.java
bundles/org.openhab.binding.meteoalerte/src/main/java/org/openhab/binding/meteoalerte/internal/MeteoAlertIconProvider.java
bundles/org.openhab.binding.meteoalerte/src/main/java/org/openhab/binding/meteoalerte/internal/handler/MeteoAlerteHandler.java
bundles/org.openhab.binding.meteoblue/src/main/java/org/openhab/binding/meteoblue/internal/Forecast.java
bundles/org.openhab.binding.meteoblue/src/main/java/org/openhab/binding/meteoblue/internal/MeteoBlueBindingConstants.java
bundles/org.openhab.binding.meteoblue/src/main/java/org/openhab/binding/meteoblue/internal/handler/MeteoBlueBridgeHandler.java
bundles/org.openhab.binding.meteoblue/src/main/java/org/openhab/binding/meteoblue/internal/handler/MeteoBlueHandler.java
bundles/org.openhab.binding.meteostick/src/main/java/org/openhab/binding/meteostick/internal/handler/MeteostickBridgeHandler.java
bundles/org.openhab.binding.meteostick/src/main/java/org/openhab/binding/meteostick/internal/handler/MeteostickEventListener.java
bundles/org.openhab.binding.meteostick/src/main/java/org/openhab/binding/meteostick/internal/handler/MeteostickSensorHandler.java
bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/discovery/MieleApplianceDiscoveryService.java
bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/handler/CoffeeMachineChannelSelector.java
bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/handler/DishwasherChannelSelector.java
bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/handler/DishwasherHandler.java
bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/handler/FridgeChannelSelector.java
bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/handler/FridgeFreezerChannelSelector.java
bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/handler/HobChannelSelector.java
bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/handler/HoodChannelSelector.java
bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/handler/MieleApplianceHandler.java
bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/handler/OvenChannelSelector.java
bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/handler/TumbleDryerChannelSelector.java
bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/handler/WashingMachineChannelSelector.java
bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/handler/WashingMachineHandler.java
bundles/org.openhab.binding.mielecloud/src/main/java/org/openhab/binding/mielecloud/internal/config/ThingsTemplateGenerator.java
bundles/org.openhab.binding.mielecloud/src/main/java/org/openhab/binding/mielecloud/internal/config/servlet/AccountOverviewServlet.java
bundles/org.openhab.binding.mielecloud/src/main/java/org/openhab/binding/mielecloud/internal/discovery/ThingDiscoveryService.java
bundles/org.openhab.binding.mielecloud/src/main/java/org/openhab/binding/mielecloud/internal/discovery/ThingInformationExtractor.java
bundles/org.openhab.binding.mielecloud/src/main/java/org/openhab/binding/mielecloud/internal/handler/AbstractMieleThingHandler.java
bundles/org.openhab.binding.mielecloud/src/main/java/org/openhab/binding/mielecloud/internal/handler/MieleBridgeHandler.java
bundles/org.openhab.binding.mielecloud/src/main/java/org/openhab/binding/mielecloud/internal/handler/channel/ChannelTypeUtil.java
bundles/org.openhab.binding.mielecloud/src/main/java/org/openhab/binding/mielecloud/internal/webservice/DefaultMieleWebservice.java
bundles/org.openhab.binding.mielecloud/src/main/java/org/openhab/binding/mielecloud/internal/webservice/HttpUtil.java
bundles/org.openhab.binding.mielecloud/src/main/java/org/openhab/binding/mielecloud/internal/webservice/api/DeviceState.java
bundles/org.openhab.binding.mielecloud/src/main/java/org/openhab/binding/mielecloud/internal/webservice/api/TransitionState.java
bundles/org.openhab.binding.mielecloud/src/main/java/org/openhab/binding/mielecloud/internal/webservice/retry/AuthorizationFailedRetryStrategy.java
bundles/org.openhab.binding.mielecloud/src/test/java/org/openhab/binding/mielecloud/internal/config/ThingsTemplateGeneratorTest.java
bundles/org.openhab.binding.mielecloud/src/test/java/org/openhab/binding/mielecloud/internal/webservice/DefaultMieleWebserviceTest.java
bundles/org.openhab.binding.mielecloud/src/test/java/org/openhab/binding/mielecloud/internal/webservice/api/ActionsStateTest.java
bundles/org.openhab.binding.mielecloud/src/test/java/org/openhab/binding/mielecloud/internal/webservice/api/DeviceStateTest.java
bundles/org.openhab.binding.mielecloud/src/test/java/org/openhab/binding/mielecloud/internal/webservice/api/json/ActionsCollectionTest.java
bundles/org.openhab.binding.mielecloud/src/test/java/org/openhab/binding/mielecloud/internal/webservice/api/json/ActionsTest.java
bundles/org.openhab.binding.mihome/src/main/java/org/openhab/binding/mihome/internal/discovery/XiaomiBridgeDiscoveryService.java
bundles/org.openhab.binding.mihome/src/main/java/org/openhab/binding/mihome/internal/discovery/XiaomiItemDiscoveryService.java
bundles/org.openhab.binding.mihome/src/main/java/org/openhab/binding/mihome/internal/handler/XiaomiActorGatewayHandler.java
bundles/org.openhab.binding.mihome/src/main/java/org/openhab/binding/mihome/internal/handler/XiaomiBridgeHandler.java
bundles/org.openhab.binding.mihome/src/main/java/org/openhab/binding/mihome/internal/handler/XiaomiDeviceBaseHandler.java
bundles/org.openhab.binding.mihome/src/main/java/org/openhab/binding/mihome/internal/handler/XiaomiSensorMagnetHandler.java
bundles/org.openhab.binding.mihome/src/main/java/org/openhab/binding/mihome/internal/handler/XiaomiSensorMotionHandler.java
bundles/org.openhab.binding.mihome/src/main/java/org/openhab/binding/mihome/internal/socket/XiaomiSocket.java
bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/basic/ActionConditions.java
bundles/org.openhab.binding.mikrotik/src/main/java/org/openhab/binding/mikrotik/internal/config/InterfaceThingConfig.java
bundles/org.openhab.binding.mikrotik/src/main/java/org/openhab/binding/mikrotik/internal/config/RouterosThingConfig.java
bundles/org.openhab.binding.mikrotik/src/main/java/org/openhab/binding/mikrotik/internal/config/WirelessClientThingConfig.java
bundles/org.openhab.binding.mikrotik/src/main/java/org/openhab/binding/mikrotik/internal/handler/MikrotikRouterosBridgeHandler.java
bundles/org.openhab.binding.mikrotik/src/main/java/org/openhab/binding/mikrotik/internal/model/RouterosCapInterface.java
bundles/org.openhab.binding.mikrotik/src/main/java/org/openhab/binding/mikrotik/internal/model/RouterosInterfaceBase.java
bundles/org.openhab.binding.mikrotik/src/main/java/org/openhab/binding/mikrotik/internal/model/RouterosInterfaceType.java
bundles/org.openhab.binding.mikrotik/src/main/java/org/openhab/binding/mikrotik/internal/model/RouterosPPPCliInterface.java
bundles/org.openhab.binding.mikrotik/src/main/java/org/openhab/binding/mikrotik/internal/model/RouterosPPPoECliInterface.java
bundles/org.openhab.binding.mikrotik/src/main/java/org/openhab/binding/mikrotik/internal/model/RouterosRouterboardInfo.java
bundles/org.openhab.binding.milight/src/main/java/org/openhab/binding/milight/internal/discovery/MilightBridgeDiscovery.java
bundles/org.openhab.binding.milight/src/main/java/org/openhab/binding/milight/internal/handler/AbstractLedHandler.java
bundles/org.openhab.binding.milight/src/main/java/org/openhab/binding/milight/internal/handler/MilightV2RGBHandler.java
bundles/org.openhab.binding.milight/src/main/java/org/openhab/binding/milight/internal/handler/MilightV3RGBWHandler.java
bundles/org.openhab.binding.milight/src/main/java/org/openhab/binding/milight/internal/handler/MilightV3WhiteHandler.java
bundles/org.openhab.binding.milight/src/main/java/org/openhab/binding/milight/internal/protocol/MilightV6SessionManager.java
bundles/org.openhab.binding.milight/src/main/java/org/openhab/binding/milight/internal/test/EmulatedV6Bridge.java
bundles/org.openhab.binding.millheat/src/main/java/org/openhab/binding/millheat/internal/dto/GetIndependentDevicesByHomeResponse.java
bundles/org.openhab.binding.millheat/src/main/java/org/openhab/binding/millheat/internal/handler/MillheatAccountHandler.java
bundles/org.openhab.binding.millheat/src/main/java/org/openhab/binding/millheat/internal/handler/MillheatHomeHandler.java
bundles/org.openhab.binding.millheat/src/main/java/org/openhab/binding/millheat/internal/model/MillheatModel.java
bundles/org.openhab.binding.minecraft/src/main/java/org/openhab/binding/minecraft/internal/MinecraftHandlerFactory.java
bundles/org.openhab.binding.minecraft/src/main/java/org/openhab/binding/minecraft/internal/discovery/MinecraftDiscoveryService.java
bundles/org.openhab.binding.minecraft/src/main/java/org/openhab/binding/minecraft/internal/discovery/MinecraftMDNSDiscoveryParticipant.java
bundles/org.openhab.binding.minecraft/src/main/java/org/openhab/binding/minecraft/internal/handler/MinecraftPlayerHandler.java
bundles/org.openhab.binding.minecraft/src/main/java/org/openhab/binding/minecraft/internal/handler/MinecraftSignHandler.java
bundles/org.openhab.binding.modbus.e3dc/src/main/java/org/openhab/binding/modbus/e3dc/internal/handler/E3DCThingHandler.java
bundles/org.openhab.binding.modbus.helioseasycontrols/src/main/java/org/openhab/binding/modbus/helioseasycontrols/internal/HeliosEasyControlsActions.java
bundles/org.openhab.binding.modbus.helioseasycontrols/src/main/java/org/openhab/binding/modbus/helioseasycontrols/internal/HeliosEasyControlsHandler.java
bundles/org.openhab.binding.modbus.helioseasycontrols/src/main/java/org/openhab/binding/modbus/helioseasycontrols/internal/HeliosEasyControlsHandlerFactory.java
bundles/org.openhab.binding.modbus.stiebeleltron/src/main/java/org/openhab/binding/modbus/stiebeleltron/internal/StiebelEltronHandlerFactory.java
bundles/org.openhab.binding.modbus.stiebeleltron/src/main/java/org/openhab/binding/modbus/stiebeleltron/internal/handler/StiebelEltronHandler.java
bundles/org.openhab.binding.modbus.studer/src/main/java/org/openhab/binding/modbus/studer/internal/StuderHandler.java
bundles/org.openhab.binding.modbus.studer/src/main/java/org/openhab/binding/modbus/studer/internal/StuderParser.java
bundles/org.openhab.binding.modbus.sunspec/src/main/java/org/openhab/binding/modbus/sunspec/internal/discovery/SunspecDiscoveryProcess.java
bundles/org.openhab.binding.modbus.sunspec/src/main/java/org/openhab/binding/modbus/sunspec/internal/handler/AbstractSunSpecHandler.java
bundles/org.openhab.binding.modbus/src/main/java/org/openhab/binding/modbus/discovery/internal/ModbusEndpointDiscoveryService.java
bundles/org.openhab.binding.modbus/src/main/java/org/openhab/binding/modbus/handler/BaseModbusThingHandler.java
bundles/org.openhab.binding.modbus/src/main/java/org/openhab/binding/modbus/handler/ModbusPollerThingHandler.java
bundles/org.openhab.binding.modbus/src/main/java/org/openhab/binding/modbus/internal/CascadedValueTransformationImpl.java
bundles/org.openhab.binding.modbus/src/main/java/org/openhab/binding/modbus/internal/SingleValueTransformation.java
bundles/org.openhab.binding.modbus/src/main/java/org/openhab/binding/modbus/internal/handler/ModbusDataThingHandler.java
bundles/org.openhab.binding.modbus/src/main/java/org/openhab/binding/modbus/internal/handler/ModbusSerialThingHandler.java
bundles/org.openhab.binding.modbus/src/main/java/org/openhab/binding/modbus/internal/handler/ModbusTcpThingHandler.java
bundles/org.openhab.binding.modbus/src/main/java/org/openhab/binding/modbus/internal/profiles/ModbusGainOffsetProfile.java
bundles/org.openhab.binding.modbus/src/test/java/org/openhab/binding/modbus/internal/profiles/ModbusGainOffsetProfileTest.java
bundles/org.openhab.binding.monopriceaudio/src/main/java/org/openhab/binding/monopriceaudio/internal/handler/MonopriceAudioHandler.java
bundles/org.openhab.binding.mpd/src/main/java/org/openhab/binding/mpd/internal/MPDHandlerFactory.java
bundles/org.openhab.binding.mpd/src/main/java/org/openhab/binding/mpd/internal/action/MPDActions.java
bundles/org.openhab.binding.mpd/src/main/java/org/openhab/binding/mpd/internal/discovery/MPDDiscoveryParticipant.java
bundles/org.openhab.binding.mpd/src/main/java/org/openhab/binding/mpd/internal/handler/MPDHandler.java
bundles/org.openhab.binding.mpd/src/main/java/org/openhab/binding/mpd/internal/protocol/MPDCommand.java
bundles/org.openhab.binding.mqtt.espmilighthub/src/main/java/org/openhab/binding/mqtt/espmilighthub/internal/handler/EspMilightHubHandler.java
bundles/org.openhab.binding.mqtt.generic/src/main/java/org/openhab/binding/mqtt/generic/mapping/SubscribeFieldToMQTTtopic.java
bundles/org.openhab.binding.mqtt.generic/src/main/java/org/openhab/binding/mqtt/generic/values/ColorValue.java
bundles/org.openhab.binding.mqtt.generic/src/main/java/org/openhab/binding/mqtt/generic/values/DateTimeValue.java
bundles/org.openhab.binding.mqtt.generic/src/main/java/org/openhab/binding/mqtt/generic/values/LocationValue.java
bundles/org.openhab.binding.mqtt.generic/src/main/java/org/openhab/binding/mqtt/generic/values/NumberValue.java
bundles/org.openhab.binding.mqtt.generic/src/main/java/org/openhab/binding/mqtt/generic/values/OnOffValue.java
bundles/org.openhab.binding.mqtt.generic/src/main/java/org/openhab/binding/mqtt/generic/values/OpenCloseValue.java
bundles/org.openhab.binding.mqtt.generic/src/main/java/org/openhab/binding/mqtt/generic/values/PercentageValue.java
bundles/org.openhab.binding.mqtt.generic/src/main/java/org/openhab/binding/mqtt/generic/values/RollershutterValue.java
bundles/org.openhab.binding.mqtt.generic/src/main/java/org/openhab/binding/mqtt/generic/values/Value.java
bundles/org.openhab.binding.mqtt.generic/src/test/java/org/openhab/binding/mqtt/generic/ChannelStateTransformationTests.java
bundles/org.openhab.binding.mqtt.generic/src/test/java/org/openhab/binding/mqtt/generic/internal/handler/GenericThingHandlerTests.java
bundles/org.openhab.binding.mqtt.homeassistant/src/main/java/org/openhab/binding/mqtt/homeassistant/internal/component/AbstractRawSchemaLight.java
bundles/org.openhab.binding.mqtt.homeassistant/src/main/java/org/openhab/binding/mqtt/homeassistant/internal/component/Climate.java
bundles/org.openhab.binding.mqtt.homeassistant/src/main/java/org/openhab/binding/mqtt/homeassistant/internal/component/DefaultSchemaLight.java
bundles/org.openhab.binding.mqtt.homeassistant/src/main/java/org/openhab/binding/mqtt/homeassistant/internal/component/DeviceTrigger.java
bundles/org.openhab.binding.mqtt.homeassistant/src/main/java/org/openhab/binding/mqtt/homeassistant/internal/component/JSONSchemaLight.java
bundles/org.openhab.binding.mqtt.homeassistant/src/main/java/org/openhab/binding/mqtt/homeassistant/internal/config/ChannelConfigurationTypeAdapterFactory.java
bundles/org.openhab.binding.mqtt.homeassistant/src/main/java/org/openhab/binding/mqtt/homeassistant/internal/config/ConnectionDeserializer.java
bundles/org.openhab.binding.mqtt.homeassistant/src/main/java/org/openhab/binding/mqtt/homeassistant/internal/config/ListOrStringDeserializer.java
bundles/org.openhab.binding.mqtt.homeassistant/src/test/java/org/openhab/binding/mqtt/homeassistant/internal/HaIDTests.java
bundles/org.openhab.binding.mqtt.homeassistant/src/test/java/org/openhab/binding/mqtt/homeassistant/internal/component/AlarmControlPanelTests.java
bundles/org.openhab.binding.mqtt.homeassistant/src/test/java/org/openhab/binding/mqtt/homeassistant/internal/component/BinarySensorTests.java
bundles/org.openhab.binding.mqtt.homeassistant/src/test/java/org/openhab/binding/mqtt/homeassistant/internal/component/CameraTests.java
bundles/org.openhab.binding.mqtt.homeassistant/src/test/java/org/openhab/binding/mqtt/homeassistant/internal/component/ClimateTests.java
bundles/org.openhab.binding.mqtt.homeassistant/src/test/java/org/openhab/binding/mqtt/homeassistant/internal/component/CoverTests.java
bundles/org.openhab.binding.mqtt.homeassistant/src/test/java/org/openhab/binding/mqtt/homeassistant/internal/component/DefaultSchemaLightTests.java
bundles/org.openhab.binding.mqtt.homeassistant/src/test/java/org/openhab/binding/mqtt/homeassistant/internal/component/FanTests.java
bundles/org.openhab.binding.mqtt.homeassistant/src/test/java/org/openhab/binding/mqtt/homeassistant/internal/component/JSONSchemaLightTests.java
bundles/org.openhab.binding.mqtt.homeassistant/src/test/java/org/openhab/binding/mqtt/homeassistant/internal/component/LockTests.java
bundles/org.openhab.binding.mqtt.homeassistant/src/test/java/org/openhab/binding/mqtt/homeassistant/internal/component/SensorTests.java
bundles/org.openhab.binding.mqtt.homeassistant/src/test/java/org/openhab/binding/mqtt/homeassistant/internal/component/SwitchTests.java
bundles/org.openhab.binding.mqtt.homeassistant/src/test/java/org/openhab/binding/mqtt/homeassistant/internal/component/VacuumTests.java
bundles/org.openhab.binding.mqtt.homie/src/main/java/org/openhab/binding/mqtt/homie/internal/discovery/Homie300Discovery.java
bundles/org.openhab.binding.mqtt.homie/src/main/java/org/openhab/binding/mqtt/homie/internal/handler/HomieThingHandler.java
bundles/org.openhab.binding.mqtt.homie/src/main/java/org/openhab/binding/mqtt/homie/internal/homie300/Property.java
bundles/org.openhab.binding.mqtt.ruuvigateway/src/main/java/org/openhab/binding/mqtt/ruuvigateway/internal/parser/GatewayPayloadParser.java
bundles/org.openhab.binding.mqtt.ruuvigateway/src/test/java/org/openhab/binding/mqtt/ruuvigateway/internal/discovery/RuuviGatewayDiscoveryTests.java
bundles/org.openhab.binding.mqtt.ruuvigateway/src/test/java/org/openhab/binding/mqtt/ruuvigateway/internal/parser/GatewayPayloadParserTests.java
bundles/org.openhab.binding.mqtt/src/main/java/org/openhab/binding/mqtt/handler/AbstractBrokerHandler.java
bundles/org.openhab.binding.mqtt/src/main/java/org/openhab/binding/mqtt/internal/MqttThingID.java
bundles/org.openhab.binding.mybmw/src/main/java/org/openhab/binding/mybmw/internal/MyBMWHandlerFactory.java
bundles/org.openhab.binding.mybmw/src/main/java/org/openhab/binding/mybmw/internal/discovery/VehicleDiscovery.java
bundles/org.openhab.binding.mybmw/src/main/java/org/openhab/binding/mybmw/internal/handler/MyBMWBridgeHandler.java
bundles/org.openhab.binding.mybmw/src/main/java/org/openhab/binding/mybmw/internal/handler/MyBMWProxy.java
bundles/org.openhab.binding.mybmw/src/main/java/org/openhab/binding/mybmw/internal/handler/VehicleHandler.java
bundles/org.openhab.binding.mybmw/src/main/java/org/openhab/binding/mybmw/internal/utils/Converter.java
bundles/org.openhab.binding.mybmw/src/main/java/org/openhab/binding/mybmw/internal/utils/VehicleStatusUtils.java
bundles/org.openhab.binding.mybmw/src/test/java/org/openhab/binding/mybmw/internal/dto/StatusWrapper.java
bundles/org.openhab.binding.mybmw/src/test/java/org/openhab/binding/mybmw/internal/handler/AuthTest.java
bundles/org.openhab.binding.mybmw/src/test/java/org/openhab/binding/mybmw/internal/util/FileReader.java
bundles/org.openhab.binding.mycroft/src/main/java/org/openhab/binding/mycroft/internal/api/MycroftConnection.java
bundles/org.openhab.binding.mycroft/src/main/java/org/openhab/binding/mycroft/internal/channels/AudioPlayerChannel.java
bundles/org.openhab.binding.mycroft/src/main/java/org/openhab/binding/mycroft/internal/channels/MuteChannel.java
bundles/org.openhab.binding.mycroft/src/main/java/org/openhab/binding/mycroft/internal/channels/VolumeChannel.java
bundles/org.openhab.binding.mycroft/src/test/java/org/openhab/binding/mycroft/internal/api/MycroftConnectionTest.java
bundles/org.openhab.binding.mynice/src/main/java/org/openhab/binding/mynice/internal/xml/dto/Authentication.java
bundles/org.openhab.binding.mynice/src/main/java/org/openhab/binding/mynice/internal/xml/dto/Device.java
bundles/org.openhab.binding.mynice/src/main/java/org/openhab/binding/mynice/internal/xml/dto/Properties.java
bundles/org.openhab.binding.myq/src/main/java/org/openhab/binding/myq/internal/MyQDiscoveryService.java
bundles/org.openhab.binding.myq/src/main/java/org/openhab/binding/myq/internal/handler/MyQAccountHandler.java
bundles/org.openhab.binding.myq/src/main/java/org/openhab/binding/myq/internal/handler/MyQGarageDoorHandler.java
bundles/org.openhab.binding.mystrom/src/main/java/org/openhab/binding/mystrom/internal/MyStromBulbHandler.java

index 6673fa4c2792b44c140277bb134e9ff1b6e9363c..c9ff2142336e8e2f4db18a2bd09c0a94eadd2c5a 100644 (file)
@@ -82,11 +82,9 @@ public class HaasSohnpelletstoveHandler extends BaseThingHandler {
                 updateOvenData(postData);
             }
         } else if (channelUID.getId().equals(CHANNELSPTEMP)) {
-            if (command instanceof QuantityType<?>) {
-                QuantityType<?> value = (QuantityType<?>) command;
-
+            if (command instanceof QuantityType<?> quantityCommand) {
                 Unit<Temperature> unit = SIUnits.CELSIUS;
-                value = value.toUnit(unit);
+                QuantityType<?> value = quantityCommand.toUnit(unit);
                 if (value != null) {
                     double a = value.doubleValue();
                     String postdata = "{\"sp_temp\":" + a + "}";
index 7907b868568eeb8dbcd8d22300356c59ad7b727e..7cfa0b3b994b88e2d6e47ea0c9e512c6f10bc5dd 100644 (file)
@@ -38,8 +38,7 @@ public class MD5Utils {
         } catch (NoSuchAlgorithmException e) {
             throw new IllegalArgumentException(e);
         }
-        byte[] result = md.digest(input);
-        return result;
+        return md.digest(input);
     }
 
     private static String bytesToHex(byte[] bytes) {
index a13ce2afbc1cab00f0567a6c88808048da8c9cfd..e8f688e5ad5b0e8910014cdca72c597e2df11c34 100644 (file)
@@ -15,7 +15,6 @@ package org.openhab.binding.harmonyhub.internal.handler;
 import static org.openhab.binding.harmonyhub.internal.HarmonyHubBindingConstants.*;
 
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Set;
@@ -65,7 +64,7 @@ public class HarmonyDeviceHandler extends BaseThingHandler {
 
     private final Logger logger = LoggerFactory.getLogger(HarmonyDeviceHandler.class);
 
-    public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Collections.singleton(HARMONY_DEVICE_THING_TYPE);
+    public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Set.of(HARMONY_DEVICE_THING_TYPE);
 
     private final HarmonyHubDynamicTypeProvider typeProvider;
 
index e015f3854f7f59ad97f6e92cac28d54f489be925..4138b8231ab8366d3bde9c8dfc34b4f85ab284b2 100644 (file)
@@ -126,9 +126,9 @@ public class HarmonyHubHandler extends BaseBridgeHandler implements HarmonyClien
 
         switch (channel.getUID().getId()) {
             case CHANNEL_CURRENT_ACTIVITY:
-                if (command instanceof DecimalType) {
+                if (command instanceof DecimalType decimalCommand) {
                     try {
-                        client.startActivity(((DecimalType) command).intValue());
+                        client.startActivity(decimalCommand.intValue());
                     } catch (Exception e) {
                         logger.warn("Could not start activity", e);
                     }
index 7646e87fc96a8ee909d8ac7c8e98b97f244beff3..6a434b097e240135cb8d828a3a10de23806e5eae 100644 (file)
@@ -174,11 +174,13 @@ public class HaywardBindingConstants {
     // Hayward Command html
     public static final String COMMAND_PARAMETERS = "<?xml version=\"1.0\" encoding=\"utf-8\"?><Request>";
 
-    public static final String COMMAND_SCHEDULE = "<Parameter name=\"IsCountDownTimer\" dataType=\"bool\">false</Parameter>"
-            + "<Parameter name=\"StartTimeHours\" dataType=\"int\">0</Parameter>"
-            + "<Parameter name=\"StartTimeMinutes\" dataType=\"int\">0</Parameter>"
-            + "<Parameter name=\"EndTimeHours\" dataType=\"int\">0</Parameter>"
-            + "<Parameter name=\"EndTimeMinutes\" dataType=\"int\">0</Parameter>"
-            + "<Parameter name=\"DaysActive\" dataType=\"int\">0</Parameter>"
-            + "<Parameter name=\"Recurring\" dataType=\"bool\">false</Parameter>";
+    public static final String COMMAND_SCHEDULE = """
+            <Parameter name="IsCountDownTimer" dataType="bool">false</Parameter>\
+            <Parameter name="StartTimeHours" dataType="int">0</Parameter>\
+            <Parameter name="StartTimeMinutes" dataType="int">0</Parameter>\
+            <Parameter name="EndTimeHours" dataType="int">0</Parameter>\
+            <Parameter name="EndTimeMinutes" dataType="int">0</Parameter>\
+            <Parameter name="DaysActive" dataType="int">0</Parameter>\
+            <Parameter name="Recurring" dataType="bool">false</Parameter>\
+            """;
 }
index 0266686bc00d97fca7f6bbeeec6ec98e95ba1206..48db232cad3713fc52de45e793e932453fdf579d 100644 (file)
@@ -93,7 +93,7 @@ public abstract class HaywardThingHandler extends BaseThingHandler {
                 if (bridge != null) {
                     HaywardBridgeHandler bridgehandler = (HaywardBridgeHandler) bridge.getHandler();
                     if (bridgehandler != null) {
-                        if (bridgehandler.account.units.equals("Standard")) {
+                        if ("Standard".equals(bridgehandler.account.units)) {
                             return new QuantityType<>(Integer.parseInt(value), ImperialUnits.FAHRENHEIT);
                         } else {
                             return new QuantityType<>(Integer.parseInt(value), SIUnits.CELSIUS);
@@ -112,10 +112,10 @@ public abstract class HaywardThingHandler extends BaseThingHandler {
             return "0";
         } else if (command == OnOffType.ON) {
             return "1";
-        } else if (command instanceof DecimalType) {
-            return ((DecimalType) command).toString();
-        } else if (command instanceof QuantityType) {
-            return ((QuantityType<?>) command).format("%1.0f");
+        } else if (command instanceof DecimalType decimalCommand) {
+            return decimalCommand.toString();
+        } else if (command instanceof QuantityType quantityCommand) {
+            return quantityCommand.format("%1.0f");
         } else {
             return command.toString();
         }
index 568d36c0517ed6e5b20802754a59ec96127ef22a..84c34f15acd69b1503f555db865b35587325ffce 100644 (file)
@@ -349,8 +349,8 @@ public class HaywardDiscoveryService extends AbstractDiscoveryService implements
 
     @Override
     public void setThingHandler(@Nullable ThingHandler handler) {
-        if (handler instanceof HaywardBridgeHandler) {
-            this.discoveryBridgehandler = (HaywardBridgeHandler) handler;
+        if (handler instanceof HaywardBridgeHandler bridgeHandler) {
+            this.discoveryBridgehandler = bridgeHandler;
         }
     }
 
index c28577c3744d0dc32539c4ce4268a931c6b9dfab..ab1790210311a05e189f6e794c40e155d5a54897 100644 (file)
@@ -83,10 +83,12 @@ public class HaywardBackyardHandler extends HaywardThingHandler {
             HaywardBridgeHandler bridgehandler = (HaywardBridgeHandler) bridge.getHandler();
             if (bridgehandler != null) {
                 // *****Request Alarm List from Hayward server
-                String urlParameters = "<?xml version=\"1.0\" encoding=\"utf-8\"?><Request><Name>GetAlarmList</Name><Parameters>"
-                        + "<Parameter name=\"Token\" dataType=\"String\">" + bridgehandler.account.token
-                        + "</Parameter>" + "<Parameter name=\"MspSystemID\" dataType=\"int\">"
-                        + bridgehandler.account.mspSystemID + "</Parameter>"
+                String urlParameters = """
+                        <?xml version="1.0" encoding="utf-8"?><Request><Name>GetAlarmList</Name><Parameters>\
+                        <Parameter name="Token" dataType="String">\
+                        """ + bridgehandler.account.token + "</Parameter>"
+                        + "<Parameter name=\"MspSystemID\" dataType=\"int\">" + bridgehandler.account.mspSystemID
+                        + "</Parameter>"
                         + "<Parameter name=\"CultureInfoName\" dataType=\"String\">en-us</Parameter></Parameters></Request>";
 
                 try {
index 51b7097a0ccba44bd377d4efefef160f85f0f7e4..fd09bddf0e9d6832ff8ec87ccd9ebed291ff7bbf 100644 (file)
@@ -15,9 +15,9 @@ package org.openhab.binding.haywardomnilogic.internal.handler;
 import java.io.StringReader;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
@@ -82,7 +82,7 @@ public class HaywardBridgeHandler extends BaseBridgeHandler {
 
     @Override
     public Collection<Class<? extends ThingHandlerService>> getServices() {
-        return Collections.singleton(HaywardDiscoveryService.class);
+        return Set.of(HaywardDiscoveryService.class);
     }
 
     public HaywardBridgeHandler(HaywardDynamicStateDescriptionProvider stateDescriptionProvider, Bridge bridge,
@@ -191,10 +191,12 @@ public class HaywardBridgeHandler extends BaseBridgeHandler {
         String status;
 
         // *****Login to Hayward server
-        String urlParameters = "<?xml version=\"1.0\" encoding=\"utf-8\"?><Request>" + "<Name>Login</Name><Parameters>"
-                + "<Parameter name=\"UserName\" dataType=\"String\">" + config.username + "</Parameter>"
-                + "<Parameter name=\"Password\" dataType=\"String\">" + config.password + "</Parameter>"
-                + "</Parameters></Request>";
+        String urlParameters = """
+                <?xml version="1.0" encoding="utf-8"?><Request>\
+                <Name>Login</Name><Parameters>\
+                <Parameter name="UserName" dataType="String">\
+                """ + config.username + "</Parameter>" + "<Parameter name=\"Password\" dataType=\"String\">"
+                + config.password + "</Parameter>" + "</Parameters></Request>";
 
         xmlResponse = httpXmlResponse(urlParameters);
 
@@ -219,9 +221,11 @@ public class HaywardBridgeHandler extends BaseBridgeHandler {
         String xmlResponse;
 
         // *****getApiDef from Hayward server
-        String urlParameters = "<?xml version=\"1.0\" encoding=\"utf-8\"?><Request><Name>GetAPIDef</Name><Parameters>"
-                + "<Parameter name=\"Token\" dataType=\"String\">" + account.token + "</Parameter>"
-                + "<Parameter name=\"MspSystemID\" dataType=\"int\">" + account.mspSystemID + "</Parameter>;"
+        String urlParameters = """
+                <?xml version="1.0" encoding="utf-8"?><Request><Name>GetAPIDef</Name><Parameters>\
+                <Parameter name="Token" dataType="String">\
+                """ + account.token + "</Parameter>" + "<Parameter name=\"MspSystemID\" dataType=\"int\">"
+                + account.mspSystemID + "</Parameter>;"
                 + "<Parameter name=\"Version\" dataType=\"string\">0.4</Parameter >\r\n"
                 + "<Parameter name=\"Language\" dataType=\"string\">en</Parameter >\r\n" + "</Parameters></Request>";
 
@@ -239,9 +243,10 @@ public class HaywardBridgeHandler extends BaseBridgeHandler {
         String status;
 
         // *****Get MSP
-        String urlParameters = "<?xml version=\"1.0\" encoding=\"utf-8\"?><Request><Name>GetSiteList</Name><Parameters>"
-                + "<Parameter name=\"Token\" dataType=\"String\">" + account.token
-                + "</Parameter><Parameter name=\"UserID\" dataType=\"String\">" + account.userID
+        String urlParameters = """
+                <?xml version="1.0" encoding="utf-8"?><Request><Name>GetSiteList</Name><Parameters>\
+                <Parameter name="Token" dataType="String">\
+                """ + account.token + "</Parameter><Parameter name=\"UserID\" dataType=\"String\">" + account.userID
                 + "</Parameter></Parameters></Request>";
 
         xmlResponse = httpXmlResponse(urlParameters);
@@ -269,10 +274,11 @@ public class HaywardBridgeHandler extends BaseBridgeHandler {
 
     public synchronized String getMspConfig() throws HaywardException, InterruptedException {
         // *****getMspConfig from Hayward server
-        String urlParameters = "<?xml version=\"1.0\" encoding=\"utf-8\"?><Request><Name>GetMspConfigFile</Name><Parameters>"
-                + "<Parameter name=\"Token\" dataType=\"String\">" + account.token + "</Parameter>"
-                + "<Parameter name=\"MspSystemID\" dataType=\"int\">" + account.mspSystemID
-                + "</Parameter><Parameter name=\"Version\" dataType=\"string\">0</Parameter>\r\n"
+        String urlParameters = """
+                <?xml version="1.0" encoding="utf-8"?><Request><Name>GetMspConfigFile</Name><Parameters>\
+                <Parameter name="Token" dataType="String">\
+                """ + account.token + "</Parameter>" + "<Parameter name=\"MspSystemID\" dataType=\"int\">"
+                + account.mspSystemID + "</Parameter><Parameter name=\"Version\" dataType=\"string\">0</Parameter>\r\n"
                 + "</Parameters></Request>";
 
         String xmlResponse = httpXmlResponse(urlParameters);
@@ -312,10 +318,11 @@ public class HaywardBridgeHandler extends BaseBridgeHandler {
 
     public synchronized boolean getTelemetryData() throws HaywardException, InterruptedException {
         // *****getTelemetry from Hayward server
-        String urlParameters = "<?xml version=\"1.0\" encoding=\"utf-8\"?><Request><Name>GetTelemetryData</Name><Parameters>"
-                + "<Parameter name=\"Token\" dataType=\"String\">" + account.token + "</Parameter>"
-                + "<Parameter name=\"MspSystemID\" dataType=\"int\">" + account.mspSystemID
-                + "</Parameter></Parameters></Request>";
+        String urlParameters = """
+                <?xml version="1.0" encoding="utf-8"?><Request><Name>GetTelemetryData</Name><Parameters>\
+                <Parameter name="Token" dataType="String">\
+                """ + account.token + "</Parameter>" + "<Parameter name=\"MspSystemID\" dataType=\"int\">"
+                + account.mspSystemID + "</Parameter></Parameters></Request>";
 
         String xmlResponse = httpXmlResponse(urlParameters);
 
index ef15ceb907d2c71dcac116a2b59378eb33399a57..35271515eb7b9ea3ce1adc8d7640dd83898cca7c 100644 (file)
@@ -90,7 +90,7 @@ public class HaywardChlorinatorHandler extends HaywardThingHandler {
                         data = bridgehandler.evaluateXPath("//Chlorinator/@status", xmlResponse);
                         updateData(HaywardBindingConstants.CHANNEL_CHLORINATOR_STATUS, data.get(i));
 
-                        if (data.get(i).equals("0")) {
+                        if ("0".equals(data.get(i))) {
                             updateData(HaywardBindingConstants.CHANNEL_CHLORINATOR_ENABLE, "0");
                             // chlorState is used to set the chlorinator cfgState in the timedPercent command
                             this.chlorState = "2";
index 861431665a2e5a62ae745ea31753448ab7eade60..a1681db19898c26054203857bd36ba518d27c841 100644 (file)
@@ -60,7 +60,7 @@ public class HaywardColorLogicHandler extends HaywardThingHandler {
                         data = bridgehandler.evaluateXPath("//ColorLogic-Light/@lightState", xmlResponse);
                         updateData(HaywardBindingConstants.CHANNEL_COLORLOGIC_LIGHTSTATE, data.get(i));
 
-                        if (data.get(i).equals("0")) {
+                        if ("0".equals(data.get(i))) {
                             updateData(HaywardBindingConstants.CHANNEL_COLORLOGIC_ENABLE, "0");
                         } else {
                             updateData(HaywardBindingConstants.CHANNEL_COLORLOGIC_ENABLE, "1");
index c4eb8ccba247673afde3cb83acf30ccdcccfef1b..45dcc0ab1d404efef020a232a3cc43dec8d9673e 100644 (file)
@@ -154,7 +154,7 @@ public class HaywardFilterHandler extends HaywardThingHandler {
                             updateData(HaywardBindingConstants.CHANNEL_FILTER_SPEEDRPM, rpmSpeed.toString());
                         }
 
-                        if (data.get(i).equals("0")) {
+                        if ("0".equals(data.get(i))) {
                             updateData(HaywardBindingConstants.CHANNEL_FILTER_ENABLE, "0");
                         } else {
                             updateData(HaywardBindingConstants.CHANNEL_FILTER_ENABLE, "1");
index 1b2b582132a1869c36349e35eea8ead1348a17b5..3ceca8361899ffc3877a92e8b87d1da733849f7f 100644 (file)
@@ -58,7 +58,7 @@ public class HaywardHeaterHandler extends HaywardThingHandler {
 
                         // Enable
                         data = bridgehandler.evaluateXPath("//Heater/@enable", xmlResponse);
-                        if (data.get(i).equals("0")) {
+                        if ("0".equals(data.get(i))) {
                             updateData(HaywardBindingConstants.CHANNEL_HEATER_ENABLE, "0");
                         } else {
                             updateData(HaywardBindingConstants.CHANNEL_HEATER_ENABLE, "1");
index d89e5298de237d2948133fdfd31f57fa8278315d..fb9e6b61c76794f8b8f1428f0559283f282f90cc 100644 (file)
@@ -150,7 +150,7 @@ public class HaywardPumpHandler extends HaywardThingHandler {
                             updateData(HaywardBindingConstants.CHANNEL_PUMP_SPEEDRPM, rpmSpeed.toString());
                         }
 
-                        if (data.get(i).equals("0")) {
+                        if ("0".equals(data.get(i))) {
                             updateData(HaywardBindingConstants.CHANNEL_PUMP_ENABLE, "0");
                         } else {
                             updateData(HaywardBindingConstants.CHANNEL_PUMP_ENABLE, "1");
index 3698b59e10e592bcbb93f5ec7345261785a57c70..8601fbfa501a6d732916ed953b52aea997ee907e 100644 (file)
@@ -95,9 +95,9 @@ public class HaywardVirtualHeaterHandler extends HaywardThingHandler {
                         updateData(HaywardBindingConstants.CHANNEL_VIRTUALHEATER_CURRENTSETPOINT, data.get(i));
 
                         data = bridgehandler.evaluateXPath("//VirtualHeater/@enable", xmlResponse);
-                        if (data.get(i).equals("yes")) {
+                        if ("yes".equals(data.get(i))) {
                             updateData(HaywardBindingConstants.CHANNEL_VIRTUALHEATER_ENABLE, "1");
-                        } else if (data.get(i).equals("no")) {
+                        } else if ("no".equals(data.get(i))) {
                             updateData(HaywardBindingConstants.CHANNEL_VIRTUALHEATER_ENABLE, "0");
                         }
                     }
index 6a9ea917a9bb61df49852b8f2db3315d97c3d52f..093bb1a7ae8abf2511992e16e762bac32e3f2571 100644 (file)
@@ -14,7 +14,6 @@ package org.openhab.binding.hccrubbishcollection.internal;
 
 import static org.openhab.binding.hccrubbishcollection.internal.HCCRubbishCollectionBindingConstants.*;
 
-import java.util.Collections;
 import java.util.Set;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
@@ -41,7 +40,7 @@ import org.osgi.service.component.annotations.Reference;
 public class HCCRubbishCollectionHandlerFactory extends BaseThingHandlerFactory {
 
     private final HttpClient httpClient;
-    private static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Collections.singleton(THING_TYPE_COLLECTION);
+    private static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Set.of(THING_TYPE_COLLECTION);
 
     @Activate
     public HCCRubbishCollectionHandlerFactory(final @Reference HttpClientFactory httpClientFactory) {
index a29c53d43c7ef5b6a75256ea517314029b6d5b7f..536c673f8e76dab543d5eebe830bcda8709c499c 100644 (file)
@@ -143,7 +143,7 @@ public class Mhub4K431Handler extends BaseThingHandler {
 
                 String content = "{CMD=";
                 content = content + command.toString() + "B";
-                content = content + String.valueOf(outputPort) + ".";
+                content = content + outputPort + ".";
 
                 InputStream stream = new ByteArrayInputStream(content.getBytes(StandardCharsets.UTF_8));
 
index 561500604ca7959f7296ab2d9a0c98a4b2d49e09..6ab58a7480267f427dd937700b6947ff9a27b90b 100644 (file)
@@ -114,11 +114,11 @@ public class MultiroomPlusHandler extends BaseThingHandler {
                 String httpMethod = "GET";
                 String url = "http://" + host + "/switch.cgi?command=3&data0=";
 
-                url = url + String.valueOf(outputPort) + "&data1=";
+                url = url + outputPort + "&data1=";
                 url = url + command.toString() + "&checksum=";
 
                 int checksum = 3 + outputPort + sourcePort;
-                url = url + String.valueOf(checksum);
+                url = url + checksum;
 
                 try {
                     HttpUtil.executeUrl(httpMethod, url, null, null, null, timeout);
index 1ee0b0bcf95f7e603fc4c9cb65909b1d8efba676..afc5cae81cedacc421499d8e17f76820815e65cc 100644 (file)
@@ -422,7 +422,7 @@ public class GatewayWebTargets implements Closeable, HostnameVerifier {
      * @throws HubProcessingException if any error occurs.
      */
     public void stopShade(int shadeId) throws HubProcessingException {
-        invoke(HttpMethod.PUT, shadeStop, Query.of(IDS, Integer.valueOf(shadeId).toString()), null);
+        invoke(HttpMethod.PUT, shadeStop, Query.of(IDS, Integer.toString(shadeId)), null);
     }
 
     /**
index a29e7766e726778898cf497d9a231786d73c588b..5d5b9fd2900640b54e1a031db739d6e6c04e9df7 100644 (file)
@@ -147,10 +147,8 @@ public class AutomationChannelBuilder extends BaseChannelBuilder {
         String label = getScheduledEventName(referencedName, scheduledEvent);
         String description = translationProvider.getText("dynamic-channel.automation-enabled.description",
                 referencedName);
-        Channel channel = ChannelBuilder.create(channelUid, CoreItemFactory.SWITCH).withType(channelTypeUid)
-                .withLabel(label).withDescription(description).build();
-
-        return channel;
+        return ChannelBuilder.create(channelUid, CoreItemFactory.SWITCH).withType(channelTypeUid).withLabel(label)
+                .withDescription(description).build();
     }
 
     private @Nullable String getReferencedSceneOrSceneCollectionName(ScheduledEvent scheduledEvent) {
index 3a257db258217d8fea0dcd89757c4e3ca84612aa..b58a1841879022b85f9d3b0902dcd9e1b2b1b7d7 100644 (file)
@@ -67,9 +67,9 @@ public class HDPowerViewCommandExtension extends AbstractConsoleCommandExtension
 
         for (Thing thing : thingRegistry.getAll()) {
             ThingHandler thingHandler = thing.getHandler();
-            if (thingHandler instanceof HDPowerViewHubHandler) {
+            if (thingHandler instanceof HDPowerViewHubHandler hubHandler) {
                 console.println("Generation 1/2 API hub: " + thing.getLabel());
-                HDPowerViewWebTargets webTargets = ((HDPowerViewHubHandler) thingHandler).getWebTargets();
+                HDPowerViewWebTargets webTargets = hubHandler.getWebTargets();
 
                 try {
                     List<ShadeData> shades = webTargets.getShades().shadeData;
@@ -90,9 +90,9 @@ public class HDPowerViewCommandExtension extends AbstractConsoleCommandExtension
                 } catch (HubException e) {
                     console.println("Error retrieving ID's: " + e.getMessage());
                 }
-            } else if (thingHandler instanceof GatewayBridgeHandler) {
+            } else if (thingHandler instanceof GatewayBridgeHandler gatewayHandler) {
                 console.println("Generation 3 API gateway: " + thing.getLabel());
-                GatewayWebTargets webTargets = ((GatewayBridgeHandler) thingHandler).getWebTargets();
+                GatewayWebTargets webTargets = gatewayHandler.getWebTargets();
 
                 try {
                     List<Shade> shades = webTargets.getShades();
index 70dd23308813a5b5f5553bfc5d54e86f5e8f63dc..bae6a23599d6a44a94c4b94e3ef1b724d0e5dc4e 100644 (file)
@@ -418,9 +418,9 @@ public class ShadeCapabilitiesDatabase {
      * @param propertyValue
      */
     public void logPropertyMismatch(String propertyKey, int type, int capabilities, boolean propertyValue) {
-        logger.warn(
-                "The '{}:{}' property actually reported by shade 'type:{}' is different "
-                        + "than expected from its 'capabilities:{}' in the database!{}",
-                propertyKey, propertyValue, type, capabilities, REQUEST_DEVELOPERS_TO_UPDATE);
+        logger.warn("""
+                The '{}:{}' property actually reported by shade 'type:{}' is different \
+                than expected from its 'capabilities:{}' in the database!{}\
+                """, propertyKey, propertyValue, type, capabilities, REQUEST_DEVELOPERS_TO_UPDATE);
     }
 }
index c8c1b83128eb95a49233cd6fdbe86a92b897608e..25f852ff80cd7637c50c6b599f31f55dae198a65 100644 (file)
@@ -12,8 +12,8 @@
  */
 package org.openhab.binding.hdpowerview.internal.discovery;
 
-import java.util.Collections;
 import java.util.List;
+import java.util.Set;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
 
@@ -55,7 +55,7 @@ public class HDPowerViewDeviceDiscoveryService extends AbstractDiscoveryService
     private final ShadeCapabilitiesDatabase db = new ShadeCapabilitiesDatabase();
 
     public HDPowerViewDeviceDiscoveryService(HDPowerViewHubHandler hub) {
-        super(Collections.singleton(HDPowerViewBindingConstants.THING_TYPE_SHADE), 60, true);
+        super(Set.of(HDPowerViewBindingConstants.THING_TYPE_SHADE), 60, true);
         this.hub = hub;
         this.scanner = createScanner();
     }
index a4c98977e0d4f360f1df38e9aa0e67733dfcb0eb..fdb94b7d81b5e4ccf684da2be000a0b30aa0e552 100644 (file)
@@ -14,7 +14,6 @@ package org.openhab.binding.hdpowerview.internal.discovery;
 
 import static org.openhab.binding.hdpowerview.internal.HDPowerViewBindingConstants.*;
 
-import java.util.Collections;
 import java.util.Set;
 
 import javax.jmdns.ServiceInfo;
@@ -46,7 +45,7 @@ public class HDPowerViewHubDiscoveryParticipant implements MDNSDiscoveryParticip
 
     @Override
     public Set<ThingTypeUID> getSupportedThingTypeUIDs() {
-        return Collections.singleton(THING_TYPE_HUB);
+        return Set.of(THING_TYPE_HUB);
     }
 
     @Override
index 6defbf71a93d82d7332d09a0e138beb613cf77bd..d5a77b4f7b24b4abd1d7106829ba0bf4a2614ae5 100644 (file)
@@ -15,7 +15,7 @@ package org.openhab.binding.hdpowerview.internal.discovery;
 import static org.openhab.binding.hdpowerview.internal.HDPowerViewBindingConstants.*;
 
 import java.net.UnknownHostException;
-import java.util.Collections;
+import java.util.Set;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
 
@@ -48,7 +48,7 @@ public class HDPowerViewHubDiscoveryService extends AbstractDiscoveryService {
     private @Nullable ScheduledFuture<?> backgroundFuture;
 
     public HDPowerViewHubDiscoveryService() {
-        super(Collections.singleton(THING_TYPE_HUB), 60, true);
+        super(Set.of(THING_TYPE_HUB), 60, true);
         scanner = createScanner();
     }
 
index 80ae30968d61032f334ebee3cbe13e5a5d736f0f..f6b4ba186c6706782a317bdf70673adb04f94294 100644 (file)
@@ -12,7 +12,7 @@
  */
 package org.openhab.binding.hdpowerview.internal.discovery;
 
-import java.util.Collections;
+import java.util.Set;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
 
@@ -44,7 +44,7 @@ public class ShadeDiscoveryService extends AbstractDiscoveryService {
     private @Nullable ScheduledFuture<?> backgroundFuture;
 
     public ShadeDiscoveryService(GatewayBridgeHandler hub) {
-        super(Collections.singleton(HDPowerViewBindingConstants.THING_TYPE_SHADE3), 60, true);
+        super(Set.of(HDPowerViewBindingConstants.THING_TYPE_SHADE3), 60, true);
         this.hub = hub;
         this.scanner = createScanner();
     }
index 1c536dea8570e9838b9d6db9fc325237e0881a26..8f8b250b8f4c0cae795a3f0659439f20e282b6a7 100644 (file)
@@ -85,8 +85,8 @@ public class ShadePosition {
                 if (shadeCapabilities.supportsPrimary() && shadeCapabilities.supportsSecondary()) {
                     // on dual rail shades constrain percent to not move the lower rail above the upper
                     State secondary = getState(shadeCapabilities, SECONDARY_POSITION);
-                    if (secondary instanceof PercentType) {
-                        int secPercent = ((PercentType) secondary).intValue();
+                    if (secondary instanceof PercentType percentCommand) {
+                        int secPercent = percentCommand.intValue();
                         if (percent < secPercent) {
                             percent = secPercent;
                         }
@@ -221,8 +221,8 @@ public class ShadePosition {
                 if (shadeCapabilities.supportsPrimary() && shadeCapabilities.supportsSecondary()) {
                     // on dual rail shades constrain percent to not move the upper rail below the lower
                     State primary = getState(shadeCapabilities, PRIMARY_POSITION);
-                    if (primary instanceof PercentType) {
-                        int primaryPercent = ((PercentType) primary).intValue();
+                    if (primary instanceof PercentType percentCommand) {
+                        int primaryPercent = percentCommand.intValue();
                         if (percent > primaryPercent) {
                             percent = primaryPercent;
                         }
index b8c01af68f49769078d2e125db9080dd94bd986f..e1bc5aecaf705dac41e72c20ea2315526c5f8381 100644 (file)
@@ -88,8 +88,8 @@ public class GatewayBridgeHandler extends BaseBridgeHandler {
 
     @Override
     public void childHandlerInitialized(ThingHandler childHandler, Thing childThing) {
-        if (childHandler instanceof ShadeThingHandler) {
-            refreshShade(((ShadeThingHandler) childHandler).getShadeId());
+        if (childHandler instanceof ShadeThingHandler shadeThingHandler) {
+            refreshShade(shadeThingHandler.getShadeId());
         }
     }
 
index 68065587dc15f63bae332531ebdfbd9a74c0d0ea..f688e371d9d65cec1e0c85011aa2b98e04a22e86 100644 (file)
@@ -601,8 +601,8 @@ public class HDPowerViewHubHandler extends BaseBridgeHandler {
                 continue;
             }
             ThingHandler handler = thing.getHandler();
-            if (handler instanceof HDPowerViewShadeHandler) {
-                ((HDPowerViewShadeHandler) handler).requestRefreshShadePosition();
+            if (handler instanceof HDPowerViewShadeHandler shadeHandler) {
+                shadeHandler.requestRefreshShadePosition();
             } else {
                 int shadeId = item.getValue();
                 logger.debug("Shade '{}' handler not initialized", shadeId);
@@ -620,8 +620,8 @@ public class HDPowerViewHubHandler extends BaseBridgeHandler {
                 continue;
             }
             ThingHandler handler = thing.getHandler();
-            if (handler instanceof HDPowerViewShadeHandler) {
-                ((HDPowerViewShadeHandler) handler).requestRefreshShadeBatteryLevel();
+            if (handler instanceof HDPowerViewShadeHandler shadeHandler) {
+                shadeHandler.requestRefreshShadeBatteryLevel();
             } else {
                 int shadeId = item.getValue();
                 logger.debug("Shade '{}' handler not initialized", shadeId);
index ec0a6fdab4d631ac2affdc677afc60aaac11431b..5da73ab1e79f5e9e804c78dcaeec2c6f09fa88da 100644 (file)
@@ -193,8 +193,8 @@ public class HDPowerViewShadeHandler extends AbstractHubbedThingHandler {
             HubShadeTimeoutException {
         switch (channelId) {
             case CHANNEL_SHADE_POSITION:
-                if (command instanceof PercentType) {
-                    moveShade(PRIMARY_POSITION, ((PercentType) command).intValue(), webTargets, shadeId);
+                if (command instanceof PercentType percentCommand) {
+                    moveShade(PRIMARY_POSITION, percentCommand.intValue(), webTargets, shadeId);
                 } else if (command instanceof UpDownType) {
                     moveShade(PRIMARY_POSITION, UpDownType.UP == command ? 0 : 100, webTargets, shadeId);
                 } else if (command instanceof StopMoveType) {
@@ -207,16 +207,16 @@ public class HDPowerViewShadeHandler extends AbstractHubbedThingHandler {
                 break;
 
             case CHANNEL_SHADE_VANE:
-                if (command instanceof PercentType) {
-                    moveShade(VANE_TILT_POSITION, ((PercentType) command).intValue(), webTargets, shadeId);
+                if (command instanceof PercentType percentCommand) {
+                    moveShade(VANE_TILT_POSITION, percentCommand.intValue(), webTargets, shadeId);
                 } else if (command instanceof OnOffType) {
                     moveShade(VANE_TILT_POSITION, OnOffType.ON == command ? 100 : 0, webTargets, shadeId);
                 }
                 break;
 
             case CHANNEL_SHADE_SECONDARY_POSITION:
-                if (command instanceof PercentType) {
-                    moveShade(SECONDARY_POSITION, ((PercentType) command).intValue(), webTargets, shadeId);
+                if (command instanceof PercentType percentCommand) {
+                    moveShade(SECONDARY_POSITION, percentCommand.intValue(), webTargets, shadeId);
                 } else if (command instanceof UpDownType) {
                     moveShade(SECONDARY_POSITION, UpDownType.UP == command ? 0 : 100, webTargets, shadeId);
                 } else if (command instanceof StopMoveType) {
@@ -229,11 +229,11 @@ public class HDPowerViewShadeHandler extends AbstractHubbedThingHandler {
                 break;
 
             case CHANNEL_SHADE_COMMAND:
-                if (command instanceof StringType) {
-                    if (COMMAND_IDENTIFY.equals(((StringType) command).toString())) {
+                if (command instanceof StringType stringCommand) {
+                    if (COMMAND_IDENTIFY.equals(stringCommand.toString())) {
                         logger.debug("Identify shade {}", shadeId);
                         identifyShade(webTargets, shadeId);
-                    } else if (COMMAND_CALIBRATE.equals(((StringType) command).toString())) {
+                    } else if (COMMAND_CALIBRATE.equals(stringCommand.toString())) {
                         logger.debug("Calibrate shade {}", shadeId);
                         calibrateShade(webTargets, shadeId);
                     }
index a106c52d99cfdb95ae2682e31573f4ab44014358..cca96c223817ccb2511e3d9703841ffc06b8fa8f 100644 (file)
@@ -116,8 +116,8 @@ public class ShadeThingHandler extends BaseThingHandler {
         try {
             switch (channelUID.getId()) {
                 case CHANNEL_SHADE_POSITION:
-                    if (command instanceof PercentType) {
-                        position.setPosition(PRIMARY_POSITION, ((PercentType) command));
+                    if (command instanceof PercentType percentCommand) {
+                        position.setPosition(PRIMARY_POSITION, percentCommand);
                         webTargets.moveShade(shadeId, new Shade().setShadePosition(position));
                         break;
                     } else if (command instanceof UpDownType) {
@@ -134,8 +134,8 @@ public class ShadeThingHandler extends BaseThingHandler {
                     throw new IllegalArgumentException(INVALID_COMMAND);
 
                 case CHANNEL_SHADE_SECONDARY_POSITION:
-                    if (command instanceof PercentType) {
-                        position.setPosition(SECONDARY_POSITION, ((PercentType) command));
+                    if (command instanceof PercentType percentCommand) {
+                        position.setPosition(SECONDARY_POSITION, percentCommand);
                         webTargets.moveShade(shadeId, new Shade().setShadePosition(position));
                         break;
                     } else if (command instanceof UpDownType) {
@@ -153,8 +153,8 @@ public class ShadeThingHandler extends BaseThingHandler {
                     throw new IllegalArgumentException(INVALID_COMMAND);
 
                 case CHANNEL_SHADE_VANE:
-                    if (command instanceof PercentType) {
-                        position.setPosition(VANE_TILT_POSITION, ((PercentType) command));
+                    if (command instanceof PercentType percentCommand) {
+                        position.setPosition(VANE_TILT_POSITION, percentCommand);
                         webTargets.moveShade(shadeId, new Shade().setShadePosition(position));
                         break;
                     } else if (command instanceof UpDownType) {
@@ -166,7 +166,8 @@ public class ShadeThingHandler extends BaseThingHandler {
                     throw new IllegalArgumentException(INVALID_COMMAND);
 
                 case CHANNEL_SHADE_COMMAND:
-                    if ((command instanceof StringType) && COMMAND_IDENTIFY.equals(((StringType) command).toString())) {
+                    if ((command instanceof StringType stringCommand)
+                            && COMMAND_IDENTIFY.equals(stringCommand.toString())) {
                         webTargets.jogShade(shadeId);
                         break;
                     }
index 2293e2db110c502d67bb7c02651008061afab5f2..af0fcfc1f4f032c5af908b1b197429638fa7dd59 100644 (file)
@@ -24,6 +24,7 @@ import org.openhab.core.i18n.LocaleProvider;
  */
 @NonNullByDefault
 public class MockedLocaleProvider implements LocaleProvider {
+    @Override
     public Locale getLocale() {
         return Locale.ENGLISH;
     }
index 7a88f0c151f6250dfb333cc6f593e7f29f646497..b8cd69052fec4d1e412129739e722bcd73ecce56 100644 (file)
@@ -209,15 +209,15 @@ public class HeliosHandler221 extends BaseThingHandler {
             if (logger.isTraceEnabled()) {
                 logger.trace("initialize() Request : {}", systemTarget.resolveTemplate("ip", ipAddress)
                         .resolveTemplate("cmd", INFO).getUri().toASCIIString());
-                if (jsonObject.get("success").toString().equals("true")) {
+                if ("true".equals(jsonObject.get("success").toString())) {
                     logger.trace("initialize() Response: {}", jsonObject.get("result"));
                 }
-                if (jsonObject.get("success").toString().equals("false")) {
+                if ("false".equals(jsonObject.get("success").toString())) {
                     logger.trace("initialize() Response: {}", jsonObject.get("error"));
                 }
             }
 
-            if (jsonObject.get("success").toString().equals("false")) {
+            if ("false".equals(jsonObject.get("success").toString())) {
                 RESTError error = gson.fromJson(jsonObject.get("error").toString(), RESTError.class);
                 logger.debug(
                         "An error occurred while communicating with the Helios IP Vario '{}': code '{}', param '{}' : '{}'",
@@ -228,7 +228,7 @@ public class HeliosHandler221 extends BaseThingHandler {
                 return;
             }
 
-            if (jsonObject.get("success").toString().equals("true")) {
+            if ("true".equals(jsonObject.get("success").toString())) {
                 if (logJob == null || logJob.isCancelled()) {
                     logJob = scheduler.scheduleWithFixedDelay(logRunnable, 0, 1, TimeUnit.SECONDS);
                 }
@@ -316,15 +316,15 @@ public class HeliosHandler221 extends BaseThingHandler {
                             logTarget.resolveTemplate("ip", ipAddress).resolveTemplate("cmd", SUBSCRIBE)
                                     .queryParam("include", "new").queryParam("duration", HELIOS_DURATION).getUri()
                                     .toASCIIString());
-                    if (jsonObject.get("success").toString().equals("true")) {
+                    if ("true".equals(jsonObject.get("success").toString())) {
                         logger.trace("subscribe() Response: {}", jsonObject.get("result"));
                     }
-                    if (jsonObject.get("success").toString().equals("false")) {
+                    if ("false".equals(jsonObject.get("success").toString())) {
                         logger.trace("subscribe() Response: {}", jsonObject.get("error"));
                     }
                 }
 
-                if (jsonObject.get("success").toString().equals("true")) {
+                if ("true".equals(jsonObject.get("success").toString())) {
                     RESTSubscribeResponse subscribeResponse = gson.fromJson(jsonObject.get("result").toString(),
                             RESTSubscribeResponse.class);
                     logger.debug("The subscription id to pull logs from the Helios IP Vario '{}' is '{}'",
@@ -377,15 +377,15 @@ public class HeliosHandler221 extends BaseThingHandler {
                     logger.trace("unsubscribe() Request : {}",
                             logTarget.resolveTemplate("ip", ipAddress).resolveTemplate("cmd", UNSUBSCRIBE)
                                     .queryParam("id", logSubscriptionID).getUri().toASCIIString());
-                    if (jsonObject.get("success").toString().equals("true")) {
+                    if ("true".equals(jsonObject.get("success").toString())) {
                         logger.trace("unsubscribe() Response: {}", jsonObject.get("result"));
                     }
-                    if (jsonObject.get("success").toString().equals("false")) {
+                    if ("false".equals(jsonObject.get("success").toString())) {
                         logger.trace("unsubscribe() Response: {}", jsonObject.get("error"));
                     }
                 }
 
-                if (jsonObject.get("success").toString().equals("true")) {
+                if ("true".equals(jsonObject.get("success").toString())) {
                     logger.debug("Successfully unsubscribed from the log entries of the Helios IP Vario '{}'",
                             getThing().getUID().toString());
                 } else {
@@ -439,15 +439,15 @@ public class HeliosHandler221 extends BaseThingHandler {
                             logTarget.resolveTemplate("ip", ipAddress).resolveTemplate("cmd", PULL)
                                     .queryParam("id", logSubscriptionID).queryParam("timeout", HELIOS_PULL_DURATION)
                                     .getUri().toASCIIString());
-                    if (jsonObject.get("success").toString().equals("true")) {
+                    if ("true".equals(jsonObject.get("success").toString())) {
                         logger.trace("pullLog() Response: {}", jsonObject.get("result"));
                     }
-                    if (jsonObject.get("success").toString().equals("false")) {
+                    if ("false".equals(jsonObject.get("success").toString())) {
                         logger.trace("pullLog() Response: {}", jsonObject.get("error"));
                     }
                 }
 
-                if (jsonObject.get("success").toString().equals("true")) {
+                if ("true".equals(jsonObject.get("success").toString())) {
                     logger.trace("Successfully pulled log entries from the Helios IP Vario '{}'",
                             getThing().getUID().toString());
                     JsonObject js = (JsonObject) jsonObject.get("result");
@@ -499,15 +499,15 @@ public class HeliosHandler221 extends BaseThingHandler {
             if (logger.isTraceEnabled()) {
                 logger.trace("getSwitches() Request : {}", switchTarget.resolveTemplate("ip", ipAddress)
                         .resolveTemplate("cmd", CAPABILITIES).getUri().toASCIIString());
-                if (jsonObject.get("success").toString().equals("true")) {
+                if ("true".equals(jsonObject.get("success").toString())) {
                     logger.trace("getSwitches() Response: {}", jsonObject.get("result"));
                 }
-                if (jsonObject.get("success").toString().equals("false")) {
+                if ("false".equals(jsonObject.get("success").toString())) {
                     logger.trace("getSwitches() Response: {}", jsonObject.get("error"));
                 }
             }
 
-            if (jsonObject.get("success").toString().equals("true")) {
+            if ("true".equals(jsonObject.get("success").toString())) {
                 logger.debug("Successfully requested switch capabilities from the Helios IP Vario '{}'",
                         getThing().getUID().toString());
                 String result = jsonObject.get("result").toString();
@@ -566,15 +566,15 @@ public class HeliosHandler221 extends BaseThingHandler {
                     logger.trace("triggerSwitch() Request : {}",
                             switchTarget.resolveTemplate("ip", ipAddress).resolveTemplate("cmd", CONTROL)
                                     .queryParam("switch", id).queryParam("action", "trigger").getUri().toASCIIString());
-                    if (jsonObject.get("success").toString().equals("true")) {
+                    if ("true".equals(jsonObject.get("success").toString())) {
                         logger.trace("triggerSwitch() Response: {}", jsonObject.get("result"));
                     }
-                    if (jsonObject.get("success").toString().equals("false")) {
+                    if ("false".equals(jsonObject.get("success").toString())) {
                         logger.trace("triggerSwitch() Response: {}", jsonObject.get("error"));
                     }
                 }
 
-                if (jsonObject.get("success").toString().equals("true")) {
+                if ("true".equals(jsonObject.get("success").toString())) {
                     logger.debug("Successfully triggered a switch on the Helios IP Vario '{}'",
                             getThing().getUID().toString());
                 } else {
@@ -622,15 +622,15 @@ public class HeliosHandler221 extends BaseThingHandler {
                             switchTarget.resolveTemplate("ip", ipAddress).resolveTemplate("cmd", CONTROL)
                                     .queryParam("switch", id).queryParam("action", flag ? "on" : "off").getUri()
                                     .toASCIIString());
-                    if (jsonObject.get("success").toString().equals("true")) {
+                    if ("true".equals(jsonObject.get("success").toString())) {
                         logger.trace("enableSwitch() Response: {}", jsonObject.get("result"));
                     }
-                    if (jsonObject.get("success").toString().equals("false")) {
+                    if ("false".equals(jsonObject.get("success").toString())) {
                         logger.trace("enableSwitch() Response: {}", jsonObject.get("error"));
                     }
                 }
 
-                if (jsonObject.get("success").toString().equals("true")) {
+                if ("true".equals(jsonObject.get("success").toString())) {
                     logger.debug("Successfully dis/enabled a  switch on the Helios IP Vario '{}'",
                             getThing().getUID().toString());
                 } else {
@@ -675,15 +675,15 @@ public class HeliosHandler221 extends BaseThingHandler {
             if (logger.isTraceEnabled()) {
                 logger.trace("getPorts() Request : {}", portTarget.resolveTemplate("ip", ipAddress)
                         .resolveTemplate("cmd", CAPABILITIES).getUri().toASCIIString());
-                if (jsonObject.get("success").toString().equals("true")) {
+                if ("true".equals(jsonObject.get("success").toString())) {
                     logger.trace("getPorts() Response: {}", jsonObject.get("result"));
                 }
-                if (jsonObject.get("success").toString().equals("false")) {
+                if ("false".equals(jsonObject.get("success").toString())) {
                     logger.trace("getPorts() Response: {}", jsonObject.get("error"));
                 }
             }
 
-            if (jsonObject.get("success").toString().equals("true")) {
+            if ("true".equals(jsonObject.get("success").toString())) {
                 logger.debug("Successfully requested port capabilities from the Helios IP Vario '{}'",
                         getThing().getUID().toString());
                 JsonObject js = (JsonObject) jsonObject.get("result");
@@ -743,10 +743,10 @@ public class HeliosHandler221 extends BaseThingHandler {
             if (logger.isTraceEnabled()) {
                 logger.trace("configureRunnable Request : {}", systemTarget.resolveTemplate("ip", ipAddress)
                         .resolveTemplate("cmd", INFO).getUri().toASCIIString());
-                if (jsonObject.get("success").toString().equals("true")) {
+                if ("true".equals(jsonObject.get("success").toString())) {
                     logger.trace("configureRunnable Response: {}", jsonObject.get("result"));
                 }
-                if (jsonObject.get("success").toString().equals("false")) {
+                if ("false".equals(jsonObject.get("success").toString())) {
                     logger.trace("configureRunnable Response: {}", jsonObject.get("error"));
                 }
             }
@@ -767,7 +767,7 @@ public class HeliosHandler221 extends BaseThingHandler {
 
         if (switches != null) {
             for (RESTSwitch aSwitch : switches) {
-                if (aSwitch.enabled.equals("true")) {
+                if ("true".equals(aSwitch.enabled)) {
                     logger.debug("Adding a channel to the Helios IP Vario '{}' for the switch with id '{}'",
                             getThing().getUID().toString(), aSwitch.id);
                     ThingBuilder thingBuilder = editThing();
@@ -852,9 +852,9 @@ public class HeliosHandler221 extends BaseThingHandler {
                                     break;
                                 }
                                 case AUDIOLOOPTEST: {
-                                    if (event.params.get("result").getAsString().equals("passed")) {
+                                    if ("passed".equals(event.params.get("result").getAsString())) {
                                         updateState(AUDIO_LOOP_TEST, OnOffType.ON);
-                                    } else if (event.params.get("result").getAsString().equals("failed")) {
+                                    } else if ("failed".equals(event.params.get("result").getAsString())) {
                                         updateState(AUDIO_LOOP_TEST, OnOffType.OFF);
                                     } else {
                                         updateState(AUDIO_LOOP_TEST, UnDefType.UNDEF);
@@ -864,9 +864,9 @@ public class HeliosHandler221 extends BaseThingHandler {
                                     break;
                                 }
                                 case MOTIONDETECTED: {
-                                    if (event.params.get("state").getAsString().equals("in")) {
+                                    if ("in".equals(event.params.get("state").getAsString())) {
                                         updateState(MOTION, OnOffType.ON);
-                                    } else if (event.params.get("state").getAsString().equals("out")) {
+                                    } else if ("out".equals(event.params.get("state").getAsString())) {
                                         updateState(MOTION, OnOffType.OFF);
                                     } else {
                                         updateState(MOTION, UnDefType.UNDEF);
@@ -876,9 +876,9 @@ public class HeliosHandler221 extends BaseThingHandler {
                                     break;
                                 }
                                 case NOISEDETECTED: {
-                                    if (event.params.get("state").getAsString().equals("in")) {
+                                    if ("in".equals(event.params.get("state").getAsString())) {
                                         updateState(NOISE, OnOffType.ON);
-                                    } else if (event.params.get("state").getAsString().equals("out")) {
+                                    } else if ("out".equals(event.params.get("state").getAsString())) {
                                         updateState(NOISE, OnOffType.OFF);
                                     } else {
                                         updateState(NOISE, UnDefType.UNDEF);
@@ -902,9 +902,9 @@ public class HeliosHandler221 extends BaseThingHandler {
                                 case CODEENTERED: {
                                     triggerChannel(CODE, event.params.get("code").getAsString());
 
-                                    if (event.params.get("valid").getAsString().equals("true")) {
+                                    if ("true".equals(event.params.get("valid").getAsString())) {
                                         updateState(CODE_VALID, OnOffType.ON);
-                                    } else if (event.params.get("valid").getAsString().equals("false")) {
+                                    } else if ("false".equals(event.params.get("valid").getAsString())) {
                                         updateState(CODE_VALID, OnOffType.OFF);
                                     } else {
                                         updateState(CODE_VALID, UnDefType.UNDEF);
@@ -916,9 +916,9 @@ public class HeliosHandler221 extends BaseThingHandler {
                                 case CARDENTERED: {
                                     triggerChannel(CARD, event.params.get("uid").getAsString());
 
-                                    if (event.params.get("valid").getAsString().equals("true")) {
+                                    if ("true".equals(event.params.get("valid").getAsString())) {
                                         updateState(CARD_VALID, OnOffType.ON);
-                                    } else if (event.params.get("valid").getAsString().equals("false")) {
+                                    } else if ("false".equals(event.params.get("valid").getAsString())) {
                                         updateState(CARD_VALID, OnOffType.OFF);
                                     } else {
                                         updateState(CARD_VALID, UnDefType.UNDEF);
@@ -931,9 +931,9 @@ public class HeliosHandler221 extends BaseThingHandler {
                                     ChannelUID inputChannel = new ChannelUID(getThing().getUID(),
                                             "io" + event.params.get("port").getAsString());
 
-                                    if (event.params.get("state").getAsString().equals("true")) {
+                                    if ("true".equals(event.params.get("state").getAsString())) {
                                         updateState(inputChannel, OnOffType.ON);
-                                    } else if (event.params.get("state").getAsString().equals("false")) {
+                                    } else if ("false".equals(event.params.get("state").getAsString())) {
                                         updateState(inputChannel, OnOffType.OFF);
                                     } else {
                                         updateState(inputChannel, UnDefType.UNDEF);
@@ -944,9 +944,9 @@ public class HeliosHandler221 extends BaseThingHandler {
                                     ChannelUID inputChannel = new ChannelUID(getThing().getUID(),
                                             "io" + event.params.get("port").getAsString());
 
-                                    if (event.params.get("state").getAsString().equals("true")) {
+                                    if ("true".equals(event.params.get("state").getAsString())) {
                                         updateState(inputChannel, OnOffType.ON);
-                                    } else if (event.params.get("state").getAsString().equals("false")) {
+                                    } else if ("false".equals(event.params.get("state").getAsString())) {
                                         updateState(inputChannel, OnOffType.OFF);
                                     } else {
                                         updateState(inputChannel, UnDefType.UNDEF);
@@ -967,9 +967,9 @@ public class HeliosHandler221 extends BaseThingHandler {
                                     break;
                                 }
                                 case SWITCHSTATECHANGED: {
-                                    if (event.params.get("state").getAsString().equals("true")) {
+                                    if ("true".equals(event.params.get("state").getAsString())) {
                                         updateState(SWITCH_STATE, OnOffType.ON);
-                                    } else if (event.params.get("state").getAsString().equals("false")) {
+                                    } else if ("false".equals(event.params.get("state").getAsString())) {
                                         updateState(SWITCH_STATE, OnOffType.OFF);
                                     } else {
                                         updateState(SWITCH_STATE, UnDefType.UNDEF);
index 4207beda61cb14067428c05557abcbef3e86d754..f91ac3a179758734c10516a2abd961b0ee494504 100644 (file)
@@ -14,7 +14,6 @@ package org.openhab.binding.heliosventilation.internal;
 
 import static org.openhab.binding.heliosventilation.internal.HeliosVentilationBindingConstants.THING_TYPE_HELIOS_VENTILATION;
 
-import java.util.Collections;
 import java.util.Set;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
@@ -39,8 +38,7 @@ import org.osgi.service.component.annotations.Reference;
 @Component(configurationPid = "binding.heliosventilation", service = ThingHandlerFactory.class)
 public class HeliosVentilationHandlerFactory extends BaseThingHandlerFactory {
 
-    private static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Collections
-            .singleton(THING_TYPE_HELIOS_VENTILATION);
+    private static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Set.of(THING_TYPE_HELIOS_VENTILATION);
 
     private final SerialPortManager serialPortManager;
 
index 8cd281586756d5bc92822e4ba1a4bd51e0a3deea..5ed5fae199304bad11f34389d68ba21ec7f8e83e 100644 (file)
@@ -43,8 +43,8 @@ public class HeosActions implements ThingActions {
 
     @Override
     public void setThingHandler(@Nullable ThingHandler handler) {
-        if (handler instanceof HeosBridgeHandler) {
-            this.handler = (HeosBridgeHandler) handler;
+        if (handler instanceof HeosBridgeHandler bridgeHandler) {
+            this.handler = bridgeHandler;
         }
     }
 
index e55cbdad32b9d7b18fd1530140aabf5fa9b80779..88067dbfc1ffc411e518f329c7486dd9f2e66da0 100644 (file)
@@ -14,7 +14,6 @@ package org.openhab.binding.heos.internal.discovery;
 
 import static org.openhab.binding.heos.internal.HeosBindingConstants.*;
 
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Set;
@@ -48,7 +47,7 @@ public class HeosDiscoveryParticipant implements UpnpDiscoveryParticipant {
 
     @Override
     public Set<ThingTypeUID> getSupportedThingTypeUIDs() {
-        return Collections.singleton(THING_TYPE_BRIDGE);
+        return Set.of(THING_TYPE_BRIDGE);
     }
 
     @Override
index 1efd1223a2c9eb37f425bbf494fc455ab56b9869..bc97f0dcb96cb845947965be02cdc5a212d9f589 100644 (file)
@@ -19,7 +19,6 @@ import static org.openhab.core.thing.ThingStatus.ONLINE;
 
 import java.io.IOException;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -220,9 +219,8 @@ public class HeosBridgeHandler extends BaseBridgeHandler implements HeosEventLis
             try {
                 @Nullable
                 ThingHandler handler = thing.getHandler();
-                if (handler instanceof HeosThingBaseHandler) {
+                if (handler instanceof HeosThingBaseHandler heosHandler) {
                     Set<String> target = handler instanceof HeosPlayerHandler ? players : groups;
-                    HeosThingBaseHandler heosHandler = (HeosThingBaseHandler) handler;
                     String id = heosHandler.getId();
 
                     if (target.contains(id)) {
@@ -303,12 +301,12 @@ public class HeosBridgeHandler extends BaseBridgeHandler implements HeosEventLis
         } else if (childHandler instanceof HeosPlayerHandler) {
             String channelIdentifier = "P" + childThing.getUID().getId();
             updateThingChannels(channelManager.removeSingleChannel(channelIdentifier));
-        } else if (childHandler instanceof HeosGroupHandler) {
+        } else if (childHandler instanceof HeosGroupHandler groupHandler) {
             String channelIdentifier = "G" + childThing.getUID().getId();
             updateThingChannels(channelManager.removeSingleChannel(channelIdentifier));
             // removes the handler from the groupMemberMap that handler is no longer called
             // if group is getting online
-            removeGroupHandlerInformation((HeosGroupHandler) childHandler);
+            removeGroupHandlerInformation(groupHandler);
         }
     }
 
@@ -361,13 +359,13 @@ public class HeosBridgeHandler extends BaseBridgeHandler implements HeosEventLis
             String pid = "";
             @Nullable
             ThingHandler handler = childThing.getHandler();
-            if (handler instanceof HeosPlayerHandler) {
+            if (handler instanceof HeosPlayerHandler playerHandler) {
                 channelIdentifier = "P" + childThing.getUID().getId();
-                pid = ((HeosPlayerHandler) handler).getId();
-            } else if (handler instanceof HeosGroupHandler) {
+                pid = playerHandler.getId();
+            } else if (handler instanceof HeosGroupHandler groupHandler) {
                 channelIdentifier = "G" + childThing.getUID().getId();
                 if (groupId == null) {
-                    pid = ((HeosGroupHandler) handler).getId();
+                    pid = groupHandler.getId();
                 } else {
                     pid = groupId;
                 }
@@ -520,7 +518,7 @@ public class HeosBridgeHandler extends BaseBridgeHandler implements HeosEventLis
 
     @Override
     public Collection<Class<? extends ThingHandlerService>> getServices() {
-        return Collections.singletonList(HeosActions.class);
+        return List.of(HeosActions.class);
     }
 
     public void registerMediaEventListener(HeosMediaEventListener heosMediaEventListener) {
index 8dea3c4a9199721726f5d3707ce430b03f47fec0..e839fb54ac10361280c777cbf21a979a1a6eaff2 100644 (file)
@@ -387,16 +387,16 @@ public abstract class HeosThingBaseHandler extends BaseThingHandler implements H
                 case GET_NOW_PLAYING_MEDIA:
                     @Nullable
                     T mediaPayload = responseObject.payload;
-                    if (mediaPayload instanceof Media) {
-                        handleThingMediaUpdate((Media) mediaPayload);
+                    if (mediaPayload instanceof Media media) {
+                        handleThingMediaUpdate(media);
                     }
                     break;
 
                 case GET_PLAYER_INFO:
                     @Nullable
                     T playerPayload = responseObject.payload;
-                    if (playerPayload instanceof Player) {
-                        handlePlayerInfo((Player) playerPayload);
+                    if (playerPayload instanceof Player player) {
+                        handlePlayerInfo(player);
                     }
                     break;
             }
index 046823dafdcefbd43f202489fa348bc625023db9..83b378f4b9667f47ec85d1a43ec113dce2cc2a4b 100644 (file)
@@ -166,8 +166,8 @@ public class Telnet {
                 throw new ReadException(e);
             } catch (ExecutionException e) {
                 Throwable cause = e.getCause();
-                if (cause instanceof IOException) {
-                    throw (IOException) cause;
+                if (cause instanceof IOException exception) {
+                    throw exception;
                 } else {
                     throw new ReadException(cause);
                 }
index 1b838dc856db0f74758aaa20d4555b487e47ef15..e2f496173f4b7437dd4515c62756660fa2cfbdf3 100644 (file)
@@ -138,9 +138,11 @@ public class HeosJsonParserResponseTest {
     @Test
     public void get_players() {
         HeosResponseObject<Player[]> response = subject.parseResponse(
-                "{\"heos\": {\"command\": \"player/get_players\", \"result\": \"success\", \"message\": \"\"}, \"payload\": ["
-                        + "{\"name\": \"Kantoor HEOS 3\", \"pid\": -831584083, \"model\": \"HEOS 3\", \"version\": \"1.520.200\", \"ip\": \"192.168.1.230\", \"network\": \"wired\", \"lineout\": 0, \"serial\": \"ACNG9180110887\"}, "
-                        + "{\"name\": \"HEOS Bar\", \"pid\": 1958912779, \"model\": \"HEOS Bar\", \"version\": \"1.520.200\", \"ip\": \"192.168.1.195\", \"network\": \"wired\", \"lineout\": 0, \"serial\": \"ADAG9180917029\"}]}",
+                """
+                        {"heos": {"command": "player/get_players", "result": "success", "message": ""}, "payload": [\
+                        {"name": "Kantoor HEOS 3", "pid": -831584083, "model": "HEOS 3", "version": "1.520.200", "ip": "192.168.1.230", "network": "wired", "lineout": 0, "serial": "ACNG9180110887"}, \
+                        {"name": "HEOS Bar", "pid": 1958912779, "model": "HEOS Bar", "version": "1.520.200", "ip": "192.168.1.195", "network": "wired", "lineout": 0, "serial": "ADAG9180917029"}]}\
+                        """,
                 Player[].class);
 
         assertEquals(HeosCommandGroup.PLAYER, response.heosCommand.commandGroup);
@@ -194,8 +196,10 @@ public class HeosJsonParserResponseTest {
     @Test
     public void get_now_playing_media() {
         HeosResponseObject<Media> response = subject.parseResponse(
-                "{\"heos\": {\"command\": \"player/get_now_playing_media\", \"result\": \"success\", \"message\": \"pid=1958912779\"}, \"payload\": "
-                        + "{\"type\": \"song\", \"song\": \"Solo (feat. Demi Lovato)\", \"album\": \"What Is Love? (Deluxe)\", \"artist\": \"Clean Bandit\", \"image_url\": \"http://192.168.1.230:8015//m-browsableMediaUri/getImageFromTag/mnt/326C72A3E307501E47DE2B0F47D90EB8/Clean%20Bandit/What%20Is%20Love_%20(Deluxe)/03%20Solo%20(feat.%20Demi%20Lovato).m4a\", \"album_id\": \"\", \"mid\": \"http://192.168.1.230:8015/m-1c176905-f6c7-d168-dc35-86b4735c5976/Clean+Bandit/What+Is+Love_+(Deluxe)/03+Solo+(feat.+Demi+Lovato).m4a\", \"qid\": 1, \"sid\": 1024}, \"options\": []}\n",
+                """
+                        {"heos": {"command": "player/get_now_playing_media", "result": "success", "message": "pid=1958912779"}, "payload": \
+                        {"type": "song", "song": "Solo (feat. Demi Lovato)", "album": "What Is Love? (Deluxe)", "artist": "Clean Bandit", "image_url": "http://192.168.1.230:8015//m-browsableMediaUri/getImageFromTag/mnt/326C72A3E307501E47DE2B0F47D90EB8/Clean%20Bandit/What%20Is%20Love_%20(Deluxe)/03%20Solo%20(feat.%20Demi%20Lovato).m4a", "album_id": "", "mid": "http://192.168.1.230:8015/m-1c176905-f6c7-d168-dc35-86b4735c5976/Clean+Bandit/What+Is+Love_+(Deluxe)/03+Solo+(feat.+Demi+Lovato).m4a", "qid": 1, "sid": 1024}, "options": []}
+                        """,
                 Media.class);
 
         assertEquals(HeosCommandGroup.PLAYER, response.heosCommand.commandGroup);
@@ -222,13 +226,15 @@ public class HeosJsonParserResponseTest {
     @Test
     public void browse_playlist() {
         HeosResponseObject<BrowseResult[]> response = subject.parseResponse(
-                "{\"heos\": {\"command\": \"browse/browse\", \"result\": \"success\", \"message\": \"sid=1025&returned=6&count=6\"}, \"payload\": ["
-                        + "{\"container\": \"yes\", \"type\": \"playlist\", \"cid\": \"132562\", \"playable\": \"yes\", \"name\": \"Maaike Ouboter - En hoe het dan ook weer dag wordt\", \"image_url\": \"\"}, "
-                        + "{\"container\": \"yes\", \"type\": \"playlist\", \"cid\": \"132563\", \"playable\": \"yes\", \"name\": \"Maaike Ouboter - Vanaf nu is het van jou\", \"image_url\": \"\"}, "
-                        + "{\"container\": \"yes\", \"type\": \"playlist\", \"cid\": \"162887\", \"playable\": \"yes\", \"name\": \"Easy listening\", \"image_url\": \"\"}, "
-                        + "{\"container\": \"yes\", \"type\": \"playlist\", \"cid\": \"174461\", \"playable\": \"yes\", \"name\": \"Nieuwe muziek 5-2019\", \"image_url\": \"\"}, "
-                        + "{\"container\": \"yes\", \"type\": \"playlist\", \"cid\": \"194000\", \"playable\": \"yes\", \"name\": \"Nieuwe muziek 2019-05\", \"image_url\": \"\"}, "
-                        + "{\"container\": \"yes\", \"type\": \"playlist\", \"cid\": \"194001\", \"playable\": \"yes\", \"name\": \"Clean Bandit\", \"image_url\": \"\"}]}",
+                """
+                        {"heos": {"command": "browse/browse", "result": "success", "message": "sid=1025&returned=6&count=6"}, "payload": [\
+                        {"container": "yes", "type": "playlist", "cid": "132562", "playable": "yes", "name": "Maaike Ouboter - En hoe het dan ook weer dag wordt", "image_url": ""}, \
+                        {"container": "yes", "type": "playlist", "cid": "132563", "playable": "yes", "name": "Maaike Ouboter - Vanaf nu is het van jou", "image_url": ""}, \
+                        {"container": "yes", "type": "playlist", "cid": "162887", "playable": "yes", "name": "Easy listening", "image_url": ""}, \
+                        {"container": "yes", "type": "playlist", "cid": "174461", "playable": "yes", "name": "Nieuwe muziek 5-2019", "image_url": ""}, \
+                        {"container": "yes", "type": "playlist", "cid": "194000", "playable": "yes", "name": "Nieuwe muziek 2019-05", "image_url": ""}, \
+                        {"container": "yes", "type": "playlist", "cid": "194001", "playable": "yes", "name": "Clean Bandit", "image_url": ""}]}\
+                        """,
                 BrowseResult[].class);
 
         assertEquals(HeosCommandGroup.BROWSE, response.heosCommand.commandGroup);
@@ -252,11 +258,13 @@ public class HeosJsonParserResponseTest {
     @Test
     public void browse_favorites() {
         HeosResponseObject<BrowseResult[]> response = subject.parseResponse(
-                "{\"heos\": {\"command\": \"browse/browse\", \"result\": \"success\", \"message\": \"sid=1028&returned=3&count=3\"}, \"payload\": ["
-                        + "{\"container\": \"no\", \"mid\": \"s6707\", \"type\": \"station\", \"playable\": \"yes\", \"name\": \"NPO 3FM 96.8 (Top 40 %26 Pop Music)\", \"image_url\": \"http://cdn-profiles.tunein.com/s6707/images/logoq.png?t=636268\"}, "
-                        + "{\"container\": \"no\", \"mid\": \"s2967\", \"type\": \"station\", \"playable\": \"yes\", \"name\": \"Classic FM Nederland (Classical Music)\", \"image_url\": \"http://cdn-radiotime-logos.tunein.com/s2967q.png\"}, "
-                        + "{\"container\": \"no\", \"mid\": \"s1993\", \"type\": \"station\", \"playable\": \"yes\", \"name\": \"BNR Nieuwsradio\", \"image_url\": \"http://cdn-radiotime-logos.tunein.com/s1993q.png\"}], "
-                        + "\"options\": [{\"browse\": [{\"id\": 20, \"name\": \"Remove from HEOS Favorites\"}]}]}",
+                """
+                        {"heos": {"command": "browse/browse", "result": "success", "message": "sid=1028&returned=3&count=3"}, "payload": [\
+                        {"container": "no", "mid": "s6707", "type": "station", "playable": "yes", "name": "NPO 3FM 96.8 (Top 40 %26 Pop Music)", "image_url": "http://cdn-profiles.tunein.com/s6707/images/logoq.png?t=636268"}, \
+                        {"container": "no", "mid": "s2967", "type": "station", "playable": "yes", "name": "Classic FM Nederland (Classical Music)", "image_url": "http://cdn-radiotime-logos.tunein.com/s2967q.png"}, \
+                        {"container": "no", "mid": "s1993", "type": "station", "playable": "yes", "name": "BNR Nieuwsradio", "image_url": "http://cdn-radiotime-logos.tunein.com/s1993q.png"}], \
+                        "options": [{"browse": [{"id": 20, "name": "Remove from HEOS Favorites"}]}]}\
+                        """,
                 BrowseResult[].class);
 
         assertEquals(HeosCommandGroup.BROWSE, response.heosCommand.commandGroup);
@@ -282,9 +290,11 @@ public class HeosJsonParserResponseTest {
     @Test
     public void get_groups() {
         HeosResponseObject<Group[]> response = subject.parseResponse(
-                "{\"heos\": {\"command\": \"group/get_groups\", \"result\": \"success\", \"message\": \"\"}, \"payload\": [ "
-                        + "{\"name\": \"Group 1\", \"gid\": \"214243242\", \"players\": [ {\"name\": \"HEOS 1\", \"pid\": \"2142443242\", \"role\": \"leader\"}, {\"name\": \"HEOS 3\", \"pid\": \"32432423432\", \"role\": \"member\"}, {\"name\": \"HEOS 5\", \"pid\": \"342423564\", \"role\": \"member\"}]}, "
-                        + "{\"name\": \"Group 2\", \"gid\": \"2142432342\", \"players\": [ {\"name\": \"HEOS 3\", \"pid\": \"32432423432\", \"role\": \"member\"}, {\"name\": \"HEOS 5\", \"pid\": \"342423564\", \"role\": \"member\"}]}]}",
+                """
+                        {"heos": {"command": "group/get_groups", "result": "success", "message": ""}, "payload": [ \
+                        {"name": "Group 1", "gid": "214243242", "players": [ {"name": "HEOS 1", "pid": "2142443242", "role": "leader"}, {"name": "HEOS 3", "pid": "32432423432", "role": "member"}, {"name": "HEOS 5", "pid": "342423564", "role": "member"}]}, \
+                        {"name": "Group 2", "gid": "2142432342", "players": [ {"name": "HEOS 3", "pid": "32432423432", "role": "member"}, {"name": "HEOS 5", "pid": "342423564", "role": "member"}]}]}\
+                        """,
                 Group[].class);
 
         assertEquals(HeosCommandGroup.GROUP, response.heosCommand.commandGroup);
index cd70bbe199f65b297e509effab4833aacf2d5aba..fc706c934ccc044f50fcc11619df040a3b275380 100644 (file)
@@ -74,8 +74,8 @@ public class CurtainHandler extends BaseThingHandler {
                             (command == UpDownType.UP) ? ControlAddress.OPEN : ControlAddress.CLOSE);
                 } else if (command instanceof StopMoveType) {
                     pkt = buildPacket(Function.CONTROL, ControlAddress.STOP);
-                } else if (command instanceof DecimalType) {
-                    pkt = buildPacket(Function.CONTROL, ControlAddress.PERCENT, ((DecimalType) command).byteValue());
+                } else if (command instanceof DecimalType decimalCommand) {
+                    pkt = buildPacket(Function.CONTROL, ControlAddress.PERCENT, decimalCommand.byteValue());
                 }
                 break;
             case CHANNEL_REVERSE:
index 27fef700b4b2a75eac6603fe6f6f733ff60678c9..c54dcc2ca339d1ded2397e470fff1d6ead5d1389 100644 (file)
@@ -12,7 +12,6 @@
  */
 package org.openhab.binding.homeconnect.internal.client;
 
-import static java.util.Collections.singletonList;
 import static org.openhab.binding.homeconnect.internal.HomeConnectBindingConstants.*;
 import static org.openhab.binding.homeconnect.internal.client.HttpHelper.*;
 
@@ -880,7 +879,7 @@ public class HomeConnectApiClient {
     private void checkResponseCode(int desiredCode, Request request, ContentResponse response, @Nullable String haId,
             @Nullable String requestPayload)
             throws CommunicationException, AuthorizationException, ApplianceOfflineException {
-        checkResponseCode(singletonList(desiredCode), request, response, haId, requestPayload);
+        checkResponseCode(List.of(desiredCode), request, response, haId, requestPayload);
     }
 
     private void checkResponseCode(List<Integer> desiredCodes, Request request, ContentResponse response,
index a22c9bb713ac07ba57763ea1c233d62f7a74b50b..9a6c46158413b77fdea8054b599c588ebf6cb903 100644 (file)
@@ -60,8 +60,8 @@ public class HomeConnectDiscoveryService extends AbstractDiscoveryService
 
     @Override
     public void setThingHandler(ThingHandler handler) {
-        if (handler instanceof HomeConnectBridgeHandler) {
-            this.bridgeHandler = (HomeConnectBridgeHandler) handler;
+        if (handler instanceof HomeConnectBridgeHandler homeConnectBridgeHandler) {
+            this.bridgeHandler = homeConnectBridgeHandler;
         }
     }
 
index d6cd23ea5a515c5089fb63c28f4d60ffcd87aea7..69bb4aa012551625ccb0f9d0d067394ff94a24e1 100644 (file)
@@ -453,8 +453,8 @@ public abstract class AbstractHomeConnectThingHandler extends BaseThingHandler i
         Bridge bridge = getBridge();
         if (bridge != null) {
             BridgeHandler bridgeHandler = bridge.getHandler();
-            if (bridgeHandler instanceof HomeConnectBridgeHandler) {
-                return Optional.of((HomeConnectBridgeHandler) bridgeHandler);
+            if (bridgeHandler instanceof HomeConnectBridgeHandler homeConnectBridgeHandler) {
+                return Optional.of(homeConnectBridgeHandler);
             }
         }
         return Optional.empty();
@@ -537,7 +537,7 @@ public abstract class AbstractHomeConnectThingHandler extends BaseThingHandler i
      * @param channelUID channel UID
      */
     protected void updateChannel(ChannelUID channelUID) {
-        if (!getApiClient().isPresent()) {
+        if (getApiClient().isEmpty()) {
             logger.error("Cannot update channel. No instance of api client found! thing={}, haId={}", getThingLabel(),
                     getThingHaId());
             return;
@@ -1206,23 +1206,23 @@ public abstract class AbstractHomeConnectThingHandler extends BaseThingHandler i
     protected void handleTemperatureCommand(final ChannelUID channelUID, final Command command,
             final HomeConnectApiClient apiClient)
             throws CommunicationException, AuthorizationException, ApplianceOfflineException {
-        if (command instanceof QuantityType) {
-            QuantityType<?> quantity = (QuantityType<?>) command;
-
+        if (command instanceof QuantityType quantityCommand) {
             String value;
             String unit;
 
             try {
-                if (quantity.getUnit().equals(SIUnits.CELSIUS) || quantity.getUnit().equals(ImperialUnits.FAHRENHEIT)) {
-                    unit = quantity.getUnit().toString();
-                    value = String.valueOf(quantity.intValue());
+                if (quantityCommand.getUnit().equals(SIUnits.CELSIUS)
+                        || quantityCommand.getUnit().equals(ImperialUnits.FAHRENHEIT)) {
+                    unit = quantityCommand.getUnit().toString();
+                    value = String.valueOf(quantityCommand.intValue());
                 } else {
                     logger.debug("Converting target temperature from {}{} to Â°C value. thing={}, haId={}",
-                            quantity.intValue(), quantity.getUnit().toString(), getThingLabel(), getThingHaId());
+                            quantityCommand.intValue(), quantityCommand.getUnit().toString(), getThingLabel(),
+                            getThingHaId());
                     unit = "°C";
-                    var celsius = quantity.toUnit(SIUnits.CELSIUS);
+                    var celsius = quantityCommand.toUnit(SIUnits.CELSIUS);
                     if (celsius == null) {
-                        logger.warn("Converting temperature to celsius failed! quantity={}", quantity);
+                        logger.warn("Converting temperature to celsius failed! quantity={}", quantityCommand);
                         value = null;
                     } else {
                         value = String.valueOf(celsius.intValue());
@@ -1272,10 +1272,10 @@ public abstract class AbstractHomeConnectThingHandler extends BaseThingHandler i
                     } else {
                         newBrightness = currentBrightness - BRIGHTNESS_DIM_STEP;
                     }
-                } else if (command instanceof PercentType) {
-                    newBrightness = (int) Math.floor(((PercentType) command).doubleValue());
-                } else if (command instanceof DecimalType) {
-                    newBrightness = ((DecimalType) command).intValue();
+                } else if (command instanceof PercentType percentCommand) {
+                    newBrightness = (int) Math.floor(percentCommand.doubleValue());
+                } else if (command instanceof DecimalType decimalCommand) {
+                    newBrightness = decimalCommand.intValue();
                 }
 
                 // check in in range
@@ -1308,8 +1308,8 @@ public abstract class AbstractHomeConnectThingHandler extends BaseThingHandler i
                     apiClient.setAmbientLightColorState(getThingHaId(), STATE_AMBIENT_LIGHT_COLOR_CUSTOM_COLOR);
                 }
 
-                if (command instanceof HSBType) {
-                    apiClient.setAmbientLightCustomColorState(getThingHaId(), mapColor((HSBType) command));
+                if (command instanceof HSBType hsbCommand) {
+                    apiClient.setAmbientLightCustomColorState(getThingHaId(), mapColor(hsbCommand));
                 } else if (command instanceof StringType) {
                     apiClient.setAmbientLightCustomColorState(getThingHaId(), command.toFullString());
                 }
@@ -1546,9 +1546,9 @@ public abstract class AbstractHomeConnectThingHandler extends BaseThingHandler i
                     .filter(option -> OPTION_DRYER_DRYING_TARGET.equals(option.getKey())).findFirst();
 
             // Save options in cache only if we got options for all expected channels
-            if (cacheToSet && (!channelSpinSpeed.isPresent() || optionsSpinSpeed.isPresent())
-                    && (!channelTemperature.isPresent() || optionsTemperature.isPresent())
-                    && (!channelDryingTarget.isPresent() || optionsDryingTarget.isPresent())) {
+            if (cacheToSet && (channelSpinSpeed.isEmpty() || optionsSpinSpeed.isPresent())
+                    && (channelTemperature.isEmpty() || optionsTemperature.isPresent())
+                    && (channelDryingTarget.isEmpty() || optionsDryingTarget.isPresent())) {
                 logger.debug("Saving options in cache for program '{}'.", programKey);
                 availableProgramOptionsCache.put(programKey, availableProgramOptions);
             }
@@ -1673,7 +1673,7 @@ public abstract class AbstractHomeConnectThingHandler extends BaseThingHandler i
     private boolean addUnsupportedProgramInCache(String programKey) {
         Optional<AvailableProgram> prog = programsCache.stream().filter(program -> programKey.equals(program.getKey()))
                 .findFirst();
-        if (!prog.isPresent()) {
+        if (prog.isEmpty()) {
             programsCache.add(new AvailableProgram(programKey, false));
             logger.debug("{} added in programs cache as an unsupported program", programKey);
             return true;
index db483b3b1fdc4f9ad105031feeb66ade9b031ff2..240c2f25b4aa20eb3c316b40b40e8ae867bf4894 100644 (file)
@@ -19,10 +19,10 @@ import java.time.ZonedDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.Set;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
@@ -232,7 +232,7 @@ public class HomeConnectBridgeHandler extends BaseBridgeHandler {
 
     @Override
     public Collection<Class<? extends ThingHandlerService>> getServices() {
-        return Collections.singleton(HomeConnectDiscoveryService.class);
+        return Set.of(HomeConnectDiscoveryService.class);
     }
 
     /**
index ebff3c1beaceeced075a68d47756ed659184c49e..a7efb5dd66668f957fc33902d26f422b9f0dd846 100644 (file)
@@ -49,15 +49,35 @@ import org.slf4j.LoggerFactory;
 @NonNullByDefault
 public class HomeConnectHoodHandler extends AbstractHomeConnectThingHandler {
 
-    private static final String START_VENTING_INTENSIVE_STAGE_PAYLOAD_TEMPLATE = "\n" + "{\n" + "    \"data\": {\n"
-            + "        \"key\": \"Cooking.Common.Program.Hood.Venting\",\n" + "        \"options\": [\n"
-            + "            {\n" + "                \"key\": \"Cooking.Common.Option.Hood.IntensiveLevel\",\n"
-            + "                \"value\": \"%s\"\n" + "            }\n" + "        ]\n" + "    }\n" + "}";
+    private static final String START_VENTING_INTENSIVE_STAGE_PAYLOAD_TEMPLATE = """
 
-    private static final String START_VENTING_STAGE_PAYLOAD_TEMPLATE = "\n" + "{\n" + "    \"data\": {\n"
-            + "        \"key\": \"Cooking.Common.Program.Hood.Venting\",\n" + "        \"options\": [\n"
-            + "            {\n" + "                \"key\": \"Cooking.Common.Option.Hood.VentingLevel\",\n"
-            + "                \"value\": \"%s\"\n" + "            }\n" + "        ]\n" + "    }\n" + "}";
+            {
+                "data": {
+                    "key": "Cooking.Common.Program.Hood.Venting",
+                    "options": [
+                        {
+                            "key": "Cooking.Common.Option.Hood.IntensiveLevel",
+                            "value": "%s"
+                        }
+                    ]
+                }
+            }\
+            """;
+
+    private static final String START_VENTING_STAGE_PAYLOAD_TEMPLATE = """
+
+            {
+                "data": {
+                    "key": "Cooking.Common.Program.Hood.Venting",
+                    "options": [
+                        {
+                            "key": "Cooking.Common.Option.Hood.VentingLevel",
+                            "value": "%s"
+                        }
+                    ]
+                }
+            }\
+            """;
 
     private final Logger logger = LoggerFactory.getLogger(HomeConnectHoodHandler.class);
 
index 022e113395780be5d936dd7783ad3ba1f4670431..e4ad10af7ce12f703c8df2690473765066592a75 100644 (file)
@@ -394,12 +394,12 @@ public class HomematicConfig {
 
     @Override
     public String toString() {
-        return String.format(
-                "%s[gatewayAddress=%s,callbackHost=%s,xmlCallbackPort=%d,binCallbackPort=%d,"
-                        + "gatewayType=%s,rfPort=%d,wiredPort=%d,hmIpPort=%d,cuxdPort=%d,groupPort=%d,timeout=%d,"
-                        + "discoveryTimeToLive=%d,installModeDuration=%d,socketMaxAlive=%d]",
-                getClass().getSimpleName(), gatewayAddress, callbackHost, xmlCallbackPort, binCallbackPort, gatewayType,
-                getRfPort(), getWiredPort(), getHmIpPort(), getCuxdPort(), getGroupPort(), timeout, discoveryTimeToLive,
-                installModeDuration, socketMaxAlive);
+        return String.format("""
+                %s[gatewayAddress=%s,callbackHost=%s,xmlCallbackPort=%d,binCallbackPort=%d,\
+                gatewayType=%s,rfPort=%d,wiredPort=%d,hmIpPort=%d,cuxdPort=%d,groupPort=%d,timeout=%d,\
+                discoveryTimeToLive=%d,installModeDuration=%d,socketMaxAlive=%d]\
+                """, getClass().getSimpleName(), gatewayAddress, callbackHost, xmlCallbackPort, binCallbackPort,
+                gatewayType, getRfPort(), getWiredPort(), getHmIpPort(), getCuxdPort(), getGroupPort(), timeout,
+                discoveryTimeToLive, installModeDuration, socketMaxAlive);
     }
 }
index db27828c6c0ab0607ae90dccce9ca78f8ac8f9f9..c74457aa4ffba9f6ed4e4cec75fa901fda48a2a2 100644 (file)
@@ -84,8 +84,7 @@ public class XmlRpcClient extends RpcClient<String> {
             } catch (IOException ex) {
                 reason = ex;
                 // no retries for "init" request or if connection is refused
-                if ("init".equals(request.getMethodName())
-                        || ex.getCause() != null && ex.getCause() instanceof ExecutionException) {
+                if ("init".equals(request.getMethodName()) || ex.getCause() instanceof ExecutionException) {
                     break;
                 }
                 logger.debug("XmlRpcMessage failed({}), sending message again {}/{}", ex.getMessage(), rpcRetryCounter,
index 839846ce3f198e336b1ee5e26eb7157a82529359..31e63c50cac62bbccca03b935dd12a44288eea72 100644 (file)
@@ -47,7 +47,7 @@ public class BinRpcMessage implements RpcRequest<byte[]>, RpcResponse {
     }
 
     private Object[] messageData;
-    private byte binRpcData[];
+    private byte[] binRpcData;
     private int offset;
 
     private String methodName;
@@ -74,7 +74,7 @@ public class BinRpcMessage implements RpcRequest<byte[]>, RpcResponse {
      */
     public BinRpcMessage(InputStream is, boolean methodHeader, Charset encoding) throws IOException {
         this.encoding = encoding;
-        byte sig[] = new byte[8];
+        byte[] sig = new byte[8];
         int length = is.read(sig, 0, 4);
         if (length != 4) {
             throw new EOFException("Only " + length + " bytes received reading signature");
@@ -85,7 +85,7 @@ public class BinRpcMessage implements RpcRequest<byte[]>, RpcResponse {
             throw new EOFException("Only " + length + " bytes received reading message length");
         }
         int datasize = (new BigInteger(Arrays.copyOfRange(sig, 4, 8))).intValue();
-        byte payload[] = new byte[datasize];
+        byte[] payload = new byte[datasize];
         int offset = 0;
         int currentLength;
 
@@ -201,14 +201,14 @@ public class BinRpcMessage implements RpcRequest<byte[]>, RpcResponse {
 
     // read rpc values
     private int readInt() {
-        byte bi[] = new byte[4];
+        byte[] bi = new byte[4];
         System.arraycopy(binRpcData, offset, bi, 0, 4);
         offset += 4;
         return (new BigInteger(bi)).intValue();
     }
 
     private long readInt64() {
-        byte bi[] = new byte[8];
+        byte[] bi = new byte[8];
         System.arraycopy(binRpcData, offset, bi, 0, 8);
         offset += 8;
         return (new BigInteger(bi)).longValue();
@@ -274,7 +274,7 @@ public class BinRpcMessage implements RpcRequest<byte[]>, RpcResponse {
 
     private void addByte(byte b) {
         if (offset == binRpcData.length) {
-            byte newdata[] = new byte[binRpcData.length * 2];
+            byte[] newdata = new byte[binRpcData.length * 2];
             System.arraycopy(binRpcData, 0, newdata, 0, binRpcData.length);
             binRpcData = newdata;
         }
@@ -311,7 +311,7 @@ public class BinRpcMessage implements RpcRequest<byte[]>, RpcResponse {
     }
 
     private void addString(String string) {
-        byte sd[] = string.getBytes(encoding);
+        byte[] sd = string.getBytes(encoding);
         for (byte ch : sd) {
             addByte(ch);
         }
@@ -351,13 +351,11 @@ public class BinRpcMessage implements RpcRequest<byte[]>, RpcResponse {
         } else if (object.getClass() == Date.class) {
             addInt(5);
             addInt((int) ((Date) object).getTime() / 1000);
-        } else if (object instanceof List<?>) {
-            Collection<?> list = (Collection<?>) object;
+        } else if (object instanceof List<?> list) {
             addInt(0x100);
             addInt(list.size());
             addList(list);
-        } else if (object instanceof Map<?, ?>) {
-            Map<?, ?> map = (Map<?, ?>) object;
+        } else if (object instanceof Map<?, ?> map) {
             addInt(0x101);
             addInt(map.size());
             for (Map.Entry<?, ?> entry : map.entrySet()) {
index 10a4d610220b20d099585c5b6b5f7c34ee71fb08..461d43388a47132ecabaf37396bbf291e73ffa15 100644 (file)
@@ -42,10 +42,10 @@ public class RpcUtils {
             sb.append("[\n");
         }
         for (Object o : c) {
-            if (o instanceof Map) {
-                dumpMap((Map<?, ?>) o, sb, indent + 1);
-            } else if (o instanceof Object[]) {
-                dumpCollection((Object[]) o, sb, indent + 1);
+            if (o instanceof Map map) {
+                dumpMap(map, sb, indent + 1);
+            } else if (o instanceof Object[] objects) {
+                dumpCollection(objects, sb, indent + 1);
             } else {
                 for (int in = 0; in < indent; in++) {
                     sb.append('\t');
@@ -76,12 +76,12 @@ public class RpcUtils {
             }
             sb.append(me.getKey());
             sb.append('=');
-            if (o instanceof Map<?, ?>) {
+            if (o instanceof Map<?, ?> map) {
                 sb.append("\n");
-                dumpMap((Map<?, ?>) o, sb, indent + 1);
-            } else if (o instanceof Object[]) {
+                dumpMap(map, sb, indent + 1);
+            } else if (o instanceof Object[] objects) {
                 sb.append("\n");
-                dumpCollection((Object[]) o, sb, indent + 1);
+                dumpCollection(objects, sb, indent + 1);
             } else {
                 sb.append(o);
                 sb.append('\n');
index d30873df3b07a77d6a1d7360f700fba36475f483..05ea0fe4f4001c26af27dce146e20ab70e12366e 100644 (file)
@@ -136,16 +136,16 @@ public class XmlRpcRequest implements RpcRequest<String> {
                 tag("boolean", ((Boolean) value).booleanValue() ? "1" : "0");
             } else if (clazz == Date.class) {
                 tag("dateTime.iso8601", xmlRpcDateFormat.format(((Date) value)));
-            } else if (value instanceof Calendar) {
-                generateValue(((Calendar) value).getTime());
-            } else if (value instanceof byte[]) {
-                tag("base64", Base64.getEncoder().encodeToString((byte[]) value));
+            } else if (value instanceof Calendar calendar) {
+                generateValue(calendar.getTime());
+            } else if (value instanceof byte[] bytes) {
+                tag("base64", Base64.getEncoder().encodeToString(bytes));
             } else if (clazz.isArray() || value instanceof List) {
                 sb.append("<array><data>");
 
                 Object[] array = null;
-                if (value instanceof List) {
-                    array = ((List<?>) value).toArray();
+                if (value instanceof List list) {
+                    array = list.toArray();
                 } else {
                     array = (Object[]) value;
                 }
index 4df30c0cb83815814ec98bedc8e25cecaae5317a..ae5aa4f2ffe76be90c446f808fb9cbaeea3eee60 100644 (file)
@@ -97,10 +97,10 @@ public class XmlRpcResponse implements RpcResponse {
         public void startElement(String uri, String localName, String qName, Attributes attributes)
                 throws SAXException {
             String tag = qName.toLowerCase();
-            if (tag.equals("array") || tag.equals("struct")) {
+            if ("array".equals(tag) || "struct".equals(tag)) {
                 currentDataObject.addLast(new ArrayList<>());
             }
-            isValueTag = tag.equals("value");
+            isValueTag = "value".equals(tag);
             tagValue = new StringBuilder();
         }
 
index 2323d52253513b36e4a9cb4a579786a49e27b026..d5f20a3a8a423819d316e67330c43b887070305d 100644 (file)
@@ -105,8 +105,7 @@ public abstract class CommonRpcParser<M, R> implements RpcParser<M, R> {
      * Converts the object to a string array.
      */
     protected String[] toOptionList(Object optionList) {
-        if (optionList != null && optionList instanceof Object[]) {
-            Object[] vl = (Object[]) optionList;
+        if (optionList != null && optionList instanceof Object[] vl) {
             String[] stringArray = new String[vl.length];
             for (int i = 0; i < vl.length; i++) {
                 stringArray[i] = vl[i].toString();
@@ -232,9 +231,9 @@ public abstract class CommonRpcParser<M, R> implements RpcParser<M, R> {
         if (value == null || value.isBlank()) {
             return null;
         }
-        if (value.equalsIgnoreCase("true") || value.equalsIgnoreCase("on")) {
+        if ("true".equalsIgnoreCase(value) || "on".equalsIgnoreCase(value)) {
             return (Boolean.TRUE);
-        } else if (value.equalsIgnoreCase("false") || value.equalsIgnoreCase("off")) {
+        } else if ("false".equalsIgnoreCase(value) || "off".equalsIgnoreCase(value)) {
             return (Boolean.FALSE);
         } else if (value.matches("(-|\\+)?[0-9]+")) {
             return (Integer.valueOf(value));
index c60e3e73cda2855fba2e08153bb6c29909bd8a8c..5254b2f586ad1e41fcc8ae3a130a8996661d1fcf 100644 (file)
@@ -58,7 +58,7 @@ public class GetParamsetParser extends CommonRpcParser<Object[], Void> {
 
                 // suppress warning for this datapoint due wrong CCU metadata
                 String deviceType = channel.getDevice().getType();
-                boolean isHmSenMdirNextTrans = dpInfo.getName().equals("NEXT_TRANSMISSION")
+                boolean isHmSenMdirNextTrans = "NEXT_TRANSMISSION".equals(dpInfo.getName())
                         && (deviceType.startsWith("HM-Sen-MDIR-O") || deviceType.startsWith("HM-Sen-MDIR-WM55")
                                 || deviceType.startsWith("HM-Sec-MDIR-2"));
                 if (!isHmSenMdirNextTrans) {
index c0081fa159590967e1424ee882a4548001f1768c..b40eaacadf3593a09d4e8bc5cc3c196bff3ec976 100644 (file)
@@ -28,9 +28,9 @@ import org.openhab.core.common.ThreadPoolManager;
  * @author Gerhard Riegler - Initial contribution
  */
 public class BinRpcNetworkService implements Runnable {
-    private static final byte BIN_EMPTY_STRING[] = { 'B', 'i', 'n', 1, 0, 0, 0, 8, 0, 0, 0, 3, 0, 0, 0, 0 };
-    private static final byte BIN_EMPTY_ARRAY[] = { 'B', 'i', 'n', 1, 0, 0, 0, 8, 0, 0, 1, 0, 0, 0, 0, 0 };
-    private static final byte BIN_EMPTY_EVENT_LIST[] = { 'B', 'i', 'n', 1, 0, 0, 0, 21, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0,
+    private static final byte[] BIN_EMPTY_STRING = { 'B', 'i', 'n', 1, 0, 0, 0, 8, 0, 0, 0, 3, 0, 0, 0, 0 };
+    private static final byte[] BIN_EMPTY_ARRAY = { 'B', 'i', 'n', 1, 0, 0, 0, 8, 0, 0, 1, 0, 0, 0, 0, 0 };
+    private static final byte[] BIN_EMPTY_EVENT_LIST = { 'B', 'i', 'n', 1, 0, 0, 0, 21, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0,
             3, 0, 0, 0, 5, 'e', 'v', 'e', 'n', 't' };
 
     private static final String RPC_POOL_NAME = "homematicRpc";
index 6badfa157485d052f1b0fb9b2718c12f2c5b3c31..f7d0d6bacaaccf6360dd15fb002eff0bae02da6d 100644 (file)
@@ -43,7 +43,7 @@ public class DeleteDeviceModeVirtualDatapointHandler extends AbstractVirtualData
 
     @Override
     public void initialize(HmDevice device) {
-        if (!device.isGatewayExtras() && !(device.getHmInterface() == HmInterface.CUXD)) {
+        if (!device.isGatewayExtras() && device.getHmInterface() != HmInterface.CUXD) {
             HmDatapoint dp = addDatapoint(device, 0, getName(), HmValueType.ENUM, 0, false);
             dp.setOptions(new String[] { MODE_LOCKED, MODE_RESET, MODE_FORCE, MODE_DEFER });
             dp.setMinValue(0);
index 8005fc36b0ceddb69e66e4f311a208d124cf81cb..24855e773487d2c6a7604c1293ae7a6cd74d058c 100644 (file)
@@ -44,7 +44,7 @@ public class DeleteDeviceVirtualDatapointHandler extends AbstractVirtualDatapoin
 
     @Override
     public void initialize(HmDevice device) {
-        if (!device.isGatewayExtras() && !(device.getHmInterface() == HmInterface.CUXD)) {
+        if (!device.isGatewayExtras() && device.getHmInterface() != HmInterface.CUXD) {
             addDatapoint(device, 0, getName(), HmValueType.BOOL, Boolean.FALSE, false);
         }
     }
index 9c4097ebd764c38b1d7340b7a704eee674fd65cc..5ad741de718da479d82ea77963146fae0eedfadb 100644 (file)
@@ -40,8 +40,7 @@ public class DisplayOptionsVirtualDatapointHandler extends AbstractVirtualDatapo
 
     @Override
     public void initialize(HmDevice device) {
-        if (device.getType().startsWith(DEVICE_TYPE_19_REMOTE_CONTROL)
-                && !(device.getHmInterface() == HmInterface.CUXD)) {
+        if (device.getType().startsWith(DEVICE_TYPE_19_REMOTE_CONTROL) && device.getHmInterface() != HmInterface.CUXD) {
             addDatapoint(device, 18, getName(), HmValueType.STRING, null, false);
         }
     }
index 919e7bef37c3cacdab9e446b3dbff95975b76885..7e42e5a4795dc00fc0fba72e4ca64b4acfbe0ee7 100644 (file)
@@ -62,8 +62,8 @@ public class OnTimeAutomaticVirtualDatapointHandler extends AbstractVirtualDatap
 
     @Override
     public boolean canHandleCommand(HmDatapoint dp, Object value) {
-        boolean isLevel = DATAPOINT_NAME_LEVEL.equals(dp.getName()) && value != null && value instanceof Number
-                && ((Number) value).doubleValue() > 0.0;
+        boolean isLevel = DATAPOINT_NAME_LEVEL.equals(dp.getName()) && value != null
+                && value instanceof Number numberCommand && numberCommand.doubleValue() > 0.0;
         boolean isState = DATAPOINT_NAME_STATE.equals(dp.getName()) && MiscUtils.isTrueValue(value);
 
         return ((isLevel || isState) && getVirtualDatapointValue(dp.getChannel()) > 0.0)
index 8b18fe65a404c6b345116ef8910849a00c5e5c15..b6d7a69a70ebb94c8cea5049b18ec42b46a2bdb1 100644 (file)
@@ -19,7 +19,7 @@ import java.net.DatagramPacket;
 import java.net.InetAddress;
 import java.net.MulticastSocket;
 import java.net.SocketTimeoutException;
-import java.util.Collections;
+import java.util.Set;
 import java.util.concurrent.Future;
 
 import org.openhab.binding.homematic.internal.discovery.eq3udp.Eq3UdpRequest;
@@ -50,7 +50,7 @@ public class CcuDiscoveryService extends AbstractDiscoveryService {
     private NetworkAddressService networkAddressService;
 
     public CcuDiscoveryService() {
-        super(Collections.singleton(THING_TYPE_BRIDGE), 5, true);
+        super(Set.of(THING_TYPE_BRIDGE), 5, true);
     }
 
     @Override
index 7e61eb669f0f8f3cd6752aad106dafbcf52bd42c..22eae0964805b5a82d1b156560eb601a4ffff4af 100644 (file)
@@ -14,7 +14,6 @@ package org.openhab.binding.homematic.internal.discovery;
 
 import static org.openhab.binding.homematic.internal.HomematicBindingConstants.THING_TYPE_BRIDGE;
 
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Set;
@@ -41,7 +40,7 @@ public class HomegearDiscoveryParticipant implements UpnpDiscoveryParticipant {
 
     @Override
     public Set<ThingTypeUID> getSupportedThingTypeUIDs() {
-        return Collections.singleton(THING_TYPE_BRIDGE);
+        return Set.of(THING_TYPE_BRIDGE);
     }
 
     @Override
index 22693d61518efe18350f21582eff1f6296b1de14..ced1ab10395d9c26a90fe4f42b64a020be6dfa76 100644 (file)
@@ -14,7 +14,7 @@ package org.openhab.binding.homematic.internal.discovery;
 
 import static org.openhab.binding.homematic.internal.HomematicBindingConstants.BINDING_ID;
 
-import java.util.Collections;
+import java.util.Set;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
 
@@ -54,13 +54,13 @@ public class HomematicDeviceDiscoveryService extends AbstractDiscoveryService
     private volatile Object installModeSync = new Object();
 
     public HomematicDeviceDiscoveryService() {
-        super(Collections.singleton(new ThingTypeUID(BINDING_ID, "-")), DISCOVER_TIMEOUT_SECONDS, false);
+        super(Set.of(new ThingTypeUID(BINDING_ID, "-")), DISCOVER_TIMEOUT_SECONDS, false);
     }
 
     @Override
     public void setThingHandler(@Nullable ThingHandler handler) {
-        if (handler instanceof HomematicBridgeHandler) {
-            this.bridgeHandler = (HomematicBridgeHandler) handler;
+        if (handler instanceof HomematicBridgeHandler homematicBridgeHandler) {
+            this.bridgeHandler = homematicBridgeHandler;
             this.bridgeHandler.setDiscoveryService(this);
         }
     }
index aefa58005c206de14b6b02aa4eb896c66f450954..c19e6efe0f123b08cdded0f4db62b71742a7757b 100644 (file)
@@ -17,8 +17,8 @@ import static org.openhab.core.thing.Thing.*;
 
 import java.io.IOException;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 
@@ -229,7 +229,7 @@ public class HomematicBridgeHandler extends BaseBridgeHandler implements Homemat
 
     @Override
     public Collection<Class<? extends ThingHandlerService>> getServices() {
-        return Collections.singleton(HomematicDeviceDiscoveryService.class);
+        return Set.of(HomematicDeviceDiscoveryService.class);
     }
 
     @Override
index 542fac8073e2a9e0b37c23f6911c164714a503c2..de3b66aa4550c89e5438a53210320f08911890b4 100644 (file)
@@ -594,15 +594,14 @@ public class HomematicThingHandler extends BaseThingHandler {
                     if (dp != null) {
                         try {
                             if (newValue != null) {
-                                if (newValue instanceof BigDecimal) {
-                                    final BigDecimal decimal = (BigDecimal) newValue;
+                                if (newValue instanceof BigDecimal decimal) {
                                     if (dp.isIntegerType()) {
                                         newValue = decimal.intValue();
                                     } else if (dp.isFloatType()) {
                                         newValue = decimal.doubleValue();
                                     }
-                                } else if (newValue instanceof String && dp.isEnumType()) {
-                                    newValue = dp.getOptionIndex((String) newValue);
+                                } else if (newValue instanceof String string && dp.isEnumType()) {
+                                    newValue = dp.getOptionIndex(string);
                                 }
                                 if (!Objects.equals(dp.getValue(), newValue)) {
                                     sendDatapoint(dp, new HmDatapointConfig(), newValue);
index dfbea5d6539b8a4cf484b5b512c2f53743ccc84c..c5446ef0143b6c062c46b9d33c99f46c830e7bfb 100644 (file)
@@ -426,9 +426,10 @@ public class HmDatapoint implements Cloneable {
 
     @Override
     public String toString() {
-        return String.format("%s[name=%s,value=%s,defaultValue=%s,type=%s,minValue=%s,maxValue=%s,options=%s,"
-                + "readOnly=%b,readable=%b,unit=%s,description=%s,info=%s,paramsetType=%s,virtual=%b,trigger=%b]",
-                getClass().getSimpleName(), name, value, defaultValue, type, minValue, maxValue,
+        return String.format("""
+                %s[name=%s,value=%s,defaultValue=%s,type=%s,minValue=%s,maxValue=%s,options=%s,\
+                readOnly=%b,readable=%b,unit=%s,description=%s,info=%s,paramsetType=%s,virtual=%b,trigger=%b]\
+                """, getClass().getSimpleName(), name, value, defaultValue, type, minValue, maxValue,
                 (options == null ? null : String.join(";", options)), readOnly, readable, unit, description, info,
                 paramsetType, virtual, trigger);
     }
index 905e6ed71e517bcf98722607f0d9b07480b49164..e6cd7a89d9d8b7aadcaf0fd6d7f97f4d4b93468f 100644 (file)
@@ -96,7 +96,7 @@ public class HmDatapointInfo {
 
     @Override
     public boolean equals(Object obj) {
-        if (obj == null || !(obj instanceof HmDatapointInfo)) {
+        if (!(obj instanceof HmDatapointInfo)) {
             return false;
         }
         HmDatapointInfo comp = (HmDatapointInfo) obj;
index 1bfc46e7d63a1472d4e7253987ca4406d1c4823d..6c7262e735c892f4deb717b3f1c96b7e4773e222 100644 (file)
@@ -213,7 +213,7 @@ public class HmDevice {
 
     @Override
     public boolean equals(Object obj) {
-        if (obj == null || !(obj instanceof HmDevice)) {
+        if (!(obj instanceof HmDevice)) {
             return false;
         }
         HmDevice comp = (HmDevice) obj;
index a572a4f5029a460c5791d3954407df650930039d..a088fc5f6d15d3f975b5d120294a77be6015433d 100644 (file)
@@ -189,11 +189,11 @@ public class HomematicTypeGeneratorImpl implements HomematicTypeGenerator {
         for (String deviceType : firmwaresByType.keySet()) {
             Set<String> firmwares = firmwaresByType.get(deviceType);
             if (firmwares.size() > 1) {
-                logger.info(
-                        "Multiple firmware versions for device type '{}' found ({}). "
-                                + "Make sure, all devices of the same type have the same firmware version, "
-                                + "otherwise you MAY have channel and/or datapoint errors in the logfile",
-                        deviceType, String.join(", ", firmwares));
+                logger.info("""
+                        Multiple firmware versions for device type '{}' found ({}). \
+                        Make sure, all devices of the same type have the same firmware version, \
+                        otherwise you MAY have channel and/or datapoint errors in the logfile\
+                        """, deviceType, String.join(", ", firmwares));
             }
         }
     }
@@ -387,7 +387,7 @@ public class HomematicTypeGeneratorImpl implements HomematicTypeGenerator {
      */
     public static boolean isIgnoredDatapoint(HmDatapoint dp) {
         for (String testValue : IGNORE_DATAPOINT_NAMES) {
-            if (dp.getName().indexOf(testValue) > -1) {
+            if (dp.getName().contains(testValue)) {
                 return true;
             }
         }
index 7cea60ed85b1a3e4f8dc1f4d777d7385d6f6749f..27ce39f46824e2f6e066042727972cf0ee08b53c 100644 (file)
@@ -299,8 +299,11 @@ public class P1Payload {
 
     @Override
     public String toString() {
-        return String.format("P1 [version: %d model: %s ssid: %s signal: %d"
-                + " imp1: %f imp2: %f exp1: %f exp2: %f active: %f active1: %f active2: %f active3: %f gas: %f timestamp: %.0f]",
+        return String.format(
+                """
+                        P1 [version: %d model: %s ssid: %s signal: %d\
+                         imp1: %f imp2: %f exp1: %f exp2: %f active: %f active1: %f active2: %f active3: %f gas: %f timestamp: %.0f]\
+                        """,
                 smrVersion, meterModel, wifiSsid, wifiStrength, totalEnergyImportT1Kwh, totalEnergyImportT2Kwh,
                 totalEnergyExportT1Kwh, totalEnergyExportT2Kwh, activePowerW, activePowerL1W, activePowerL2W,
                 activePowerL3W, totalGasM3, gasTimestamp);
index d725a7fc0e979992f4649d81fb4fc906c860c624..220ef515364651a0784327efb34d6998e03037a3 100644 (file)
@@ -39,9 +39,7 @@ public class HPFeatures {
         boolean localScannerStatus = false;
 
         for (Node n = root.getFirstChild(); n != null; n = n.getNextSibling()) {
-            if (n instanceof Element) {
-                Element feature = (Element) n;
-
+            if (n instanceof Element feature) {
                 NodeList resourceType = feature.getElementsByTagName("dd:ResourceType");
 
                 if (resourceType.getLength() > 0) {
index 2e3215e6a90539c78228c23ee1d6a1d0db957607..be633a33162caf93adb1deaf3213eef98a3bee81 100644 (file)
@@ -279,8 +279,7 @@ public class HPUsage {
         int value = 0;
 
         for (Node n = parentNode.getFirstChild(); n != null; n = n.getNextSibling()) {
-            if (n instanceof Element) {
-                Element nodeItem = (Element) n;
+            if (n instanceof Element nodeItem) {
                 if (nodeItem.getElementsByTagName(collateTagName).item(0).getTextContent()
                         .equalsIgnoreCase(collateTagNameValue)) {
                     int nodeValue = Integer
index 9fc3e42e298b5c2cb3d7f4ba900fd2e3d4bc03c1..4a9212935fb18b4fd9abb44b62ce0deb83bf877c 100644 (file)
@@ -45,11 +45,9 @@ public class Util {
         String contentString = contentProvider == null ? "null"
                 : StreamSupport.stream(contentProvider.spliterator(), false)
                         .map(b -> StandardCharsets.UTF_8.decode(b).toString()).collect(Collectors.joining(", "));
-        String logString = "Method = {" + request.getMethod() + "}, Headers = {"
+        return "Method = {" + request.getMethod() + "}, Headers = {"
                 + request.getHeaders().stream().map(HttpField::toString).collect(Collectors.joining(", "))
                 + "}, Content = {" + contentString + "}";
-
-        return logString;
     }
 
     /**
index 272daf18db23dffe080d52d3bc97c4418489597a..2d53a7817b412660277bc328c2a1933cbbf4f5cc 100644 (file)
@@ -60,13 +60,11 @@ public class ColorItemConverter extends AbstractTransformingItemConverter {
             return string;
         }
 
-        if (command instanceof HSBType) {
-            HSBType newState = (HSBType) command;
+        if (command instanceof HSBType newState) {
             state = newState;
             return hsbToString(newState);
-        } else if (command instanceof PercentType && state instanceof HSBType) {
-            HSBType newState = new HSBType(((HSBType) state).getBrightness(), ((HSBType) state).getSaturation(),
-                    (PercentType) command);
+        } else if (command instanceof PercentType percentCommand && state instanceof HSBType hsb) {
+            HSBType newState = new HSBType(hsb.getBrightness(), hsb.getSaturation(), percentCommand);
             state = newState;
             return hsbToString(newState);
         }
@@ -78,32 +76,29 @@ public class ColorItemConverter extends AbstractTransformingItemConverter {
     public State toState(String string) {
         State newState = UnDefType.UNDEF;
         if (string.equals(channelConfig.onValue)) {
-            if (state instanceof HSBType) {
-                newState = new HSBType(((HSBType) state).getHue(), ((HSBType) state).getSaturation(),
-                        PercentType.HUNDRED);
+            if (state instanceof HSBType hsb) {
+                newState = new HSBType(hsb.getHue(), hsb.getSaturation(), PercentType.HUNDRED);
             } else {
                 newState = HSBType.WHITE;
             }
         } else if (string.equals(channelConfig.offValue)) {
-            if (state instanceof HSBType) {
-                newState = new HSBType(((HSBType) state).getHue(), ((HSBType) state).getSaturation(), PercentType.ZERO);
+            if (state instanceof HSBType hsb) {
+                newState = new HSBType(hsb.getHue(), hsb.getSaturation(), PercentType.ZERO);
             } else {
                 newState = HSBType.BLACK;
             }
-        } else if (string.equals(channelConfig.increaseValue) && state instanceof HSBType) {
-            BigDecimal newBrightness = ((HSBType) state).getBrightness().toBigDecimal().add(channelConfig.step);
+        } else if (string.equals(channelConfig.increaseValue) && state instanceof HSBType hsb) {
+            BigDecimal newBrightness = hsb.getBrightness().toBigDecimal().add(channelConfig.step);
             if (HUNDRED.compareTo(newBrightness) < 0) {
                 newBrightness = HUNDRED;
             }
-            newState = new HSBType(((HSBType) state).getHue(), ((HSBType) state).getSaturation(),
-                    new PercentType(newBrightness));
-        } else if (string.equals(channelConfig.decreaseValue) && state instanceof HSBType) {
-            BigDecimal newBrightness = ((HSBType) state).getBrightness().toBigDecimal().subtract(channelConfig.step);
+            newState = new HSBType(hsb.getHue(), hsb.getSaturation(), new PercentType(newBrightness));
+        } else if (string.equals(channelConfig.decreaseValue) && state instanceof HSBType hsb) {
+            BigDecimal newBrightness = hsb.getBrightness().toBigDecimal().subtract(channelConfig.step);
             if (BigDecimal.ZERO.compareTo(newBrightness) > 0) {
                 newBrightness = BigDecimal.ZERO;
             }
-            newState = new HSBType(((HSBType) state).getHue(), ((HSBType) state).getSaturation(),
-                    new PercentType(newBrightness));
+            newState = new HSBType(hsb.getHue(), hsb.getSaturation(), new PercentType(newBrightness));
         } else {
             Matcher matcher = TRIPLE_MATCHER.matcher(string);
             if (matcher.matches()) {
index 11a27e4809c98e333700116ee5d4d44d28a3605e..f46e50e788e2711ff9ff5d16e4b2dac643f57652 100644 (file)
@@ -55,8 +55,8 @@ public class DimmerItemConverter extends AbstractTransformingItemConverter {
             return string;
         }
 
-        if (command instanceof PercentType) {
-            return ((PercentType) command).toString();
+        if (command instanceof PercentType percentCommand) {
+            return percentCommand.toString();
         }
 
         throw new IllegalArgumentException("Command type '" + command.toString() + "' not supported");
@@ -70,14 +70,14 @@ public class DimmerItemConverter extends AbstractTransformingItemConverter {
             newState = PercentType.HUNDRED;
         } else if (string.equals(channelConfig.offValue)) {
             newState = PercentType.ZERO;
-        } else if (string.equals(channelConfig.increaseValue) && state instanceof PercentType) {
-            BigDecimal newBrightness = ((PercentType) state).toBigDecimal().add(channelConfig.step);
+        } else if (string.equals(channelConfig.increaseValue) && state instanceof PercentType brightnessState) {
+            BigDecimal newBrightness = brightnessState.toBigDecimal().add(channelConfig.step);
             if (HUNDRED.compareTo(newBrightness) < 0) {
                 newBrightness = HUNDRED;
             }
             newState = new PercentType(newBrightness);
-        } else if (string.equals(channelConfig.decreaseValue) && state instanceof PercentType) {
-            BigDecimal newBrightness = ((PercentType) state).toBigDecimal().subtract(channelConfig.step);
+        } else if (string.equals(channelConfig.decreaseValue) && state instanceof PercentType brightnessState) {
+            BigDecimal newBrightness = brightnessState.toBigDecimal().subtract(channelConfig.step);
             if (BigDecimal.ZERO.compareTo(newBrightness) > 0) {
                 newBrightness = BigDecimal.ZERO;
             }
index 9112d138ebfd7174eeb2b71e98c2ae129e6aca0b..5831c6c6e57a6144af2bd208c5a29f1724001989 100644 (file)
@@ -40,6 +40,7 @@ public class GenericItemConverter extends AbstractTransformingItemConverter {
         this.toState = toState;
     }
 
+    @Override
     protected State toState(String value) {
         try {
             return toState.apply(value);
@@ -53,6 +54,7 @@ public class GenericItemConverter extends AbstractTransformingItemConverter {
         return null;
     }
 
+    @Override
     protected String toString(Command command) {
         return command.toString();
     }
index c5d333af9098b185e1676a02ed32f890392e3e1b..1c5ba2685488ad7b861d9b94b256ca5c1c11b964 100644 (file)
@@ -51,7 +51,7 @@ public class RollershutterItemConverter extends AbstractTransformingItemConverte
             return string;
         }
 
-        if (command instanceof PercentType) {
+        if (command instanceof PercentType brightnessState) {
             final String downValue = channelConfig.downValue;
             final String upValue = channelConfig.upValue;
             if (command.equals(PercentType.HUNDRED) && downValue != null) {
@@ -59,7 +59,7 @@ public class RollershutterItemConverter extends AbstractTransformingItemConverte
             } else if (command.equals(PercentType.ZERO) && upValue != null) {
                 return upValue;
             } else {
-                return ((PercentType) command).toString();
+                return brightnessState.toString();
             }
         }
 
index a9b0bee84d3d62979a5d2dd2dbecbd3c71fad9a8..385cd4db890157c38f96e5639e32b5056e09a29a 100644 (file)
@@ -83,9 +83,8 @@ public class HttpResponseListener extends BufferingResponseListener {
     }
 
     private String responseToLogString(Response response) {
-        String logString = "Code = {" + response.getStatus() + "}, Headers = {"
+        return "Code = {" + response.getStatus() + "}, Headers = {"
                 + response.getHeaders().stream().map(HttpField::toString).collect(Collectors.joining(", "))
                 + "}, Content = {" + getContentAsString() + "}";
-        return logString;
     }
 }
index a3a5c754206c745c633d526131537b76e039e00e..b19745b0e04d9dc3c63fd012c3db2f10a0c0af11 100644 (file)
@@ -264,8 +264,8 @@ public class HydrawiseGraphQLClient {
     private void sendGraphQLMutation(String content)
             throws HydrawiseConnectionException, HydrawiseAuthenticationException, HydrawiseCommandException {
         Mutation mutation = new Mutation(content);
-        logger.debug("Sending Mutation {}", gson.toJson(mutation).toString());
-        String response = sendGraphQLRequest(gson.toJson(mutation).toString());
+        logger.debug("Sending Mutation {}", gson.toJson(mutation));
+        String response = sendGraphQLRequest(gson.toJson(mutation));
         logger.debug("Mutation response {}", response);
         try {
             MutationResponse mResponse = gson.fromJson(response, MutationResponse.class);
@@ -273,7 +273,7 @@ public class HydrawiseGraphQLClient {
                 throw new HydrawiseCommandException("Malformed response: " + response);
             }
             Optional<MutationResponseStatus> status = mResponse.data.values().stream().findFirst();
-            if (!status.isPresent()) {
+            if (status.isEmpty()) {
                 throw new HydrawiseCommandException("Unknown response: " + response);
             }
             if (status.get().status != StatusCode.OK) {
index 530cbdd039bbf73e0f06488ca26b9b83e0d762ff..4d3a9ec3eac66afda9bab51e9e6b499f615f64ee 100644 (file)
@@ -99,8 +99,7 @@ public class HydrawiseLocalApiClient {
     public LocalScheduleResponse getLocalSchedule()
             throws HydrawiseConnectionException, HydrawiseAuthenticationException {
         String json = doGet(localGetURL);
-        LocalScheduleResponse response = gson.fromJson(json, LocalScheduleResponse.class);
-        return response;
+        return gson.fromJson(json, LocalScheduleResponse.class);
     }
 
     /**
@@ -191,7 +190,7 @@ public class HydrawiseLocalApiClient {
             throws HydrawiseConnectionException, HydrawiseAuthenticationException, HydrawiseCommandException {
         String json = doGet(url);
         SetZoneResponse response = gson.fromJson(json, SetZoneResponse.class);
-        if (response.messageType.equals("error")) {
+        if ("error".equals(response.messageType)) {
             throw new HydrawiseCommandException(response.message);
         }
         return response.message;
index b370ef81285695f7fc436a87c53d247e223d92f1..29102ddb6924bb7e532984985a0aad7c7054fb5e 100644 (file)
@@ -12,9 +12,9 @@
  */
 package org.openhab.binding.hydrawise.internal.discovery;
 
-import java.util.Collections;
 import java.util.Date;
 import java.util.List;
+import java.util.Set;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.jdt.annotation.Nullable;
@@ -46,7 +46,7 @@ public class HydrawiseCloudControllerDiscoveryService extends AbstractDiscoveryS
     HydrawiseAccountHandler handler;
 
     public HydrawiseCloudControllerDiscoveryService() {
-        super(Collections.singleton(HydrawiseBindingConstants.THING_TYPE_CONTROLLER), TIMEOUT, true);
+        super(Set.of(HydrawiseBindingConstants.THING_TYPE_CONTROLLER), TIMEOUT, true);
     }
 
     @Override
@@ -103,8 +103,7 @@ public class HydrawiseCloudControllerDiscoveryService extends AbstractDiscoveryS
                     String.valueOf(id));
             thingDiscovered(DiscoveryResultBuilder.create(thingUID).withLabel(label).withBridge(bridgeUID)
                     .withProperty(HydrawiseBindingConstants.CONFIG_CONTROLLER_ID, id)
-                    .withRepresentationProperty(String.valueOf(HydrawiseBindingConstants.CONFIG_CONTROLLER_ID))
-                    .build());
+                    .withRepresentationProperty(HydrawiseBindingConstants.CONFIG_CONTROLLER_ID).build());
         }
     }
 }
index 44f8f3853a1c5abef989cbf45133eea5f897780c..01940cd1029a1ff69bf18ac6b745952c02959018 100644 (file)
@@ -17,6 +17,7 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
+import java.util.Set;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
 
@@ -122,7 +123,7 @@ public class HydrawiseAccountHandler extends BaseBridgeHandler implements Access
 
     @Override
     public Collection<Class<? extends ThingHandlerService>> getServices() {
-        return Collections.singleton(HydrawiseCloudControllerDiscoveryService.class);
+        return Set.of(HydrawiseCloudControllerDiscoveryService.class);
     }
 
     public void addControllerListeners(HydrawiseControllerListener listener) {
@@ -209,7 +210,7 @@ public class HydrawiseAccountHandler extends BaseBridgeHandler implements Access
             if (response == null) {
                 throw new HydrawiseConnectionException("Malformed response");
             }
-            if (response.errors != null && response.errors.size() > 0) {
+            if (response.errors != null && !response.errors.isEmpty()) {
                 throw new HydrawiseConnectionException(response.errors.stream().map(error -> error.message).reduce("",
                         (messages, message) -> messages + message + ". "));
             }
index b5894934a402e3ae9fbc98f339d15e92cde9b3ee..7fb078bf638e18b954347588d78faf1632562d1d 100644 (file)
@@ -215,7 +215,7 @@ public class HydrawiseLocalHandler extends BaseThingHandler {
             }
 
             updateGroupState(CHANNEL_GROUP_ALLZONES, CHANNEL_ZONE_RUN,
-                    status.running.size() > 0 ? OnOffType.ON : OnOffType.OFF);
+                    !status.running.isEmpty() ? OnOffType.ON : OnOffType.OFF);
         });
     }
 
index 8a8cdee117017e49f5096c7bb98741ef799624d8..5b911bdb177f5a0a6b002e4f153396f06e087f41 100644 (file)
@@ -13,7 +13,6 @@
 package org.openhab.binding.hyperion.internal;
 
 import java.math.BigDecimal;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Set;
@@ -39,7 +38,7 @@ public class HyperionDiscoveryParticipant implements MDNSDiscoveryParticipant {
 
     @Override
     public Set<ThingTypeUID> getSupportedThingTypeUIDs() {
-        return Collections.singleton(HyperionBindingConstants.THING_TYPE_SERVER_NG);
+        return Set.of(HyperionBindingConstants.THING_TYPE_SERVER_NG);
     }
 
     @Override
index 8e8596b35d00ffbd0a5f1239b6dac190e9feb9ba..25145471d7f2199e4f24f59b2b627103346a01bc 100644 (file)
@@ -68,8 +68,6 @@ public class JsonTcpConnection {
             outToServer.writeBytes(json + System.lineSeparator());
             outToServer.flush();
             response = inFromServer.readLine();
-        } catch (IOException e) {
-            throw e;
         }
         logger.debug("Received: {}", response);
         return response;
index ff9dd2e7d68acf81375e44b1ebc48c4e89e2a30a..6f2059c8b31257f7c472caeb5a26e31a4126c09b 100644 (file)
@@ -255,10 +255,9 @@ public class HyperionHandler extends BaseThingHandler {
     }
 
     private void handleBrightness(Command command) throws IOException, CommandUnsuccessfulException {
-        if (command instanceof PercentType) {
-            PercentType percent = (PercentType) command;
+        if (command instanceof PercentType percentCommand) {
             Transform transform = new Transform();
-            transform.setLuminanceGain(percent.doubleValue() / 100);
+            transform.setLuminanceGain(percentCommand.doubleValue() / 100);
             TransformCommand transformCommand = new TransformCommand(transform);
             sendCommand(transformCommand);
         } else {
@@ -267,9 +266,8 @@ public class HyperionHandler extends BaseThingHandler {
     }
 
     private void handleColor(Command command) throws IOException, CommandUnsuccessfulException {
-        if (command instanceof HSBType) {
-            HSBType color = (HSBType) command;
-            Color c = new Color(color.getRGB());
+        if (command instanceof HSBType hsbCommand) {
+            Color c = new Color(hsbCommand.getRGB());
             int r = c.getRed();
             int g = c.getGreen();
             int b = c.getBlue();
index 26aae96fdee3dc03f28bf20d16aad8ae4513f351..9fc4942309355c6efbca2889aed76833a455b3a3 100644 (file)
@@ -176,7 +176,6 @@ public class HyperionNgHandler extends BaseThingHandler {
             // update Hyperion, older API compatibility
             Hyperion hyperion = info.getHyperion();
             if (hyperion != null) {
-
                 updateHyperion(hyperion);
             }
 
@@ -422,9 +421,8 @@ public class HyperionNgHandler extends BaseThingHandler {
     }
 
     private void handleBrightness(Command command) throws IOException, CommandUnsuccessfulException {
-        if (command instanceof PercentType) {
-            PercentType percent = (PercentType) command;
-            int brightnessValue = percent.intValue();
+        if (command instanceof PercentType percentCommand) {
+            int brightnessValue = percentCommand.intValue();
 
             Adjustment adjustment = new Adjustment();
             adjustment.setBrightness(brightnessValue);
@@ -437,9 +435,8 @@ public class HyperionNgHandler extends BaseThingHandler {
     }
 
     private void handleColor(Command command) throws IOException, CommandUnsuccessfulException {
-        if (command instanceof HSBType) {
-            HSBType color = (HSBType) command;
-            Color c = new Color(color.getRGB());
+        if (command instanceof HSBType hsbCommand) {
+            Color c = new Color(hsbCommand.getRGB());
             int r = c.getRed();
             int g = c.getGreen();
             int b = c.getBlue();
index f130c03c72a551458ac5355d880571da31c23c31..22c61ed22cc4425b519d400cd7106ec02f442cce 100644 (file)
@@ -45,7 +45,7 @@ public class Iammeter3080THandler extends IammeterBaseHandler {
         JsonObject iammeterData = iammeterDataElement.getAsJsonObject();
         String keyWord = "Datas";
         if (iammeterData.has("Datas") && iammeterData.has("SN")) {
-            String groups[] = { "powerPhaseA", "powerPhaseB", "powerPhaseC" };
+            String[] groups = { "powerPhaseA", "powerPhaseB", "powerPhaseC" };
             for (int row = 0; row < groups.length; row++) {
                 String gpName = groups[row];
                 List<Channel> chnList = getThing().getChannelsOfGroup(gpName);
index 78f6a172e821a6b301b58364a1c1192f6edd489e..3c854a353a326cd04e02fb4a245c33a79805a918 100644 (file)
@@ -200,13 +200,12 @@ public class IAqualinkHandler extends BaseThingHandler {
                             : "on".equals(command.toString()) ? "1" : command.toString();
                     client.lightCommand(serialNumber, sessionId, auxId, cmd,
                             AuxiliaryType.fromChannelTypeUID(getChannelTypeUID(channelUID)).getSubType());
-                } else if (command instanceof OnOffType) {
+                } else if (command instanceof OnOffType onOffCommand) {
                     // these are toggle commands and require we have the current state to turn on/off
                     Auxiliary[] auxs = client.getAux(serialNumber, sessionId);
                     Optional<Auxiliary> optional = Arrays.stream(auxs).filter(o -> o.getName().equals(channelName))
                             .findFirst();
                     if (optional.isPresent()) {
-                        OnOffType onOffCommand = (OnOffType) command;
                         State currentState = toState(channelName, "Switch", optional.get().getState());
                         if (!currentState.equals(onOffCommand)) {
                             client.auxSetCommand(serialNumber, sessionId, channelName);
@@ -226,8 +225,7 @@ public class IAqualinkHandler extends BaseThingHandler {
                         client.setPoolTemp(serialNumber, sessionId, value.floatValue());
                     }
                 }
-            } else if (command instanceof OnOffType) {
-                OnOffType onOffCommand = (OnOffType) command;
+            } else if (command instanceof OnOffType onOffCommand) {
                 // these are toggle commands and require we have the current state to turn on/off
                 if (channelName.startsWith("onetouch_")) {
                     OneTouch[] ota = client.getOneTouch(serialNumber, sessionId);
index bc02959dcf847e4869406846e6c62562f3b33f31..13c08ebd18841fd3aa96b1159d4e6ffa74b19968 100644 (file)
@@ -14,7 +14,6 @@ package org.openhab.binding.icalendar.internal;
 
 import static org.openhab.binding.icalendar.internal.ICalendarBindingConstants.*;
 
-import java.util.Collections;
 import java.util.Set;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
@@ -52,8 +51,8 @@ import org.slf4j.LoggerFactory;
 public class ICalendarHandlerFactory extends BaseThingHandlerFactory {
 
     private static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Stream
-            .of(Collections.singleton(THING_TYPE_CALENDAR), Collections.singleton(THING_TYPE_FILTERED_EVENTS))
-            .flatMap(Set::stream).collect(Collectors.toSet());
+            .of(Set.of(THING_TYPE_CALENDAR), Set.of(THING_TYPE_FILTERED_EVENTS)).flatMap(Set::stream)
+            .collect(Collectors.toSet());
     private final Logger logger = LoggerFactory.getLogger(ICalendarHandlerFactory.class);
 
     private final HttpClient sharedHttpClient;
@@ -81,8 +80,8 @@ public class ICalendarHandlerFactory extends BaseThingHandlerFactory {
             return null;
         }
         if (thingTypeUID.equals(THING_TYPE_CALENDAR)) {
-            if (thing instanceof Bridge) {
-                return new ICalendarHandler((Bridge) thing, sharedHttpClient, eventPublisher, tzProvider);
+            if (thing instanceof Bridge bridge) {
+                return new ICalendarHandler(bridge, sharedHttpClient, eventPublisher, tzProvider);
             } else {
                 logger.warn(
                         "The API of iCalendar has changed. You have to recreate the calendar according to the docs.");
index bf98c4eeeb950e5a1659fe9496399db60839fe13..2b32c9e59cc9a73405e208f051d407910539b877 100644 (file)
@@ -232,18 +232,19 @@ public class EventFilterHandler extends BaseThingHandler implements CalendarUpda
                 thingBuilder.withoutChannel(toDelete.getUID());
             });
 
-            resultChannels.stream().filter((ResultChannelSet current) -> {
-                return (getThing().getChannelsOfGroup(current.resultGroup.toString()).size() == 0);
-            }).forEach((ResultChannelSet current) -> {
-                for (ChannelBuilder builder : handlerCallback.createChannelBuilders(current.resultGroup,
-                        GROUP_TYPE_UID)) {
-                    Channel currentChannel = builder.build();
-                    Channel existingChannel = getThing().getChannel(currentChannel.getUID());
-                    if (existingChannel == null) {
-                        thingBuilder.withChannel(currentChannel);
-                    }
-                }
-            });
+            resultChannels
+                    .stream().filter((ResultChannelSet current) -> (getThing()
+                            .getChannelsOfGroup(current.resultGroup.toString()).isEmpty()))
+                    .forEach((ResultChannelSet current) -> {
+                        for (ChannelBuilder builder : handlerCallback.createChannelBuilders(current.resultGroup,
+                                GROUP_TYPE_UID)) {
+                            Channel currentChannel = builder.build();
+                            Channel existingChannel = getThing().getChannel(currentChannel.getUID());
+                            if (existingChannel == null) {
+                                thingBuilder.withChannel(currentChannel);
+                            }
+                        }
+                    });
         }
         updateThing(thingBuilder.build());
     }
index fa90d97756456a2cf89cb119201600f3ae61b1a2..51aca138d76a6905603033572822bf2db274b179 100644 (file)
@@ -451,10 +451,10 @@ public class ICalendarHandler extends BaseBridgeHandler implements CalendarUpdat
      * @param childHandler the handler to be updated
      */
     private void updateChild(@Nullable ThingHandler childHandler) {
-        if (childHandler instanceof CalendarUpdateListener) {
+        if (childHandler instanceof CalendarUpdateListener updateListener) {
             logger.trace("Notifying {} about fresh calendar.", childHandler.getThing().getUID());
             try {
-                ((CalendarUpdateListener) childHandler).onCalendarUpdated();
+                updateListener.onCalendarUpdated();
             } catch (Exception e) {
                 logger.trace("The update of a child handler failed. Ignoring.", e);
             }
index 07d73772fde64c0905d68a05453a0a0f122050ef..de68b8862e65b46c7658aaa576303caa40deede9 100644 (file)
@@ -21,12 +21,12 @@ import org.eclipse.jdt.annotation.NonNullByDefault;
  */
 @NonNullByDefault
 public class EventTextFilter {
-    public static enum Type {
+    public enum Type {
         TEXT,
         REGEX
     }
 
-    public static enum Field {
+    public enum Field {
         SUMMARY,
         DESCRIPTION,
         COMMENT,
index aacb828b99603fef8bd24ca02fb78a3d8d6664a6..5d89c4cb51ffacb65816fe6f7115a2e339f34972 100644 (file)
@@ -89,8 +89,8 @@ public class ICloudHandlerFactory extends BaseThingHandlerFactory {
 
     @Override
     protected void removeHandler(ThingHandler thingHandler) {
-        if (thingHandler instanceof ICloudAccountBridgeHandler) {
-            unregisterDeviceDiscoveryService((ICloudAccountBridgeHandler) thingHandler);
+        if (thingHandler instanceof ICloudAccountBridgeHandler iCloudAccountBridgeHandler) {
+            unregisterDeviceDiscoveryService(iCloudAccountBridgeHandler);
         }
     }
 
index 79761b0c56d0759ddcc596fd89bb4abb90a16f39..d507e57a31e6342fece8451a8b22a32ccb2d2724 100644 (file)
@@ -112,16 +112,13 @@ public class ICloudAccountBridgeHandler extends BaseBridgeHandler {
             authState = AuthState.INITIAL;
         }
 
-        this.iCloudDeviceInformationCache = new ExpiringCache<>(CACHE_EXPIRY, () -> {
-            return callApiWithRetryAndExceptionHandling(() -> {
+        this.iCloudDeviceInformationCache = new ExpiringCache<>(CACHE_EXPIRY,
+                () -> callApiWithRetryAndExceptionHandling(() ->
                 // callApiWithRetryAndExceptionHanlding ensures that iCloudService is not null when the following is
                 // called. Cannot use method local iCloudService instance here, because instance may be replaced with a
                 // new
                 // one during retry.
-                return iCloudService.getDevices().refreshClient();
-            });
-
-        });
+                iCloudService.getDevices().refreshClient()));
 
         updateStatus(ThingStatus.UNKNOWN);
 
index 30e9aa8f9344f2940fc9ddff44e63f9dbc671905..7ce10106d5e4de6a3276837f8f8a2041a393a601 100644 (file)
@@ -160,8 +160,8 @@ public class ICloudDeviceHandler extends BaseThingHandler implements ICloudDevic
         Bridge bridge = getBridge();
         if (bridge != null) {
             ThingHandler bridgeHandler = bridge.getHandler();
-            if (bridgeHandler instanceof ICloudAccountBridgeHandler) {
-                ((ICloudAccountBridgeHandler) bridgeHandler).unregisterListener(this);
+            if (bridgeHandler instanceof ICloudAccountBridgeHandler iCloudAccountBridgeHandler) {
+                iCloudAccountBridgeHandler.unregisterListener(this);
             }
         }
         super.dispose();
index da9af630ca26079e099f1c6b83f4a6dc629db8e8..86c9a238cd137e6fb564b19148331b41361945e1 100644 (file)
@@ -74,8 +74,8 @@ public class TestICloud {
     @BeforeEach
     public void setUp() {
         final Logger logger = LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
-        if (logger instanceof ch.qos.logback.classic.Logger) {
-            ((ch.qos.logback.classic.Logger) logger).setLevel(ch.qos.logback.classic.Level.DEBUG);
+        if (logger instanceof ch.qos.logback.classic.Logger qLogger) {
+            qLogger.setLevel(ch.qos.logback.classic.Level.DEBUG);
         }
     }
 
@@ -122,7 +122,6 @@ public class TestICloud {
     @Test
     @EnabledIfSystemProperty(named = "icloud.test.email", matches = ".*", disabledReason = "Only for manual execution.")
     public void testDiscovery() {
-
         String icloudDeviceRespond = """
                          {
                      "userInfo": {
index db1ebe05ab68a5ed9acd8e78bad87c6335293e6d..a312479bd6eaf51fcd71bfacb9e9354f27d72a32 100644 (file)
@@ -411,8 +411,8 @@ public class IhcHandler extends BaseThingHandler implements IhcEventListener {
     }
 
     private List<IhcEnumValue> getEnumValues(WSResourceValue value) {
-        if (value instanceof WSEnumValue) {
-            return enumDictionary.getEnumValues(((WSEnumValue) value).definitionTypeID);
+        if (value instanceof WSEnumValue enumValue) {
+            return enumDictionary.getEnumValues(enumValue.definitionTypeID);
         }
         return null;
     }
@@ -764,8 +764,8 @@ public class IhcHandler extends BaseThingHandler implements IhcEventListener {
     }
 
     private void checkPotentialButtonPresses(WSResourceValue value) {
-        if (value instanceof WSBooleanValue) {
-            if (((WSBooleanValue) value).value) {
+        if (value instanceof WSBooleanValue booleanValue) {
+            if (booleanValue.value) {
                 // potential button press
                 lastUpdate.put(value.resourceID, LocalDateTime.now());
                 updateTriggers(value.resourceID, Duration.ZERO);
index e5e74026ee77ddf43c8d4df14bee3ba5c5a6701d..8a34a975d5ee544be14233261e41a892dffc357c 100644 (file)
@@ -96,8 +96,8 @@ public class PushButtonToCommandProfile implements TriggerProfile {
         long retval;
         Object paramValue = context.getConfiguration().get(param);
         logger.debug("Configuring profile with {} parameter '{}'", param, paramValue);
-        if (paramValue instanceof BigDecimal) {
-            retval = ((BigDecimal) paramValue).longValue();
+        if (paramValue instanceof BigDecimal decimalParam) {
+            retval = decimalParam.longValue();
         } else {
             logger.debug("Parameter '{}' is not of type BigDecimal, using default value '{}'", param, defValue);
             retval = defValue;
index 9554ee4f810d1621db1ce573145a3874401b2d1f..b02301101e41e89b261c87060c37025e20e3b915 100644 (file)
@@ -76,7 +76,6 @@ public class IhcConnectionPool {
 
     private void init() throws IhcFatalExecption {
         try {
-
             // Create a local instance of cookie store
             cookieStore = new BasicCookieStore();
 
index c44bf7b83b2e5e7452352d3f0831c2e71b87e719..242254b9d415c16ba1717b05c851be4c40780c3b 100644 (file)
@@ -60,8 +60,7 @@ public class ProjectFileUtils {
             dbFactory.setXIncludeAware(false);
             dbFactory.setExpandEntityReferences(false);
             DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
-            Document doc = dBuilder.parse(fXmlFile);
-            return doc;
+            return dBuilder.parse(fXmlFile);
         } catch (IOException | ParserConfigurationException | SAXException e) {
             throw new IhcExecption(e);
         }
index 24b7b8557350b7d3e02d15f0a5bcd2c202b2d41c..bcacc8b4e91f71bebf62558c45e9787591f0f7a9 100644 (file)
@@ -39,16 +39,18 @@ public class IhcAuthenticationService extends IhcBaseService {
 
         // @formatter:off
         final String soapQuery =
-                  "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-                + "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n"
-                + " <soapenv:Body>\n"
-                + "  <authenticate1 xmlns=\"utcs\">\n"
-                + "   <password>%s</password>\n"
-                + "   <username>%s</username>\n"
-                + "   <application>%s</application>\n"
-                + "  </authenticate1>\n"
-                + " </soapenv:Body>\n"
-                + "</soapenv:Envelope>";
+                  """
+                <?xml version="1.0" encoding="UTF-8"?>
+                <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+                 <soapenv:Body>
+                  <authenticate1 xmlns="utcs">
+                   <password>%s</password>
+                   <username>%s</username>
+                   <application>%s</application>
+                  </authenticate1>
+                 </soapenv:Body>
+                </soapenv:Envelope>\
+                """;
         // @formatter:on
 
         String query = String.format(soapQuery, password, username, application);
index 4547528f5a7e18614a6cf10464479eee6b52f74b..459906e57f95ffc30c03ca47068a96165c55aec3 100644 (file)
@@ -29,11 +29,13 @@ public abstract class IhcBaseService extends IhcHttpsClient {
 
     // @formatter:off
     protected static final String EMPTY_QUERY =
-              "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-            + "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">\n"
-            + " <soapenv:Body>\n"
-            + " </soapenv:Body>\n"
-            + "</soapenv:Envelope>";
+              """
+            <?xml version="1.0" encoding="UTF-8"?>
+            <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
+             <soapenv:Body>
+             </soapenv:Body>
+            </soapenv:Envelope>\
+            """;
     // @formatter:on
 
     private String url;
index 6146b2c229f7d2b87ae017cac05c61f9f037a677..083cb0e35d51569e169a1dbb8eba451e104b7913 100644 (file)
@@ -79,14 +79,16 @@ public class IhcControllerService extends IhcBaseService {
     public synchronized WSFile getProjectSegment(int index, int major, int minor) throws IhcExecption {
         // @formatter:off
         final String soapQuery =
-                  "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-                + "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n"
-                + " <soap:Body>\n"
-                + "  <ns1:getIHCProjectSegment1 xmlns:ns1=\"utcs\" xsi:type=\"xsd:int\">%s</ns1:getIHCProjectSegment1>\n"
-                + "  <ns2:getIHCProjectSegment2 xmlns:ns2=\"utcs\" xsi:type=\"xsd:int\">%s</ns2:getIHCProjectSegment2>\n"
-                + "  <ns3:getIHCProjectSegment3 xmlns:ns3=\"utcs\" xsi:type=\"xsd:int\">%s</ns3:getIHCProjectSegment3>\n"
-                + " </soap:Body>\n"
-                + "</soap:Envelope>";
+                  """
+                <?xml version="1.0" encoding="UTF-8"?>
+                <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
+                 <soap:Body>
+                  <ns1:getIHCProjectSegment1 xmlns:ns1="utcs" xsi:type="xsd:int">%s</ns1:getIHCProjectSegment1>
+                  <ns2:getIHCProjectSegment2 xmlns:ns2="utcs" xsi:type="xsd:int">%s</ns2:getIHCProjectSegment2>
+                  <ns3:getIHCProjectSegment3 xmlns:ns3="utcs" xsi:type="xsd:int">%s</ns3:getIHCProjectSegment3>
+                 </soap:Body>
+                </soap:Envelope>\
+                """;
         // @formatter:on
 
         String query = String.format(soapQuery, index, major, minor);
@@ -117,15 +119,17 @@ public class IhcControllerService extends IhcBaseService {
             int timeoutInSeconds) throws IhcExecption {
         // @formatter:off
         final String soapQuery =
-                  "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-                + "<soapenv:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">\n"
-                + " <soapenv:Body>\n"
-                + "  <ns1:waitForControllerStateChange1 xmlns:ns1=\"utcs\" xsi:type=\"ns1:WSControllerState\">\n"
-                + "   <ns1:state xsi:type=\"xsd:string\">%s</ns1:state>\n"
-                + "  </ns1:waitForControllerStateChange1>\n"
-                + "  <ns2:waitForControllerStateChange2 xmlns:ns2=\"utcs\" xsi:type=\"xsd:int\">%s</ns2:waitForControllerStateChange2>\n"
-                + " </soapenv:Body>\n"
-                + "</soapenv:Envelope>";
+                  """
+                <?xml version="1.0" encoding="UTF-8"?>
+                <soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
+                 <soapenv:Body>
+                  <ns1:waitForControllerStateChange1 xmlns:ns1="utcs" xsi:type="ns1:WSControllerState">
+                   <ns1:state xsi:type="xsd:string">%s</ns1:state>
+                  </ns1:waitForControllerStateChange1>
+                  <ns2:waitForControllerStateChange2 xmlns:ns2="utcs" xsi:type="xsd:int">%s</ns2:waitForControllerStateChange2>
+                 </soapenv:Body>
+                </soapenv:Envelope>\
+                """;
         // @formatter:on
 
         String query = String.format(soapQuery, previousState.getState(), timeoutInSeconds);
index 913c3b7ad503823ec423c54ad03db09621340eb0..cc21456d20189ba363c16817143f57edc57f8bd0 100644 (file)
@@ -57,12 +57,14 @@ public class IhcResourceInteractionService extends IhcBaseService {
     public WSResourceValue resourceQuery(int resoureId) throws IhcExecption {
         // @formatter:off
         final String soapQuery =
-                  "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-                + "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">\n"
-                + " <soapenv:Body>\n"
-                + "  <ns1:getRuntimeValue1 xmlns:ns1=\"utcs\">%s</ns1:getRuntimeValue1>\n"
-                + " </soapenv:Body>\n"
-                + "</soapenv:Envelope>";
+                  """
+                <?xml version="1.0" encoding="UTF-8"?>
+                <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
+                 <soapenv:Body>
+                  <ns1:getRuntimeValue1 xmlns:ns1="utcs">%s</ns1:getRuntimeValue1>
+                 </soapenv:Body>
+                </soapenv:Envelope>\
+                """;
         // @formatter:on
 
         String query = String.format(soapQuery, String.valueOf(resoureId));
@@ -173,22 +175,22 @@ public class IhcResourceInteractionService extends IhcBaseService {
     public boolean resourceUpdate(WSResourceValue value) throws IhcExecption {
         boolean retval = false;
 
-        if (value instanceof WSFloatingPointValue) {
-            retval = resourceUpdate((WSFloatingPointValue) value);
-        } else if (value instanceof WSBooleanValue) {
-            retval = resourceUpdate((WSBooleanValue) value);
-        } else if (value instanceof WSIntegerValue) {
-            retval = resourceUpdate((WSIntegerValue) value);
-        } else if (value instanceof WSTimerValue) {
-            retval = resourceUpdate((WSTimerValue) value);
-        } else if (value instanceof WSWeekdayValue) {
-            retval = resourceUpdate((WSWeekdayValue) value);
-        } else if (value instanceof WSEnumValue) {
-            retval = resourceUpdate((WSEnumValue) value);
-        } else if (value instanceof WSTimeValue) {
-            retval = resourceUpdate((WSTimeValue) value);
-        } else if (value instanceof WSDateValue) {
-            retval = resourceUpdate((WSDateValue) value);
+        if (value instanceof WSFloatingPointValue pointValue) {
+            retval = resourceUpdate(pointValue);
+        } else if (value instanceof WSBooleanValue booleanValue) {
+            retval = resourceUpdate(booleanValue);
+        } else if (value instanceof WSIntegerValue integerValue) {
+            retval = resourceUpdate(integerValue);
+        } else if (value instanceof WSTimerValue timerValue) {
+            retval = resourceUpdate(timerValue);
+        } else if (value instanceof WSWeekdayValue weekdayValue) {
+            retval = resourceUpdate(weekdayValue);
+        } else if (value instanceof WSEnumValue enumValue) {
+            retval = resourceUpdate(enumValue);
+        } else if (value instanceof WSTimeValue timeValue) {
+            retval = resourceUpdate(timeValue);
+        } else if (value instanceof WSDateValue dateValue) {
+            retval = resourceUpdate(dateValue);
         } else {
             throw new IhcExecption("Unsupported value type " + value.getClass().toString());
         }
@@ -199,18 +201,20 @@ public class IhcResourceInteractionService extends IhcBaseService {
     public boolean resourceUpdate(WSBooleanValue value) throws IhcExecption {
         // @formatter:off
         final String soapQuery =
-                  "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-                + "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n"
-                + " <soap:Body>\n"
-                + "  <setResourceValue1 xmlns=\"utcs\">\n"
-                + "   <value xmlns:q1=\"utcs.values\" xsi:type=\"q1:WSBooleanValue\">\n"
-                + "    <q1:value>%s</q1:value>\n"
-                + "   </value>\n"
-                + "   <resourceID>%s</resourceID>\n"
-                + "   <isValueRuntime>true</isValueRuntime>\n"
-                + "  </setResourceValue1>\n"
-                + " </soap:Body>\n"
-                + "</soap:Envelope>";
+                  """
+                <?xml version="1.0" encoding="UTF-8"?>
+                <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
+                 <soap:Body>
+                  <setResourceValue1 xmlns="utcs">
+                   <value xmlns:q1="utcs.values" xsi:type="q1:WSBooleanValue">
+                    <q1:value>%s</q1:value>
+                   </value>
+                   <resourceID>%s</resourceID>
+                   <isValueRuntime>true</isValueRuntime>
+                  </setResourceValue1>
+                 </soap:Body>
+                </soap:Envelope>\
+                """;
         // @formatter:on
 
         String query = String.format(soapQuery, value.value ? "true" : "false", value.resourceID);
@@ -220,20 +224,22 @@ public class IhcResourceInteractionService extends IhcBaseService {
     public boolean resourceUpdate(WSFloatingPointValue value) throws IhcExecption {
         // @formatter:off
         final String soapQuery =
-                  "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-                + "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n"
-                + " <soap:Body>\n"
-                + "  <setResourceValue1 xmlns=\"utcs\">\n"
-                + "   <value xmlns:q1=\"utcs.values\" xsi:type=\"q1:WSFloatingPointValue\">\n"
-                + "    <q1:maximumValue>%s</q1:maximumValue>\n"
-                + "    <q1:minimumValue>%s</q1:minimumValue>\n"
-                + "    <q1:floatingPointValue>%s</q1:floatingPointValue>\n"
-                + "   </value>\n"
-                + "   <resourceID>%s</resourceID>\n"
-                + "   <isValueRuntime>true</isValueRuntime>\n"
-                + "  </setResourceValue1>\n"
-                + " </soap:Body>\n"
-                + "</soap:Envelope>";
+                  """
+                <?xml version="1.0" encoding="UTF-8"?>
+                <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
+                 <soap:Body>
+                  <setResourceValue1 xmlns="utcs">
+                   <value xmlns:q1="utcs.values" xsi:type="q1:WSFloatingPointValue">
+                    <q1:maximumValue>%s</q1:maximumValue>
+                    <q1:minimumValue>%s</q1:minimumValue>
+                    <q1:floatingPointValue>%s</q1:floatingPointValue>
+                   </value>
+                   <resourceID>%s</resourceID>
+                   <isValueRuntime>true</isValueRuntime>
+                  </setResourceValue1>
+                 </soap:Body>
+                </soap:Envelope>\
+                """;
         // @formatter:on
 
         String query = String.format(soapQuery, value.maximumValue, value.minimumValue, value.value, value.resourceID);
@@ -243,20 +249,22 @@ public class IhcResourceInteractionService extends IhcBaseService {
     public boolean resourceUpdate(WSIntegerValue value) throws IhcExecption {
         // @formatter:off
         final String soapQuery =
-                  "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-                + "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n"
-                + " <soap:Body>\n"
-                + "  <setResourceValue1 xmlns=\"utcs\">\n"
-                + "   <value xmlns:q1=\"utcs.values\" xsi:type=\"q1:WSIntegerValue\">\n"
-                + "    <q1:maximumValue>%s</q1:maximumValue>\n"
-                + "    <q1:minimumValue>%s</q1:minimumValue>\n"
-                + "    <q1:integer>%s</q1:integer>\n"
-                + "   </value>\n"
-                + "   <resourceID>%s</resourceID>\n"
-                + "   <isValueRuntime>true</isValueRuntime>\n"
-                + "  </setResourceValue1>\n"
-                + " </soap:Body>\n"
-                + "</soap:Envelope>";
+                  """
+                <?xml version="1.0" encoding="UTF-8"?>
+                <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
+                 <soap:Body>
+                  <setResourceValue1 xmlns="utcs">
+                   <value xmlns:q1="utcs.values" xsi:type="q1:WSIntegerValue">
+                    <q1:maximumValue>%s</q1:maximumValue>
+                    <q1:minimumValue>%s</q1:minimumValue>
+                    <q1:integer>%s</q1:integer>
+                   </value>
+                   <resourceID>%s</resourceID>
+                   <isValueRuntime>true</isValueRuntime>
+                  </setResourceValue1>
+                 </soap:Body>
+                </soap:Envelope>\
+                """;
         // @formatter:on
 
         String query = String.format(soapQuery, value.maximumValue, value.minimumValue, value.value, value.resourceID);
@@ -266,18 +274,20 @@ public class IhcResourceInteractionService extends IhcBaseService {
     public boolean resourceUpdate(WSTimerValue value) throws IhcExecption {
         // @formatter:off
         final String soapQuery =
-                  "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-                + "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n"
-                + " <soap:Body>\n"
-                + "  <setResourceValue1 xmlns=\"utcs\">\n"
-                + "   <value xmlns:q1=\"utcs.values\" xsi:type=\"q1:WSTimerValue\">\n"
-                + "    <q1:milliseconds>%s</q1:milliseconds>\n"
-                + "   </value>\n"
-                + "   <resourceID>%s</resourceID>\n"
-                + "   <isValueRuntime>true</isValueRuntime>\n"
-                + "  </setResourceValue1>\n"
-                + " </soap:Body>\n"
-                + "</soap:Envelope>";
+                  """
+                <?xml version="1.0" encoding="UTF-8"?>
+                <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
+                 <soap:Body>
+                  <setResourceValue1 xmlns="utcs">
+                   <value xmlns:q1="utcs.values" xsi:type="q1:WSTimerValue">
+                    <q1:milliseconds>%s</q1:milliseconds>
+                   </value>
+                   <resourceID>%s</resourceID>
+                   <isValueRuntime>true</isValueRuntime>
+                  </setResourceValue1>
+                 </soap:Body>
+                </soap:Envelope>\
+                """;
         // @formatter:on
 
         String query = String.format(soapQuery, value.milliseconds, value.resourceID);
@@ -287,18 +297,20 @@ public class IhcResourceInteractionService extends IhcBaseService {
     public boolean resourceUpdate(WSWeekdayValue value) throws IhcExecption {
         // @formatter:off
         final String soapQuery =
-                  "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-                + "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n"
-                + " <soap:Body>\n"
-                + "  <setResourceValue1 xmlns=\"utcs\">\n"
-                + "   <value xmlns:q1=\"utcs.values\" xsi:type=\"q1:WSWeekdayValue\">\n"
-                + "    <q1:weekdayNumber>%s</q1:weekdayNumber>\n"
-                + "   </value>\n"
-                + "   <resourceID>%s</resourceID>\n"
-                + "   <isValueRuntime>true</isValueRuntime>\n"
-                + "  </setResourceValue1>\n"
-                + " </soap:Body>\n"
-                + "</soap:Envelope>";
+                  """
+                <?xml version="1.0" encoding="UTF-8"?>
+                <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
+                 <soap:Body>
+                  <setResourceValue1 xmlns="utcs">
+                   <value xmlns:q1="utcs.values" xsi:type="q1:WSWeekdayValue">
+                    <q1:weekdayNumber>%s</q1:weekdayNumber>
+                   </value>
+                   <resourceID>%s</resourceID>
+                   <isValueRuntime>true</isValueRuntime>
+                  </setResourceValue1>
+                 </soap:Body>
+                </soap:Envelope>\
+                """;
         // @formatter:on
 
         String query = String.format(soapQuery, value.weekdayNumber, value.resourceID);
@@ -308,20 +320,22 @@ public class IhcResourceInteractionService extends IhcBaseService {
     public boolean resourceUpdate(WSEnumValue value) throws IhcExecption {
         // @formatter:off
         final String soapQuery =
-                  "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-                + "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n"
-                + " <soap:Body>\n"
-                + "  <setResourceValue1 xmlns=\"utcs\">\n"
-                + "   <value xmlns:q1=\"utcs.values\" xsi:type=\"q1:WSEnumValue\">\n"
-                + "    <q1:definitionTypeID>%s</q1:definitionTypeID>\n"
-                + "    <q1:enumValueID>%s</q1:enumValueID>\n"
-                + "    <q1:enumName>%s</q1:enumName>\n"
-                + "   </value>\n"
-                + "   <resourceID>%s</resourceID>\n"
-                + "   <isValueRuntime>true</isValueRuntime>\n"
-                + "  </setResourceValue1>\n"
-                + " </soap:Body>\n"
-                + "</soap:Envelope>";
+                  """
+                <?xml version="1.0" encoding="UTF-8"?>
+                <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
+                 <soap:Body>
+                  <setResourceValue1 xmlns="utcs">
+                   <value xmlns:q1="utcs.values" xsi:type="q1:WSEnumValue">
+                    <q1:definitionTypeID>%s</q1:definitionTypeID>
+                    <q1:enumValueID>%s</q1:enumValueID>
+                    <q1:enumName>%s</q1:enumName>
+                   </value>
+                   <resourceID>%s</resourceID>
+                   <isValueRuntime>true</isValueRuntime>
+                  </setResourceValue1>
+                 </soap:Body>
+                </soap:Envelope>\
+                """;
         // @formatter:on
 
         String query = String.format(soapQuery, value.definitionTypeID, value.enumValueID, value.enumName,
@@ -332,20 +346,22 @@ public class IhcResourceInteractionService extends IhcBaseService {
     public boolean resourceUpdate(WSTimeValue value) throws IhcExecption {
         // @formatter:off
         final String soapQuery =
-                  "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-                + "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n"
-                + " <soap:Body>\n"
-                + "  <setResourceValue1 xmlns=\"utcs\">\n"
-                + "   <value xmlns:q1=\"utcs.values\" xsi:type=\"q1:WSTimeValue\">\n"
-                + "    <q1:hours>%s</q1:hours>\n"
-                + "    <q1:minutes>%s</q1:minutes>\n"
-                + "    <q1:seconds>%s</q1:seconds>\n"
-                + "   </value>\n"
-                + "   <resourceID>%s</resourceID>\n"
-                + "   <isValueRuntime>true</isValueRuntime>\n"
-                + "  </setResourceValue1>\n"
-                + " </soap:Body>\n"
-                + "</soap:Envelope>";
+                  """
+                <?xml version="1.0" encoding="UTF-8"?>
+                <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
+                 <soap:Body>
+                  <setResourceValue1 xmlns="utcs">
+                   <value xmlns:q1="utcs.values" xsi:type="q1:WSTimeValue">
+                    <q1:hours>%s</q1:hours>
+                    <q1:minutes>%s</q1:minutes>
+                    <q1:seconds>%s</q1:seconds>
+                   </value>
+                   <resourceID>%s</resourceID>
+                   <isValueRuntime>true</isValueRuntime>
+                  </setResourceValue1>
+                 </soap:Body>
+                </soap:Envelope>\
+                """;
         // @formatter:on
 
         String query = String.format(soapQuery, value.hours, value.minutes, value.seconds, value.resourceID);
@@ -355,20 +371,22 @@ public class IhcResourceInteractionService extends IhcBaseService {
     public boolean resourceUpdate(WSDateValue value) throws IhcExecption {
         // @formatter:off
         final String soapQuery =
-                  "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-                + "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n"
-                + " <soap:Body>\n"
-                + "  <setResourceValue1 xmlns=\"utcs\">\n"
-                + "   <value xmlns:q1=\"utcs.values\" xsi:type=\"q1:WSDateValue\">\n"
-                + "    <q1:month>%s</q1:month>\n"
-                + "    <q1:year>%s</q1:year>\n"
-                + "    <q1:day>%s</q1:day>\n"
-                + "   </value>\n"
-                + "   <resourceID>%s</resourceID>\n"
-                + "   <isValueRuntime>true</isValueRuntime>\n"
-                + "  </setResourceValue1>\n"
-                + " </soap:Body>\n"
-                + "</soap:Envelope>";
+                  """
+                <?xml version="1.0" encoding="UTF-8"?>
+                <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
+                 <soap:Body>
+                  <setResourceValue1 xmlns="utcs">
+                   <value xmlns:q1="utcs.values" xsi:type="q1:WSDateValue">
+                    <q1:month>%s</q1:month>
+                    <q1:year>%s</q1:year>
+                    <q1:day>%s</q1:day>
+                   </value>
+                   <resourceID>%s</resourceID>
+                   <isValueRuntime>true</isValueRuntime>
+                  </setResourceValue1>
+                 </soap:Body>
+                </soap:Envelope>\
+                """;
         // @formatter:on
 
         String query = String.format(soapQuery, value.month, value.year, value.day, value.resourceID);
@@ -394,15 +412,19 @@ public class IhcResourceInteractionService extends IhcBaseService {
     public void enableRuntimeValueNotifications(Set<Integer> resourceIdList) throws IhcExecption {
         // @formatter:off
         final String soapQueryPrefix =
-                  "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-                + "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n"
-                + " <soap:Body>\n"
-                + "  <enableRuntimeValueNotifications1 xmlns=\"utcs\">\n";
+                  """
+                <?xml version="1.0" encoding="UTF-8"?>
+                <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
+                 <soap:Body>
+                  <enableRuntimeValueNotifications1 xmlns="utcs">
+                """;
 
         final String soapQuerySuffix =
-                  "  </enableRuntimeValueNotifications1>\n"
-                + " </soap:Body>\n"
-                + "</soap:Envelope>";
+                  """
+                  </enableRuntimeValueNotifications1>
+                 </soap:Body>
+                </soap:Envelope>\
+                """;
         // @formatter:on
 
         String query = soapQueryPrefix;
@@ -427,12 +449,14 @@ public class IhcResourceInteractionService extends IhcBaseService {
     public List<WSResourceValue> waitResourceValueNotifications(int timeoutInSeconds) throws IhcExecption {
         // @formatter:off
         final String soapQuery =
-                  "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-                + "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:utcs=\"utcs\">\n"
-                + " <soapenv:Body>\n"
-                + "  <utcs:waitForResourceValueChanges1>%s</utcs:waitForResourceValueChanges1>\n"
-                + " </soapenv:Body>\n"
-                + "</soapenv:Envelope>";
+                  """
+                <?xml version="1.0" encoding="UTF-8"?>
+                <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:utcs="utcs">
+                 <soapenv:Body>
+                  <utcs:waitForResourceValueChanges1>%s</utcs:waitForResourceValueChanges1>
+                 </soapenv:Body>
+                </soapenv:Envelope>\
+                """;
         // @formatter:on
 
         String query = String.format(soapQuery, timeoutInSeconds);
index 10044a748972391bcbeba3a2f89c698406b05602..8f2626f7527d324c3f9f0e3313457e3a8b06b2bf 100644 (file)
@@ -299,8 +299,8 @@ public abstract class CommandHandler {
         @Override
         public void handleCommand(InsteonChannelConfiguration conf, Command cmd, InsteonDevice dev) {
             try {
-                if (cmd instanceof DecimalType) {
-                    int v = ((DecimalType) cmd).intValue();
+                if (cmd instanceof DecimalType decimalCommand) {
+                    int v = decimalCommand.intValue();
                     int cmd1 = (v != 1) ? 0x17 : 0x18; // start or stop
                     int cmd2 = (v == 2) ? 0x01 : 0; // up or down
                     Msg m = dev.makeStandardMessage((byte) 0x0f, (byte) cmd1, (byte) cmd2, getGroup(conf));
index 03b80ec4d3c6a44532ffc7841e1c1502c0ac1c02..6f7d60248384f629b628ba97b9a80672410b3a66 100644 (file)
@@ -64,7 +64,7 @@ import org.slf4j.LoggerFactory;
  */
 @NonNullByDefault
 public class DeviceFeature {
-    public static enum QueryStatus {
+    public enum QueryStatus {
         NEVER_QUERIED,
         QUERY_PENDING,
         QUERY_ANSWERED
@@ -300,8 +300,7 @@ public class DeviceFeature {
         }
         logger.trace("{} making poll msg for {} using handler {}", getName(), getDevice().getAddress(),
                 pollHandler.getClass().getSimpleName());
-        Msg m = pollHandler.makeMsg(device);
-        return m;
+        return pollHandler.makeMsg(device);
     }
 
     /**
index 2c6aff95e5e14221c778e0ddbf5ae58122ce0c11..82a42d136dcb526cc2ceb8455874c5dd3a36be00 100644 (file)
@@ -90,7 +90,7 @@ public class DeviceTypeLoader {
         NodeList nodes = root.getChildNodes();
         for (int i = 0; i < nodes.getLength(); i++) {
             Node node = nodes.item(i);
-            if (node.getNodeType() == Node.ELEMENT_NODE && node.getNodeName().equals("device")) {
+            if (node.getNodeType() == Node.ELEMENT_NODE && "device".equals(node.getNodeName())) {
                 processDevice((Element) node);
             }
         }
index 7b92f8221ce95e590672a3c509079754a356f2df..294412c5b320fe1b3756d0e20c331d8599c01930 100644 (file)
@@ -85,7 +85,7 @@ public class FeatureTemplateLoader {
 
     private static FeatureTemplate parseFeature(Element e) throws ParsingException {
         String name = e.getAttribute("name");
-        boolean statusFeature = e.getAttribute("statusFeature").equals("true");
+        boolean statusFeature = "true".equals(e.getAttribute("statusFeature"));
         FeatureTemplate feature = new FeatureTemplate(name, statusFeature, e.getAttribute("timeout"));
 
         NodeList nodes = e.getChildNodes();
@@ -94,13 +94,13 @@ public class FeatureTemplateLoader {
             Node node = nodes.item(i);
             if (node.getNodeType() == Node.ELEMENT_NODE) {
                 Element child = (Element) node;
-                if (child.getTagName().equals("message-handler")) {
+                if ("message-handler".equals(child.getTagName())) {
                     parseMessageHandler(child, feature);
-                } else if (child.getTagName().equals("command-handler")) {
+                } else if ("command-handler".equals(child.getTagName())) {
                     parseCommandHandler(child, feature);
-                } else if (child.getTagName().equals("message-dispatcher")) {
+                } else if ("message-dispatcher".equals(child.getTagName())) {
                     parseMessageDispatcher(child, feature);
-                } else if (child.getTagName().equals("poll-handler")) {
+                } else if ("poll-handler".equals(child.getTagName())) {
                     parsePollHandler(child, feature);
                 }
             }
index 0864ba373d4b7e3ee064e7061e19bc886860fae7..f0de27238b01b8d2edbaeb3172791d6d8e8c0152 100644 (file)
@@ -89,7 +89,7 @@ public class GroupMessageStateMachine {
     enum GroupMessage {
         BCAST,
         CLEAN,
-        SUCCESS;
+        SUCCESS
     };
 
     /**
index 943c89a5e40bf34c04f7c12add1e1c3b82d8ed9e..9c056b74b5f19471da1176628bd8e1f0602207a2 100644 (file)
@@ -49,7 +49,7 @@ import org.slf4j.LoggerFactory;
 public class InsteonDevice {
     private final Logger logger = LoggerFactory.getLogger(InsteonDevice.class);
 
-    public static enum DeviceStatus {
+    public enum DeviceStatus {
         INITIALIZED,
         POLLING
     }
index ff8ae8d553ca73137013062966514f90298a803d..f7568bd6d6ab445c235c626802e74caca1989501 100644 (file)
@@ -170,8 +170,8 @@ public abstract class MessageHandler {
     protected boolean getBooleanDeviceConfig(String key, boolean def) {
         Object o = feature.getDevice().getDeviceConfigMap().get(key);
         if (o != null) {
-            if (o instanceof Boolean) {
-                return (Boolean) o;
+            if (o instanceof Boolean booleanValue) {
+                return booleanValue;
             } else {
                 logger.warn("{} {}: The value for the '{}' key is not boolean in the device configuration parameter.",
                         nm(), feature.getDevice().getAddress(), key);
index faf3e57feb437885edfd2a2ec53972128592c10d..500131884638d0d2c39991e85054640d31749c40 100644 (file)
@@ -73,8 +73,10 @@ public class ModemDBBuilder implements MsgListener {
                 if (System.currentTimeMillis() - lastMessageTimestamp > MESSAGE_TIMEOUT) {
                     String s = "";
                     if (messageCount == 0) {
-                        s = " No messages were received, the PLM or hub might be broken. If this continues see "
-                                + "'Known Limitations and Issues' in the Insteon binding documentation.";
+                        s = """
+                                 No messages were received, the PLM or hub might be broken. If this continues see \
+                                'Known Limitations and Issues' in the Insteon binding documentation.\
+                                """;
                     }
                     logger.warn("Modem database download was unsuccessful, restarting!{}", s);
                     startDownload();
index 6c67bcb5e33ecb98e549b475b9b4a2e2a7ca35a1..a74299ffd70063e16129e363010b6895d3cfc61e 100644 (file)
@@ -252,7 +252,7 @@ public class InsteonDeviceHandler extends BaseThingHandler {
                         feature = DATA;
                     }
                 } else if (productKey.equals(PLM_PRODUCT_KEY)) {
-                    String parts[] = feature.split("#");
+                    String[] parts = feature.split("#");
                     if (parts.length == 2 && parts[0].equalsIgnoreCase(InsteonBindingConstants.BROADCAST_ON_OFF)
                             && parts[1].matches("^\\d+$")) {
                         feature = BROADCAST_ON_OFF;
@@ -282,9 +282,9 @@ public class InsteonDeviceHandler extends BaseThingHandler {
                             Object groups = deviceConfigMap.get(BROADCAST_GROUPS);
                             if (groups != null) {
                                 boolean valid = false;
-                                if (groups instanceof List<?>) {
+                                if (groups instanceof List<?> list) {
                                     valid = true;
-                                    for (Object o : (List<?>) groups) {
+                                    for (Object o : list) {
                                         if (o instanceof Double && (Double) o % 1 == 0) {
                                             String id = InsteonBindingConstants.BROADCAST_ON_OFF + "#"
                                                     + ((Double) o).intValue();
@@ -444,10 +444,10 @@ public class InsteonDeviceHandler extends BaseThingHandler {
         Map<String, Object> channelProperties = channel.getConfiguration().getProperties();
         for (String key : channelProperties.keySet()) {
             Object value = channelProperties.get(key);
-            if (value instanceof String) {
-                params.put(key, (String) value);
-            } else if (value instanceof BigDecimal) {
-                String s = ((BigDecimal) value).toPlainString();
+            if (value instanceof String stringValue) {
+                params.put(key, stringValue);
+            } else if (value instanceof BigDecimal decimalValue) {
+                String s = decimalValue.toPlainString();
                 params.put(key, s);
             } else {
                 logger.warn("not a string or big decimal value key '{}' value '{}' {}", key, value,
@@ -493,7 +493,7 @@ public class InsteonDeviceHandler extends BaseThingHandler {
                 feature = DATA;
             }
         } else if (productKey.equals(PLM_PRODUCT_KEY)) {
-            String parts[] = feature.split("#");
+            String[] parts = feature.split("#");
             if (parts.length == 2 && parts[0].equalsIgnoreCase(InsteonBindingConstants.BROADCAST_ON_OFF)
                     && parts[1].matches("^\\d+$")) {
                 params.put(GROUP, parts[1]);
index 2a2f3889f837cfb6140bfad8f9aa00f028152c7e..6de15c1b903758422ba6f0e4b686d7d95fa140c8 100644 (file)
@@ -176,8 +176,7 @@ public final class Field {
         byte b2 = array[offset + 1];
         byte b3 = array[offset + 2];
         byte b4 = array[offset + 3];
-        int value = ((b1 << 24) + (b2 << 16) + (b3 << 8) + (b4 << 0));
-        return value;
+        return ((b1 << 24) + (b2 << 16) + (b3 << 8) + (b4 << 0));
     }
 
     /**
@@ -199,8 +198,7 @@ public final class Field {
      */
     @Override
     public boolean equals(@Nullable Object o) {
-        if (o instanceof Field) {
-            Field f = (Field) o;
+        if (o instanceof Field f) {
             return (f.getName().equals(getName())) && (f.getOffset() == getOffset());
         } else {
             return false;
index 6398b47e5422d6a5ea8571ad6ac85c54b59de190..08f07cf540918745845fd85f0f23ce948136f823 100644 (file)
@@ -73,7 +73,7 @@ public class XMLMessageReader {
             for (int i = 0; i < nodes.getLength(); i++) {
                 Node node = nodes.item(i);
                 if (node.getNodeType() == Node.ELEMENT_NODE) {
-                    if (node.getNodeName().equals("msg")) {
+                    if ("msg".equals(node.getNodeName())) {
                         Pair<String, Msg> msgDef = readMessageDefinition((Element) node);
                         messageMap.put(msgDef.getKey(), msgDef.getValue());
                     }
@@ -106,7 +106,7 @@ public class XMLMessageReader {
         for (int i = 0; i < nodes.getLength(); i++) {
             Node node = nodes.item(i);
             if (node.getNodeType() == Node.ELEMENT_NODE) {
-                if (node.getNodeName().equals("header")) {
+                if ("header".equals(node.getNodeName())) {
                     int o = readHeaderElement((Element) node, fieldMap);
                     hlength = o;
                     // Increment the offset by the header length
@@ -158,8 +158,7 @@ public class XMLMessageReader {
         // Now we have field, only need value
         String sVal = field.getTextContent();
         Object val = DataTypeParser.parseDataType(dType, sVal);
-        Pair<Field, Object> pair = new Pair<>(f, val);
-        return pair;
+        return new Pair<>(f, val);
     }
 
     private static Msg createMsg(HashMap<Field, Object> values, int length, int headerLength, Msg.Direction dir)
@@ -173,7 +172,7 @@ public class XMLMessageReader {
             } else {
                 throw new FieldException("data is null");
             }
-            if (!f.getName().equals("")) {
+            if (!"".equals(f.getName())) {
                 msg.addField(f);
             }
         }
index 8ec905ddb25bd52ddcb8fb0b9281d2d83f781874..4df35148da762ddc5e7bed221073a24c8f40dcf4 100644 (file)
@@ -26,8 +26,7 @@ import org.openhab.binding.insteon.internal.message.DataType;
 @NonNullByDefault
 public class Utils {
     public static String getHexString(int b) {
-        String result = String.format("%02X", b & 0xFF);
-        return result;
+        return String.format("%02X", b & 0xFF);
     }
 
     public static String getHexString(byte[] b) {
@@ -86,7 +85,7 @@ public class Utils {
         }
 
         public static byte parseByte(@Nullable String val) {
-            if (val != null && !val.trim().equals("")) {
+            if (val != null && !"".equals(val.trim())) {
                 return (byte) Utils.from0xHexString(val.trim());
             } else {
                 return 0x00;
@@ -94,7 +93,7 @@ public class Utils {
         }
 
         public static int parseInt(@Nullable String val) {
-            if (val != null && !val.trim().equals("")) {
+            if (val != null && !"".equals(val.trim())) {
                 return Integer.parseInt(val);
             } else {
                 return 0x00;
@@ -102,7 +101,7 @@ public class Utils {
         }
 
         public static float parseFloat(@Nullable String val) {
-            if (val != null && !val.trim().equals("")) {
+            if (val != null && !"".equals(val.trim())) {
                 return Float.parseFloat(val.trim());
             } else {
                 return 0;
@@ -110,7 +109,7 @@ public class Utils {
         }
 
         public static InsteonAddress parseAddress(@Nullable String val) {
-            if (val != null && !val.trim().equals("")) {
+            if (val != null && !"".equals(val.trim())) {
                 return InsteonAddress.parseAddress(val.trim());
             } else {
                 return new InsteonAddress();
index 8de6e1af2d800d0928f7a08f4cdc4e2b927b56e2..74758e50c757d27a2c90ade0af3c03e0b54e63b7 100644 (file)
@@ -174,9 +174,8 @@ public class IntesisBoxHandler extends BaseThingHandler implements IntesisBoxCha
                 }
                 break;
             case CHANNEL_TYPE_TARGETTEMP:
-                if (command instanceof QuantityType) {
-                    QuantityType<?> celsiusTemperature = (QuantityType<?>) command;
-                    celsiusTemperature = celsiusTemperature.toUnit(SIUnits.CELSIUS);
+                if (command instanceof QuantityType quantityCommand) {
+                    QuantityType<?> celsiusTemperature = quantityCommand.toUnit(SIUnits.CELSIUS);
                     if (celsiusTemperature != null) {
                         double doubleValue = celsiusTemperature.doubleValue();
                         logger.trace("targetTemp double value = {}", doubleValue);
index f352fc2a6edbc831cab0804e95ca0a0d2c22b6c5..7599997f7b7cc458fcda08cbb0be031f63b9a573 100644 (file)
@@ -194,8 +194,7 @@ public class IntesisHomeHandler extends BaseThingHandler {
                     break;
                 case CHANNEL_TYPE_TARGETTEMP:
                     uid = 9;
-                    if (command instanceof QuantityType) {
-                        QuantityType<?> newVal = (QuantityType<?>) command;
+                    if (command instanceof QuantityType newVal) {
                         newVal = newVal.toUnit(SIUnits.CELSIUS);
                         if (newVal != null) {
                             value = newVal.intValue() * 10;
@@ -226,7 +225,7 @@ public class IntesisHomeHandler extends BaseThingHandler {
                     if (data != null) {
                         Id id = gson.fromJson(data.id, Id.class);
                         if (id != null) {
-                            sessionId[0] = id.sessionID.toString();
+                            sessionId[0] = id.sessionID;
                         }
                     }
                 });
@@ -241,8 +240,7 @@ public class IntesisHomeHandler extends BaseThingHandler {
 
     public @Nullable String logout(String sessionId) {
         String contentString = "{\"command\":\"logout\",\"data\":{\"sessionID\":\"" + sessionId + "\"}}";
-        String response = api.postRequest(config.ipAddress, contentString);
-        return response;
+        return api.postRequest(config.ipAddress, contentString);
     }
 
     public void populateProperties() {
@@ -490,7 +488,7 @@ public class IntesisHomeHandler extends BaseThingHandler {
                         switch (element.uid) {
                             case 1:
                                 updateState(CHANNEL_TYPE_POWER,
-                                        String.valueOf(element.value).equals("0") ? OnOffType.OFF : OnOffType.ON);
+                                        "0".equals(String.valueOf(element.value)) ? OnOffType.OFF : OnOffType.ON);
                                 break;
                             case 2:
                                 switch (element.value) {
@@ -554,7 +552,7 @@ public class IntesisHomeHandler extends BaseThingHandler {
                                 break;
                             case 14:
                                 updateState(CHANNEL_TYPE_ERRORSTATUS,
-                                        String.valueOf(element.value).equals("0") ? OnOffType.OFF : OnOffType.ON);
+                                        "0".equals(String.valueOf(element.value)) ? OnOffType.OFF : OnOffType.ON);
                                 break;
                             case 15:
                                 updateState(CHANNEL_TYPE_ERRORCODE, StringType.valueOf(String.valueOf(element.value)));
index 82e321aabf018429dc1b2d402faee3605d4f9d0b..37509cd5451a721457ce800980c49dbd30edce30 100644 (file)
@@ -226,7 +226,6 @@ public class AmcrestHandler extends ChannelDuplexHandler {
     // If a camera does not need to poll a request as often as snapshots, it can be
     // added here. Binding steps through the list.
     public ArrayList<String> getLowPriorityRequests() {
-        ArrayList<String> lowPriorityRequests = new ArrayList<String>(1);
-        return lowPriorityRequests;
+        return new ArrayList<String>(1);
     }
 }
index fb1a8c6c160cb374c127d02b16090987a74c13ef..9d71eaba51d02733d88470b1be137e02f3835654 100644 (file)
@@ -95,7 +95,6 @@ public class DoorBirdHandler extends ChannelDuplexHandler {
     // If a camera does not need to poll a request as often as snapshots, it can be
     // added here. Binding steps through the list.
     public ArrayList<String> getLowPriorityRequests() {
-        ArrayList<String> lowPriorityRequests = new ArrayList<String>(1);
-        return lowPriorityRequests;
+        return new ArrayList<String>(1);
     }
 }
index 1a2e641e7245c0bfc24c200abcaf6b31bffa6393..5dc407f2f45cdecd40a101a518dce84834363078 100644 (file)
@@ -123,9 +123,9 @@ public class Helper {
                 for (Enumeration<InetAddress> enumIpAddr = networkInterface.getInetAddresses(); enumIpAddr
                         .hasMoreElements();) {
                     InetAddress inetAddress = enumIpAddr.nextElement();
-                    if (!inetAddress.isLoopbackAddress() && inetAddress.getHostAddress().toString().length() < 18
+                    if (!inetAddress.isLoopbackAddress() && inetAddress.getHostAddress().length() < 18
                             && inetAddress.isSiteLocalAddress()) {
-                        ipAddress = inetAddress.getHostAddress().toString();
+                        ipAddress = inetAddress.getHostAddress();
                     }
                 }
             }
index 0aaee77ec096a683895ed26a9b7241ab8d451b3b..1c4c0bd34bc8127af5f33d4e5508601cb0a1d46c 100644 (file)
@@ -197,8 +197,8 @@ public class InstarHandler extends ChannelDuplexHandler {
                         ipCameraHandler.sendHttpGET("/param.cgi?cmd=setaudioalarmattr&enable=0");
                     } else if (OnOffType.ON.equals(command)) {
                         ipCameraHandler.sendHttpGET("/param.cgi?cmd=setaudioalarmattr&enable=1");
-                    } else if (command instanceof PercentType) {
-                        int value = ((PercentType) command).toBigDecimal().divide(BigDecimal.TEN).intValue();
+                    } else if (command instanceof PercentType percentCommand) {
+                        int value = percentCommand.toBigDecimal().divide(BigDecimal.TEN).intValue();
                         ipCameraHandler.sendHttpGET("/param.cgi?cmd=setaudioalarmattr&enable=1&threshold=" + value);
                     }
                     return;
@@ -253,8 +253,8 @@ public class InstarHandler extends ChannelDuplexHandler {
                         ipCameraHandler.sendHttpGET("/cgi-bin/hi3510/param.cgi?cmd=setaudioalarmattr&-aa_enable=0");
                     } else if (OnOffType.ON.equals(command)) {
                         ipCameraHandler.sendHttpGET("/cgi-bin/hi3510/param.cgi?cmd=setaudioalarmattr&-aa_enable=1");
-                    } else if (command instanceof PercentType) {
-                        int value = ((PercentType) command).toBigDecimal().divide(BigDecimal.TEN).intValue();
+                    } else if (command instanceof PercentType percentCommand) {
+                        int value = percentCommand.toBigDecimal().divide(BigDecimal.TEN).intValue();
                         ipCameraHandler.sendHttpGET(
                                 "/cgi-bin/hi3510/param.cgi?cmd=setaudioalarmattr&-aa_enable=1&-aa_value=" + value * 10);
                     }
index af72ae036b7e11dc2b75b5c33919da0c7e49bf59..4d9d96fd21aa44fa8c08b0d65f65f0e73be0897b 100644 (file)
@@ -35,7 +35,7 @@ public class IpCameraBindingConstants {
     public static final String INSTAR_HANDLER = "instarHandler";
     public static final String REOLINK_HANDLER = "reolinkHandler";
 
-    public static enum FFmpegFormat {
+    public enum FFmpegFormat {
         HLS,
         GIF,
         RECORD,
index 1fa75c9ee6b894762fed16e93462b825e053eff9..096551c69a643f54052efab0a2049caf0175bccb 100644 (file)
@@ -145,15 +145,14 @@ public class MyNettyAuthHandler extends ChannelDuplexHandler {
         if (msg == null || ctx == null) {
             return;
         }
-        if (msg instanceof HttpResponse) {
-            HttpResponse response = (HttpResponse) msg;
+        if (msg instanceof HttpResponse response) {
             if (response.status().code() == 401) {
                 ctx.close();
                 if (!response.headers().isEmpty()) {
                     String authenticate = "";
                     for (CharSequence name : response.headers().names()) {
                         for (CharSequence value : response.headers().getAll(name)) {
-                            if (name.toString().equalsIgnoreCase("WWW-Authenticate")) {
+                            if ("WWW-Authenticate".equalsIgnoreCase(name.toString())) {
                                 authenticate = value.toString();
                             }
                         }
index b3fa10d373e614641b2b12de31916e7060b2c6c7..3dffcf72572d9110e50f22258f7d1e8d56125b98 100644 (file)
@@ -242,8 +242,8 @@ public class ReolinkHandler extends ChannelDuplexHandler {
                     ipCameraHandler.sendHttpPOST("/api.cgi?cmd=SetWhiteLed" + ipCameraHandler.reolinkAuth,
                             "[{\"cmd\": \"SetWhiteLed\",\"param\": {\"WhiteLed\": {\"state\": 1,\"channel\": "
                                     + ipCameraHandler.cameraConfig.getNvrChannel() + ",\"mode\": 1}}}]");
-                } else if (command instanceof PercentType) {
-                    int value = ((PercentType) command).toBigDecimal().intValue();
+                } else if (command instanceof PercentType percentCommand) {
+                    int value = percentCommand.toBigDecimal().intValue();
                     ipCameraHandler.sendHttpPOST("/api.cgi?cmd=SetWhiteLed" + ipCameraHandler.reolinkAuth,
                             "[{\"cmd\": \"SetWhiteLed\",\"param\": {\"WhiteLed\": {\"state\": 1,\"channel\": "
                                     + ipCameraHandler.cameraConfig.getNvrChannel() + ",\"mode\": 1,\"bright\": " + value
index ad380b0f0368619b1e986a528a7cc0d0e5ae6ffa..e5f1702d8823fb74041cf9c634be5f085d469a2b 100644 (file)
@@ -28,10 +28,10 @@ import java.time.Duration;
 import java.time.Instant;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
@@ -218,8 +218,7 @@ public class IpCameraHandler extends BaseThingHandler {
                 return;
             }
             try {
-                if (msg instanceof HttpResponse) {
-                    HttpResponse response = (HttpResponse) msg;
+                if (msg instanceof HttpResponse response) {
                     if (response.status().code() == 200) {
                         if (!response.headers().isEmpty()) {
                             for (String name : response.headers().names()) {
@@ -264,8 +263,7 @@ public class IpCameraHandler extends BaseThingHandler {
                         return;
                     }
                 }
-                if (msg instanceof HttpContent) {
-                    HttpContent content = (HttpContent) msg;
+                if (msg instanceof HttpContent content) {
                     if (mjpegUri.equals(requestUrl) && !(content instanceof LastHttpContent)) {
                         // multiple MJPEG stream packets come back as this.
                         byte[] chunkedFrame = new byte[content.content().readableBytes()];
@@ -368,8 +366,7 @@ public class IpCameraHandler extends BaseThingHandler {
             if (ctx == null) {
                 return;
             }
-            if (evt instanceof IdleStateEvent) {
-                IdleStateEvent e = (IdleStateEvent) evt;
+            if (evt instanceof IdleStateEvent e) {
                 // If camera does not use the channel for X amount of time it will close.
                 if (e.state() == IdleState.READER_IDLE) {
                     String urlToKeepOpen = "";
@@ -1154,9 +1151,9 @@ public class IpCameraHandler extends BaseThingHandler {
                     } else if (OnOffType.OFF.equals(command) || DecimalType.ZERO.equals(command)) {
                         ffmpegMotionAlarmEnabled = false;
                         noMotionDetected(CHANNEL_FFMPEG_MOTION_ALARM);
-                    } else if (command instanceof PercentType) {
+                    } else if (command instanceof PercentType percentCommand) {
                         ffmpegMotionAlarmEnabled = true;
-                        motionThreshold = ((PercentType) command).toBigDecimal();
+                        motionThreshold = percentCommand.toBigDecimal();
                     }
                     setupFfmpegFormat(FFmpegFormat.RTSP_ALARMS);
                     return;
@@ -1887,6 +1884,6 @@ public class IpCameraHandler extends BaseThingHandler {
 
     @Override
     public Collection<Class<? extends ThingHandlerService>> getServices() {
-        return Collections.singleton(IpCameraActions.class);
+        return Set.of(IpCameraActions.class);
     }
 }
index e9eb38a08436be1dfd7b8a874ab3a0cc00599b4b..378a6b2e0418e58c594fdd02ae4f00c849b72bf9 100644 (file)
@@ -46,8 +46,7 @@ public class OnvifCodec extends ChannelDuplexHandler {
             return;
         }
         try {
-            if (msg instanceof HttpContent) {
-                HttpContent content = (HttpContent) msg;
+            if (msg instanceof HttpContent content) {
                 incomingMessage += content.content().toString(CharsetUtil.UTF_8);
             }
             if (msg instanceof LastHttpContent) {
index 94885257152eba2a52e06c5a1b416e748c380fed..9725dfcc6f622a6cc2e0e523af7bd473b3ea942e 100644 (file)
@@ -72,7 +72,7 @@ import io.netty.handler.timeout.IdleStateHandler;
 
 @NonNullByDefault
 public class OnvifConnection {
-    public static enum RequestType {
+    public enum RequestType {
         AbsoluteMove,
         AddPTZConfiguration,
         ContinuousMoveLeft,
index dc49bf3bd5e98fde7fc95d17b13ab80478fa74d3..7dbaf9242605a0c9eaccada466402d8c02d14fd8 100644 (file)
@@ -86,7 +86,7 @@ public class OnvifDiscovery {
                 for (Enumeration<InetAddress> enumIpAddr = networkInterface.getInetAddresses(); enumIpAddr
                         .hasMoreElements();) {
                     InetAddress inetAddress = enumIpAddr.nextElement();
-                    if (!inetAddress.isLoopbackAddress() && inetAddress.getHostAddress().toString().length() < 18
+                    if (!inetAddress.isLoopbackAddress() && inetAddress.getHostAddress().length() < 18
                             && inetAddress.isSiteLocalAddress()) {
                         if (inetAddress.getHostAddress().equals(primaryHostAddress)) {
                             results.add(networkInterface);
index 63068c1ee16be1940f09dbd2a063b1346904b18c..6cc0cca6624d30a9580682aac47d3e67f672cadf 100644 (file)
@@ -98,7 +98,7 @@ public class IpObserverDiscoveryService extends AbstractDiscoveryService {
                 InetAddress currentIP = InetAddress.getByAddress(ByteBuffer.allocate(4).putInt(i).array());
                 // Try to reach each IP with a timeout of 500ms which is enough for local network
                 if (currentIP.isReachable(500)) {
-                    String host = currentIP.getHostAddress().toString();
+                    String host = currentIP.getHostAddress();
                     logger.debug("Unknown device was found at: {}", host);
                     discoverySearchPool.execute(new IpObserverDiscoveryJob(this, host));
                 }
index e4f429cfebe0973d9ba68e0c24e31511aaffa364..4325d42d23a5de632971d35fcafe1f46d4e52bdf 100644 (file)
@@ -77,10 +77,10 @@ public class IppPrinterHandler extends BaseThingHandler implements DiscoveryList
         String name = (String) config.get(PRINTER_PARAMETER_NAME);
         try {
             Object obj = config.get(PRINTER_PARAMETER_URL);
-            if (obj instanceof URL) {
-                url = (URL) obj;
-            } else if (obj instanceof String) {
-                url = new URL((String) obj);
+            if (obj instanceof URL newUrl) {
+                url = newUrl;
+            } else if (obj instanceof String urlString) {
+                url = new URL(urlString);
             }
             printer = new CupsPrinter(null, url, name);
         } catch (MalformedURLException e) {
index d55fa758fe97a2e18af5c9019776eec2e68866e4..36b083f0a829439c3527b0b370ab56205ea5c5cb 100644 (file)
@@ -14,7 +14,6 @@ package org.openhab.binding.irobot.internal;
 
 import static org.openhab.binding.irobot.internal.IRobotBindingConstants.THING_TYPE_ROOMBA;
 
-import java.util.Collections;
 import java.util.Set;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
@@ -38,7 +37,7 @@ import org.osgi.service.component.annotations.Component;
 @NonNullByDefault
 public class IRobotHandlerFactory extends BaseThingHandlerFactory {
 
-    private static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Collections.singleton(THING_TYPE_ROOMBA);
+    private static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Set.of(THING_TYPE_ROOMBA);
 
     @Override
     public boolean supportsThingType(ThingTypeUID thingTypeUID) {
index 1265af0be7d8c57be46edc62fa81bf7aecd7b9c2..8e4ca5a5057fced921af5300656c9e2f4018f93e 100644 (file)
@@ -128,7 +128,7 @@ public class MQTTProtocol {
         }
 
         public boolean cycleEnabled(int i) {
-            return cycle[i].equals("start");
+            return "start".equals(cycle[i]);
         }
 
         public void enableCycle(int i, boolean enable) {
index 47bfed76d36a786ef5117e5fb414fb135d70b89c..b1497e8aa255cf92518e68b0da98390646d01479 100644 (file)
@@ -315,7 +315,7 @@ public class IrCommand {
      * @return the byte buffer in Hex format
      */
     public ByteBuffer toHEXByteBuffer() {
-        byte hexDigit[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
+        byte[] hexDigit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
 
         ByteBuffer byteBuffer = toByteBuffer();
         byte[] toConvert = new byte[byteBuffer.limit()];
index 747a3fb8dc5a2bbde456f13ee1f3110669fd339b..751eae40f51771e5dd47d04b5313d2528e504386 100644 (file)
@@ -65,8 +65,8 @@ public class JablotronDiscoveryService extends AbstractDiscoveryService
 
     @Override
     public void setThingHandler(@Nullable ThingHandler thingHandler) {
-        if (thingHandler instanceof JablotronBridgeHandler) {
-            bridgeHandler = (JablotronBridgeHandler) thingHandler;
+        if (thingHandler instanceof JablotronBridgeHandler bridgeHandler) {
+            this.bridgeHandler = bridgeHandler;
         }
     }
 
index 4055e93c82967092349430631fa8155a7178d3a4..8b7d4734e1b3fc9b94a1ad22d6d8bfb37c4b34b1 100644 (file)
@@ -15,8 +15,8 @@ package org.openhab.binding.jablotron.internal.handler;
 import static org.openhab.binding.jablotron.JablotronBindingConstants.*;
 
 import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
+import java.util.Set;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
@@ -85,7 +85,7 @@ public class JablotronBridgeHandler extends BaseBridgeHandler {
 
     @Override
     public Collection<Class<? extends ThingHandlerService>> getServices() {
-        return Collections.singleton(JablotronDiscoveryService.class);
+        return Set.of(JablotronDiscoveryService.class);
     }
 
     @Override
index ef65750301b17012fb302e8f673c4d32b4f2ab66..0910804fdd9265cc7fe8bb021582da0c7c5a8598 100644 (file)
@@ -23,10 +23,11 @@ import org.openhab.binding.jeelink.internal.JeeLinkReadingConverter;
  * @author Volker Bier - Initial contribution
  */
 public class Ec3kReadingConverter implements JeeLinkReadingConverter<Ec3kReading> {
-    private static final Pattern LINE_P = Pattern
-            .compile("OK\\s+22\\s+([0-9]+)\\s+([0-9]+)\\s+([0-9]+)\\s+([0-9]+)\\s+([0-9]+)\\s+([0-9]+)\\s+([0-9]+)"
-                    + "\\s+([0-9]+)\\s+([0-9]+)\\s+([0-9]+)\\s+([0-9]+)\\s+([0-9]+)\\s+([0-9]+)\\s+([0-9]+)\\s+([0-9]+)"
-                    + "\\s+([0-9]+)\\s+([0-9]+)\\s+([0-9]+)\\s+([0-9]+)\\s+([0-9]+)");
+    private static final Pattern LINE_P = Pattern.compile("""
+            OK\\s+22\\s+([0-9]+)\\s+([0-9]+)\\s+([0-9]+)\\s+([0-9]+)\\s+([0-9]+)\\s+([0-9]+)\\s+([0-9]+)\
+            \\s+([0-9]+)\\s+([0-9]+)\\s+([0-9]+)\\s+([0-9]+)\\s+([0-9]+)\\s+([0-9]+)\\s+([0-9]+)\\s+([0-9]+)\
+            \\s+([0-9]+)\\s+([0-9]+)\\s+([0-9]+)\\s+([0-9]+)\\s+([0-9]+)\
+            """);
 
     @Override
     public Ec3kReading createReading(String inputLine) {
index c6422ed6c8e405e81608c72a7cb0919f8c9945ce..3ad324bd03f0076b556d9a9e3cca1aa3d732ea76 100644 (file)
@@ -59,7 +59,7 @@ public class LgwSensorHandler extends JeeLinkSensorHandler<LgwReading> {
 
     @Override
     public ReadingPublisher<LgwReading> createPublisher() {
-        ReadingPublisher<LgwReading> publisher = new ReadingPublisher<LgwReading>() {
+        return new ReadingPublisher<LgwReading>() {
             @Override
             public void publish(LgwReading reading) {
                 if (reading != null && getThing().getStatus() == ThingStatus.ONLINE) {
@@ -109,7 +109,5 @@ public class LgwSensorHandler extends JeeLinkSensorHandler<LgwReading> {
             public void dispose() {
             }
         };
-
-        return publisher;
     }
 }
index 642ed2acee317e7fa2951af4c0445ae2045b010b..3260b4c2009d3c293bc72e9203d032914fd6cd98 100644 (file)
@@ -48,7 +48,7 @@ public class Tx22SensorHandler extends JeeLinkSensorHandler<Tx22Reading> {
 
     @Override
     public ReadingPublisher<Tx22Reading> createPublisher() {
-        ReadingPublisher<Tx22Reading> publisher = new ReadingPublisher<Tx22Reading>() {
+        return new ReadingPublisher<Tx22Reading>() {
             @Override
             public void publish(Tx22Reading reading) {
                 if (reading != null && getThing().getStatus() == ThingStatus.ONLINE) {
@@ -90,7 +90,5 @@ public class Tx22SensorHandler extends JeeLinkSensorHandler<Tx22Reading> {
             public void dispose() {
             }
         };
-
-        return publisher;
     }
 }
index 9419f68beec77d38cf366c9dde75ddb6fd570061..a386c3a49f79cfc7906fca6da9d7f7281d521d93 100644 (file)
@@ -83,8 +83,8 @@ public class Pca301SensorHandler extends JeeLinkSensorHandler<Pca301Reading> {
                 command);
 
         if (channelUid.getIdWithoutGroup().equals(SWITCHING_STATE_CHANNEL)) {
-            if (command instanceof OnOffType) {
-                sendCommandRetry((OnOffType) command);
+            if (command instanceof OnOffType onOffCommand) {
+                sendCommandRetry(onOffCommand);
             } else {
                 sendCommand(command);
             }
index 3bc804980e69c44f0fd045fd86c2afff29daf9e0..501c22c08c8dad15d2635397bcb465be3a294122 100644 (file)
@@ -23,9 +23,10 @@ import org.openhab.binding.jeelink.internal.JeeLinkReadingConverter;
  * @author Volker Bier - Initial contribution
  */
 public class RevoltReadingConverter implements JeeLinkReadingConverter<RevoltReading> {
-    private static final Pattern LINE_P = Pattern
-            .compile("r([0-9A-Za-z]{4})([0-9A-Za-z]{2})([0-9A-Za-z]{4})([0-9A-Za-z]{2})([0-9A-Za-z]{4})"
-                    + "([0-9A-Za-z]{2})([0-9A-Za-z]{4})[0-9A-Za-z][0-9A-Za-z]");
+    private static final Pattern LINE_P = Pattern.compile("""
+            r([0-9A-Za-z]{4})([0-9A-Za-z]{2})([0-9A-Za-z]{4})([0-9A-Za-z]{2})([0-9A-Za-z]{4})\
+            ([0-9A-Za-z]{2})([0-9A-Za-z]{4})[0-9A-Za-z][0-9A-Za-z]\
+            """);
 
     @Override
     public RevoltReading createReading(String inputLine) {
index b2cbc3fded1fc5bb4a5ec404370b899a852e8239..a1055d9c0491a9b15f357b8f56a53377b648c31c 100644 (file)
@@ -46,7 +46,7 @@ public class RevoltSensorHandler extends JeeLinkSensorHandler<RevoltReading> {
 
     @Override
     public ReadingPublisher<RevoltReading> createPublisher() {
-        ReadingPublisher<RevoltReading> publisher = new ReadingPublisher<RevoltReading>() {
+        return new ReadingPublisher<RevoltReading>() {
             @Override
             public void publish(RevoltReading reading) {
                 if (reading != null && getThing().getStatus() == ThingStatus.ONLINE) {
@@ -73,7 +73,5 @@ public class RevoltSensorHandler extends JeeLinkSensorHandler<RevoltReading> {
             public void dispose() {
             }
         };
-
-        return publisher;
     }
 }
index d1d5dd1f462af4dd63fc28e7c3c35bf67fd3fb08..bd3c6dca0cd5f3ea784e9325df4ebbc967fd26f5 100644 (file)
@@ -81,8 +81,7 @@ public class JellyfinHandlerFactory extends BaseThingHandlerFactory {
 
     @Override
     protected synchronized void removeHandler(ThingHandler thingHandler) {
-        if (thingHandler instanceof JellyfinServerHandler) {
-            var serverHandler = (JellyfinServerHandler) thingHandler;
+        if (thingHandler instanceof JellyfinServerHandler serverHandler) {
             unregisterAuthenticationServlet(serverHandler);
         }
         super.removeHandler(thingHandler);
index 1b4c877a72e0984c53fc5aa4b807a53cd8240a07..a658afef5b30b6b5f85dc74f9c1aede63eccf014 100644 (file)
@@ -105,8 +105,8 @@ public class JellyfinClientDiscoveryService extends AbstractDiscoveryService imp
 
     @Override
     public void setThingHandler(ThingHandler thingHandler) {
-        if (thingHandler instanceof JellyfinServerHandler) {
-            bridgeHandler = (JellyfinServerHandler) thingHandler;
+        if (thingHandler instanceof JellyfinServerHandler bridgeHandler) {
+            this.bridgeHandler = bridgeHandler;
         }
     }
 
@@ -115,6 +115,7 @@ public class JellyfinClientDiscoveryService extends AbstractDiscoveryService imp
         return null;
     }
 
+    @Override
     public void activate() {
         activate(new HashMap<>());
     }
index b265781a4064c962573bddb89be9035b2a79b7dd..1221bd32a5fa2b63e6db8369bf9cb4f14905a02d 100644 (file)
@@ -107,7 +107,7 @@ public class JellyfinServerDiscoveryService extends AbstractDiscoveryService {
         new SystemApi(jellyClient).getPublicSystemInfo(asyncResponse);
         try {
             var publicSystemInfo = asyncResponse.awaitContent();
-            discoverServer(uri.getHost(), uri.getPort(), uri.getScheme().equalsIgnoreCase("https"), uri.getPath(),
+            discoverServer(uri.getHost(), uri.getPort(), "https".equalsIgnoreCase(uri.getScheme()), uri.getPath(),
                     publicSystemInfo);
         } catch (SyncCallback.SyncCallbackError | ApiClientException e) {
             logger.warn("Discovery error: {}", e.getMessage());
index 21b876d0f3989449b5fac6a1ce57e06d4f32c276..50172b34d93c597223a1771ed47ef342b7b44174 100644 (file)
@@ -243,9 +243,8 @@ public class JellyfinClientHandler extends BaseThingHandler {
 
     private UUID parseItemUUID(Command command) throws NumberFormatException {
         var itemId = command.toFullString().replace("-", "");
-        UUID itemUUID = new UUID(new BigInteger(itemId.substring(0, 16), 16).longValue(),
+        return new UUID(new BigInteger(itemId.substring(0, 16), 16).longValue(),
                 new BigInteger(itemId.substring(16), 16).longValue());
-        return itemUUID;
     }
 
     @Override
@@ -385,9 +384,9 @@ public class JellyfinClientHandler extends BaseThingHandler {
         var typeMatcher = typeSearchPattern.matcher(terms);
         boolean searchByTypeEnabled = typeMatcher.matches();
         var type = searchByTypeEnabled ? typeMatcher.group("type") : "";
-        boolean movieSearchEnabled = !searchByTypeEnabled || type.equals("movie");
-        boolean seriesSearchEnabled = !searchByTypeEnabled || type.equals("series");
-        boolean episodeSearchEnabled = !searchByTypeEnabled || type.equals("episode");
+        boolean movieSearchEnabled = !searchByTypeEnabled || "movie".equals(type);
+        boolean seriesSearchEnabled = !searchByTypeEnabled || "series".equals(type);
+        boolean episodeSearchEnabled = !searchByTypeEnabled || "episode".equals(type);
         var searchTerms = searchByTypeEnabled ? typeMatcher.group("terms") : terms;
         runItemSearchByType(searchTerms, playCommand, movieSearchEnabled, seriesSearchEnabled, episodeSearchEnabled);
     }
index 989a8987e46eeb22c18a7590de21659675b2bb5e..75cb3025eb208aa62a9e8838a76261a616473af1 100644 (file)
@@ -15,9 +15,9 @@ package org.openhab.binding.jellyfin.internal.handler;
 import java.time.Duration;
 import java.time.temporal.ChronoUnit;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
+import java.util.Set;
 import java.util.UUID;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
@@ -118,7 +118,7 @@ public class JellyfinServerHandler extends BaseBridgeHandler {
 
     @Override
     public Collection<Class<? extends ThingHandlerService>> getServices() {
-        return Collections.singleton(JellyfinClientDiscoveryService.class);
+        return Set.of(JellyfinClientDiscoveryService.class);
     }
 
     public String getServerUrl() {
@@ -225,8 +225,8 @@ public class JellyfinServerHandler extends BaseBridgeHandler {
         logger.warn("Api error: {}", e.getMessage());
         var cause = e.getCause();
         boolean unauthenticated = false;
-        if (cause instanceof InvalidStatusException) {
-            var status = ((InvalidStatusException) cause).getStatus();
+        if (cause instanceof InvalidStatusException invalidStatusException) {
+            var status = invalidStatusException.getStatus();
             if (status == 401) {
                 unauthenticated = true;
             }
@@ -398,8 +398,8 @@ public class JellyfinServerHandler extends BaseBridgeHandler {
             if (handler == null) {
                 return;
             }
-            if (handler instanceof JellyfinClientHandler) {
-                updateClientState((JellyfinClientHandler) handler, sessions);
+            if (handler instanceof JellyfinClientHandler clientHandler) {
+                updateClientState(clientHandler, sessions);
             } else {
                 logger.warn("Found unknown thing-handler instance: {}", handler);
             }
index b2db6b86dc3c643e472dc9a93913fe5adb514c60..4a7a7b8a06ade25d6902042c83509a521cc8cf9c 100644 (file)
@@ -28,8 +28,8 @@ public class SyncResponse<T> extends SyncCallback<Response<T>> {
             return awaitResult();
         } catch (SyncCallbackError e) {
             var cause = e.getCause();
-            if (cause instanceof ApiClientException) {
-                throw (ApiClientException) cause;
+            if (cause instanceof ApiClientException apiClientException) {
+                throw apiClientException;
             }
             throw e;
         }
index 9f190e654160c31dd5d069b98bf725aa22cb9231..182302412236ea1bf96bb296df55f48ee95927e7 100644 (file)
@@ -68,8 +68,7 @@ public class JuiceNetDiscoveryService extends AbstractDiscoveryService
 
     @Override
     public void setThingHandler(@Nullable ThingHandler handler) {
-        if (handler instanceof JuiceNetBridgeHandler) {
-            JuiceNetBridgeHandler bridgeHandler = (JuiceNetBridgeHandler) handler;
+        if (handler instanceof JuiceNetBridgeHandler bridgeHandler) {
             bridgeHandler.setDiscoveryService(this);
             this.bridgeHandler = bridgeHandler;
         } else {
index c0b75fca44e5abc1fb408059e3f86fb1e8de23a6..30c918fda24c71a27c76fd8faa35d10a97f6a9c2 100644 (file)
@@ -15,9 +15,9 @@ package org.openhab.binding.juicenet.internal.handler;
 import static org.openhab.binding.juicenet.internal.JuiceNetBindingConstants.*;
 
 import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
+import java.util.Set;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
 
@@ -116,7 +116,7 @@ public class JuiceNetBridgeHandler extends BaseBridgeHandler {
      */
     @Override
     public Collection<Class<? extends ThingHandlerService>> getServices() {
-        return Collections.singleton(JuiceNetDiscoveryService.class);
+        return Set.of(JuiceNetDiscoveryService.class);
     }
 
     public void handleApiException(Exception e) {
index efd18427b99cf5d192b87f343499770d42ff8863..97883a2b03922661f0ab93f768f1d223cacf867a 100644 (file)
@@ -281,7 +281,6 @@ public class KaleidescapeDiscoveryService extends AbstractDiscoveryService {
             input.close();
             writer.close();
             output.close();
-            socket.close();
         } catch (IOException e) {
             logger.debug("isKaleidescapeDevice() IOException: {}", e.getMessage());
         }
index 7ba530ac7e369a55e16525e3375bdb70644f74ec..98ba12d86b8ae17da9885541aa4768e958053446 100644 (file)
@@ -16,9 +16,9 @@ import static org.openhab.binding.kaleidescape.internal.KaleidescapeBindingConst
 
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ScheduledFuture;
@@ -189,7 +189,7 @@ public class KaleidescapeHandler extends BaseThingHandler implements Kaleidescap
 
     @Override
     public Collection<Class<? extends ThingHandlerService>> getServices() {
-        return Collections.singletonList(KaleidescapeThingActions.class);
+        return List.of(KaleidescapeThingActions.class);
     }
 
     public void handleRawCommand(@Nullable String command) {
@@ -229,8 +229,8 @@ public class KaleidescapeHandler extends BaseThingHandler implements Kaleidescap
                         }
                         break;
                     case VOLUME:
-                        if (command instanceof PercentType) {
-                            this.volume = (int) ((PercentType) command).doubleValue();
+                        if (command instanceof PercentType percentCommand) {
+                            this.volume = (int) percentCommand.doubleValue();
                             logger.debug("Got volume command {}", this.volume);
                             connector.sendCommand(SEND_EVENT_VOLUME_LEVEL_EQ + this.volume);
                         }
index 643f0d50c00bdb50d709bbdb739cbfd59cf569a5..452b4916ef96d348af03fba2c23c4dd0b661b062 100644 (file)
@@ -14,7 +14,6 @@ package org.openhab.binding.keba.internal;
 
 import static org.openhab.binding.keba.internal.KebaBindingConstants.THING_TYPE_KECONTACTP20;
 
-import java.util.Collections;
 import java.util.Set;
 
 import org.openhab.binding.keba.internal.handler.KeContactHandler;
@@ -35,7 +34,7 @@ import org.osgi.service.component.annotations.Component;
 @Component(service = ThingHandlerFactory.class, configurationPid = "binding.keba")
 public class KebaHandlerFactory extends BaseThingHandlerFactory {
 
-    private static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Collections.singleton(THING_TYPE_KECONTACTP20);
+    private static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Set.of(THING_TYPE_KECONTACTP20);
 
     private final KeContactTransceiver transceiver = new KeContactTransceiver();
 
index f67adc89b5de03790f87df034206be33a79f41c2..a16abfd30c82e3e8fee0b6e8743a8b3cfeaaf864 100644 (file)
@@ -342,7 +342,7 @@ public class KeContactHandler extends BaseThingHandler {
                         updateState(CHANNEL_MAX_SYSTEM_CURRENT, newState);
                         if (maxSystemCurrent != 0) {
                             if (maxSystemCurrent < maxPresetCurrent) {
-                                transceiver.send("curr " + String.valueOf(maxSystemCurrent), this);
+                                transceiver.send("curr " + maxSystemCurrent, this);
                                 updateState(CHANNEL_MAX_PRESET_CURRENT,
                                         new QuantityType<ElectricCurrent>(maxSystemCurrent / 1000.0, Units.AMPERE));
                                 updateState(CHANNEL_MAX_PRESET_CURRENT_RANGE, new QuantityType<Dimensionless>(
@@ -528,12 +528,10 @@ public class KeContactHandler extends BaseThingHandler {
         } else {
             switch (channelUID.getId()) {
                 case CHANNEL_MAX_PRESET_CURRENT: {
-                    if (command instanceof QuantityType<?>) {
-                        QuantityType<?> value = ((QuantityType<?>) command).toUnit("mA");
+                    if (command instanceof QuantityType<?> quantityCommand) {
+                        QuantityType<?> value = quantityCommand.toUnit("mA");
 
-                        transceiver.send(
-                                "curr " + String.valueOf(Math.min(Math.max(6000, value.intValue()), maxSystemCurrent)),
-                                this);
+                        transceiver.send("curr " + Math.min(Math.max(6000, value.intValue()), maxSystemCurrent), this);
                     }
                     break;
                 }
@@ -549,13 +547,13 @@ public class KeContactHandler extends BaseThingHandler {
                             newValue = maxSystemCurrent;
                         } else if (command == OnOffType.OFF) {
                             newValue = 6000;
-                        } else if (command instanceof QuantityType<?>) {
-                            QuantityType<?> value = ((QuantityType<?>) command).toUnit("%");
+                        } else if (command instanceof QuantityType<?> quantityCommand) {
+                            QuantityType<?> value = quantityCommand.toUnit("%");
                             newValue = Math.round(6000 + (maxSystemCurrent - 6000) * value.doubleValue() / 100.0);
                         } else {
                             return;
                         }
-                        transceiver.send("curr " + String.valueOf(newValue), this);
+                        transceiver.send("curr " + newValue, this);
                     }
                     break;
                 }
@@ -596,11 +594,10 @@ public class KeContactHandler extends BaseThingHandler {
                     break;
                 }
                 case CHANNEL_SETENERGY: {
-                    if (command instanceof QuantityType<?>) {
-                        QuantityType<?> value = ((QuantityType<?>) command).toUnit(Units.WATT_HOUR);
+                    if (command instanceof QuantityType<?> quantityCommand) {
+                        QuantityType<?> value = quantityCommand.toUnit(Units.WATT_HOUR);
                         transceiver.send(
-                                "setenergy " + String.valueOf(
-                                        Math.min(Math.max(0, Math.round(value.doubleValue() * 10.0)), 999999999)),
+                                "setenergy " + Math.min(Math.max(0, Math.round(value.doubleValue() * 10.0)), 999999999),
                                 this);
                     }
                     break;
index 4a3eb1e00d9a732839f72eb3fca8e89bfcedb34b..4b9826b368d1ca5b15326f7b02c43b0f236a2ffb 100644 (file)
@@ -405,7 +405,7 @@ public class KeContactTransceiver {
     private void establishConnection(KeContactHandler handler) {
         String ipAddress = handler.getIPAddress();
         if (handler.getThing().getStatusInfo().getStatusDetail() != ThingStatusDetail.CONFIGURATION_ERROR
-                && !ipAddress.equals("")) {
+                && !"".equals(ipAddress)) {
             logger.debug("Establishing the connection to the KEBA KeContact '{}'", handler.getThing().getUID());
 
             DatagramChannel datagramChannel = null;
index 408816dbcf5ac498aa96098ae63553307da1be84..ff9f3568fe976a576651913340a4430dccce59c4 100644 (file)
@@ -332,7 +332,7 @@ public class KM200Device {
         String decodedData = null;
         JsonObject nodeRoot = null;
         logger.debug("{}: trying to query information.", service);
-        byte[] recData = deviceCommunicator.getDataFromService(service.toString());
+        byte[] recData = deviceCommunicator.getDataFromService(service);
         try {
             if (recData == null) {
                 logger.debug("Communication to {} is not possible!", service);
@@ -361,7 +361,7 @@ public class KM200Device {
                     logger.warn("{}: SERVICE NOT AVAILABLE", service);
                     return null;
                 } else {
-                    logger.debug("{}: trying to parse {}", service, decodedData.toString());
+                    logger.debug("{}: trying to parse {}", service, decodedData);
                     nodeRoot = (JsonObject) JsonParser.parseString(decodedData);
                 }
             } else {
index 8a8de83675ba39c203bbe06b5dcb3bd140ba9315..511a92d534587a7a179a56cc388e17cfd7777709 100644 (file)
@@ -150,7 +150,7 @@ public class KM200DataHandler {
             }
             switch (type) {
                 case DATA_TYPE_STRING_VALUE: /* Check whether the type is a single value containing a string value */
-                    logger.debug("parseJSONData type string value: {} Type: {}", nodeRoot, itemType.toString());
+                    logger.debug("parseJSONData type string value: {} Type: {}", nodeRoot, itemType);
                     String sVal = nodeRoot.get("value").getAsString();
                     object.setValue(sVal);
                     /* Switch Binding */
index 1f2da882e8f51a68ec828bf326f08df05ad88370..90129b072c830cfdeae88affff2c4cc33098ca07 100644 (file)
@@ -73,7 +73,7 @@ public class KM200GatewayHandler extends BaseBridgeHandler {
 
     private final Logger logger = LoggerFactory.getLogger(KM200GatewayHandler.class);
 
-    public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Collections.singleton(THING_TYPE_KMDEVICE);
+    public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Set.of(THING_TYPE_KMDEVICE);
 
     private final Map<Channel, JsonObject> sendMap = Collections.synchronizedMap(new LinkedHashMap<>());
 
index 6364aeba3e396e0eaa35f9625f29b959e87b6fb3..a54490ca3a7da913bcd9332fe264940aa20ffc63 100644 (file)
@@ -215,11 +215,7 @@ public class ValueDecoder {
         try {
             date = new SimpleDateFormat(TIME_DAY_FORMAT, Locale.US).parse(value);
         } catch (ParseException pe) {
-            try {
-                date = new SimpleDateFormat(TIME_FORMAT, Locale.US).parse(value);
-            } catch (ParseException pe2) {
-                throw pe2;
-            }
+            date = new SimpleDateFormat(TIME_FORMAT, Locale.US).parse(value);
         }
         return DateTimeType.valueOf(new SimpleDateFormat(DateTimeType.DATE_PATTERN).format(date));
     }
index 2b64025292b14c7e659df75c716e4e1d66089d58..0f684320c4a838af85bf6dace2e1529d6dda3e0f 100644 (file)
@@ -414,9 +414,10 @@ public class DeviceThingHandler extends BaseThingHandler implements GroupAddress
                     if (oldFuture != null) {
                         oldFuture.cancel(true);
                     }
-                    if (value instanceof IncreaseDecreaseType type) {
-                        channelFutures.put(channelUID, scheduler.scheduleWithFixedDelay(
-                                () -> postCommand(channelUID, type), 0, frequency, TimeUnit.MILLISECONDS));
+                    if (value instanceof IncreaseDecreaseType increaseDecreaseCommand) {
+                        channelFutures.put(channelUID,
+                                scheduler.scheduleWithFixedDelay(() -> postCommand(channelUID, increaseDecreaseCommand),
+                                        0, frequency, TimeUnit.MILLISECONDS));
                     }
                 } else {
                     if (value instanceof Command command) {
index 996926275be6d0b82bc99f1495662a3d24bd142f..46a758923be4a80b2d55bd22a90cab76958295f8 100644 (file)
@@ -75,10 +75,10 @@ public class KodiAudioSink extends AudioSinkSync {
     public @NonNull CompletableFuture<@Nullable Void> processAndComplete(@Nullable AudioStream audioStream) {
         // we override this method to intercept URLAudioStream and handle it asynchronously. We won't wait for it to
         // play through the end as it can be very long
-        if (audioStream instanceof URLAudioStream) {
+        if (audioStream instanceof URLAudioStream stream) {
             // Asynchronous handling for URLAudioStream. Id it is an external URL, the speaker can access it itself and
             // play it. There will be no volume restoration or call to dispose / complete, but there is no need to.
-            String url = ((URLAudioStream) audioStream).getURL();
+            String url = stream.getURL();
             AudioFormat format = audioStream.getFormat();
             logger.trace("Processing audioStream URL {} of format {}.", url, format);
             handler.playURI(new StringType(url));
index a029e5d7cc6754de48b9786709541afebc460317..624a719fb0b96ed0dc917b2be33ed078d4b9abc4 100644 (file)
@@ -12,7 +12,6 @@
  */
 package org.openhab.binding.kodi.internal;
 
-import java.util.Collections;
 import java.util.Set;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
@@ -34,7 +33,7 @@ public class KodiBindingConstants {
 
     // List of all Thing Type UIDs
     public static final ThingTypeUID THING_TYPE_KODI = new ThingTypeUID(BINDING_ID, "kodi");
-    public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Collections.singleton(THING_TYPE_KODI);
+    public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Set.of(THING_TYPE_KODI);
 
     // List of thing parameters names
     public static final String HOST_PARAMETER = "ipAddress";
index 297e60e3064ebcb348ac2ca24aff57f0e9af329f..45291bc66d660dddf16d9a50af2f2688d8496233 100644 (file)
@@ -82,10 +82,8 @@ public class KodiUpnpDiscoveryParticipant implements UpnpDiscoveryParticipant {
                 Map<String, Object> properties = new HashMap<>();
                 properties.put(HOST_PARAMETER, device.getIdentity().getDescriptorURL().getHost());
 
-                DiscoveryResult result = DiscoveryResultBuilder.create(thingUid).withLabel(label)
-                        .withProperties(properties).withRepresentationProperty(HOST_PARAMETER).build();
-
-                return result;
+                return DiscoveryResultBuilder.create(thingUid).withLabel(label).withProperties(properties)
+                        .withRepresentationProperty(HOST_PARAMETER).build();
             }
         }
         return null;
index 4949041273964e7daef3087c76f47dd74e7bc7a0..be5f908ce8edaf825b050f8b7196d5b60f6564dc 100644 (file)
@@ -134,8 +134,8 @@ public class KodiHandler extends BaseThingHandler implements KodiEventListener {
 
     private int getIntConfigParameter(String key, int defaultValue) {
         Object obj = this.getConfig().get(key);
-        if (obj instanceof Number) {
-            return ((Number) obj).intValue();
+        if (obj instanceof Number numberValue) {
+            return numberValue.intValue();
         } else if (obj instanceof String) {
             return Integer.parseInt(obj.toString());
         }
@@ -160,8 +160,8 @@ public class KodiHandler extends BaseThingHandler implements KodiEventListener {
                 }
                 break;
             case CHANNEL_VOLUME:
-                if (command instanceof PercentType) {
-                    connection.setVolume(((PercentType) command).intValue());
+                if (command instanceof PercentType percentCommand) {
+                    connection.setVolume(percentCommand.intValue());
                 } else if (command.equals(IncreaseDecreaseType.INCREASE)) {
                     connection.increaseVolume();
                 } else if (command.equals(IncreaseDecreaseType.DECREASE)) {
@@ -213,8 +213,8 @@ public class KodiHandler extends BaseThingHandler implements KodiEventListener {
                 }
                 break;
             case CHANNEL_PLAYNOTIFICATION:
-                if (command instanceof StringType) {
-                    playNotificationSoundURI((StringType) command, true);
+                if (command instanceof StringType stringCommand) {
+                    playNotificationSoundURI(stringCommand, true);
                     updateState(CHANNEL_PLAYNOTIFICATION, UnDefType.UNDEF);
                 } else if (command.equals(RefreshType.REFRESH)) {
                     updateState(CHANNEL_PLAYNOTIFICATION, UnDefType.UNDEF);
@@ -307,14 +307,14 @@ public class KodiHandler extends BaseThingHandler implements KodiEventListener {
             case CHANNEL_AUDIO_CODEC:
                 break;
             case CHANNEL_AUDIO_INDEX:
-                if (command instanceof DecimalType) {
-                    connection.setAudioStream(((DecimalType) command).intValue());
+                if (command instanceof DecimalType decimalCommand) {
+                    connection.setAudioStream(decimalCommand.intValue());
                 }
                 break;
             case CHANNEL_VIDEO_CODEC:
             case CHANNEL_VIDEO_INDEX:
-                if (command instanceof DecimalType) {
-                    connection.setVideoStream(((DecimalType) command).intValue());
+                if (command instanceof DecimalType decimalCommand) {
+                    connection.setVideoStream(decimalCommand.intValue());
                 }
                 break;
             case CHANNEL_SUBTITLE_ENABLED:
@@ -325,13 +325,13 @@ public class KodiHandler extends BaseThingHandler implements KodiEventListener {
                 }
                 break;
             case CHANNEL_SUBTITLE_INDEX:
-                if (command instanceof DecimalType) {
-                    connection.setSubtitle(((DecimalType) command).intValue());
+                if (command instanceof DecimalType decimalCommand) {
+                    connection.setSubtitle(decimalCommand.intValue());
                 }
                 break;
             case CHANNEL_CURRENTTIME:
-                if (command instanceof QuantityType) {
-                    connection.setTime(((QuantityType<?>) command).intValue());
+                if (command instanceof QuantityType quantityCommand) {
+                    connection.setTime(quantityCommand.intValue());
                 }
                 break;
             case CHANNEL_CURRENTTIMEPERCENTAGE:
index 12fdff2b82cb9a36f7efd808817f4265762e53ec..e92930512d7ce6a037de5e68607e5eb29f75e7f2 100644 (file)
@@ -184,9 +184,7 @@ public class KodiConnection implements KodiClientSocketEventListener {
     private synchronized JsonArray getPlaylistsInternal() {
         String method = "Playlist.GetPlaylists";
         String hash = hostname + '#' + method;
-        JsonElement response = REQUEST_CACHE.putIfAbsentAndGet(hash, () -> {
-            return socket.callMethod(method);
-        });
+        JsonElement response = REQUEST_CACHE.putIfAbsentAndGet(hash, () -> socket.callMethod(method));
 
         if (response instanceof JsonArray) {
             return response.getAsJsonArray();
index 4e71401b2ccac2e559ea025e7d03e343273c683f..27657adc49adc988a57d5e6c3d38ccd1558c844e 100644 (file)
@@ -82,7 +82,6 @@ public class KonnectedHandlerFactory extends BaseThingHandlerFactory {
 
     @Override
     protected @Nullable ThingHandler createHandler(Thing thing) {
-
         KonnectedHandler thingHandler = new KonnectedHandler(thing, getCallbackUrl());
         if (servlet != null) {
             logger.debug("Adding thinghandler for thing {} to webhook.", thing.getUID().getId());
index 666155497ae9252825b697d851987b0349bf51f7..52249bf27322f7837059e77ddc42a841de55f85b 100644 (file)
@@ -62,9 +62,8 @@ public class KonnectedUPnPServer implements UpnpDiscoveryParticipant {
             Map<String, Object> properties = new HashMap<>();
             properties.put(BASE_URL, device.getDetails().getBaseURL());
             properties.put(MAC_ADDR, device.getDetails().getSerialNumber());
-            DiscoveryResult result = DiscoveryResultBuilder.create(uid).withProperties(properties)
+            return DiscoveryResultBuilder.create(uid).withProperties(properties)
                     .withLabel(device.getDetails().getFriendlyName()).withRepresentationProperty(MAC_ADDR).build();
-            return result;
         } else {
             return null;
         }
index 1816c0c3393b9408120ba3149de47f0fe5190284..271b696b29dede0064bc3681603724fceef38c43 100644 (file)
@@ -88,11 +88,11 @@ public class KonnectedHandler extends BaseThingHandler {
         String zone = zoneConfig.zone;
         logger.debug("The channelUID is: {} and the zone is : {}", channelUID.getAsString(), zone);
         // if the command is OnOfftype
-        if (command instanceof OnOffType) {
+        if (command instanceof OnOffType onOffCommand) {
             if (channelType.contains(CHANNEL_SWITCH)) {
                 logger.debug("A command was sent to a sensor type so we are ignoring the command");
             } else {
-                sendActuatorCommand((OnOffType) command, zone, channelUID);
+                sendActuatorCommand(onOffCommand, zone, channelUID);
             }
         } else if (command instanceof RefreshType) {
             // check to see if handler has been initialized before attempting to get state of pin, else wait one minute
@@ -227,7 +227,7 @@ public class KonnectedHandler extends BaseThingHandler {
             // https://github.com/eclipse/smarthome/issues/3484 has been implemented in the framework
             String[] cfg = configurationParameter.getKey().split("_");
             if ("controller".equals(cfg[0])) {
-                if (cfg[1].equals("softreset") && value instanceof Boolean && (Boolean) value) {
+                if ("softreset".equals(cfg[1]) && value instanceof Boolean bool && bool) {
                     scheduler.execute(() -> {
                         try {
                             http.doGet(baseUrl + "/settings?restart=true", null, retryCount);
@@ -235,7 +235,7 @@ public class KonnectedHandler extends BaseThingHandler {
                             updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, e.getMessage());
                         }
                     });
-                } else if (cfg[1].equals("removewifi") && value instanceof Boolean && (Boolean) value) {
+                } else if ("removewifi".equals(cfg[1]) && value instanceof Boolean bool && bool) {
                     scheduler.execute(() -> {
                         try {
                             http.doGet(baseUrl + "/settings?restore=true", null, retryCount);
@@ -243,7 +243,7 @@ public class KonnectedHandler extends BaseThingHandler {
                             updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, e.getMessage());
                         }
                     });
-                } else if (cfg[1].equals("sendConfig") && value instanceof Boolean && (Boolean) value) {
+                } else if ("sendConfig".equals(cfg[1]) && value instanceof Boolean bool && bool) {
                     scheduler.execute(() -> {
                         try {
                             String response = updateKonnectedModule();
@@ -444,7 +444,7 @@ public class KonnectedHandler extends BaseThingHandler {
 
     private void getSwitchState(String zone, ChannelUID channelId) {
         Channel channel = getThing().getChannel(channelId.getId());
-        if (!(channel == null)) {
+        if (channel != null) {
             logger.debug("getasstring: {} getID: {} getGroupId: {} toString:{}", channelId.getAsString(),
                     channelId.getId(), channelId.getGroupId(), channelId);
             KonnectedModuleGson payload = new KonnectedModuleGson();
index 75661c325995bbe16f1b0fa1259517d2db894023..df282ea0e1757c743d78e652b3c4e041a4a0265c 100644 (file)
@@ -59,8 +59,7 @@ public class SecondGenerationConfigurationHandler {
 
             sessionId = extractSessionId(getAuthenticateResponseJsonObject);
 
-            JsonObject authenticateJsonObject = JsonParser.parseString(getAuthenticateResponse.toString())
-                    .getAsJsonObject();
+            JsonObject authenticateJsonObject = JsonParser.parseString(getAuthenticateResponse).getAsJsonObject();
             salt = authenticateJsonObject.get("salt").getAsString();
 
             String saltedPassword = new StringBuilder(password).append(salt).toString();
@@ -120,9 +119,7 @@ public class SecondGenerationConfigurationHandler {
         int codeStartPosition = jsonResponse.indexOf("code");
         transformStringBuilder.insert(codeStartPosition + 11, ']');
 
-        String transformJsonObject = transformStringBuilder.toString();
-
-        return transformJsonObject;
+        return transformStringBuilder.toString();
     }
 
     // Method extractSessionId extracts sessionId from JsonObject
index 58d96ad4040f706cc9979a896755729b5d506202..7dfc60619ab1ef55dd1638108ab34c2d8ea810a6 100644 (file)
@@ -103,10 +103,10 @@ public class SecondGenerationHandler extends BaseThingHandler {
                             valueConfiguration);
                     break;
                 case SecondGenerationBindingConstants.CHANNEL_SMARTBATTERYCONTROLSET:
-                    if (command.toString().equals("ON")) {
+                    if ("ON".equals(command.toString())) {
                         valueConfiguration = "true";
                     }
-                    if (command.toString().equals("OFF")) {
+                    if ("OFF".equals(command.toString())) {
                         valueConfiguration = "false";
                     }
                     dxsEntriesConf = "33556484";
@@ -288,10 +288,10 @@ public class SecondGenerationHandler extends BaseThingHandler {
                 String channel = cConfig.id;
                 String value = channelPostsConfigurable[channelValuesCounterConfigurable];
                 int dxsEntriesCheckCounter = 3;
-                if (cConfig.dxsEntries.equals("33556484")) {
+                if ("33556484".equals(cConfig.dxsEntries)) {
                     dxsEntriesCheckCounter = 1;
                 }
-                if (cConfig.dxsEntries.equals("33556482")) {
+                if ("33556482".equals(cConfig.dxsEntries)) {
                     dxsEntriesCheckCounter = 2;
                 }
                 switch (dxsEntriesCheckCounter) {
index bfb070f3a9c89bce582e5e73beb8f8b8a76cf801..3644e89eb20db4d282049b0570810c7ccd70d734 100644 (file)
@@ -76,7 +76,6 @@ public class KVVBridgeHandler extends BaseBridgeHandler {
      * @return the latest {@link DepartureResult}.
      */
     public synchronized @Nullable DepartureResult queryKVV(final KVVStopConfig stopConfig) {
-
         // is there an up-to-date value in the cache?
         final DepartureResult cr = this.cache.get(stopConfig.stopId);
         if (cr != null) {
index bc40e815b16250b8082d9ba1b2f399da6881190a..c758e1eea79e690863a5144cf4824d524a844e97 100644 (file)
@@ -139,7 +139,7 @@ public class HttpAuthenticationFeature implements Feature {
     /**
      * Feature authentication mode.
      */
-    static enum Mode {
+    enum Mode {
         /**
          * Basic preemptive.
          **/
index f457624d83bbbb88fcaffe397faa6aef78544ccd..68cb7884c844ad174e0fbf820c9f62c0db6c53c8 100644 (file)
@@ -305,13 +305,13 @@ class HttpAuthenticationFilter implements ClientRequestFilter, ClientResponseFil
         }
 
         String userName = (String) request.getProperty(usernameKey);
-        if (userName != null && !userName.equals("")) {
+        if (userName != null && !"".equals(userName)) {
             byte[] pwdBytes;
             Object password = request.getProperty(passwordKey);
-            if (password instanceof byte[]) {
-                pwdBytes = ((byte[]) password);
-            } else if (password instanceof String) {
-                pwdBytes = ((String) password).getBytes(CHARACTER_SET);
+            if (password instanceof byte[] bytes) {
+                pwdBytes = bytes;
+            } else if (password instanceof String stringValue) {
+                pwdBytes = stringValue.getBytes(CHARACTER_SET);
             } else {
                 throw new RequestAuthenticationException("Passwort invalid.");
             }
index a961051dc4cb11a4f0212182273cdc615276d623..61e3d965e9a895cca97c1d8f5b13a7317794f6c2 100644 (file)
@@ -15,7 +15,6 @@ package org.openhab.binding.lametrictime.internal.discovery;
 import static org.openhab.binding.lametrictime.internal.LaMetricTimeBindingConstants.THING_TYPE_DEVICE;
 import static org.openhab.binding.lametrictime.internal.config.LaMetricTimeConfiguration.HOST;
 
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Set;
@@ -46,7 +45,7 @@ public class LaMetricTimeDiscoveryParticipant implements UpnpDiscoveryParticipan
 
     @Override
     public Set<ThingTypeUID> getSupportedThingTypeUIDs() {
-        return Collections.singleton(THING_TYPE_DEVICE);
+        return Set.of(THING_TYPE_DEVICE);
     }
 
     @Override
index 26690b6529a37c2ec25997acd43dcc297c5b1971..e116ff6909701537669571ae174bcb0b8c078ef7 100644 (file)
@@ -214,9 +214,8 @@ public class LaMetricTimeHandler extends ConfigStatusBridgeHandler {
         Audio audio = clock.getLocalApi().getAudio();
         if (command instanceof RefreshType) {
             updateState(channelUID, new PercentType(audio.getVolume()));
-        } else if (command instanceof PercentType) {
+        } else if (command instanceof PercentType percentTypeCommand) {
             try {
-                PercentType percentTypeCommand = (PercentType) command;
                 int volume = percentTypeCommand.intValue();
                 if (volume >= 0 && volume != audio.getVolume()) {
                     audio.setVolume(volume);
@@ -256,8 +255,7 @@ public class LaMetricTimeHandler extends ConfigStatusBridgeHandler {
 
     private void updateBluetoothValue(ChannelUID channelUID, Command command, Bluetooth bluetooth) {
         try {
-            if (command instanceof OnOffType && channelUID.getId().equals(CHANNEL_BLUETOOTH_ACTIVE)) {
-                OnOffType onOffCommand = (OnOffType) command;
+            if (command instanceof OnOffType onOffCommand && channelUID.getId().equals(CHANNEL_BLUETOOTH_ACTIVE)) {
                 if (onOffCommand == OnOffType.ON && !bluetooth.isActive()) {
                     bluetooth.setActive(true);
                     clock.getLocalApi().updateBluetooth(bluetooth);
@@ -296,8 +294,8 @@ public class LaMetricTimeHandler extends ConfigStatusBridgeHandler {
     private void updateDisplayValue(ChannelUID channelUID, Command command) {
         try {
             if (channelUID.getId().equals(CHANNEL_DISPLAY_BRIGHTNESS)) {
-                if (command instanceof PercentType) {
-                    int brightness = ((PercentType) command).intValue();
+                if (command instanceof PercentType percentCommand) {
+                    int brightness = percentCommand.intValue();
                     logger.debug("Set Brightness to {}.", brightness);
                     Display newDisplay = clock.setBrightness(brightness);
                     updateState(CHANNEL_DISPLAY_BRIGHTNESS_MODE, new StringType(newDisplay.getBrightnessMode()));
index a34b5980e33012c40a68a17e1149624c8eeff6e4..3d5c288a11710a56a2255639b0372d4ead7f4d9a 100644 (file)
@@ -64,8 +64,8 @@ public class RadioAppHandler extends AbstractLaMetricTimeAppHandler {
     }
 
     private void handleControl(final Command command) throws ApplicationActionException {
-        if (command instanceof PlayPauseType) {
-            switch ((PlayPauseType) command) {
+        if (command instanceof PlayPauseType playCommand) {
+            switch (playCommand) {
                 case PLAY:
                     play();
                     return;
@@ -78,8 +78,8 @@ public class RadioAppHandler extends AbstractLaMetricTimeAppHandler {
             }
         }
 
-        if (command instanceof NextPreviousType) {
-            switch ((NextPreviousType) command) {
+        if (command instanceof NextPreviousType nextCommand) {
+            switch (nextCommand) {
                 case NEXT:
                     next();
                     return;
index 203ba4d1768b4c7ca2a2d6e96ab62e614f4c2ef6..5f866a872dce175c8e38c4f76ac1a342665bfc25 100644 (file)
@@ -52,8 +52,8 @@ public class DimmerOutputProfile implements StateProfile {
         Optional<Object> outputs12 = getConfig(profileContext, "controlOutputs12");
 
         ramp.ifPresent(b -> {
-            if (b instanceof BigDecimal) {
-                rampMs = (int) (((BigDecimal) b).doubleValue() * 1000);
+            if (b instanceof BigDecimal decimalValue) {
+                rampMs = (int) (decimalValue.doubleValue() * 1000);
             } else {
                 logger.warn("Could not parse 'ramp', unexpected type, should be float: {}", ramp);
             }
@@ -86,10 +86,10 @@ public class DimmerOutputProfile implements StateProfile {
             logger.warn("Unsupported 'ramp' setting. Will be forced to 250ms: {}", rampMs);
         }
         BigDecimal value;
-        if (command instanceof DecimalType) {
-            value = ((DecimalType) command).toBigDecimal();
-        } else if (command instanceof OnOffType) {
-            value = ((OnOffType) command) == OnOffType.ON ? BigDecimal.valueOf(100) : BigDecimal.ZERO;
+        if (command instanceof DecimalType decimalCommand) {
+            value = decimalCommand.toBigDecimal();
+        } else if (command instanceof OnOffType onOffCommand) {
+            value = onOffCommand == OnOffType.ON ? BigDecimal.valueOf(100) : BigDecimal.ZERO;
         } else {
             logger.warn("Unsupported type: {}", command.toFullString());
             return;
index 4fc011c1ffe9528c11a88674fe45e132a0ec96f2..87402fbcdba15da408688b8ee4d9ee3bdaa1d02c 100644 (file)
@@ -82,8 +82,8 @@ public class LcnModuleDiscoveryService extends AbstractDiscoveryService
 
     @Override
     public void setThingHandler(@Nullable ThingHandler handler) {
-        if (handler instanceof PckGatewayHandler) {
-            this.bridgeHandler = (PckGatewayHandler) handler;
+        if (handler instanceof PckGatewayHandler gatewayHandler) {
+            this.bridgeHandler = gatewayHandler;
         }
     }
 
index 5cf8448880fc57b2e27709257952132f70ad8af6..5d105cd60c4077a627fbff86cbfdf8a29e18a85c 100644 (file)
@@ -14,12 +14,12 @@ package org.openhab.binding.lcn.internal;
 
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.NoSuchElementException;
 import java.util.Optional;
+import java.util.Set;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.jdt.annotation.Nullable;
@@ -117,8 +117,8 @@ public class LcnModuleHandler extends BaseThingHandler {
                 Object invertUpDown = channel.getConfiguration().get("invertUpDown");
 
                 // Initialize value converters
-                if (unitObject instanceof String) {
-                    switch ((String) unitObject) {
+                if (unitObject instanceof String stringValue) {
+                    switch (stringValue) {
                         case "power":
                         case "energy":
                             converters.put(channel.getUID(), new S0Converter(parameterObject));
@@ -207,35 +207,33 @@ public class LcnModuleHandler extends BaseThingHandler {
             if (command instanceof RefreshType) {
                 number.ifPresent(n -> subHandler.handleRefresh(channelGroup, n));
                 subHandler.handleRefresh(channelUid.getIdWithoutGroup());
-            } else if (command instanceof OnOffType) {
-                subHandler.handleCommandOnOff((OnOffType) command, channelGroup, number.get());
-            } else if (command instanceof DimmerOutputCommand) {
-                subHandler.handleCommandDimmerOutput((DimmerOutputCommand) command, number.get());
-            } else if (command instanceof PercentType && number.isPresent()) {
-                subHandler.handleCommandPercent((PercentType) command, channelGroup, number.get());
-            } else if (command instanceof HSBType) {
-                subHandler.handleCommandHsb((HSBType) command, channelUid.getIdWithoutGroup());
-            } else if (command instanceof PercentType) {
-                subHandler.handleCommandPercent((PercentType) command, channelGroup, channelUid.getIdWithoutGroup());
-            } else if (command instanceof StringType) {
-                subHandler.handleCommandString((StringType) command, number.orElse(0));
-            } else if (command instanceof DecimalType) {
-                DecimalType decimalType = (DecimalType) command;
-                DecimalType nativeValue = getConverter(channelUid).onCommandFromItem(decimalType.doubleValue());
+            } else if (command instanceof OnOffType onOffCommand) {
+                subHandler.handleCommandOnOff(onOffCommand, channelGroup, number.get());
+            } else if (command instanceof DimmerOutputCommand outputCommand) {
+                subHandler.handleCommandDimmerOutput(outputCommand, number.get());
+            } else if (command instanceof PercentType percentCommand && number.isPresent()) {
+                subHandler.handleCommandPercent(percentCommand, channelGroup, number.get());
+            } else if (command instanceof HSBType hsbCommand) {
+                subHandler.handleCommandHsb(hsbCommand, channelUid.getIdWithoutGroup());
+            } else if (command instanceof PercentType percentCommand) {
+                subHandler.handleCommandPercent(percentCommand, channelGroup, channelUid.getIdWithoutGroup());
+            } else if (command instanceof StringType stringCommand) {
+                subHandler.handleCommandString(stringCommand, number.orElse(0));
+            } else if (command instanceof DecimalType decimalCommand) {
+                DecimalType nativeValue = getConverter(channelUid).onCommandFromItem(decimalCommand.doubleValue());
                 subHandler.handleCommandDecimal(nativeValue, channelGroup, number.get());
-            } else if (command instanceof QuantityType) {
-                QuantityType<?> quantityType = (QuantityType<?>) command;
-                DecimalType nativeValue = getConverter(channelUid).onCommandFromItem(quantityType);
+            } else if (command instanceof QuantityType quantityCommand) {
+                DecimalType nativeValue = getConverter(channelUid).onCommandFromItem(quantityCommand);
                 subHandler.handleCommandDecimal(nativeValue, channelGroup, number.get());
-            } else if (command instanceof UpDownType) {
+            } else if (command instanceof UpDownType upDownCommand) {
                 Channel channel = thing.getChannel(channelUid);
                 if (channel != null) {
                     Object invertConfig = channel.getConfiguration().get("invertUpDown");
-                    boolean invertUpDown = invertConfig instanceof Boolean && (boolean) invertConfig;
-                    subHandler.handleCommandUpDown((UpDownType) command, channelGroup, number.get(), invertUpDown);
+                    boolean invertUpDown = invertConfig instanceof Boolean bool && bool;
+                    subHandler.handleCommandUpDown(upDownCommand, channelGroup, number.get(), invertUpDown);
                 }
-            } else if (command instanceof StopMoveType) {
-                subHandler.handleCommandStopMove((StopMoveType) command, channelGroup, number.get());
+            } else if (command instanceof StopMoveType stopMoveCommand) {
+                subHandler.handleCommandStopMove(stopMoveCommand, channelGroup, number.get());
             } else {
                 throw new LcnException("Unsupported command type");
             }
@@ -397,7 +395,7 @@ public class LcnModuleHandler extends BaseThingHandler {
 
     @Override
     public Collection<Class<? extends ThingHandlerService>> getServices() {
-        return Collections.singleton(LcnModuleActions.class);
+        return Set.of(LcnModuleActions.class);
     }
 
     /**
index d519c18d650acc69b02ffe3af34538c7a54b62dc..e455b3efa566c1c99146170d2f9db6eb0e0aa8ed 100644 (file)
@@ -13,8 +13,8 @@
 package org.openhab.binding.lcn.internal;
 
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Locale;
+import java.util.Set;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.jdt.annotation.Nullable;
@@ -46,12 +46,12 @@ public class LcnProfileFactory implements ProfileFactory, ProfileTypeProvider {
 
     @Override
     public Collection<ProfileTypeUID> getSupportedProfileTypeUIDs() {
-        return Collections.singleton(DimmerOutputProfile.UID);
+        return Set.of(DimmerOutputProfile.UID);
     }
 
     @Override
     public Collection<ProfileType> getProfileTypes(@Nullable Locale locale) {
-        return Collections.singleton(ProfileTypeBuilder.newState(DimmerOutputProfile.UID, "Dimmer Output (%)")
+        return Set.of(ProfileTypeBuilder.newState(DimmerOutputProfile.UID, "Dimmer Output (%)")
                 .withSupportedItemTypes(CoreItemFactory.DIMMER, CoreItemFactory.COLOR)
                 .withSupportedChannelTypeUIDs(
                         new ChannelTypeUID(LcnBindingConstants.BINDING_ID, LcnChannelGroup.OUTPUT.name().toLowerCase()))
index 38529c556aa17363854ab1138d0ccb5ecb0796d1..7c5f25aaf602c4ee0ea037b0702cd4377c2ec909 100644 (file)
@@ -13,8 +13,8 @@
 package org.openhab.binding.lcn.internal;
 
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Optional;
+import java.util.Set;
 import java.util.function.Consumer;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
@@ -114,7 +114,7 @@ public class PckGatewayHandler extends BaseBridgeHandler {
 
     @Override
     public Collection<Class<? extends ThingHandlerService>> getServices() {
-        return Collections.singleton(LcnModuleDiscoveryService.class);
+        return Set.of(LcnModuleDiscoveryService.class);
     }
 
     @Override
index 7f711ba9e6667d3dcf999984e046b9b5119de2ba..75a623f5218ff1747f9c400088394c3ce507ae94 100644 (file)
@@ -86,14 +86,14 @@ public final class LcnDefs {
         OFF,
         ON,
         BLINK,
-        FLICKER;
+        FLICKER
     }
 
     /** Possible states for LCN logic-operations. */
     public enum LogicOpStatus {
         NOT,
         OR, // Note: Actually not correct since AND won't be OR also
-        AND;
+        AND
     }
 
     /** Time units used for several LCN commands. */
@@ -101,7 +101,7 @@ public final class LcnDefs {
         SECONDS,
         MINUTES,
         HOURS,
-        DAYS;
+        DAYS
     }
 
     /** Relay-state modifiers used in LCN commands. */
index 6ffc5264f85a0e109f1ba7a4bcc209048d8ec3be..58657cd36d70f9ab76f6428c16caf80a66257d77 100644 (file)
@@ -251,7 +251,7 @@ public class Connection {
 
                                     writeInProgress = false;
 
-                                    if (sendQueue.size() > 0) {
+                                    if (!sendQueue.isEmpty()) {
                                         /**
                                          * This could lead to stack overflows, since the CompletionHandler may run in
                                          * the same Thread as triggerWriteToSocket() is invoked (see
index 82770678a82c5d16d06b90a5ceb3bf18a6eaf56b..7964694eebda372c495190911287322d57aac82e 100644 (file)
@@ -36,8 +36,8 @@ public class S0Converter extends ValueConverter {
         if (parameter == null) {
             pulsesPerKwh = 1000;
             logger.debug("Pulses per kWh not set. Assuming 1000 imp./kWh.");
-        } else if (parameter instanceof BigDecimal) {
-            pulsesPerKwh = ((BigDecimal) parameter).doubleValue();
+        } else if (parameter instanceof BigDecimal decimalValue) {
+            pulsesPerKwh = decimalValue.doubleValue();
         } else {
             logger.warn("Could not parse 'pulses', unexpected type, should be float or integer: {}", parameter);
         }
index f51090698a8cb8814941836630de290909cee967..925fff97f9ebdbc03d43ca2b7be117afa6fbbafd 100644 (file)
@@ -103,10 +103,10 @@ public class ValueConverter extends Converter {
      */
     @Override
     public State onStateUpdateFromHandler(State state) throws LcnException {
-        if (state instanceof DecimalType) {
+        if (state instanceof DecimalType decimalValue) {
             Unit<?> localUnit = unit;
             if (localUnit != null) {
-                return QuantityType.valueOf(toHumanReadable(((DecimalType) state).longValue()), localUnit);
+                return QuantityType.valueOf(toHumanReadable(decimalValue.longValue()), localUnit);
             }
 
             return state;
index 2c75e2a82cb36988be07e3dce55c319726e4a55b..d118550450eaf41349be0628e78d483c078e2b9e 100644 (file)
@@ -13,7 +13,7 @@
 package org.openhab.binding.lcn.internal.subhandler;
 
 import java.util.Collection;
-import java.util.Collections;
+import java.util.Set;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -90,6 +90,6 @@ public abstract class AbstractLcnModuleRollershutterRelaySubHandler extends Abst
 
     @Override
     public Collection<Pattern> getPckStatusMessagePatterns() {
-        return Collections.singleton(PATTERN);
+        return Set.of(PATTERN);
     }
 }
index 9b9adb724aa5d1a146107f02a2ccdf4ff89588f2..37e0b4672c4528b131647a77bb4949767b6291a9 100644 (file)
@@ -13,7 +13,7 @@
 package org.openhab.binding.lcn.internal.subhandler;
 
 import java.util.Collection;
-import java.util.Collections;
+import java.util.Set;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.stream.IntStream;
@@ -57,6 +57,6 @@ public class LcnModuleBinarySensorSubHandler extends AbstractLcnModuleSubHandler
 
     @Override
     public Collection<Pattern> getPckStatusMessagePatterns() {
-        return Collections.singleton(PATTERN);
+        return Set.of(PATTERN);
     }
 }
index 5737f56256b1c749488b0fd8b9d6a44b57b48450..02f796e2684007248f1be5fcf48dc0937f4c71e6 100644 (file)
@@ -13,7 +13,7 @@
 package org.openhab.binding.lcn.internal.subhandler;
 
 import java.util.Collection;
-import java.util.Collections;
+import java.util.Set;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -73,6 +73,6 @@ public class LcnModuleHostCommandSubHandler extends AbstractLcnModuleSubHandler
 
     @Override
     public Collection<Pattern> getPckStatusMessagePatterns() {
-        return Collections.singleton(SEND_KEY_PATTERN);
+        return Set.of(SEND_KEY_PATTERN);
     }
 }
index a73581c87d1179f00c828e4841c535a83d1b04dc..db831f7c45c2fc91e4f95a7356988ac2fe66a74b 100644 (file)
@@ -14,7 +14,7 @@ package org.openhab.binding.lcn.internal.subhandler;
 
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
+import java.util.Set;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.stream.IntStream;
@@ -90,6 +90,6 @@ public class LcnModuleKeyLockTableSubHandler extends AbstractLcnModuleSubHandler
 
     @Override
     public Collection<Pattern> getPckStatusMessagePatterns() {
-        return Collections.singleton(PATTERN);
+        return Set.of(PATTERN);
     }
 }
index 52273db6fd3c7fbaf4e914659045ac9d963142ab..8e7ad6f8a61d8702b6fb738905bcda5e823927c2 100644 (file)
@@ -13,7 +13,7 @@
 package org.openhab.binding.lcn.internal.subhandler;
 
 import java.util.Collection;
-import java.util.Collections;
+import java.util.Set;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -52,6 +52,6 @@ public class LcnModuleMetaFirmwareSubHandler extends AbstractLcnModuleSubHandler
 
     @Override
     public Collection<Pattern> getPckStatusMessagePatterns() {
-        return Collections.singleton(PATTERN);
+        return Set.of(PATTERN);
     }
 }
index 0d8e3ab2855d1add76cf6c45a32fb5f87afdff97..a948ea74883949f0560914b998c5ee34a298d657 100644 (file)
@@ -13,7 +13,7 @@
 package org.openhab.binding.lcn.internal.subhandler;
 
 import java.util.Collection;
-import java.util.Collections;
+import java.util.Set;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.stream.IntStream;
@@ -81,6 +81,6 @@ public class LcnModuleRelaySubHandler extends AbstractLcnModuleSubHandler {
 
     @Override
     public Collection<Pattern> getPckStatusMessagePatterns() {
-        return Collections.singleton(PATTERN);
+        return Set.of(PATTERN);
     }
 }
index 26885e3340520bf64a2505ed83aa8cac654a81f4..c42bcea0b8c5a2286a83b59553ce24cf12af88e6 100644 (file)
@@ -13,7 +13,7 @@
 package org.openhab.binding.lcn.internal.subhandler;
 
 import java.util.Collection;
-import java.util.Collections;
+import java.util.Set;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -53,6 +53,6 @@ public class LcnModuleS0CounterSubHandler extends AbstractLcnModuleVariableSubHa
 
     @Override
     public Collection<Pattern> getPckStatusMessagePatterns() {
-        return Collections.singleton(PATTERN);
+        return Set.of(PATTERN);
     }
 }
index 53e499d699965b6e3df99ddf2d809bab4da2a2fa..114d9ab1f7525a5b0046c6893c6e05eef187a0ab 100644 (file)
@@ -48,8 +48,8 @@ public class LeapMotionColorProfile implements TriggerProfile {
 
     @Override
     public void onStateUpdateFromItem(State state) {
-        if (state instanceof HSBType) {
-            lastState = (HSBType) state;
+        if (state instanceof HSBType hsbState) {
+            lastState = hsbState;
         } else {
             PercentType currentBrightness = state.as(PercentType.class);
             if (currentBrightness != null) {
@@ -94,7 +94,6 @@ public class LeapMotionColorProfile implements TriggerProfile {
         int hue = clockwise ? (color.getHue().toBigDecimal().intValue() - 20 + 360) % 360
                 : (color.getHue().toBigDecimal().intValue() + 20 + 360) % 360;
         logger.debug("New hue value: {}", hue);
-        HSBType newState = new HSBType(new DecimalType(hue), color.getSaturation(), color.getBrightness());
-        return newState;
+        return new HSBType(new DecimalType(hue), color.getSaturation(), color.getBrightness());
     }
 }
index 1559f1817ddce2bf051f8d8d3f2317c03cc56a5b..b520a81a332486ef99d996a96d473977958401df 100644 (file)
@@ -14,7 +14,6 @@ package org.openhab.binding.leapmotion.internal;
 
 import static org.openhab.binding.leapmotion.internal.LeapMotionBindingConstants.THING_TYPE_CONTROLLER;
 
-import java.util.Collections;
 import java.util.Set;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
@@ -36,7 +35,7 @@ import org.osgi.service.component.annotations.Component;
 @NonNullByDefault
 public class LeapMotionHandlerFactory extends BaseThingHandlerFactory {
 
-    private static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Collections.singleton(THING_TYPE_CONTROLLER);
+    private static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Set.of(THING_TYPE_CONTROLLER);
 
     @Override
     public boolean supportsThingType(ThingTypeUID thingTypeUID) {
index acc62d12b749c00be72cc523a4a19ea03691e3d5..9c47695c4c6aa69c9c370dd635d31794082ddafe 100644 (file)
@@ -12,8 +12,8 @@
  */
 package org.openhab.binding.leapmotion.internal.discovery;
 
-import java.util.Collections;
 import java.util.Map;
+import java.util.Set;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.jdt.annotation.Nullable;
@@ -42,7 +42,7 @@ public class LeapMotionDiscoveryService extends AbstractDiscoveryService {
     private @NonNullByDefault({}) Listener listener;
 
     public LeapMotionDiscoveryService() throws IllegalArgumentException {
-        super(Collections.singleton(LeapMotionBindingConstants.THING_TYPE_CONTROLLER), 10, true);
+        super(Set.of(LeapMotionBindingConstants.THING_TYPE_CONTROLLER), 10, true);
     }
 
     @Override
index db4b5ef2e8b2f61b33e951838a130a2c89450cbc..c0dd2f13f9e03b5bef8a1a49d0196dae38bf9d84 100644 (file)
@@ -12,7 +12,6 @@
  */
 package org.openhab.binding.lghombot.internal;
 
-import java.util.Collections;
 import java.util.Set;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
@@ -32,7 +31,7 @@ public final class LGHomBotBindingConstants {
     // List of all Thing Type UIDs
     public static final ThingTypeUID THING_TYPE_LGHOMBOT = new ThingTypeUID(BINDING_ID, "LGHomBot");
 
-    public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Collections.singleton(THING_TYPE_LGHOMBOT);
+    public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Set.of(THING_TYPE_LGHOMBOT);
 
     // List of all Channel ids
     static final String CHANNEL_STATE = "state";
index 94d537aa0837487bc8d7cb21cd0c40b7e266dfa4..0765b9b61cd975f1d0e3971a25d1123e813f27fc 100644 (file)
@@ -14,7 +14,6 @@ package org.openhab.binding.lghombot.internal;
 
 import static org.openhab.binding.lghombot.internal.LGHomBotBindingConstants.THING_TYPE_LGHOMBOT;
 
-import java.util.Collections;
 import java.util.Set;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
@@ -36,7 +35,7 @@ import org.osgi.service.component.annotations.Component;
 @Component(configurationPid = "binding.lghombot", service = ThingHandlerFactory.class)
 public class LGHomBotHandlerFactory extends BaseThingHandlerFactory {
 
-    private static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Collections.singleton(THING_TYPE_LGHOMBOT);
+    private static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Set.of(THING_TYPE_LGHOMBOT);
 
     @Override
     public boolean supportsThingType(ThingTypeUID thingTypeUID) {
index a41ae547042b15ce532a90e8d5bb8f42efbfb712..59ab1bef070d9151f90d24776c3f503b0fd797a4 100644 (file)
@@ -236,12 +236,12 @@ public class LGHomBotDiscovery extends AbstractDiscoveryService {
             if (idx > 0) {
                 String name = msg.substring(0, idx);
 
-                if (name.equalsIgnoreCase("JSON_NICKNAME")) {
-                    nickName = msg.substring(idx + 1).trim().replaceAll("\"", "");
-                } else if (name.equalsIgnoreCase("JSON_VERSION")) {
-                    fwVersion = msg.substring(idx + 1).trim().replaceAll("\"", "");
-                } else if (name.equalsIgnoreCase("LGSRV_VERSION")) {
-                    srvVersion = msg.substring(idx + 1).trim().replaceAll("\"", "");
+                if ("JSON_NICKNAME".equalsIgnoreCase(name)) {
+                    nickName = msg.substring(idx + 1).trim().replace("\"", "");
+                } else if ("JSON_VERSION".equalsIgnoreCase(name)) {
+                    fwVersion = msg.substring(idx + 1).trim().replace("\"", "");
+                } else if ("LGSRV_VERSION".equalsIgnoreCase(name)) {
+                    srvVersion = msg.substring(idx + 1).trim().replace("\"", "");
                 }
             }
 
index 5f41b0177e13ca08b5b130845e24c7de64d1170b..ea8905f9efae17b3afc5be870632bd2240db4c6a 100644 (file)
@@ -36,7 +36,7 @@ public class OnOffResponse implements LGSerialResponse {
         this.success = success;
 
         if (success) {
-            state = data.equals("01") ? OnOffType.ON : OnOffType.OFF;
+            state = "01".equals(data) ? OnOffType.ON : OnOffType.OFF;
         } else {
             state = new StringType(data);
         }
index c033ff8b7f398b32b78fbeb49ed77a77131331c7..cfbfc954e44bbe7f74bc94efc37c8be89bceedd9 100644 (file)
@@ -12,7 +12,6 @@
  */
 package org.openhab.binding.lgwebos.internal;
 
-import java.util.Collections;
 import java.util.Set;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
@@ -31,7 +30,7 @@ public class LGWebOSBindingConstants {
 
     public static final ThingTypeUID THING_TYPE_WEBOSTV = new ThingTypeUID(BINDING_ID, "WebOSTV");
 
-    public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Collections.singleton(THING_TYPE_WEBOSTV);
+    public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Set.of(THING_TYPE_WEBOSTV);
 
     public static final ServiceType UPNP_SERVICE_TYPE = new ServiceType("lge-com", "webos-second-screen", 1);
 
index ed2e2a60fbb39122e414ec4870efb07b143ac25b..eda9b69cc059152c5d7948ec54caf63b023c3b33 100644 (file)
@@ -64,9 +64,11 @@ public class PowerControlPower extends BaseChannelHandler<CommandConfirmation> {
                 case DISCONNECTED:
                     String macAddress = configProvider.getMacAddress();
                     if (macAddress.isEmpty()) {
-                        logger.debug("Received ON - Turning TV on via API is not supported by LG WebOS TVs. "
-                                + "You may succeed using wake on lan (WOL). "
-                                + "Please set the macAddress config value in Thing configuration to enable this.");
+                        logger.debug("""
+                                Received ON - Turning TV on via API is not supported by LG WebOS TVs. \
+                                You may succeed using wake on lan (WOL). \
+                                Please set the macAddress config value in Thing configuration to enable this.\
+                                """);
                         handler.postUpdate(channelId, OnOffType.OFF);
                     } else {
                         for (int i = 0; i < WOL_PACKET_RETRY_COUNT; i++) {
index 737ab45878febf84997b7381735b0fa2c1a0993d..7cdaf395e1773cc95ec35ea0a79485add393577e 100644 (file)
@@ -49,12 +49,12 @@ public class VolumeControlVolume extends BaseChannelHandler<Float> {
             handler.getSocket().getVolume(createResponseListener(channelId, handler));
             return;
         }
-        if (command instanceof PercentType) {
-            percent = (PercentType) command;
-        } else if (command instanceof DecimalType) {
-            percent = new PercentType(((DecimalType) command).toBigDecimal());
-        } else if (command instanceof StringType) {
-            percent = new PercentType(((StringType) command).toString());
+        if (command instanceof PercentType percentCommand) {
+            percent = percentCommand;
+        } else if (command instanceof DecimalType decimalCommand) {
+            percent = new PercentType(decimalCommand.toBigDecimal());
+        } else if (command instanceof StringType stringCommand) {
+            percent = new PercentType(stringCommand.toString());
         } else {
             percent = null;
         }
index 9381660a7e96683bd6f4d2346ce85b9acc07135e..426c191dca7e6a3c8a07bc3e5dcfee579fcce50d 100644 (file)
@@ -48,9 +48,9 @@ public class WakeOnLanUtility {
     static {
         String os = System.getProperty("os.name").toLowerCase();
         LOGGER.debug("os: {}", os);
-        if ((os.indexOf("win") >= 0)) {
+        if ((os.contains("win"))) {
             COMMAND = "arp -a %s";
-        } else if ((os.indexOf("mac") >= 0)) {
+        } else if ((os.contains("mac"))) {
             COMMAND = "arp %s";
         } else { // linux
             if (checkIfLinuxCommandExists("arp")) {
index 6164e065b82737ae66f7afb9b83fae38a91c9068..8ee09e4acc331a127c46c941657741f497995ccb 100644 (file)
@@ -115,7 +115,7 @@ public class LGWebOSActions implements ThingActions {
     private List<AppInfo> getAppInfos() {
         LGWebOSHandler lgWebOSHandler = getLGWebOSHandler();
 
-        if (!this.getConnectedSocket().isPresent()) {
+        if (this.getConnectedSocket().isEmpty()) {
             return Collections.emptyList();
         }
 
index 4f2b7c9088c620180c289c6b82f48820806385aa..d316470ed2ad26606ce4a9241563f1037778423b 100644 (file)
@@ -65,8 +65,8 @@ public class LGWebOSCommandExtension extends AbstractConsoleCommandExtension imp
             LGWebOSHandler handler = null;
             if (thing != null) {
                 thingHandler = thing.getHandler();
-                if (thingHandler instanceof LGWebOSHandler) {
-                    handler = (LGWebOSHandler) thingHandler;
+                if (thingHandler instanceof LGWebOSHandler webOSHandler) {
+                    handler = webOSHandler;
                 }
             }
             if (thing == null) {
index c7f326534356b6238876b4368f077feb733f579b..8be697da852df6b5f41e769b2176effe260cecc4 100644 (file)
@@ -21,6 +21,7 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
 
@@ -373,7 +374,7 @@ public class LGWebOSHandler extends BaseThingHandler
 
     @Override
     public Collection<Class<? extends ThingHandlerService>> getServices() {
-        return Collections.singleton(LGWebOSActions.class);
+        return Set.of(LGWebOSActions.class);
     }
 
     /**
index 00350626f7ff83a5d314d2b6094399b993503615..f1a8282f81b97693de7068294604b8d2a66ae3d7 100644 (file)
@@ -189,8 +189,7 @@ public class LifxLightCommunicationHandler {
                     new Object[] { logId, packet.getClass().getSimpleName(), address.toString(),
                             packet.getTarget().getHex(), packet.getSequence(), Long.toString(packet.getSource(), 16) });
 
-            if (packet instanceof StateServiceResponse) {
-                StateServiceResponse response = (StateServiceResponse) packet;
+            if (packet instanceof StateServiceResponse response) {
                 MACAddress discoveredAddress = response.getTarget();
                 if (packetFromConfiguredHost && macAddress == null) {
                     macAddress = discoveredAddress;
index b83229afb58221b330c3de623744c74b01d12087..f890571f304cf8305a72510bd9125bcda9ab87b7 100644 (file)
@@ -157,22 +157,22 @@ public class LifxLightCurrentStateUpdater {
         try {
             lock.lock();
 
-            if (packet instanceof StateResponse) {
-                handleLightStatus((StateResponse) packet);
-            } else if (packet instanceof StatePowerResponse) {
-                handlePowerStatus((StatePowerResponse) packet);
-            } else if (packet instanceof StateLightPowerResponse) {
-                handleLightPowerStatus((StateLightPowerResponse) packet);
-            } else if (packet instanceof StateHevCycleResponse) {
-                handleHevCycleStatus((StateHevCycleResponse) packet);
-            } else if (packet instanceof StateLightInfraredResponse) {
-                handleInfraredStatus((StateLightInfraredResponse) packet);
-            } else if (packet instanceof StateMultiZoneResponse) {
-                handleMultiZoneStatus((StateMultiZoneResponse) packet);
-            } else if (packet instanceof StateTileEffectResponse) {
-                handleTileEffectStatus((StateTileEffectResponse) packet);
-            } else if (packet instanceof StateWifiInfoResponse) {
-                handleWifiInfoStatus((StateWifiInfoResponse) packet);
+            if (packet instanceof StateResponse response) {
+                handleLightStatus(response);
+            } else if (packet instanceof StatePowerResponse response) {
+                handlePowerStatus(response);
+            } else if (packet instanceof StateLightPowerResponse response) {
+                handleLightPowerStatus(response);
+            } else if (packet instanceof StateHevCycleResponse response) {
+                handleHevCycleStatus(response);
+            } else if (packet instanceof StateLightInfraredResponse response) {
+                handleInfraredStatus(response);
+            } else if (packet instanceof StateMultiZoneResponse response) {
+                handleMultiZoneStatus(response);
+            } else if (packet instanceof StateTileEffectResponse response) {
+                handleTileEffectStatus(response);
+            } else if (packet instanceof StateWifiInfoResponse response) {
+                handleWifiInfoStatus(response);
             }
 
             currentLightState.setOnline();
index 5d3bbe27b6e24045bf7a06bff23941f421d4a9e0..e54cfa9ca8ba6589b2a000c43ff6fec7b8553b6f 100644 (file)
@@ -269,8 +269,8 @@ public class LifxLightDiscovery extends AbstractDiscoveryService {
             MACAddress macAddress = packet.getTarget();
             DiscoveredLight light = discoveredLights.get(macAddress);
 
-            if (packet instanceof StateServiceResponse) {
-                int port = (int) ((StateServiceResponse) packet).getPort();
+            if (packet instanceof StateServiceResponse response) {
+                int port = (int) response.getPort();
                 if (port != 0) {
                     try {
                         InetSocketAddress socketAddress = new InetSocketAddress(address.getAddress(), port);
@@ -294,14 +294,13 @@ public class LifxLightDiscovery extends AbstractDiscoveryService {
                     }
                 }
             } else if (light != null) {
-                if (packet instanceof StateLabelResponse) {
-                    light.label = ((StateLabelResponse) packet).getLabel().trim();
-                } else if (packet instanceof StateVersionResponse) {
+                if (packet instanceof StateLabelResponse response) {
+                    light.label = response.getLabel().trim();
+                } else if (packet instanceof StateVersionResponse response) {
                     try {
-                        LifxProduct product = LifxProduct
-                                .getProductFromProductID(((StateVersionResponse) packet).getProduct());
+                        LifxProduct product = LifxProduct.getProductFromProductID(response.getProduct());
                         light.product = product;
-                        light.productVersion = ((StateVersionResponse) packet).getVersion();
+                        light.productVersion = response.getVersion();
                         light.supportedProduct = product.isLight();
                     } catch (IllegalArgumentException e) {
                         logger.debug("Discovered an unsupported light ({}): {}", light.macAddress.getAsLabel(),
index 163dc12163cd16b779b1af13a85671c54e298d5f..634f651096d137d3b615902910eeb3c470ecd9ab 100644 (file)
@@ -148,11 +148,11 @@ public class LifxLightPropertiesUpdater {
             return;
         }
 
-        if (packet instanceof StateVersionResponse) {
-            long productId = ((StateVersionResponse) packet).getProduct();
+        if (packet instanceof StateVersionResponse response) {
+            long productId = response.getProduct();
             properties.put(LifxBindingConstants.PROPERTY_PRODUCT_ID, Long.toString(productId));
 
-            long productVersion = ((StateVersionResponse) packet).getVersion();
+            long productVersion = response.getVersion();
             properties.put(LifxBindingConstants.PROPERTY_PRODUCT_VERSION, Long.toString(productVersion));
 
             try {
@@ -165,12 +165,12 @@ public class LifxLightPropertiesUpdater {
             }
 
             receivedPacketTypes.add(packet.getPacketType());
-        } else if (packet instanceof StateHostFirmwareResponse) {
-            String hostVersion = ((StateHostFirmwareResponse) packet).getVersion().toString();
+        } else if (packet instanceof StateHostFirmwareResponse response) {
+            String hostVersion = response.getVersion().toString();
             properties.put(LifxBindingConstants.PROPERTY_HOST_VERSION, hostVersion);
             receivedPacketTypes.add(packet.getPacketType());
-        } else if (packet instanceof StateWifiFirmwareResponse) {
-            String wifiVersion = ((StateWifiFirmwareResponse) packet).getVersion().toString();
+        } else if (packet instanceof StateWifiFirmwareResponse response) {
+            String wifiVersion = response.getVersion().toString();
             properties.put(LifxBindingConstants.PROPERTY_WIFI_VERSION, wifiVersion);
             receivedPacketTypes.add(packet.getPacketType());
         }
index 4c6e5cfbaf5c67f7bd28adf6009dcaf90258de79..5906d8efb56475c05df12ea186d76e865abda9e7 100644 (file)
@@ -30,8 +30,6 @@ public class LifxSequenceNumberSupplier implements Supplier<Integer> {
 
     @Override
     public Integer get() {
-        return sequenceNumber.getAndUpdate((value) -> {
-            return (value + 1) % SEQUENCE_NUMBER_DIVISOR;
-        });
+        return sequenceNumber.getAndUpdate((value) -> (value + 1) % SEQUENCE_NUMBER_DIVISOR);
     }
 }
index a4c4f949f0079d04246db8078c8d77c0bf8a9e02..4b05aa3d1bb943ebe465722e7e69b7dac1d4644d 100644 (file)
@@ -41,7 +41,7 @@ public enum LightLastHevCycleResult {
         Optional<LightLastHevCycleResult> result = Arrays.stream(values()).filter((value) -> value.type == type)
                 .findFirst();
 
-        if (!result.isPresent()) {
+        if (result.isEmpty()) {
             throw new IllegalArgumentException("Invalid LightLastHevCycleResult type: " + type);
         }
 
index 07de7e342f3e0b35bde89d4deeb3c80933aedb3a..b157788add27dfa1d16c7ecd141694af97bf6d7f 100644 (file)
@@ -44,9 +44,7 @@ public class LittleField<T> extends Field<T> {
 
         ByteBuffer flipped = flip(ByteBuffer.wrap(field));
 
-        T value = wrapped.value(flipped);
-
-        return value;
+        return wrapped.value(flipped);
     }
 
     @Override
index 8a1a361d55e70d331e25e2d6ff9ff7de0fce7910..5f52c5616391b8f7ed48429eccb97dad53d98c1f 100644 (file)
@@ -561,68 +561,67 @@ public class LifxLightHandler extends BaseThingHandler {
         switch (channelUID.getId()) {
             case CHANNEL_ABS_TEMPERATURE:
             case CHANNEL_TEMPERATURE:
-                if (command instanceof DecimalType || (command instanceof QuantityType
-                        && ((QuantityType) command).toInvertibleUnit(Units.KELVIN) != null)) {
+                if (command instanceof DecimalType || (command instanceof QuantityType quantityCommand
+                        && quantityCommand.toInvertibleUnit(Units.KELVIN) != null)) {
                     return () -> handleTemperatureCommand(command);
-                } else if (command instanceof IncreaseDecreaseType) {
-                    return () -> handleIncreaseDecreaseTemperatureCommand((IncreaseDecreaseType) command);
+                } else if (command instanceof IncreaseDecreaseType increaseDecreaseCommand) {
+                    return () -> handleIncreaseDecreaseTemperatureCommand(increaseDecreaseCommand);
                 }
             case CHANNEL_BRIGHTNESS:
-                if (command instanceof PercentType) {
-                    return () -> handlePercentCommand((PercentType) command);
-                } else if (command instanceof OnOffType) {
-                    return () -> handleOnOffCommand((OnOffType) command);
-                } else if (command instanceof IncreaseDecreaseType) {
-                    return () -> handleIncreaseDecreaseCommand((IncreaseDecreaseType) command);
+                if (command instanceof PercentType percentCommand) {
+                    return () -> handlePercentCommand(percentCommand);
+                } else if (command instanceof OnOffType onOffCommand) {
+                    return () -> handleOnOffCommand(onOffCommand);
+                } else if (command instanceof IncreaseDecreaseType increaseDecreaseCommand) {
+                    return () -> handleIncreaseDecreaseCommand(increaseDecreaseCommand);
                 }
             case CHANNEL_COLOR:
-                if (command instanceof HSBType) {
-                    return () -> handleHSBCommand((HSBType) command);
-                } else if (command instanceof PercentType) {
-                    return () -> handlePercentCommand((PercentType) command);
-                } else if (command instanceof OnOffType) {
-                    return () -> handleOnOffCommand((OnOffType) command);
-                } else if (command instanceof IncreaseDecreaseType) {
-                    return () -> handleIncreaseDecreaseCommand((IncreaseDecreaseType) command);
+                if (command instanceof HSBType hsbCommand) {
+                    return () -> handleHSBCommand(hsbCommand);
+                } else if (command instanceof PercentType percentCommand) {
+                    return () -> handlePercentCommand(percentCommand);
+                } else if (command instanceof OnOffType onOffCommand) {
+                    return () -> handleOnOffCommand(onOffCommand);
+                } else if (command instanceof IncreaseDecreaseType increaseDecreaseCommand) {
+                    return () -> handleIncreaseDecreaseCommand(increaseDecreaseCommand);
                 }
             case CHANNEL_EFFECT:
-                if (command instanceof StringType && features.hasFeature(TILE_EFFECT)) {
-                    return () -> handleTileEffectCommand((StringType) command);
+                if (command instanceof StringType stringCommand && features.hasFeature(TILE_EFFECT)) {
+                    return () -> handleTileEffectCommand(stringCommand);
                 }
             case CHANNEL_HEV_CYCLE:
-                if (command instanceof OnOffType) {
-                    return () -> handleHevCycleCommand((OnOffType) command);
+                if (command instanceof OnOffType onOffCommand) {
+                    return () -> handleHevCycleCommand(onOffCommand);
                 }
             case CHANNEL_INFRARED:
-                if (command instanceof PercentType) {
-                    return () -> handleInfraredCommand((PercentType) command);
-                } else if (command instanceof IncreaseDecreaseType) {
-                    return () -> handleIncreaseDecreaseInfraredCommand((IncreaseDecreaseType) command);
+                if (command instanceof PercentType percentCommand) {
+                    return () -> handleInfraredCommand(percentCommand);
+                } else if (command instanceof IncreaseDecreaseType increaseDecreaseCommand) {
+                    return () -> handleIncreaseDecreaseInfraredCommand(increaseDecreaseCommand);
                 }
             default:
                 try {
                     if (channelUID.getId().startsWith(CHANNEL_ABS_TEMPERATURE_ZONE)) {
                         int zoneIndex = Integer.parseInt(channelUID.getId().replace(CHANNEL_ABS_TEMPERATURE_ZONE, ""));
-                        if (command instanceof DecimalType || (command instanceof QuantityType
-                                && ((QuantityType) command).toInvertibleUnit(Units.KELVIN) != null)) {
+                        if (command instanceof DecimalType || (command instanceof QuantityType quantityCommand
+                                && quantityCommand.toInvertibleUnit(Units.KELVIN) != null)) {
                             return () -> handleTemperatureCommand(command, zoneIndex);
                         }
                     } else if (channelUID.getId().startsWith(CHANNEL_COLOR_ZONE)) {
                         int zoneIndex = Integer.parseInt(channelUID.getId().replace(CHANNEL_COLOR_ZONE, ""));
-                        if (command instanceof HSBType) {
-                            return () -> handleHSBCommand((HSBType) command, zoneIndex);
-                        } else if (command instanceof PercentType) {
-                            return () -> handlePercentCommand((PercentType) command, zoneIndex);
-                        } else if (command instanceof IncreaseDecreaseType) {
-                            return () -> handleIncreaseDecreaseCommand((IncreaseDecreaseType) command, zoneIndex);
+                        if (command instanceof HSBType hsbCommand) {
+                            return () -> handleHSBCommand(hsbCommand, zoneIndex);
+                        } else if (command instanceof PercentType percentCommand) {
+                            return () -> handlePercentCommand(percentCommand, zoneIndex);
+                        } else if (command instanceof IncreaseDecreaseType increaseDecreaseCommand) {
+                            return () -> handleIncreaseDecreaseCommand(increaseDecreaseCommand, zoneIndex);
                         }
                     } else if (channelUID.getId().startsWith(CHANNEL_TEMPERATURE_ZONE)) {
                         int zoneIndex = Integer.parseInt(channelUID.getId().replace(CHANNEL_TEMPERATURE_ZONE, ""));
-                        if (command instanceof PercentType) {
-                            return () -> handleTemperatureCommand((PercentType) command, zoneIndex);
-                        } else if (command instanceof IncreaseDecreaseType) {
-                            return () -> handleIncreaseDecreaseTemperatureCommand((IncreaseDecreaseType) command,
-                                    zoneIndex);
+                        if (command instanceof PercentType percentCommand) {
+                            return () -> handleTemperatureCommand(percentCommand, zoneIndex);
+                        } else if (command instanceof IncreaseDecreaseType increaseDecreaseCommand) {
+                            return () -> handleIncreaseDecreaseTemperatureCommand(increaseDecreaseCommand, zoneIndex);
                         }
                     }
                 } catch (NumberFormatException e) {
index 701e6d642f3a975aac3da2184c33cd2f7fd4a292..d4a88d68279c10efee671bdd2562e93931df4465 100644 (file)
@@ -106,12 +106,12 @@ public final class LifxMessageUtil {
     }
 
     public static int commandToKelvin(Command temperature, TemperatureRange temperatureRange) {
-        if (temperature instanceof PercentType) {
-            return percentTypeToKelvin((PercentType) temperature, temperatureRange);
-        } else if (temperature instanceof QuantityType) {
-            return quantityTypeToKelvin((QuantityType) temperature, temperatureRange);
-        } else if (temperature instanceof DecimalType) {
-            return decimalTypeToKelvin((DecimalType) temperature, temperatureRange);
+        if (temperature instanceof PercentType percentValue) {
+            return percentTypeToKelvin(percentValue, temperatureRange);
+        } else if (temperature instanceof QuantityType quantityValue) {
+            return quantityTypeToKelvin(quantityValue, temperatureRange);
+        } else if (temperature instanceof DecimalType decimalValue) {
+            return decimalTypeToKelvin(decimalValue, temperatureRange);
         } else {
             throw new IllegalStateException(
                     "Unexpected command type " + temperature.getClass().getName() + " for color temperature command.");
index 59c05ed36e0a7c72b81c9683048d37bf86faf042..0f600ff4c4b8a2797e9fa97cfd10197c3699b6f1 100644 (file)
@@ -131,9 +131,7 @@ public final class LifxNetworkUtil {
     }
 
     public static int getNewBroadcastPort() {
-        int offset = BROADCAST_PORT_COUNTER.getAndUpdate((value) -> {
-            return (value + 1) % Integer.MAX_VALUE;
-        });
+        int offset = BROADCAST_PORT_COUNTER.getAndUpdate((value) -> (value + 1) % Integer.MAX_VALUE);
         return BROADCAST_PORT + (offset % (PORT_MAX - BROADCAST_PORT));
     }
 }
index 24c53a286bf60d2329ce159730a0a1ac6869ced8..200dbc8fb547b7387c7b6cac4bf9a66da44ce3c5 100644 (file)
@@ -160,8 +160,8 @@ public class LifxSelectorUtil {
                 readBuffer.rewind();
 
                 try {
-                    if (channel instanceof DatagramChannel) {
-                        InetSocketAddress address = (InetSocketAddress) ((DatagramChannel) channel).receive(readBuffer);
+                    if (channel instanceof DatagramChannel datagramChannel) {
+                        InetSocketAddress address = (InetSocketAddress) datagramChannel.receive(readBuffer);
                         if (address == null) {
                             if (LOGGER.isTraceEnabled()) {
                                 LOGGER.trace("{} : No datagram is available", logId);
@@ -169,9 +169,9 @@ public class LifxSelectorUtil {
                         } else if (isRemoteAddress(address.getAddress())) {
                             supplyParsedPacketToConsumer(readBuffer, address, packetConsumer, logId);
                         }
-                    } else if (channel instanceof SocketChannel) {
-                        ((SocketChannel) channel).read(readBuffer);
-                        InetSocketAddress address = (InetSocketAddress) ((SocketChannel) channel).getRemoteAddress();
+                    } else if (channel instanceof SocketChannel socketChannel) {
+                        socketChannel.read(readBuffer);
+                        InetSocketAddress address = (InetSocketAddress) socketChannel.getRemoteAddress();
                         if (address == null) {
                             if (LOGGER.isTraceEnabled()) {
                                 LOGGER.trace("{} : Channel socket is not connected", logId);
@@ -292,20 +292,19 @@ public class LifxSelectorUtil {
 
                     if (key.isValid() && key.isWritable() && key.equals(castKey)) {
                         SelectableChannel channel = key.channel();
-                        if (channel instanceof DatagramChannel) {
+                        if (channel instanceof DatagramChannel datagramChannel) {
                             if (LOGGER.isTraceEnabled()) {
                                 LOGGER.trace(
                                         "{} : Sending packet type '{}' from '{}' to '{}' for '{}' with sequence '{}' and source '{}'",
                                         new Object[] { context.getLogId(), packet.getClass().getSimpleName(),
-                                                ((InetSocketAddress) ((DatagramChannel) channel).getLocalAddress())
-                                                        .toString(),
+                                                ((InetSocketAddress) datagramChannel.getLocalAddress()).toString(),
                                                 address.toString(), packet.getTarget().getHex(), packet.getSequence(),
                                                 Long.toString(packet.getSource(), 16) });
                             }
-                            ((DatagramChannel) channel).send(packet.bytes(), address);
+                            datagramChannel.send(packet.bytes(), address);
                             return true;
-                        } else if (channel instanceof SocketChannel) {
-                            ((SocketChannel) channel).write(packet.bytes());
+                        } else if (channel instanceof SocketChannel socketChannel) {
+                            socketChannel.write(packet.bytes());
                             return true;
                         }
                     }
index 3da31b36a84f6d125da330419194fe151c65278c..8ebd32748c0f19d2e94cb96ea84ff3c64954fd86 100644 (file)
@@ -65,8 +65,8 @@ public class LinkyCommandExtension extends AbstractConsoleCommandExtension imple
             LinkyHandler handler = null;
             if (thing != null) {
                 thingHandler = thing.getHandler();
-                if (thingHandler instanceof LinkyHandler) {
-                    handler = (LinkyHandler) thingHandler;
+                if (thingHandler instanceof LinkyHandler linkyHandler) {
+                    handler = linkyHandler;
                 }
             }
             if (thing == null) {
index 5cb66b53803f5a77f1bb0b218fd5d42324130d41..14cf52b7a59b979bb3e6d4943af73a29c3bd2892 100644 (file)
@@ -30,7 +30,7 @@ public class AuthData {
             public @Nullable Object value;
 
             public @Nullable String valueAsString() {
-                return (value instanceof String) ? (String) value : null;
+                return (value instanceof String stringValue) ? stringValue : null;
             }
         }
 
index 23b2d05686ba00fa1f747a0ce138f649330ba5e0..feecaded26343393b5b9ae0fdf2d8d9a0d91faa0 100644 (file)
@@ -472,25 +472,25 @@ public class LinkyHandler extends BaseThingHandler {
     }
 
     private void checkData(Consumption consumption) throws LinkyException {
-        if (consumption.aggregats.days.periodes.size() == 0) {
+        if (consumption.aggregats.days.periodes.isEmpty()) {
             throw new LinkyException("Invalid consumptions data: no day period");
         }
         if (consumption.aggregats.days.periodes.size() != consumption.aggregats.days.datas.size()) {
             throw new LinkyException("Invalid consumptions data: not any data for each day period");
         }
-        if (consumption.aggregats.weeks.periodes.size() == 0) {
+        if (consumption.aggregats.weeks.periodes.isEmpty()) {
             throw new LinkyException("Invalid consumptions data: no week period");
         }
         if (consumption.aggregats.weeks.periodes.size() != consumption.aggregats.weeks.datas.size()) {
             throw new LinkyException("Invalid consumptions data: not any data for each week period");
         }
-        if (consumption.aggregats.months.periodes.size() == 0) {
+        if (consumption.aggregats.months.periodes.isEmpty()) {
             throw new LinkyException("Invalid consumptions data: no month period");
         }
         if (consumption.aggregats.months.periodes.size() != consumption.aggregats.months.datas.size()) {
             throw new LinkyException("Invalid consumptions data: not any data for each month period");
         }
-        if (consumption.aggregats.years.periodes.size() == 0) {
+        if (consumption.aggregats.years.periodes.isEmpty()) {
             throw new LinkyException("Invalid consumptions data: no year period");
         }
         if (consumption.aggregats.years.periodes.size() != consumption.aggregats.years.datas.size()) {
@@ -501,13 +501,13 @@ public class LinkyHandler extends BaseThingHandler {
     private boolean isDataFirstDayAvailable(Consumption consumption) {
         Aggregate days = consumption.aggregats.days;
         logData(days, "First day", false, DateTimeFormatter.ISO_LOCAL_DATE, Target.FIRST);
-        return days.datas != null && days.datas.size() > 0 && !days.datas.get(0).isNaN();
+        return days.datas != null && !days.datas.isEmpty() && !days.datas.get(0).isNaN();
     }
 
     private boolean isDataLastDayAvailable(Consumption consumption) {
         Aggregate days = consumption.aggregats.days;
         logData(days, "Last day", false, DateTimeFormatter.ISO_LOCAL_DATE, Target.LAST);
-        return days.datas != null && days.datas.size() > 0 && !days.datas.get(days.datas.size() - 1).isNaN();
+        return days.datas != null && !days.datas.isEmpty() && !days.datas.get(days.datas.size() - 1).isNaN();
     }
 
     private void logData(Aggregate aggregate, String title, boolean withDateFin, DateTimeFormatter dateTimeFormatter,
index 1b62827ba403d02945e45691cb95b14c5619c1f9..88ea6ac9919d1e96a638c6d0fad062b22d7f4de8 100644 (file)
@@ -22,7 +22,7 @@ import java.nio.file.StandardWatchEventKinds;
 import java.nio.file.WatchKey;
 import java.nio.file.WatchService;
 import java.time.Duration;
-import java.util.Collections;
+import java.util.Set;
 import java.util.concurrent.Future;
 import java.util.concurrent.FutureTask;
 import java.util.concurrent.TimeUnit;
@@ -59,7 +59,7 @@ public class LinuxInputDiscoveryService extends AbstractDiscoveryService {
     private @NonNullByDefault({}) Future<?> discoveryJob;
 
     public LinuxInputDiscoveryService() {
-        super(Collections.singleton(THING_TYPE_DEVICE), (int) TIMEOUT.getSeconds(), true);
+        super(Set.of(THING_TYPE_DEVICE), (int) TIMEOUT.getSeconds(), true);
     }
 
     @Override
index 1648fc594aa2e4207b2387b2c37d302cc341dd85..c543f6196d61923cc49fa6b7768f43b231ea2fdf 100644 (file)
@@ -166,7 +166,7 @@ public final class LinuxInputHandler extends DeviceReadingHandler {
                 if (selector.selectedKeys().remove(evdevReady)) {
                     while (true) {
                         Optional<EvdevDevice.InputEvent> ev = currentDevice.nextEvent();
-                        if (!ev.isPresent()) {
+                        if (ev.isEmpty()) {
                             break;
                         }
                         handleEvent(ev.get());
index bec914342a49ae3285e39182677d02e08e5a9142..30c59d4b8316f6cf773df60ed6382558125c90b3 100644 (file)
@@ -14,7 +14,6 @@ package org.openhab.binding.linuxinput.internal;
 
 import static org.openhab.binding.linuxinput.internal.LinuxInputBindingConstants.THING_TYPE_DEVICE;
 
-import java.util.Collections;
 import java.util.Set;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
@@ -34,7 +33,7 @@ import org.osgi.service.component.annotations.Component;
 @NonNullByDefault
 @Component(configurationPid = "binding.linuxinput", service = ThingHandlerFactory.class)
 public class LinuxInputHandlerFactory extends BaseThingHandlerFactory {
-    private static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Collections.singleton(THING_TYPE_DEVICE);
+    private static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Set.of(THING_TYPE_DEVICE);
 
     @Override
     public boolean supportsThingType(ThingTypeUID thingTypeUID) {
index 82709680adf8fc5442bd53acf79c3bbb8740a031..3edb89995bea69b770e624fc9b98cd8ff74695da 100644 (file)
@@ -84,7 +84,7 @@ public class LiquidCheckHandler extends BaseThingHandler {
                     if (client != null && client.isConnected()) {
                         String response = client.measureCommand();
                         CommData commandResponse = new Gson().fromJson(response, CommData.class);
-                        if (commandResponse != null && !commandResponse.header.name.equals("")) {
+                        if (commandResponse != null && !"".equals(commandResponse.header.name)) {
                             if (!"success".equals(commandResponse.context.status)) {
                                 logger.warn("Starting the measurement was not successful!");
                             }
@@ -136,7 +136,7 @@ public class LiquidCheckHandler extends BaseThingHandler {
             try {
                 String jsonString = client.pollData();
                 CommData response = new Gson().fromJson(jsonString, CommData.class);
-                if (response != null && !response.header.messageId.equals("")) {
+                if (response != null && !"".equals(response.header.messageId)) {
                     Map<String, String> properties = response.createPropertyMap();
                     if (!oldProps.equals(properties)) {
                         oldProps = properties;
index 8e1d73d69c5c79cc4226138da4e44ad04db87342..c974d2cac65c1879610b75b6d9918630bc1084cf 100644 (file)
@@ -12,7 +12,6 @@
  */
 package org.openhab.binding.lirc.internal;
 
-import java.util.Collections;
 import java.util.Set;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
@@ -39,8 +38,8 @@ public class LIRCBindingConstants {
     public static final String CHANNEL_TRANSMIT = "transmit";
 
     // List of all supported thing types
-    public static final Set<ThingTypeUID> SUPPORTED_DEVICE_TYPES = Collections.singleton(THING_TYPE_REMOTE);
-    public static final Set<ThingTypeUID> SUPPORTED_BRIDGE_TYPES = Collections.singleton(THING_TYPE_BRIDGE);
+    public static final Set<ThingTypeUID> SUPPORTED_DEVICE_TYPES = Set.of(THING_TYPE_REMOTE);
+    public static final Set<ThingTypeUID> SUPPORTED_BRIDGE_TYPES = Set.of(THING_TYPE_BRIDGE);
     public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES = Stream.of(THING_TYPE_REMOTE, THING_TYPE_BRIDGE)
             .collect(Collectors.toSet());
 
index d10c25435766f41962df4b52755f110b1d08b8a2..a7533a480f4bf92e20f9b133840920cc370b0815 100644 (file)
@@ -160,8 +160,8 @@ public class LivisiDeviceDiscoveryService extends AbstractDiscoveryService
 
     @Override
     public void setThingHandler(@Nullable ThingHandler handler) {
-        if (handler instanceof LivisiBridgeHandler) {
-            bridgeHandler = (LivisiBridgeHandler) handler;
+        if (handler instanceof LivisiBridgeHandler livisiBridgeHandler) {
+            bridgeHandler = livisiBridgeHandler;
         }
     }
 
index 393755c448c108c2e77069bdfae85f7aaeaba568..462370c7f6f6be4aaf80cbcdd9cd0f2c5702d909 100644 (file)
@@ -20,10 +20,10 @@ import java.net.URI;
 import java.time.format.DateTimeFormatter;
 import java.time.format.FormatStyle;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Map;
 import java.util.Objects;
 import java.util.Optional;
+import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ScheduledExecutorService;
@@ -137,7 +137,7 @@ public class LivisiBridgeHandler extends BaseBridgeHandler
 
     @Override
     public Collection<Class<? extends ThingHandlerService>> getServices() {
-        return Collections.singleton(LivisiDeviceDiscoveryService.class);
+        return Set.of(LivisiDeviceDiscoveryService.class);
     }
 
     @Override
@@ -564,8 +564,8 @@ public class LivisiBridgeHandler extends BaseBridgeHandler
 
     @Override
     public void onError(final Throwable cause) {
-        if (cause instanceof Exception) {
-            handleClientException((Exception) cause);
+        if (cause instanceof Exception exception) {
+            handleClientException(exception);
         }
     }
 
index fb3c6ffa7d826dad5415c6b625b1116d3c537b5f..8d6a2167f3f52ddcb69b1551dc85d86cecebbb1c 100644 (file)
@@ -132,8 +132,7 @@ public class LivisiDeviceHandler extends BaseThingHandler implements DeviceStatu
     }
 
     private void commandSetDimLevel(Command command, LivisiBridgeHandler bridgeHandler) {
-        if (command instanceof DecimalType) {
-            final DecimalType dimLevel = (DecimalType) command;
+        if (command instanceof DecimalType dimLevel) {
             bridgeHandler.commandSetDimLevel(deviceId, dimLevel.intValue());
         } else if (command instanceof OnOffType) {
             if (OnOffType.ON.equals(command)) {
@@ -145,8 +144,7 @@ public class LivisiDeviceHandler extends BaseThingHandler implements DeviceStatu
     }
 
     private void commandRollerShutter(Command command, LivisiBridgeHandler bridgeHandler) {
-        if (command instanceof DecimalType) {
-            final DecimalType rollerShutterLevel = (DecimalType) command;
+        if (command instanceof DecimalType rollerShutterLevel) {
             bridgeHandler.commandSetRollerShutterLevel(deviceId,
                     invertRollerShutterValueIfConfigured(rollerShutterLevel.intValue()));
         } else if (command instanceof OnOffType) {
@@ -169,13 +167,13 @@ public class LivisiDeviceHandler extends BaseThingHandler implements DeviceStatu
     }
 
     private void commandUpdatePointTemperature(Command command, LivisiBridgeHandler bridgeHandler) {
-        if (command instanceof QuantityType) {
-            final QuantityType<?> pointTemperatureCommand = ((QuantityType<?>) command).toUnit(SIUnits.CELSIUS);
+        if (command instanceof QuantityType temperatureCommand) {
+            final QuantityType<?> pointTemperatureCommand = temperatureCommand.toUnit(SIUnits.CELSIUS);
             if (pointTemperatureCommand != null) {
                 commandUpdatePointTemperature(pointTemperatureCommand.doubleValue(), bridgeHandler);
             }
-        } else if (command instanceof DecimalType) {
-            commandUpdatePointTemperature(((DecimalType) command).doubleValue(), bridgeHandler);
+        } else if (command instanceof DecimalType temperatureCommand) {
+            commandUpdatePointTemperature(temperatureCommand.doubleValue(), bridgeHandler);
         }
     }
 
@@ -991,8 +989,7 @@ public class LivisiDeviceHandler extends BaseThingHandler implements DeviceStatu
                 }
                 @Nullable
                 final ThingHandler handler = bridge.getHandler();
-                if (handler instanceof LivisiBridgeHandler) {
-                    LivisiBridgeHandler bridgeHandler = (LivisiBridgeHandler) handler;
+                if (handler instanceof LivisiBridgeHandler bridgeHandler) {
                     bridgeHandler.registerDeviceStatusListener(deviceId, this);
                     this.bridgeHandler = bridgeHandler;
                 } else {
index 33713f1b7390e9de96fb1c3f902e04a75e011216..0a1391234cb1a04c8d014b8641bb2ba400dd3b33 100644 (file)
@@ -69,14 +69,15 @@ public class LivisiClientTest {
 
     @Test
     public void testRefreshStatusSHC2() throws Exception {
-        mockRequest(STATUS_URL,
-                "{\"gateway\": {\"serialNumber\": \"123\","
-                        + "\"appVersion\": \"1.2.37.430\",\"osVersion\": \"8.17\",\"configVersion\": 1200,"
-                        + "\"operationStatus\": \"active\",\"network\": "
-                        + "{\"ethCableAttached\": true,\"inUseAdapter\": \"eth\",\"hotspotActive\": false,"
-                        + "\"wpsActive\": false,\"backendAvailable\": true,\"ethMacAddress\": "
-                        + "[{\"id\": \"456\",\"config\": {\"name\": \"Arbeitszimmer\",\"type\": \"Other\"},"
-                        + "\"desc\": \"/desc/location\"}]}}}");
+        mockRequest(STATUS_URL, """
+                {"gateway": {"serialNumber": "123",\
+                "appVersion": "1.2.37.430","osVersion": "8.17","configVersion": 1200,\
+                "operationStatus": "active","network": \
+                {"ethCableAttached": true,"inUseAdapter": "eth","hotspotActive": false,\
+                "wpsActive": false,"backendAvailable": true,"ethMacAddress": \
+                [{"id": "456","config": {"name": "Arbeitszimmer","type": "Other"},\
+                "desc": "/desc/location"}]}}}\
+                """);
         assertEquals("1200", client.refreshStatus());
     }
 
index 3fd8c50d48ffa622b4eaa81329f249ade896d0e2..75972f93b78dbf54ba63c191e1acbc5ff3e1eda7 100644 (file)
@@ -39,7 +39,7 @@ public class DeviceDTOTest {
         assertTrue(device.isReachable());
         assertFalse(device.hasLowBattery());
 
-        device.setMessageList(Collections.singletonList(createMessage(MessageDTO.TYPE_DEVICE_LOW_BATTERY)));
+        device.setMessageList(List.of(createMessage(MessageDTO.TYPE_DEVICE_LOW_BATTERY)));
 
         assertTrue(device.isReachable());
         assertTrue(device.hasLowBattery());
@@ -52,7 +52,7 @@ public class DeviceDTOTest {
         assertTrue(device.isReachable());
         assertFalse(device.hasLowBattery());
 
-        device.setMessageList(Collections.singletonList(createMessage(MessageDTO.TYPE_DEVICE_UNREACHABLE)));
+        device.setMessageList(List.of(createMessage(MessageDTO.TYPE_DEVICE_UNREACHABLE)));
 
         assertFalse(device.isReachable());
         assertFalse(device.hasLowBattery());
@@ -126,7 +126,7 @@ public class DeviceDTOTest {
         assertFalse(device.isReachable());
         assertTrue(device.hasLowBattery());
 
-        messages = Collections.singletonList(createMessage("UNKNOWN"));
+        messages = List.of(createMessage("UNKNOWN"));
         device.setMessageList(messages);
 
         // Nothing should get changed.
@@ -144,7 +144,7 @@ public class DeviceDTOTest {
         assertTrue(device.isReachable());
         assertFalse(device.hasLowBattery());
 
-        device.setMessageList(Collections.singletonList(createMessage("UNKNOWN")));
+        device.setMessageList(List.of(createMessage("UNKNOWN")));
 
         assertTrue(device.isReachable());
         assertFalse(device.hasLowBattery());
index 51f611c61ac10480ba49963b214dfae8f23f2b8e..90eccc7e5bbc59d624278b45bd778454a3ea134b 100644 (file)
@@ -18,9 +18,9 @@ import static org.openhab.binding.livisismarthome.internal.LivisiBindingConstant
 import static org.openhab.binding.livisismarthome.internal.client.api.entity.link.LinkDTO.LINK_TYPE_DEVICE;
 
 import java.io.IOException;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.ScheduledFuture;
@@ -363,7 +363,7 @@ public class LivisiBridgeHandlerTest {
 
             livisiClientMock = mock(LivisiClient.class);
             fullDeviceManagerMock = mock(FullDeviceManager.class);
-            when(fullDeviceManagerMock.getFullDevices()).thenReturn(Collections.singletonList(bridgeDevice));
+            when(fullDeviceManagerMock.getFullDevices()).thenReturn(List.of(bridgeDevice));
 
             schedulerMock = mock(ScheduledExecutorService.class);
 
index f03aab91f348d5aabaad59d9970ba7df8effa730..4f39d1667c5d115a08f86e3fd84c8a7a6f8053c5 100644 (file)
@@ -1754,7 +1754,7 @@ public class LivisiDeviceHandlerTest {
         ThingUID thingUID = new ThingUID(thingTypeUID, device.getId());
 
         Configuration thingConfiguration = new Configuration();
-        thingConfiguration.setProperties(Collections.singletonMap(PROPERTY_ID, device.getId()));
+        thingConfiguration.setProperties(Map.of(PROPERTY_ID, device.getId()));
 
         Thing thingMock = mock(Thing.class);
         when(thingMock.getBridgeUID()).thenReturn(bridgeThingUID);
index 22f0d80f566c8ec3d6575e69ba7ebd9916de6162..fcfa4eb214f919bcba2fca89853029cb4a1e8141 100644 (file)
@@ -149,7 +149,7 @@ public class Tailer implements Runnable {
     /**
      * Buffer on top of RandomAccessFile.
      */
-    private final byte inbuf[];
+    private final byte[] inbuf;
 
     /**
      * The file which will be tailed.
index 935ffef8ef5ced7b003ecc97da6cd4eb0194b6c8..595d2fec3438c99cb2970d5ba55da267df2de282 100644 (file)
@@ -184,7 +184,7 @@ public class LogHandler extends BaseThingHandler implements FileReaderListener {
             return;
         }
 
-        if (!(thing.getStatus() == ThingStatus.ONLINE)) {
+        if (thing.getStatus() != ThingStatus.ONLINE) {
             updateStatus(ThingStatus.ONLINE);
         }
 
index 3d8ac12982dfda4b3c2cb0917c9cc30e9df77440..b4ba401e7049defc8e5846159c8b7722661f4281 100644 (file)
@@ -83,7 +83,7 @@ public class SearchEngine {
     private List<Pattern> compilePatterns(@Nullable String patterns) throws PatternSyntaxException {
         List<Pattern> patternsList = new ArrayList<>();
         if (patterns != null && !patterns.isEmpty()) {
-            String list[] = patterns.split("\\|");
+            String[] list = patterns.split("\\|");
             if (list.length > 0) {
                 for (String patternStr : list) {
                     patternsList.add(Pattern.compile(patternStr));
index 7f4720a1d2096a6f9eb549d85e98ff36178153c9..cb9795c3f2d37841d81b1e97e7bbbc6ad74f4ec2 100644 (file)
@@ -12,7 +12,6 @@
  */
 package org.openhab.binding.loxone.internal;
 
-import java.util.Collections;
 import java.util.Set;
 
 import org.openhab.core.thing.Thing;
@@ -31,8 +30,7 @@ import org.osgi.service.component.annotations.Reference;
 @Component(service = ThingHandlerFactory.class, configurationPid = "binding.loxone")
 public class LxHandlerFactory extends BaseThingHandlerFactory {
 
-    public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Collections
-            .singleton(LxBindingConstants.THING_TYPE_MINISERVER);
+    public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Set.of(LxBindingConstants.THING_TYPE_MINISERVER);
 
     private LxDynamicStateDescriptionProvider dynamicStateDescriptionProvider;
 
@@ -45,8 +43,7 @@ public class LxHandlerFactory extends BaseThingHandlerFactory {
     protected ThingHandler createHandler(Thing thing) {
         ThingTypeUID uid = thing.getThingTypeUID();
         if (uid.equals(LxBindingConstants.THING_TYPE_MINISERVER)) {
-            LxServerHandler handler = new LxServerHandler(thing, dynamicStateDescriptionProvider);
-            return handler;
+            return new LxServerHandler(thing, dynamicStateDescriptionProvider);
         }
         return null;
     }
index d89eb5b5ed002ffd22922eb921e9745683f61aba..1829c190c585f99ad8bf8a2aa62014c3864a4c00 100644 (file)
@@ -19,7 +19,6 @@ import java.net.UnknownHostException;
 import java.time.Duration;
 import java.time.Instant;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -106,8 +105,7 @@ public class LxServerHandler extends BaseThingHandler implements LxServerHandler
     private final Logger logger = LoggerFactory.getLogger(LxServerHandler.class);
     private static AtomicInteger staticDebugId = new AtomicInteger(1);
 
-    static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Collections
-            .singleton(LxBindingConstants.THING_TYPE_MINISERVER);
+    static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Set.of(LxBindingConstants.THING_TYPE_MINISERVER);
 
     private QueuedThreadPool jettyThreadPool;
 
@@ -324,7 +322,7 @@ public class LxServerHandler extends BaseThingHandler implements LxServerHandler
     @Override
     public String getSetting(String name) {
         Object value = getConfig().get(name);
-        return (value instanceof String) ? (String) value : null;
+        return (value instanceof String s) ? s : null;
     }
 
     /*
index 201065450fdec30682f00cd863e7fd236cdcbcf5..3483827e1da69539714bd0a49e6d2ec257d954cc 100644 (file)
@@ -207,7 +207,7 @@ public class LxWebSocket {
     }
 
     @OnWebSocketMessage
-    public void onBinaryMessage(byte data[], int msgOffset, int msgLength) {
+    public void onBinaryMessage(byte[] data, int msgOffset, int msgLength) {
         int offset = msgOffset;
         int length = msgLength;
         if (logger.isTraceEnabled()) {
index 51500f0135cad8459e9cfc087dddd73b1dd66ede..868c67e008e28105f5fffc7bf95832a98d3d1d1f 100644 (file)
@@ -617,8 +617,8 @@ public class LxControl {
         LxState state = states.get(name);
         if (state != null) {
             Object value = state.getStateValue();
-            if (value instanceof String) {
-                return (String) value;
+            if (value instanceof String str) {
+                return str;
             }
         }
         return null;
index 4c7132898488ca7c7ddb7eabc4dbbda0081e879f..9ce84e92dfe93529dbb18873bc7f5fa2072d16cc 100644 (file)
@@ -188,9 +188,9 @@ class LxControlAlarm extends LxControl {
         if (STATE_START_TIME.equals(stateName)) {
             startTime = UnDefType.UNDEF;
             Object obj = state.getStateValue();
-            if (obj instanceof String && !((String) obj).isEmpty()) {
+            if (obj instanceof String str && !str.isEmpty()) {
                 try {
-                    LocalDateTime ldt = LocalDateTime.parse((String) obj, dateTimeFormatter);
+                    LocalDateTime ldt = LocalDateTime.parse(str, dateTimeFormatter);
                     ZonedDateTime dt = ldt.atZone(ZoneId.systemDefault());
                     startTime = new DateTimeType(dt);
                 } catch (DateTimeParseException e) {
index 0be247e3dbcd688bd7e24b5a6703cf577120464c..f47d9a258b3e57b0ac73f075f7fc3b5409ee0976 100644 (file)
@@ -70,20 +70,20 @@ class LxControlColorPickerV2 extends LxControl {
     }
 
     private void handleCommands(Command command) throws IOException {
-        if (command instanceof HSBType) {
-            setColor((HSBType) command);
+        if (command instanceof HSBType hsbCommand) {
+            setColor(hsbCommand);
         } else if (command instanceof OnOffType) {
             if (command == OnOffType.ON) {
                 on();
             } else {
                 off();
             }
-        } else if (command instanceof DecimalType) {
-            setBrightness((DecimalType) command);
-        } else if (command instanceof PercentType) {
-            setBrightness((PercentType) command);
-        } else if (command instanceof IncreaseDecreaseType) {
-            if (((IncreaseDecreaseType) command).equals(IncreaseDecreaseType.INCREASE)) {
+        } else if (command instanceof DecimalType decimalCommand) {
+            setBrightness(decimalCommand);
+        } else if (command instanceof PercentType percentCommand) {
+            setBrightness(percentCommand);
+        } else if (command instanceof IncreaseDecreaseType increaseDecreaseCommand) {
+            if (increaseDecreaseCommand.equals(IncreaseDecreaseType.INCREASE)) {
                 increaseDecreaseBrightness(1);
             } else {
                 increaseDecreaseBrightness(-1);
index 36c061398f65f47dcbbc4f9a9cfdd657c261f831..e21b3ffd692fff2132cd8defe777fb7b202e3af1 100644 (file)
@@ -99,16 +99,15 @@ class LxControlEIBDimmer extends LxControl {
             } else {
                 sendAction(CMD_OFF);
             }
-        } else if (command instanceof PercentType) {
-            PercentType percentCmd = (PercentType) command;
-            setPosition(percentCmd.doubleValue());
-        } else if (command instanceof IncreaseDecreaseType) {
+        } else if (command instanceof PercentType percentCommand) {
+            setPosition(percentCommand.doubleValue());
+        } else if (command instanceof IncreaseDecreaseType increaseDecreaseCommand) {
             Double value = getStateDoubleValue(STATE_POSITION);
             Double min = getMin();
             Double max = getMax();
             Double step = getStep();
             if (value != null && max != null && min != null && step != null && min >= 0 && max >= 0 && max > min) {
-                if ((IncreaseDecreaseType) command == IncreaseDecreaseType.INCREASE) {
+                if (increaseDecreaseCommand == IncreaseDecreaseType.INCREASE) {
                     value += step;
                     if (value > max) {
                         value = max;
@@ -169,8 +168,8 @@ class LxControlEIBDimmer extends LxControl {
             Double max = getMax();
             Double min = getMin();
             if (max != null && min != null) {
-                double value = min + ohValue * (max - min) / 100;
-                return value; // no rounding to integer value is needed as loxone is accepting floating point values
+                return min + ohValue * (max - min) / 100; // no rounding to integer value is needed as loxone is
+                                                          // accepting floating point values
             }
         }
         return null;
index 255d7fc996131b411306a14b9d63261115130cc9..79d7fbf71d725825d1b7cb87c192ec77a7c48d6c 100644 (file)
@@ -163,16 +163,14 @@ class LxControlIRoomControllerV2 extends LxControl {
     }
 
     private void setOperatingMode(Command command) throws IOException {
-        if (command instanceof DecimalType) {
-            DecimalType mode = (DecimalType) command;
-            sendAction(CMD_SET_OPERATING_MODE + String.valueOf(mode.intValue()));
+        if (command instanceof DecimalType mode) {
+            sendAction(CMD_SET_OPERATING_MODE + mode.intValue());
         }
     }
 
     private void setTemperature(Command command, String prefix) throws IOException {
-        if (command instanceof DecimalType) {
-            DecimalType temp = (DecimalType) command;
-            sendAction(prefix + String.valueOf(temp.doubleValue()));
+        if (command instanceof DecimalType temp) {
+            sendAction(prefix + temp.doubleValue());
         }
     }
 }
index 86856bb1f86a63414d6f70aff3e65c547bc52466..a759c19e9259fb4ee28f2098c8dd8aa026112c47 100644 (file)
@@ -132,22 +132,22 @@ class LxControlJalousie extends LxControl {
 
     private void handleOperateCommands(Command command) throws IOException {
         logger.debug("Command input {}", command);
-        if (command instanceof PercentType) {
+        if (command instanceof PercentType percentCommand) {
             if (PercentType.ZERO.equals(command)) {
                 sendAction(CMD_FULL_UP);
             } else if (PercentType.HUNDRED.equals(command)) {
                 sendAction(CMD_FULL_DOWN);
             } else {
-                moveToPosition(((PercentType) command).doubleValue() / 100);
+                moveToPosition(percentCommand.doubleValue() / 100);
             }
-        } else if (command instanceof UpDownType) {
-            if ((UpDownType) command == UpDownType.UP) {
+        } else if (command instanceof UpDownType upDownCommand) {
+            if (upDownCommand == UpDownType.UP) {
                 sendAction(CMD_FULL_UP);
             } else {
                 sendAction(CMD_FULL_DOWN);
             }
-        } else if (command instanceof StopMoveType) {
-            if ((StopMoveType) command == StopMoveType.STOP) {
+        } else if (command instanceof StopMoveType stopMoveCommand) {
+            if (stopMoveCommand == StopMoveType.STOP) {
                 sendAction(CMD_STOP);
             }
         }
@@ -169,16 +169,16 @@ class LxControlJalousie extends LxControl {
     }
 
     private void handleShadeCommands(Command command) throws IOException {
-        if (command instanceof OnOffType) {
-            if ((OnOffType) command == OnOffType.ON) {
+        if (command instanceof OnOffType onOffCommand) {
+            if (onOffCommand == OnOffType.ON) {
                 sendAction(CMD_SHADE);
             }
         }
     }
 
     private void handleAutoShadeCommands(Command command) throws IOException {
-        if (command instanceof OnOffType) {
-            if ((OnOffType) command == OnOffType.ON) {
+        if (command instanceof OnOffType onOffCommand) {
+            if (onOffCommand == OnOffType.ON) {
                 sendAction(CMD_AUTO);
             } else {
                 sendAction(CMD_NO_AUTO);
index 818387c43ee367d8cb7107a77e5c3a7ef1a7601d..18879df878d32e4a917c1d788f1104b94e2cdf59 100644 (file)
@@ -105,20 +105,20 @@ class LxControlLightController extends LxControl {
     }
 
     private void handleCommands(Command command) throws IOException {
-        if (command instanceof OnOffType) {
-            if ((OnOffType) command == OnOffType.ON) {
+        if (command instanceof OnOffType onOffCommand) {
+            if (onOffCommand == OnOffType.ON) {
                 sendAction(CMD_ON);
             } else {
                 sendAction(CMD_OFF);
             }
-        } else if (command instanceof UpDownType) {
-            if ((UpDownType) command == UpDownType.UP) {
+        } else if (command instanceof UpDownType upDownCommand) {
+            if (upDownCommand == UpDownType.UP) {
                 sendAction(CMD_NEXT_SCENE);
             } else {
                 sendAction(CMD_PREVIOUS_SCENE);
             }
-        } else if (command instanceof DecimalType) {
-            int scene = ((DecimalType) command).intValue();
+        } else if (command instanceof DecimalType decimalCommand) {
+            int scene = decimalCommand.intValue();
             if (scene == SCENE_ALL_ON) {
                 sendAction(CMD_ON);
             } else if (scene >= 0 && scene < NUM_OF_SCENES) {
@@ -142,11 +142,11 @@ class LxControlLightController extends LxControl {
     public void onStateChange(LxState state) {
         if (STATE_SCENE_LIST.equals(state.getName()) && channelId != null) {
             Object value = state.getStateValue();
-            if (value instanceof String) {
+            if (value instanceof String str) {
                 sceneNames.clear();
-                String[] scenes = ((String) value).split(",");
+                String[] scenes = str.split(",");
                 for (String line : scenes) {
-                    line = line.replaceAll("\"", "");
+                    line = line.replace("\"", "");
                     String[] params = line.split("=");
                     if (params.length == 2) {
                         sceneNames.add(new StateOption(params[0], params[1]));
index 2954b9a21c9002c47044cbf7bae31d0b099db8fc..fffad2992f75ae41ac3bb17c05929cb5b7acc438 100644 (file)
@@ -125,14 +125,14 @@ class LxControlLightControllerV2 extends LxControl {
     }
 
     private void handleCommands(Command command) throws IOException {
-        if (command instanceof UpDownType) {
-            if ((UpDownType) command == UpDownType.UP) {
+        if (command instanceof UpDownType upDownCommand) {
+            if (upDownCommand == UpDownType.UP) {
                 sendAction(CMD_NEXT_MOOD);
             } else {
                 sendAction(CMD_PREVIOUS_MOOD);
             }
-        } else if (command instanceof DecimalType) {
-            int moodId = ((DecimalType) command).intValue();
+        } else if (command instanceof DecimalType decimalCommand) {
+            int moodId = decimalCommand.intValue();
             if (isMoodOk(moodId)) {
                 sendAction(CMD_CHANGE_TO_MOOD + "/" + moodId);
             }
@@ -160,11 +160,11 @@ class LxControlLightControllerV2 extends LxControl {
         String stateName = state.getName();
         Object value = state.getStateValue();
         try {
-            if (STATE_MOODS_LIST.equals(stateName) && value instanceof String) {
-                onMoodsListChange((String) value);
-            } else if (STATE_ACTIVE_MOODS_LIST.equals(stateName) && value instanceof String) {
+            if (STATE_MOODS_LIST.equals(stateName) && value instanceof String string) {
+                onMoodsListChange(string);
+            } else if (STATE_ACTIVE_MOODS_LIST.equals(stateName) && value instanceof String string) {
                 // this state can be received before list of moods, but it contains a valid list of IDs
-                Integer[] array = getGson().fromJson((String) value, Integer[].class);
+                Integer[] array = getGson().fromJson(string, Integer[].class);
                 activeMoods = Arrays.asList(array).stream().filter(id -> isMoodOk(id)).collect(Collectors.toList());
                 // update all moods states - this will force update of channels too
                 moodList.values().forEach(mood -> mood.onStateChange(null));
index 9bc44eb67464b5ff641624828f55b62e65798084..8c5d9aad4e4818b3160266a36a9ac68d81d5e487 100644 (file)
@@ -94,7 +94,7 @@ class LxControlMeter extends LxControl {
     }
 
     private void handleResetCommands(Command command) throws IOException {
-        if (command instanceof OnOffType && (OnOffType) command == OnOffType.ON) {
+        if (command instanceof OnOffType onOffCommand && onOffCommand == OnOffType.ON) {
             sendAction(CMD_RESET);
         }
     }
index 6497ba0210e79e32c738cbda7c4c8cc60960ca02..28470a1f5ab1223eebf1cc8aafac84b537886cb4 100644 (file)
@@ -51,8 +51,8 @@ class LxControlPushbutton extends LxControlSwitch {
 
     @Override
     void handleSwitchCommands(Command command) throws IOException {
-        if (command instanceof OnOffType) {
-            if ((OnOffType) command == OnOffType.ON) {
+        if (command instanceof OnOffType onOffCommand) {
+            if (onOffCommand == OnOffType.ON) {
                 sendAction(CMD_PULSE);
             } else {
                 off();
index a18d2610feb0f642bef9d2121dd33205ded745c6..81b1acc680d446c048ff3fb73759456c5d4dc51f 100644 (file)
@@ -97,11 +97,10 @@ class LxControlRadio extends LxControl {
     }
 
     private void handleCommands(Command command) throws IOException {
-        if (((command instanceof OnOffType && (OnOffType) command == OnOffType.OFF) || DecimalType.ZERO.equals(command))
-                && outputsMap.containsKey("0")) {
+        if (((command instanceof OnOffType onOffCommand && onOffCommand == OnOffType.OFF)
+                || DecimalType.ZERO.equals(command)) && outputsMap.containsKey("0")) {
             sendAction(CMD_RESET);
-        } else if (command instanceof DecimalType) {
-            DecimalType output = (DecimalType) command;
+        } else if (command instanceof DecimalType output) {
             if (outputsMap.containsKey(output.toString())) {
                 sendAction(String.valueOf(output.intValue()));
             }
index 72f14767950bb8b0c77a349495c2a0705036e94e..7b4854e75504e253c12a123bd3648db68900a87d 100644 (file)
@@ -139,8 +139,8 @@ class LxControlSauna extends LxControl {
     }
 
     private void handleSaunaActivateCommands(Command command) throws IOException {
-        if (command instanceof OnOffType) {
-            if ((OnOffType) command == OnOffType.ON) {
+        if (command instanceof OnOffType onOffCommand) {
+            if (onOffCommand == OnOffType.ON) {
                 sendAction(CMD_ON);
             } else {
                 sendAction(CMD_OFF);
@@ -149,15 +149,15 @@ class LxControlSauna extends LxControl {
     }
 
     private void handleSetNumberCommands(Command command, String prefix) throws IOException {
-        if (command instanceof DecimalType) {
-            Double value = ((DecimalType) command).doubleValue();
+        if (command instanceof DecimalType decimalCommand) {
+            Double value = decimalCommand.doubleValue();
             sendAction(prefix + value.toString());
         }
     }
 
     private void handleFanCommands(Command command) throws IOException {
-        if (command instanceof OnOffType) {
-            if ((OnOffType) command == OnOffType.ON) {
+        if (command instanceof OnOffType onOffCommand) {
+            if (onOffCommand == OnOffType.ON) {
                 sendAction(CMD_FAN_ON);
             } else {
                 sendAction(CMD_FAN_OFF);
@@ -166,14 +166,14 @@ class LxControlSauna extends LxControl {
     }
 
     private void handleTriggerCommands(Command command, String prefix) throws IOException {
-        if (command instanceof OnOffType && (OnOffType) command == OnOffType.ON) {
+        if (command instanceof OnOffType onOffCommand && onOffCommand == OnOffType.ON) {
             sendAction(prefix);
         }
     }
 
     private void handleModeCommands(Command command) throws IOException {
-        if (command instanceof DecimalType) {
-            Double value = ((DecimalType) command).doubleValue();
+        if (command instanceof DecimalType decimalCommand) {
+            Double value = decimalCommand.doubleValue();
             // per API there are 7 evaporator modes selected with number 0-6
             if (value % 1 == 0 && value >= 0.0 && value <= 6.0) {
                 sendAction(CMD_SET_EVAPORATOR_MODE + value.toString());
index 251a07b2e7e40dea00c53cb2d9e6e0e123e5b33b..4dbb97ac80cae66e56fed00b95ab26977a473ce0 100644 (file)
@@ -83,8 +83,8 @@ class LxControlSwitch extends LxControl {
     }
 
     void handleSwitchCommands(Command command) throws IOException {
-        if (command instanceof OnOffType) {
-            if ((OnOffType) command == OnOffType.ON) {
+        if (command instanceof OnOffType onOffCommand) {
+            if (onOffCommand == OnOffType.ON) {
                 on();
             } else {
                 off();
index 7d5bc2a0c752302b79cd1ad9942a2a5b241c1875..e0f43eb6dcb7b2d01f26772c4f1d9e27498ff4fa 100644 (file)
@@ -91,8 +91,8 @@ class LxControlUpDownAnalog extends LxControl {
     }
 
     private void handleCommands(Command command) throws IOException {
-        if (command instanceof DecimalType) {
-            Double value = ((DecimalType) command).doubleValue();
+        if (command instanceof DecimalType decimalCommand) {
+            Double value = decimalCommand.doubleValue();
             if (minValue != null && maxValue != null && value >= minValue && value <= maxValue) {
                 sendAction(value.toString());
             } else {
index 1f54bfd192ab3ef287c9408dc32aeef1aba488d5..9fd42231be861ca1e40b7d13ab7c1c3e277f866c 100644 (file)
@@ -81,8 +81,8 @@ class LxControlUpDownDigital extends LxControl {
     }
 
     private void handleUpCommands(Command command) throws IOException {
-        if (command instanceof OnOffType) {
-            if ((OnOffType) command == OnOffType.ON && upState == OnOffType.OFF) {
+        if (command instanceof OnOffType onOffCommand) {
+            if (onOffCommand == OnOffType.ON && upState == OnOffType.OFF) {
                 setStates(OnOffType.ON, OnOffType.OFF);
                 sendAction(CMD_UP_ON);
             } else if (upState == OnOffType.ON) {
@@ -93,8 +93,8 @@ class LxControlUpDownDigital extends LxControl {
     }
 
     private void handleDownCommands(Command command) throws IOException {
-        if (command instanceof OnOffType) {
-            if ((OnOffType) command == OnOffType.ON && downState == OnOffType.OFF) {
+        if (command instanceof OnOffType onOffCommand) {
+            if (onOffCommand == OnOffType.ON && downState == OnOffType.OFF) {
                 setStates(OnOffType.OFF, OnOffType.ON);
                 sendAction(CMD_DOWN_ON);
             } else if (downState == OnOffType.ON) {
index 153e7afd2d0dd509185fd36d8f34d9898ff2c371..0ad6808218220d1a64589c2ab91def9e7e99073c 100644 (file)
@@ -96,25 +96,25 @@ class LxControlValueSelector extends LxControl {
             logger.debug("Value selector min or max value missing or min>max.");
             return;
         }
-        if (command instanceof OnOffType) {
-            if ((OnOffType) command == OnOffType.ON) {
+        if (command instanceof OnOffType onOffCommand) {
+            if (onOffCommand == OnOffType.ON) {
                 sendAction(maxValue.toString());
             } else {
                 sendAction(minValue.toString());
             }
-        } else if (command instanceof IncreaseDecreaseType) {
+        } else if (command instanceof IncreaseDecreaseType increaseDecreaseCommand) {
             if (stepValue == null) {
                 logger.debug("Value selector step value missing.");
                 return;
             }
-            IncreaseDecreaseType type = (IncreaseDecreaseType) command;
-            if (increaseOnly != null && type == IncreaseDecreaseType.DECREASE && increaseOnly) {
+            if (increaseOnly != null && increaseDecreaseCommand == IncreaseDecreaseType.DECREASE && increaseOnly) {
                 logger.debug("Value selector configured to allow increase only.");
                 return;
             }
             Double currentValue = getStateDoubleValue(STATE_VALUE);
             if (currentValue != null) {
-                Double nextValue = currentValue + (type == IncreaseDecreaseType.INCREASE ? stepValue : -stepValue);
+                Double nextValue = currentValue
+                        + (increaseDecreaseCommand == IncreaseDecreaseType.INCREASE ? stepValue : -stepValue);
                 if (nextValue > maxValue) {
                     nextValue = maxValue;
                 }
@@ -123,8 +123,8 @@ class LxControlValueSelector extends LxControl {
                 }
                 sendAction(nextValue.toString());
             }
-        } else if (command instanceof PercentType) {
-            Double value = ((PercentType) command).doubleValue() * (maxValue - minValue) / 100.0 + minValue;
+        } else if (command instanceof PercentType percentCommand) {
+            Double value = percentCommand.doubleValue() * (maxValue - minValue) / 100.0 + minValue;
             sendAction(value.toString());
         }
     }
@@ -134,8 +134,8 @@ class LxControlValueSelector extends LxControl {
             logger.debug("Value selector min or max value missing or min>max.");
             return;
         }
-        if (command instanceof DecimalType) {
-            Double value = ((DecimalType) command).doubleValue();
+        if (command instanceof DecimalType decimalCommand) {
+            Double value = decimalCommand.doubleValue();
             if (value < minValue || value > maxValue) {
                 logger.debug("Value {} out of {}-{} range", value, minValue, maxValue);
                 return;
index 8df468b5b853976d6e31b0f469c0ac68a1a3c3f0..4fb94e7b119deb96cc5c8a33c955b838f4f63fbf 100644 (file)
@@ -12,7 +12,6 @@
  */
 package org.openhab.binding.loxone.internal.types;
 
-import java.util.Collections;
 import java.util.Set;
 
 import org.openhab.binding.loxone.internal.controls.LxControl;
@@ -24,8 +23,8 @@ import org.openhab.binding.loxone.internal.controls.LxControl;
  *
  */
 public class LxTags {
-    public static final Set<String> SCENE = Collections.singleton("Scene");
-    public static final Set<String> LIGHTING = Collections.singleton("Lighting");
-    public static final Set<String> SWITCHABLE = Collections.singleton("Switchable");
-    public static final Set<String> TEMPERATURE = Collections.singleton("CurrentTemperature");
+    public static final Set<String> SCENE = Set.of("Scene");
+    public static final Set<String> LIGHTING = Set.of("Lighting");
+    public static final Set<String> SWITCHABLE = Set.of("Switchable");
+    public static final Set<String> TEMPERATURE = Set.of("CurrentTemperature");
 }
index 33b9a03a021cab44d1b6585ca3a329c1afd45d03..9447ead183dbfdd7598bd3f3c63e07394cfd7e37 100644 (file)
@@ -56,7 +56,7 @@ public class LxUuid {
         this.uuid = init(uuid);
     }
 
-    public LxUuid(byte data[], int offset) {
+    public LxUuid(byte[] data, int offset) {
         String id = String.format("%08x-%04x-%04x-%02x%02x%02x%02x%02x%02x%02x%02x",
                 ByteBuffer.wrap(data, offset, 4).order(ByteOrder.LITTLE_ENDIAN).getInt(),
                 ByteBuffer.wrap(data, offset + 4, 2).order(ByteOrder.LITTLE_ENDIAN).getShort(),
index d42070afa7c0d5bfd9d35dd0b458d0cb201780b5..470ffeb5310bc82c57eb5a1040a4a4e305d57396 100644 (file)
@@ -47,7 +47,7 @@ public class LxControlAlarmNoPresenceTest extends LxControlTest {
     static final String SENSORS_CHANNEL = " / Sensors";
     static final String QUIT_CHANNEL = " / Acknowledge";
 
-    private static final String NUMBER_CHANNELS[] = { NEXT_LEVEL_CHANNEL, NEXT_LEVEL_DELAY_CHANNEL,
+    private static final String[] NUMBER_CHANNELS = { NEXT_LEVEL_CHANNEL, NEXT_LEVEL_DELAY_CHANNEL,
             NEXT_LEVEL_DELAY_TOTAL_CHANNEL, LEVEL_CHANNEL, ARMED_DELAY_CHANNEL, ARMED_TOTAL_DELAY_CHANNEL };
 
     @BeforeEach
index 99c18f0d55830fa6897cd018ead111a3a7e946f4..5de4a00a82d1b1c0e6393293c90550f4fdf93a10 100644 (file)
@@ -12,7 +12,7 @@
  */
 package org.openhab.binding.loxone.internal.controls;
 
-import java.util.Collections;
+import java.util.Set;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -37,6 +37,6 @@ public class LxControlInfoOnlyAnalogTempTagTest extends LxControlTest {
 
     @Test
     public void testChannels() {
-        testChannel("Number", null, null, null, null, "%.1f", true, null, Collections.singleton("CurrentTemperature"));
+        testChannel("Number", null, null, null, null, "%.1f", true, null, Set.of("CurrentTemperature"));
     }
 }
index 1f6fe2255ff2f5047895ba7a9ea565e28cb934bf..1c96531c33ba63c965e34e99022bf5aa7c216e01 100644 (file)
@@ -12,7 +12,6 @@
  */
 package org.openhab.binding.loxone.internal.controls;
 
-import java.util.Collections;
 import java.util.Set;
 
 import org.junit.jupiter.api.BeforeEach;
@@ -48,8 +47,8 @@ public class LxControlJalousieTest extends LxControlTest {
 
     @Test
     public void testChannels() {
-        testChannel("Rollershutter", Collections.singleton("Blinds"));
-        Set<String> tags = Collections.singleton("Switchable");
+        testChannel("Rollershutter", Set.of("Blinds"));
+        Set<String> tags = Set.of("Switchable");
         testChannel("Switch", SHADE_CHANNEL, tags);
         testChannel("Switch", AUTO_SHADE_CHANNEL, tags);
     }
index 0ffc01d6a3b63831ef37fb61c8bc574f88d5a0e8..45f64ea9cdb378a03a7f5bba24cf88bfd283d556 100644 (file)
@@ -21,8 +21,8 @@ import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.math.BigDecimal;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 import org.junit.jupiter.api.BeforeEach;
@@ -59,7 +59,7 @@ public class LxControlLightControllerV2Test extends LxControlTest {
 
     @Test
     public void testChannels() {
-        testChannel("Number", Collections.singleton("Scene"));
+        testChannel("Number", Set.of("Scene"));
     }
 
     @Test
@@ -234,7 +234,7 @@ public class LxControlLightControllerV2Test extends LxControlTest {
         assertNotNull(min);
         assertNotNull(max);
         testChannel("Number", null, new BigDecimal(min), new BigDecimal(max), BigDecimal.ONE, null, false, options,
-                Collections.singleton("Scene"));
+                Set.of("Scene"));
     }
 
     private void testMood(String name, String id, boolean isStatic) {
@@ -247,7 +247,7 @@ public class LxControlLightControllerV2Test extends LxControlTest {
             assertEquals(0, mood.getChannels().size());
         } else {
             assertEquals(1, mood.getChannels().size());
-            testChannel(mood, "Switch", Collections.singleton("Lighting"));
+            testChannel(mood, "Switch", Set.of("Lighting"));
         }
     }
 
index 15d8ea4b6920b1dc9cfa9526de73e40538194048..5c80963e335a328584bea026d98993fe52217e77 100644 (file)
@@ -12,7 +12,7 @@
  */
 package org.openhab.binding.loxone.internal.controls;
 
-import java.util.Collections;
+import java.util.Set;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -43,7 +43,7 @@ public class LxControlPushbuttonTest extends LxControlSwitchTest {
     @Override
     @Test
     public void testChannels() {
-        testChannel("Switch", Collections.singleton("Switchable"));
+        testChannel("Switch", Set.of("Switchable"));
     }
 
     @Override
index 6885618675d5b921d8f2147657b95e2efea1461c..199d97eb75a54bfa75a256fdeb941c64ea09ce1c 100644 (file)
@@ -12,7 +12,7 @@
  */
 package org.openhab.binding.loxone.internal.controls;
 
-import java.util.Collections;
+import java.util.Set;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -41,7 +41,7 @@ public class LxControlSwitchTest extends LxControlTest {
 
     @Test
     public void testChannels() {
-        testChannel("Switch", Collections.singleton("Lighting"));
+        testChannel("Switch", Set.of("Lighting"));
     }
 
     @Test
index cce385893462876e2a16ec472607eda54ed43e6b..bc2a7af799a24eb6be0ce87e13016a6a4ef5273e 100644 (file)
@@ -13,7 +13,7 @@
 package org.openhab.binding.loxone.internal.controls;
 
 import java.math.BigDecimal;
-import java.util.Collections;
+import java.util.Set;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -42,7 +42,7 @@ public class LxControlTimedSwitchTest extends LxControlTest {
 
     @Test
     public void testChannels() {
-        testChannel("Switch", Collections.singleton("Switchable"));
+        testChannel("Switch", Set.of("Switchable"));
         testChannel("Number", DELAY_CHANNEL, new BigDecimal(-1), null, null, null, true, null);
     }
 
index 0e7de374604d3827125135d1534ea1493b0f355e..0339ff3f1a328c868eb4c5e7050844c6fb943980 100644 (file)
@@ -100,7 +100,7 @@ public class LutronHandlerFactory extends BaseThingHandlerFactory {
 
     // Used by the HwDiscoveryService
     public static final Set<ThingTypeUID> HW_DISCOVERABLE_DEVICE_TYPES_UIDS = Collections
-            .unmodifiableSet(Collections.singleton(HwConstants.THING_TYPE_HWDIMMER));
+            .unmodifiableSet(Set.of(HwConstants.THING_TYPE_HWDIMMER));
 
     // Other types that can be initiated but not discovered
     private static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Collections
@@ -143,8 +143,7 @@ public class LutronHandlerFactory extends BaseThingHandlerFactory {
             registerDiscoveryService(bridgeHandler);
             return bridgeHandler;
         } else if (thingTypeUID.equals(THING_TYPE_LEAPBRIDGE)) {
-            LeapBridgeHandler bridgeHandler = new LeapBridgeHandler((Bridge) thing);
-            return bridgeHandler;
+            return new LeapBridgeHandler((Bridge) thing);
         } else if (thingTypeUID.equals(THING_TYPE_DIMMER)) {
             return new DimmerHandler(thing);
         } else if (thingTypeUID.equals(THING_TYPE_SHADE)) {
index 19e287f5f5bc73ded1a36cbcf00982e9fbd0c51d..a084c520b3c707397a35fcf337ddb2d4374d5f5f 100644 (file)
@@ -45,8 +45,8 @@ public class DimmerActions implements ThingActions {
 
     @Override
     public void setThingHandler(@Nullable ThingHandler handler) {
-        if (handler instanceof DimmerHandler) {
-            this.handler = (DimmerHandler) handler;
+        if (handler instanceof DimmerHandler dimmerHandler) {
+            this.handler = dimmerHandler;
         }
     }
 
index 3ea2add766aa06c68558f62b7db67e4c125fcd0e..97edabceadfab911e14b65cf8f219fd79842fb03 100644 (file)
@@ -61,8 +61,8 @@ public class LeapDeviceDiscoveryService extends AbstractDiscoveryService
 
     @Override
     public void setThingHandler(ThingHandler handler) {
-        if (handler instanceof LeapBridgeHandler) {
-            bridgeHandler = (LeapBridgeHandler) handler;
+        if (handler instanceof LeapBridgeHandler leapBridgeHandler) {
+            bridgeHandler = leapBridgeHandler;
             bridgeHandler.setDiscoveryService(this);
         }
     }
index 59b51f198f0f3c4f54cb2be13f110d3285af1dfe..0e00a99246c3b2f40766391c727550313187fd4f 100644 (file)
@@ -240,10 +240,10 @@ public class LutronDeviceDiscoveryService extends AbstractDiscoveryService {
         context.push(area.getName());
 
         for (DeviceNode deviceNode : area.getDeviceNodes()) {
-            if (deviceNode instanceof DeviceGroup) {
-                processDeviceGroup(area, (DeviceGroup) deviceNode, context);
-            } else if (deviceNode instanceof Device) {
-                processDevice(area, (Device) deviceNode, context);
+            if (deviceNode instanceof DeviceGroup group) {
+                processDeviceGroup(area, group, context);
+            } else if (deviceNode instanceof Device device) {
+                processDevice(area, device, context);
             }
         }
 
index 4a047523606c3bb94ab09cd58d8e8df0e6ee02a8..0cedb5701ce25caa11a8ed40b795d146ddb8fe7f 100644 (file)
@@ -20,7 +20,6 @@ import java.net.InetAddress;
 import java.net.MulticastSocket;
 import java.net.SocketTimeoutException;
 import java.nio.charset.StandardCharsets;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Set;
@@ -56,7 +55,7 @@ public class LutronMcastBridgeDiscoveryService extends AbstractDiscoveryService
     private static final int SCAN_INTERVAL_MINUTES = 30;
     private static final int SCAN_TIMEOUT_MS = 2000;
 
-    private static final Set<ThingTypeUID> BRIDGE_TYPE_UID = Collections.singleton(THING_TYPE_IPBRIDGE);
+    private static final Set<ThingTypeUID> BRIDGE_TYPE_UID = Set.of(THING_TYPE_IPBRIDGE);
 
     private static final String GROUP_ADDRESS = "224.0.37.42";
     private static final byte[] QUERY_DATA = "<LUTRON=1>".getBytes(StandardCharsets.US_ASCII);
index 55c8dd1dedb9986e1d64465515f685dc968c7960..182a3a4f8d0b0f2313ea7d62ea03aa3291bc5ddb 100644 (file)
@@ -15,7 +15,6 @@ package org.openhab.binding.lutron.internal.discovery;
 import static org.openhab.binding.lutron.internal.LutronBindingConstants.*;
 
 import java.net.InetAddress;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Set;
@@ -72,7 +71,7 @@ public class LutronMdnsBridgeDiscoveryService implements MDNSDiscoveryParticipan
 
     @Override
     public Set<ThingTypeUID> getSupportedThingTypeUIDs() {
-        return Collections.singleton(THING_TYPE_IPBRIDGE);
+        return Set.of(THING_TYPE_IPBRIDGE);
     }
 
     @Override
index 9a735f20dc6bbc856f7be2958332ba27e2961e7d..f160eb079d21ab9568bbf5ae427a9c72366cf0fa 100644 (file)
@@ -106,8 +106,8 @@ public class GrafikEyeHandler extends BaseThingHandler {
         }
 
         if (id.equals(PrgConstants.CHANNEL_SCENE)) {
-            if (command instanceof DecimalType) {
-                final int scene = ((DecimalType) command).intValue();
+            if (command instanceof DecimalType sceneCommand) {
+                final int scene = sceneCommand.intValue();
                 getProtocolHandler().selectScene(config.getControlUnit(), scene);
             } else {
                 logger.error("Received a SCENE command with a non DecimalType: {}", command);
@@ -143,8 +143,8 @@ public class GrafikEyeHandler extends BaseThingHandler {
                 getProtocolHandler().setZoneRaise(config.getControlUnit(), zone);
             }
         } else if (id.equals(PrgConstants.CHANNEL_ZONEFADE)) {
-            if (command instanceof DecimalType) {
-                setFade(((DecimalType) command).intValue());
+            if (command instanceof DecimalType zoneFade) {
+                setFade(zoneFade.intValue());
             } else {
                 logger.error("Received a ZONEFADE command with a non DecimalType: {}", command);
             }
@@ -152,8 +152,8 @@ public class GrafikEyeHandler extends BaseThingHandler {
             final Integer zone = getTrailingNbr(id, PrgConstants.CHANNEL_ZONEINTENSITY);
 
             if (zone != null) {
-                if (command instanceof PercentType) {
-                    final int intensity = ((PercentType) command).intValue();
+                if (command instanceof PercentType intensityPercent) {
+                    final int intensity = intensityPercent.intValue();
                     getProtocolHandler().setZoneIntensity(config.getControlUnit(), zone, fade, intensity);
                 } else if (command instanceof OnOffType) {
                     getProtocolHandler().setZoneIntensity(config.getControlUnit(), zone, fade,
index b5421716ca9fa7522a51fcf6debd3f004e52b7eb..a7b903eeb88f4380ccc8a33e74162d3723222105 100644 (file)
@@ -165,15 +165,15 @@ public class PrgBridgeHandler extends BaseBridgeHandler {
         } else if (id.equals(PrgConstants.CHANNEL_ZONERAISESTOP)) {
             protocolHandler.setZoneRaiseStop();
         } else if (id.equals(PrgConstants.CHANNEL_TIMECLOCK)) {
-            if (command instanceof DateTimeType) {
-                final ZonedDateTime zdt = ((DateTimeType) command).getZonedDateTime();
+            if (command instanceof DateTimeType dateTime) {
+                final ZonedDateTime zdt = dateTime.getZonedDateTime();
                 protocolHandler.setTime(GregorianCalendar.from(zdt));
             } else {
                 logger.error("Received a TIMECLOCK channel command with a non DateTimeType: {}", command);
             }
         } else if (id.startsWith(PrgConstants.CHANNEL_SCHEDULE)) {
-            if (command instanceof DecimalType) {
-                final int schedule = ((DecimalType) command).intValue();
+            if (command instanceof DecimalType scheduleCommand) {
+                final int schedule = scheduleCommand.intValue();
                 protocolHandler.selectSchedule(schedule);
             } else {
                 logger.error("Received a SCHEDULE channel command with a non DecimalType: {}", command);
index 6154205c1776830521f5ce119a5a52ce95ccb5ff..25ed07ed8a2946bcb333a180d7680648b2aa8a32 100644 (file)
@@ -283,7 +283,7 @@ class PrgProtocolHandler {
         session.setCallback(callback);
 
         String response = callback.getResponse();
-        if (response.equals("login")) {
+        if ("login".equals(response)) {
             session.sendCommand(username);
         } else {
             return "Protocol violation - wasn't initially a command failure or login prompt: " + response;
@@ -293,7 +293,7 @@ class PrgProtocolHandler {
         response = callback.getResponse();
 
         // Burn the empty response if we got one (
-        if (response.equals("")) {
+        if ("".equals(response)) {
             response = callback.getResponse();
         }
 
@@ -928,7 +928,7 @@ class PrgProtocolHandler {
             throw new IllegalArgumentException("m (matcher) cannot be null");
         }
         if (m.groupCount() == 5) {
-            if (m.group(1).equals("255")) {
+            if ("255".equals(m.group(1))) {
                 logger.warn("Sunrise/Sunset needs to be enabled via Liason Software");
                 return;
             }
@@ -995,7 +995,7 @@ class PrgProtocolHandler {
                 final int controlUnit = Integer.parseInt(m.group(1));
                 for (int z = 1; z <= 8; z++) {
                     final String zi = m.group(z + 1);
-                    if (zi.equals("*") || zi.equals(Integer.toString(z - 1))) {
+                    if ("*".equals(zi) || zi.equals(Integer.toString(z - 1))) {
                         continue; // not present
                     }
                     final int zid = convertIntensity(controlUnit, z, zi);
@@ -1196,10 +1196,10 @@ class PrgProtocolHandler {
          */
         String getResponse() throws Exception {
             final Object lastResponse = responses.poll(5, TimeUnit.SECONDS);
-            if (lastResponse instanceof String) {
-                return (String) lastResponse;
-            } else if (lastResponse instanceof Exception) {
-                throw (Exception) lastResponse;
+            if (lastResponse instanceof String str) {
+                return str;
+            } else if (lastResponse instanceof Exception exception) {
+                throw exception;
             } else if (lastResponse == null) {
                 throw new Exception("Didn't receive response in time");
             } else {
index 42d3a58ef62da70dae43ecba091e1c8f9a900120..d86093b2c2b48f3a82a71d1b14f2c15c5445e1ee 100644 (file)
@@ -361,16 +361,16 @@ public class SocketSession {
                     final Object response = responsesQueue.poll(1, TimeUnit.SECONDS);
 
                     if (response != null) {
-                        if (response instanceof String) {
+                        if (response instanceof String str) {
                             try {
                                 logger.debug("Dispatching response: {}", response);
-                                ssCallback.responseReceived((String) response);
+                                ssCallback.responseReceived(str);
                             } catch (Exception e) {
                                 logger.warn("Exception occurred processing the response '{}': ", response, e);
                             }
-                        } else if (response instanceof Exception) {
+                        } else if (response instanceof Exception exception) {
                             logger.debug("Dispatching exception: {}", response);
-                            ssCallback.responseException((Exception) response);
+                            ssCallback.responseException(exception);
                         } else {
                             logger.error("Unknown response class: {}", response);
                         }
index c206f3cdcd17c3c62aa9cec5813b0ede3fde9e5f..c8b307635074377194388d94cb53530bcfed0669 100644 (file)
@@ -116,8 +116,8 @@ public class BlindHandler extends LutronHandler {
     }
 
     private void handleLiftCommand(Command command) {
-        if (command instanceof PercentType) {
-            int level = ((PercentType) command).intValue();
+        if (command instanceof PercentType liftPercent) {
+            int level = liftPercent.intValue();
             output(TargetType.BLIND, OutputCommand.ACTION_LIFTLEVEL, level, null, null);
         } else if (command.equals(UpDownType.UP)) {
             output(TargetType.BLIND, OutputCommand.ACTION_STARTRAISINGLIFT, null, null, null);
@@ -131,8 +131,8 @@ public class BlindHandler extends LutronHandler {
     }
 
     private void handleTiltCommand(Command command) {
-        if (command instanceof PercentType) {
-            int level = ((PercentType) command).intValue();
+        if (command instanceof PercentType tiltPercent) {
+            int level = tiltPercent.intValue();
             output(TargetType.BLIND, OutputCommand.ACTION_TILTLEVEL, Math.min(level, tiltMax), null, null);
         } else if (command.equals(UpDownType.UP)) {
             output(TargetType.BLIND, OutputCommand.ACTION_STARTRAISINGTILT, null, null, null);
index 3c8afd4c6f98adb5aaff0ea82e1232aff69b7615..9fc40e9f95b9d03481e040a361b2ed7640701fb0 100644 (file)
@@ -16,7 +16,7 @@ import static org.openhab.binding.lutron.internal.LutronBindingConstants.CHANNEL
 
 import java.math.BigDecimal;
 import java.util.Collection;
-import java.util.Collections;
+import java.util.List;
 import java.util.concurrent.atomic.AtomicReference;
 
 import org.openhab.binding.lutron.internal.action.DimmerActions;
@@ -56,7 +56,7 @@ public class DimmerHandler extends LutronHandler {
 
     @Override
     public Collection<Class<? extends ThingHandlerService>> getServices() {
-        return Collections.singletonList(DimmerActions.class);
+        return List.of(DimmerActions.class);
     }
 
     @Override
@@ -109,8 +109,8 @@ public class DimmerHandler extends LutronHandler {
     @Override
     public void handleCommand(ChannelUID channelUID, Command command) {
         if (channelUID.getId().equals(CHANNEL_LIGHTLEVEL)) {
-            if (command instanceof Number) {
-                int level = ((Number) command).intValue();
+            if (command instanceof Number number) {
+                int level = number.intValue();
                 output(TargetType.DIMMER, OutputCommand.ACTION_ZONELEVEL, level, new LutronDuration("0.25"), null);
             } else if (command.equals(OnOffType.ON)) {
                 if (config.onToLast) {
index 819e430f784ac3eba53b3776e8d9de0e5f59e710..dde63685c0e566cc87b7bf645478ce4223dcaf05 100644 (file)
@@ -97,8 +97,8 @@ public class FanHandler extends LutronHandler {
     @Override
     public void handleCommand(ChannelUID channelUID, Command command) {
         if (channelUID.getId().equals(CHANNEL_FANLEVEL)) {
-            if (command instanceof Number) {
-                int level = ((Number) command).intValue();
+            if (command instanceof Number number) {
+                int level = number.intValue();
                 FanSpeedType speed = FanSpeedType.toFanSpeedType(level);
                 // output(TargetType.FAN, LutronCommand.ACTION_ZONELEVEL, level, null, null);
                 sendCommand(new OutputCommand(TargetType.FAN, LutronOperation.EXECUTE, getIntegrationId(),
index 10191f7e2ede0f074386b8754238d685377c943d..24ec7e14376a58ada6891b939a2c39afb855cdc9 100644 (file)
@@ -141,8 +141,8 @@ public class GreenModeHandler extends LutronHandler {
                 greenMode(ModeCommand.ACTION_STEP, 2);
             } else if (command == OnOffType.OFF) {
                 greenMode(ModeCommand.ACTION_STEP, 1);
-            } else if (command instanceof Number) {
-                Integer step = ((Number) command).intValue();
+            } else if (command instanceof Number number) {
+                Integer step = number.intValue();
                 if (step.intValue() >= GREENSTEP_MIN) {
                     greenMode(ModeCommand.ACTION_STEP, step);
                 }
index d5222bf4d481903ca5e81bc3763c1420396c9e33..6b78dcc432744bb548c30c3f0a1e279add4a0683 100644 (file)
@@ -344,7 +344,7 @@ public class IPBridgeHandler extends LutronBridgeHandler {
         String scrubbedLine;
 
         for (String line : this.session.readLines()) {
-            if (line.trim().equals("")) {
+            if ("".equals(line.trim())) {
                 // Sometimes we get an empty line (possibly only when prompts are disabled). Ignore them.
                 continue;
             }
index 97dc9899459ccce7d2c76aface6961b65c14a93e..97e7a40ac30e57d7b4d8020085d4596f81982355 100644 (file)
@@ -30,7 +30,7 @@ import org.slf4j.LoggerFactory;
 @NonNullByDefault
 public class QSIOHandler extends BaseKeypadHandler {
 
-    private static enum Component implements KeypadComponent {
+    private enum Component implements KeypadComponent {
         CCI1(1, "cci1", "CCI 1", ComponentType.CCI),
         CCI2(2, "cci2", "CCI 2", ComponentType.CCI),
         CCI3(3, "cci3", "CCI 3", ComponentType.CCI),
index 8becfdfbf134fc5cfa9100904cd1b0afed843fa7..8a841e8f6303eb1f281432947e11af71b3d36140 100644 (file)
@@ -100,8 +100,8 @@ public class ShadeHandler extends LutronHandler {
     @Override
     public void handleCommand(ChannelUID channelUID, Command command) {
         if (channelUID.getId().equals(CHANNEL_SHADELEVEL)) {
-            if (command instanceof PercentType) {
-                int level = ((PercentType) command).intValue();
+            if (command instanceof PercentType shadePercent) {
+                int level = shadePercent.intValue();
                 output(TargetType.SHADE, OutputCommand.ACTION_ZONELEVEL, level, null, null);
                 if (leap) {
                     // LEAP may not send back a position update
index 4c1c431bd55eb73234fcbb37348a945aed855286..888a84e4e7f93839e563ec17250ea33cf3baf996 100644 (file)
@@ -97,8 +97,8 @@ public class SysvarHandler extends LutronHandler {
     @Override
     public void handleCommand(ChannelUID channelUID, Command command) {
         if (channelUID.getId().equals(CHANNEL_VARSTATE)) {
-            if (command instanceof Number) {
-                int state = ((Number) command).intValue();
+            if (command instanceof Number number) {
+                int state = number.intValue();
                 sysvar(SysvarCommand.ACTION_GETSETSYSVAR, state);
             }
         }
index 4651426e37ae8b0634e0fb6300109611033b9374..093a32d5bb7148e2b85a90b2667098e32f46481f 100644 (file)
@@ -95,8 +95,8 @@ public class TimeclockHandler extends LutronHandler {
         logger.debug("Handling timeclock command {} on channel {}", command, channelID);
 
         if (channelUID.getId().equals(CHANNEL_CLOCKMODE)) {
-            if (command instanceof DecimalType) {
-                Integer mode = ((DecimalType) command).intValue();
+            if (command instanceof DecimalType decimalCommand) {
+                Integer mode = decimalCommand.intValue();
                 timeclock(TimeclockCommand.ACTION_CLOCKMODE, mode, null);
             } else if (command instanceof RefreshType) {
                 queryTimeclock(TimeclockCommand.ACTION_CLOCKMODE);
@@ -104,8 +104,8 @@ public class TimeclockHandler extends LutronHandler {
                 logger.debug("Invalid command type for clockmode channnel");
             }
         } else if (channelUID.getId().equals(CHANNEL_EXECEVENT)) {
-            if (command instanceof DecimalType) {
-                Integer index = ((DecimalType) command).intValue();
+            if (command instanceof DecimalType decimalCommand) {
+                Integer index = decimalCommand.intValue();
                 timeclock(TimeclockCommand.ACTION_EXECEVENT, index, null);
             } else {
                 logger.debug("Invalid command type for execevent channnel");
@@ -123,15 +123,15 @@ public class TimeclockHandler extends LutronHandler {
                 logger.debug("Invalid command type for sunset channnel");
             }
         } else if (channelUID.getId().equals(CHANNEL_ENABLEEVENT)) {
-            if (command instanceof DecimalType) {
-                Integer index = ((DecimalType) command).intValue();
+            if (command instanceof DecimalType decimalCommand) {
+                Integer index = decimalCommand.intValue();
                 timeclock(TimeclockCommand.ACTION_SETEVENT, index, true);
             } else {
                 logger.debug("Invalid command type for enableevent channnel");
             }
         } else if (channelUID.getId().equals(CHANNEL_DISABLEEVENT)) {
-            if (command instanceof DecimalType) {
-                Integer index = ((DecimalType) command).intValue();
+            if (command instanceof DecimalType decimalCommand) {
+                Integer index = decimalCommand.intValue();
                 timeclock(TimeclockCommand.ACTION_SETEVENT, index, false);
             } else {
                 logger.debug("Invalid command type for disableevent channnel");
index 38c101c3dc374ae658d6e5ec60ec0f483d1322f8..f83a0525a47dbcfc64ca9bf7a697344a7c70b650 100644 (file)
@@ -31,7 +31,7 @@ import org.slf4j.LoggerFactory;
 @NonNullByDefault
 public class VcrxHandler extends BaseKeypadHandler {
 
-    private static enum Component implements KeypadComponent {
+    private enum Component implements KeypadComponent {
         BUTTON1(1, "button1", "Button 1", ComponentType.BUTTON),
         BUTTON2(2, "button2", "Button 2", ComponentType.BUTTON),
         BUTTON3(3, "button3", "Button 3", ComponentType.BUTTON),
index f3fabb631c28aa772aa656902643032f387cb1c3..d4ac8d2df9ced6284c4abc97c7fccdf4a2808a09 100644 (file)
@@ -31,7 +31,7 @@ import org.slf4j.LoggerFactory;
 @NonNullByDefault
 public class WciHandler extends BaseKeypadHandler {
 
-    private static enum Component implements KeypadComponent {
+    private enum Component implements KeypadComponent {
         BUTTON1(1, "button1", "Button 1", ComponentType.BUTTON),
         BUTTON2(2, "button2", "Button 2", ComponentType.BUTTON),
         BUTTON3(3, "button3", "Button 3", ComponentType.BUTTON),
index 6fa2e682a81eecb1a8794cc84971a73072418da8..38cb575ee0141502e6520c59ed9826e39651839e 100644 (file)
@@ -68,8 +68,8 @@ public class HwDimmerHandler extends BaseThingHandler {
     @Override
     public void handleCommand(ChannelUID channelUID, Command command) {
         if (channelUID.getId().equals(CHANNEL_LIGHTLEVEL)) {
-            if (command instanceof Number) {
-                int level = ((Number) command).intValue();
+            if (command instanceof Number number) {
+                int level = number.intValue();
                 outputLevel(level);
             } else if (command.equals(OnOffType.ON)) {
                 outputLevel(defaultLevel);
index ab1f12f5d1620cca3db62f4bcb410688edb3d548..cd27c2bbe9231df8fd7fd89e929e9a5e297477a4 100644 (file)
@@ -51,8 +51,8 @@ public class HwDiscoveryService extends AbstractDiscoveryService implements Disc
 
     @Override
     public void setThingHandler(@Nullable ThingHandler handler) {
-        if (handler instanceof HwSerialBridgeHandler) {
-            this.handler = (HwSerialBridgeHandler) handler;
+        if (handler instanceof HwSerialBridgeHandler bridgeHandler) {
+            this.handler = bridgeHandler;
             this.handler.setDiscoveryService(this);
         }
     }
@@ -102,7 +102,7 @@ public class HwDiscoveryService extends AbstractDiscoveryService implements Disc
             logger.info("Discovered HomeWorks dimmer with no address");
             return;
         }
-        String addressUid = address.replaceAll("[\\[\\]]", "").replaceAll(":", "-");
+        String addressUid = address.replaceAll("[\\[\\]]", "").replace(":", "-");
         ThingUID bridgeUID = this.handler.getThing().getUID();
         ThingUID uid = new ThingUID(HwConstants.THING_TYPE_HWDIMMER, bridgeUID, addressUid);
 
index 07076a029fbd864fe3923eb384c8e50ceda69fda..63e96b7b5b900add770767cc809e1547ed3ade3b 100644 (file)
@@ -19,7 +19,7 @@ import java.io.OutputStreamWriter;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.util.Collection;
-import java.util.Collections;
+import java.util.Set;
 import java.util.TooManyListenersException;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
@@ -175,7 +175,7 @@ public class HwSerialBridgeHandler extends BaseBridgeHandler implements SerialPo
 
     @Override
     public Collection<Class<? extends ThingHandlerService>> getServices() {
-        return Collections.singleton(HwDiscoveryService.class);
+        return Set.of(HwDiscoveryService.class);
     }
 
     @Override
index ac23e728b2dfda1ff78a29b7770e67151dbb47d9..7b7d218f5e90933bfeaf872dad95dcee810a09b7 100644 (file)
@@ -133,7 +133,7 @@ public abstract class KeypadConfig {
      * @return Concatenated list
      */
     @SafeVarargs
-    protected static final List<KeypadComponent> combinedList(final List<KeypadComponent>... lists) {
+    protected static List<KeypadComponent> combinedList(final List<KeypadComponent>... lists) {
         List<KeypadComponent> newlist = new LinkedList<>();
         for (List<KeypadComponent> list : lists) {
             newlist.addAll(list);
index 1dbed5f85c6912b8753441912fed303a0b087ca4..a2a110817b0e84d18553498eabf95689c7bebf9d 100644 (file)
@@ -27,7 +27,7 @@ import org.openhab.binding.lutron.internal.discovery.project.ComponentType;
 @NonNullByDefault
 public final class KeypadConfigGrafikEye extends KeypadConfig {
 
-    private static enum Component implements KeypadComponent {
+    private enum Component implements KeypadComponent {
         BUTTON1(70, "button1", "Button 1", ComponentType.BUTTON), // Scene button 1
         BUTTON2(71, "button2", "Button 2", ComponentType.BUTTON), // Scene button 2
         BUTTON3(76, "button3", "Button 3", ComponentType.BUTTON), // Scene button 3
index 606d4fee1c57dbb1631d92f7f3fda21803bcdf46..c26f0b21301cd8aef52042d6665df556d1a69e10 100644 (file)
@@ -26,7 +26,7 @@ import org.openhab.binding.lutron.internal.discovery.project.ComponentType;
 @NonNullByDefault
 public final class KeypadConfigIntlSeetouch extends KeypadConfig {
 
-    private static enum Component implements KeypadComponent {
+    private enum Component implements KeypadComponent {
         BUTTON1(1, "button1", "Button 1", ComponentType.BUTTON),
         BUTTON2(2, "button2", "Button 2", ComponentType.BUTTON),
         BUTTON3(3, "button3", "Button 3", ComponentType.BUTTON),
index 875ef4fcf627ae67d5e16ccf2a587c7c8729eec5..8a86e5409e1c90a6e27064eb7e7caa2f56183009 100644 (file)
@@ -26,7 +26,7 @@ import org.openhab.binding.lutron.internal.discovery.project.ComponentType;
 @NonNullByDefault
 public final class KeypadConfigPalladiom extends KeypadConfig {
 
-    private static enum Component implements KeypadComponent {
+    private enum Component implements KeypadComponent {
         BUTTON1(1, "button1", "Button 1", ComponentType.BUTTON),
         BUTTON2(2, "button2", "Button 2", ComponentType.BUTTON),
         BUTTON3(3, "button3", "Button 3", ComponentType.BUTTON),
index b2ad68175d89217eb023adc9f17052345d283141..6193f74f51f674d61e49f130a600d5f8d6d6fc58 100644 (file)
@@ -34,7 +34,7 @@ public final class KeypadConfigPico extends KeypadConfig {
     public static final Map<Integer, Integer> LEAPBUTTONS_4B = Map.of(8, 1, 9, 2, 10, 3, 11, 4);
     public static final Map<Integer, Integer> LEAPBUTTONS_3BRL = Map.of(2, 1, 3, 2, 4, 3, 5, 4, 6, 5);
 
-    private static enum Component implements KeypadComponent {
+    private enum Component implements KeypadComponent {
         // Buttons for 2B, 2BRL, 3B, and 3BRL models
         BUTTON1(2, "button1", "Button 1", ComponentType.BUTTON),
         BUTTON2(3, "button2", "Button 2", ComponentType.BUTTON),
index 0c359da00f7e5f084b4497f2f8bae8cc3d72583f..863a3edc5fbcedc7991c0f9358d3efab0a87abaf 100644 (file)
@@ -26,7 +26,7 @@ import org.openhab.binding.lutron.internal.discovery.project.ComponentType;
 @NonNullByDefault
 public final class KeypadConfigSeetouch extends KeypadConfig {
 
-    private static enum Component implements KeypadComponent {
+    private enum Component implements KeypadComponent {
         BUTTON1(1, "button1", "Button 1", ComponentType.BUTTON),
         BUTTON2(2, "button2", "Button 2", ComponentType.BUTTON),
         BUTTON3(3, "button3", "Button 3", ComponentType.BUTTON),
index f2fa5826b5ea5d28f979a22d336c2885de5cafe3..91aad39d5542a7bc9bf1a65c14da5ff8ee2c6927 100644 (file)
@@ -27,7 +27,7 @@ import org.openhab.binding.lutron.internal.discovery.project.ComponentType;
 @NonNullByDefault
 public final class KeypadConfigTabletopSeetouch extends KeypadConfig {
 
-    private static enum Component implements KeypadComponent {
+    private enum Component implements KeypadComponent {
         BUTTON1(1, "button1", "Button 1", ComponentType.BUTTON),
         BUTTON2(2, "button2", "Button 2", ComponentType.BUTTON),
         BUTTON3(3, "button3", "Button 3", ComponentType.BUTTON),
index 39946c8e504ade7a81a08187d62283942b6abd45..9997ca97ef264df81fb87060ca66563973885fb3 100644 (file)
@@ -61,8 +61,7 @@ public class LIPCommand extends LutronCommandNew {
     }
 
     public int getNumberParameter(int position) {
-        if (parameters.length > position && parameters[position] instanceof Number) {
-            Number num = (Number) parameters[position];
+        if (parameters.length > position && parameters[position] instanceof Number num) {
             return num.intValue();
         } else {
             throw new IllegalArgumentException("Invalid command parameter");
index 8c9fe5a54e4720f26055aea7df9a83471e683f90..5bcbae9349f5bd5314da4514f35cf9e5220aedd7 100644 (file)
@@ -70,7 +70,7 @@ public class LeapMessageParser {
      * @param msg String containing the LEAP message
      */
     public void handleMessage(String msg) {
-        if (msg.trim().equals("")) {
+        if ("".equals(msg.trim())) {
             return; // Ignore empty lines
         }
         logger.trace("Received message: {}", msg);
index 8078b66191faf8ba07f4daff8e609df8de1f5a37..f8681abc030946ee6cd0a442c1a634c3898c47c5 100644 (file)
@@ -25,56 +25,76 @@ public class Request {
     public static final String BUTTON_GROUP_URL = "/buttongroup";
 
     public static String goToLevel(int zone, int value) {
-        String request = "{\"CommuniqueType\": \"CreateRequest\","
-                + "\"Header\": {\"Url\": \"/zone/%d/commandprocessor\"}," + "\"Body\": {" + "\"Command\": {"
-                + "\"CommandType\": \"GoToLevel\"," + "\"Parameter\": [{\"Type\": \"Level\", \"Value\": %d}]}}}";
+        String request = """
+                {"CommuniqueType": "CreateRequest",\
+                "Header": {"Url": "/zone/%d/commandprocessor"},\
+                "Body": {\
+                "Command": {\
+                "CommandType": "GoToLevel",\
+                "Parameter": [{"Type": "Level", "Value": %d}]}}}\
+                """;
         return String.format(request, zone, value);
     }
 
     /** fadeTime must be in the format hh:mm:ss **/
     public static String goToDimmedLevel(int zone, int value, String fadeTime) {
-        String request = "{\"CommuniqueType\": \"CreateRequest\","
-                + "\"Header\": {\"Url\": \"/zone/%d/commandprocessor\"},\"Body\": {\"Command\": {"
-                + "\"CommandType\": \"GoToDimmedLevel\","
-                + "\"DimmedLevelParameters\": {\"Level\": %d, \"FadeTime\": \"%s\"}}}}";
+        String request = """
+                {"CommuniqueType": "CreateRequest",\
+                "Header": {"Url": "/zone/%d/commandprocessor"},"Body": {"Command": {\
+                "CommandType": "GoToDimmedLevel",\
+                "DimmedLevelParameters": {"Level": %d, "FadeTime": "%s"}}}}\
+                """;
         return String.format(request, zone, value, fadeTime);
     }
 
     /** fadeTime and delayTime must be in the format hh:mm:ss **/
     public static String goToDimmedLevel(int zone, int value, String fadeTime, String delayTime) {
-        String request = "{\"CommuniqueType\": \"CreateRequest\","
-                + "\"Header\": {\"Url\": \"/zone/%d/commandprocessor\"},\"Body\": {\"Command\": {"
-                + "\"CommandType\": \"GoToDimmedLevel\","
-                + "\"DimmedLevelParameters\": {\"Level\": %d, \"FadeTime\": \"%s\", \"DelayTime\": \"%s\"}}}}";
+        String request = """
+                {"CommuniqueType": "CreateRequest",\
+                "Header": {"Url": "/zone/%d/commandprocessor"},"Body": {"Command": {\
+                "CommandType": "GoToDimmedLevel",\
+                "DimmedLevelParameters": {"Level": %d, "FadeTime": "%s", "DelayTime": "%s"}}}}\
+                """;
         return String.format(request, zone, value, fadeTime, delayTime);
     }
 
     public static String goToFanSpeed(int zone, FanSpeedType fanSpeed) {
-        String request = "{\"CommuniqueType\": \"CreateRequest\","
-                + "\"Header\": {\"Url\": \"/zone/%d/commandprocessor\"}," + "\"Body\": {"
-                + "\"Command\": {\"CommandType\": \"GoToFanSpeed\","
-                + "\"FanSpeedParameters\": {\"FanSpeed\": \"%s\"}}}}";
+        String request = """
+                {"CommuniqueType": "CreateRequest",\
+                "Header": {"Url": "/zone/%d/commandprocessor"},\
+                "Body": {\
+                "Command": {"CommandType": "GoToFanSpeed",\
+                "FanSpeedParameters": {"FanSpeed": "%s"}}}}\
+                """;
         return String.format(request, zone, fanSpeed.leapValue());
     }
 
     public static String buttonCommand(int button, CommandType command) {
-        String request = "{\"CommuniqueType\": \"CreateRequest\","
-                + "\"Header\": {\"Url\": \"/button/%d/commandprocessor\"},"
-                + "\"Body\": {\"Command\": {\"CommandType\": \"%s\"}}}";
+        String request = """
+                {"CommuniqueType": "CreateRequest",\
+                "Header": {"Url": "/button/%d/commandprocessor"},\
+                "Body": {"Command": {"CommandType": "%s"}}}\
+                """;
         return String.format(request, button, command.toString());
     }
 
     public static String virtualButtonCommand(int virtualbutton, CommandType command) {
-        String request = "{\"CommuniqueType\": \"CreateRequest\","
-                + "\"Header\": {\"Url\": \"/virtualbutton/%d/commandprocessor\"},"
-                + "\"Body\": {\"Command\": {\"CommandType\": \"%s\"}}}";
+        String request = """
+                {"CommuniqueType": "CreateRequest",\
+                "Header": {"Url": "/virtualbutton/%d/commandprocessor"},\
+                "Body": {"Command": {"CommandType": "%s"}}}\
+                """;
         return String.format(request, virtualbutton, command.toString());
     }
 
     public static String zoneCommand(int zone, CommandType commandType) {
-        String request = "{\"CommuniqueType\": \"CreateRequest\","
-                + "\"Header\": {\"Url\": \"/zone/%d/commandprocessor\"}," + "\"Body\": {" + "\"Command\": {"
-                + "\"CommandType\": \"%s\"}}}";
+        String request = """
+                {"CommuniqueType": "CreateRequest",\
+                "Header": {"Url": "/zone/%d/commandprocessor"},\
+                "Body": {\
+                "Command": {\
+                "CommandType": "%s"}}}\
+                """;
         return String.format(request, zone, commandType.toString());
     }
 
index 967bf672e488204c43d9984f72cf5eaa863ebd67..1a3e5fed1241f830af81c1000e8902ffbc67f5c8 100644 (file)
@@ -82,7 +82,7 @@ public class RS232Connection implements RadioRAConnection, SerialPortEventListen
 
     @Override
     public void write(String command) {
-        logger.debug("Writing to serial port: {}", command.toString());
+        logger.debug("Writing to serial port: {}", command);
         SerialPort serialPort = this.serialPort;
 
         try {
index 1d92b781cd48a0808f24f06de108243f6a15b636..f231403b5231b12d139d0c537d7fd9a99c70ab2f 100644 (file)
@@ -65,8 +65,8 @@ public class DimmerHandler extends LutronHandler {
         }
 
         if (LutronBindingConstants.CHANNEL_LIGHTLEVEL.equals(channelUID.getId())) {
-            if (command instanceof PercentType) {
-                int intensity = ((PercentType) command).intValue();
+            if (command instanceof PercentType percentCommand) {
+                int intensity = percentCommand.intValue();
 
                 SetDimmerLevelCommand cmd = new SetDimmerLevelCommand(config.getZoneNumber(), intensity, config.system);
                 bridgeHandler.sendCommand(cmd);
@@ -74,9 +74,7 @@ public class DimmerHandler extends LutronHandler {
                 updateInternalState(intensity);
             }
 
-            if (command instanceof OnOffType) {
-                OnOffType onOffCmd = (OnOffType) command;
-
+            if (command instanceof OnOffType onOffCmd) {
                 SetSwitchLevelCommand cmd = new SetSwitchLevelCommand(config.getZoneNumber(), onOffCmd, config.system);
                 bridgeHandler.sendCommand(cmd);
 
@@ -87,10 +85,10 @@ public class DimmerHandler extends LutronHandler {
 
     @Override
     public void handleFeedback(RadioRAFeedback feedback) {
-        if (feedback instanceof LocalZoneChangeFeedback) {
-            handleLocalZoneChangeFeedback((LocalZoneChangeFeedback) feedback);
-        } else if (feedback instanceof ZoneMapFeedback) {
-            handleZoneMapFeedback((ZoneMapFeedback) feedback);
+        if (feedback instanceof LocalZoneChangeFeedback localZoneChangeFeedback) {
+            handleLocalZoneChangeFeedback(localZoneChangeFeedback);
+        } else if (feedback instanceof ZoneMapFeedback zoneMapFeedback) {
+            handleZoneMapFeedback(zoneMapFeedback);
         }
     }
 
index af185ca695539d4477b51c48bf452b8d1bed986a..3b35e74cb4ead4efe9a2c64ae59b9650ed14e4b2 100644 (file)
@@ -42,8 +42,8 @@ public abstract class LutronHandler extends BaseThingHandler {
             return null;
         }
         ThingHandler th = bridge.getHandler();
-        if (th instanceof RS232Handler) {
-            return (RS232Handler) th;
+        if (th instanceof RS232Handler handler) {
+            return handler;
         } else {
             updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, "Bridge not properly configured.");
             return null;
index de8d7db8424d4fb59e1b17d86171926fb6196072..dbe622406ce1b4ad3ce18667dc2e9259b050108b 100644 (file)
@@ -60,8 +60,8 @@ public class PhantomButtonHandler extends LutronHandler {
 
     @Override
     public void handleFeedback(RadioRAFeedback feedback) {
-        if (feedback instanceof LEDMapFeedback) {
-            handleLEDMapFeedback((LEDMapFeedback) feedback);
+        if (feedback instanceof LEDMapFeedback ledMapFeedback) {
+            handleLEDMapFeedback(ledMapFeedback);
         }
     }
 
index dfa99e086adcd02053b6d7d585250e08767bc56a..9e11fb1820529532e3c91433db74fc1f38a63904 100644 (file)
@@ -119,8 +119,8 @@ public class RS232Handler extends BaseBridgeHandler implements RadioRAFeedbackLi
     public void handleRadioRAFeedback(RadioRAFeedback feedback) {
         for (Thing thing : getThing().getThings()) {
             ThingHandler handler = thing.getHandler();
-            if (handler instanceof LutronHandler) {
-                ((LutronHandler) handler).handleFeedback(feedback);
+            if (handler instanceof LutronHandler lutronHandler) {
+                lutronHandler.handleFeedback(feedback);
             } else {
                 logger.debug("Unexpected - Thing {} is not a LutronHandler", thing.getClass());
             }
index 9f775234aaf5bcbe31ac10c081a68a568044aa7c..350233d2bbbf6b38864964fda10d4b62fdfaac4a 100644 (file)
@@ -52,8 +52,8 @@ public class SwitchHandler extends LutronHandler {
     public void handleCommand(ChannelUID channelUID, Command command) {
         RS232Handler bridgeHandler = getRS232Handler();
         if (LutronBindingConstants.CHANNEL_SWITCH.equals(channelUID.getId())) {
-            if (command instanceof OnOffType) {
-                SetSwitchLevelCommand cmd = new SetSwitchLevelCommand(config.getZoneNumber(), (OnOffType) command,
+            if (command instanceof OnOffType onOffCommand) {
+                SetSwitchLevelCommand cmd = new SetSwitchLevelCommand(config.getZoneNumber(), onOffCommand,
                         config.system);
 
                 if (bridgeHandler != null) {
@@ -65,10 +65,10 @@ public class SwitchHandler extends LutronHandler {
 
     @Override
     public void handleFeedback(RadioRAFeedback feedback) {
-        if (feedback instanceof LocalZoneChangeFeedback) {
-            handleLocalZoneChangeFeedback((LocalZoneChangeFeedback) feedback);
-        } else if (feedback instanceof ZoneMapFeedback) {
-            handleZoneMapFeedback((ZoneMapFeedback) feedback);
+        if (feedback instanceof LocalZoneChangeFeedback localZoneChangeFeedback) {
+            handleLocalZoneChangeFeedback(localZoneChangeFeedback);
+        } else if (feedback instanceof ZoneMapFeedback zoneMapFeedback) {
+            handleZoneMapFeedback(zoneMapFeedback);
         }
     }
 
index cae1caa1ff3f5bde22264c0775b2d911e44e6fa6..c7e0c30d917fa6ab7c0fdd6494bd2ccc42bf6eac 100644 (file)
@@ -65,7 +65,7 @@ public class ButtonPressCommand extends RadioRACommand {
         }
 
         if (system == 1 || system == 2) {
-            args.add("S" + String.valueOf(system));
+            args.add("S" + system);
         }
 
         return args;
index 08ee328d05e57d58622866db63428ca6f5975014..d964fd345320247f2c592b6db05abba3652ad6bb 100644 (file)
@@ -59,7 +59,7 @@ public class SetDimmerLevelCommand extends RadioRACommand {
         }
 
         if (system == 1 || system == 2) {
-            args.add("S" + String.valueOf(system));
+            args.add("S" + system);
         }
 
         return args;
index 688f0774daceea679f5b168d552b07f34c355a81..629d9291f031177d167ea5e6d88dd966604f8972 100644 (file)
@@ -60,7 +60,7 @@ public class SetSwitchLevelCommand extends RadioRACommand {
         }
 
         if (system == 1 || system == 2) {
-            args.add("S" + String.valueOf(system));
+            args.add("S" + system);
         }
 
         return args;
index 4ec91c0041f885db1dfe30368ae1c3a2700f5ec6..32d7f465c771e448153a514ff8217b7a52c27107 100644 (file)
@@ -93,15 +93,14 @@ public class LuxomDimmerHandler extends LuxomThingHandler {
                 clear();
             }
         } else if (LuxomBindingConstants.CHANNEL_BRIGHTNESS.equals(channelUID.getId()) && config != null) {
-            if (command instanceof Number) {
-                int level = ((Number) command).intValue();
+            if (command instanceof Number number) {
+                int level = number.intValue();
                 logger.trace("dimmer at address {} just setting dimmer level", getAddress());
                 dim(level);
-            } else if (command instanceof IncreaseDecreaseType) {
-                IncreaseDecreaseType s = (IncreaseDecreaseType) command;
+            } else if (command instanceof IncreaseDecreaseType increaseDecreaseCommand) {
                 int currentValue = lastLightLevel.get();
                 int newValue;
-                if (IncreaseDecreaseType.INCREASE.equals(s)) {
+                if (IncreaseDecreaseType.INCREASE.equals(increaseDecreaseCommand)) {
                     newValue = currentValue + config.stepPercentage;
                     // round down to step multiple
                     newValue = newValue - newValue % config.stepPercentage;
index 2aa13ddf926a979b321bb33697c45cb4ff4c53a7..c211b4e78f3fb6230ff81f059821f6e186c9c27e 100644 (file)
@@ -87,7 +87,6 @@ public abstract class LuxomThingHandler extends BaseThingHandler {
         if (bridgeStatusInfo.getStatus() == ThingStatus.ONLINE
                 && getThing().getStatusInfo().getStatusDetail() == ThingStatusDetail.BRIDGE_OFFLINE) {
             initDeviceState();
-
         } else if (bridgeStatusInfo.getStatus() == ThingStatus.OFFLINE) {
             updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_OFFLINE);
             thingOfflineNotify();
index 05c318941ea8f9e9d2b9b5a2b144bdc4f514958b..6e350ca94486c5b0af92c2122a9122c8ae506d2e 100644 (file)
@@ -68,7 +68,6 @@ public class LuxomCommunication {
             // IP-interface.
             (new Thread(this::runLuxomEvents,
                     "OH-binding-" + bridgeHandler.getThing().getBridgeUID() + "-listen-for-events")).start();
-
         } catch (IOException | InterruptedException e) {
             throw new LuxomConnectionException(e);
         }
index 171722f7386e2240ed7933a8b8953f96d3d3cba0..9f056dd2c747f6db5cc27b5558d4cb0dfdb92f91 100644 (file)
@@ -12,7 +12,6 @@
  */
 package org.openhab.binding.luxtronikheatpump.internal;
 
-import java.util.Collections;
 import java.util.Set;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
@@ -31,5 +30,5 @@ public class LuxtronikHeatpumpBindingConstants {
 
     public static final ThingTypeUID THING_TYPE_HEATPUMP = new ThingTypeUID(BINDING_ID, "heatpump");
 
-    public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Collections.singleton(THING_TYPE_HEATPUMP);
+    public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Set.of(THING_TYPE_HEATPUMP);
 }
index f73c043f0a4b8211059f5e2983d2fff5c5307c2b..f07340566d69898ebe0650db416b934591dd4fd1 100644 (file)
@@ -112,9 +112,7 @@ public class LuxtronikHeatpumpHandler extends BaseThingHandler {
             return;
         }
 
-        if (command instanceof QuantityType) {
-            QuantityType<?> value = (QuantityType<?>) command;
-
+        if (command instanceof QuantityType value) {
             Unit<?> unit = channel.getUnit();
             if (unit != null) {
                 value = value.toUnit(unit);
@@ -123,8 +121,8 @@ public class LuxtronikHeatpumpHandler extends BaseThingHandler {
             command = new DecimalType(value.floatValue());
         }
 
-        if (command instanceof OnOffType) {
-            command = ((OnOffType) command) == OnOffType.ON ? new DecimalType(1) : DecimalType.ZERO;
+        if (command instanceof OnOffType onOffCommand) {
+            command = onOffCommand == OnOffType.ON ? new DecimalType(1) : DecimalType.ZERO;
         }
 
         if (!(command instanceof DecimalType)) {
index d6f9b9a21ad386adbd86c882348e09ee0b3c3f04..71165da690117f3c3acf379713bc9287594659ef 100644 (file)
@@ -109,7 +109,7 @@ public enum HeatpumpType {
         this.name = name;
     }
 
-    public static final HeatpumpType fromCode(Integer code) {
+    public static HeatpumpType fromCode(Integer code) {
         for (HeatpumpType error : HeatpumpType.values()) {
             if (error.code.equals(code)) {
                 return error;
index 8f0ca725b439216905b3139d32487288ae4e66d9..ba659bb0037de46881769b2633cd7001d7f602b7 100644 (file)
@@ -12,7 +12,6 @@
  */
 package org.openhab.binding.magentatv.internal;
 
-import java.util.Collections;
 import java.util.Set;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
@@ -33,7 +32,7 @@ public class MagentaTVBindingConstants {
 
     // List of all Thing Type UIDs
     public static final ThingTypeUID THING_TYPE_RECEIVER = new ThingTypeUID(BINDING_ID, "receiver");
-    public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES = Collections.singleton(THING_TYPE_RECEIVER);
+    public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES = Set.of(THING_TYPE_RECEIVER);
 
     /**
      * Property names for config/status properties
index 4c9ec14e5796a99e19fdeff330bfa6e273e18f2f..5488dacb3ebc088185b5706e649b3e7db0b8651e 100644 (file)
@@ -58,7 +58,7 @@ public class MagentaTVDynamicConfig extends MagentaTVThingConfiguration {
     }
 
     public void setPort(String port) {
-        if (modelId.contains(MODEL_MR400) && port.equals("49153")) {
+        if (modelId.contains(MODEL_MR400) && "49153".equals(port)) {
             // overwrite port returned by discovery (invalid for this model)
             this.port = MR400_DEF_REMOTE_PORT;
         } else {
@@ -84,7 +84,7 @@ public class MagentaTVDynamicConfig extends MagentaTVThingConfiguration {
 
     public String getDescriptionUrl() {
         if (descriptionUrl.equals(MR400_DEF_DESCRIPTION_URL)
-                && !(port.equals(MR400_DEF_REMOTE_PORT) || port.equals("49153"))) {
+                && !(port.equals(MR400_DEF_REMOTE_PORT) || "49153".equals(port))) {
             // MR401B returns the wrong URL
             return MR401B_DEF_DESCRIPTION_URL;
         }
index bc28e69eeb9c71d3e1218e3008afcec4f4d9197d..761e1a6046c4f6d904feee26ad08e57be1a5b5b9 100644 (file)
@@ -16,7 +16,6 @@ import static org.openhab.binding.magentatv.internal.MagentaTVBindingConstants.*
 import static org.openhab.binding.magentatv.internal.MagentaTVUtil.*;
 import static org.openhab.core.thing.Thing.*;
 
-import java.util.Collections;
 import java.util.Map;
 import java.util.Set;
 import java.util.TreeMap;
@@ -46,7 +45,7 @@ public class MagentaTVDiscoveryParticipant implements UpnpDiscoveryParticipant {
 
     @Override
     public Set<ThingTypeUID> getSupportedThingTypeUIDs() {
-        return Collections.singleton(THING_TYPE_RECEIVER);
+        return Set.of(THING_TYPE_RECEIVER);
     }
 
     /**
@@ -74,7 +73,7 @@ public class MagentaTVDiscoveryParticipant implements UpnpDiscoveryParticipant {
                         .substring(device.getIdentity().getUdn().getIdentifierString().length() - 12);
                 String mac = hex.substring(0, 2) + ":" + hex.substring(2, 4) + ":" + hex.substring(4, 6) + ":"
                         + hex.substring(6, 8) + ":" + hex.substring(8, 10) + ":" + hex.substring(10, 12);
-                if (port.equals("49153")) { // MR400 reports the rong
+                if ("49153".equals(port)) { // MR400 reports the rong
                     port = MR400_DEF_REMOTE_PORT;
                 }
                 properties.put(PROPERTY_VENDOR, VENDOR + "(" + manufacturer + ")");
index 0fce1cb9771712863cdcc580db19bc57155c5dab..eea05062525cc444958d2bca2c370c131e0442dc 100644 (file)
@@ -135,7 +135,7 @@ public class MagentaTVControl {
         if (result.contains("<X_wakeOnLan>")) {
             String wol = substringBetween(result, "<X_wakeOnLan>", "</X_wakeOnLan>");
             config.setWakeOnLAN(wol);
-            logger.debug("{}: Wake-on-LAN is {}", thingId, wol.equals("0") ? "disabled" : "enabled");
+            logger.debug("{}: Wake-on-LAN is {}", thingId, "0".equals(wol) ? "disabled" : "enabled");
         }
         if (result.contains("<productVersionNumber>")) {
             String version;
@@ -240,7 +240,7 @@ public class MagentaTVControl {
         }
 
         String result = substringBetween(response, "<result>", "</result>");
-        if (!result.equals("0")) {
+        if (!"0".equals(result)) {
             throw new MagentaTVException("Pairing failed, result=" + result);
         }
 
@@ -295,7 +295,7 @@ public class MagentaTVControl {
         }
 
         String result = getXmlValue(response, "pairingResult");
-        if (!result.equals("0")) {
+        if (!"0".equals(result)) {
             logger.debug("{}: Pairing failed or pairing no longer valid, result={}", thingId, result);
             resetPairing();
             // let the caller decide how to proceed
index 759c517e7d3131f11d95a9452e3273d815d25761..b6e5133cf15a643c609c9c4843a7fa34b5389ad1 100644 (file)
@@ -223,7 +223,7 @@ public class MagentaTVHandler extends BaseThingHandler implements MagentaTVListe
         }
 
         try {
-            if (!isOnline() || command.toString().equalsIgnoreCase("PAIR")) {
+            if (!isOnline() || "PAIR".equalsIgnoreCase(command.toString())) {
                 logger.debug("{}: Receiver {} is offline, try to (re-)connect", thingId, deviceName());
                 connectReceiver(); // reconnect to MR, throws an exception if this fails
             }
@@ -273,7 +273,7 @@ public class MagentaTVHandler extends BaseThingHandler implements MagentaTVListe
                     }
                     break;
                 case CHANNEL_KEY:
-                    if (command.toString().equalsIgnoreCase("PAIR")) { // special key to re-pair receiver (already done
+                    if ("PAIR".equalsIgnoreCase(command.toString())) { // special key to re-pair receiver (already done
                                                                        // above)
                         logger.debug("{}: PAIRing key received, reconnect receiver {}", thingId, deviceName());
                     } else {
index 6feb0f5a859bcbf87e8eae834f435a85a6790938..1ae9434e88d2b029c3e40539950e5250380eac42 100644 (file)
@@ -110,7 +110,6 @@ public class MagentaTVHttp {
      * @throws IOException
      */
     public String sendData(String remoteIp, String remotePort, String data) throws MagentaTVException {
-
         String errorMessage = "";
         StringBuffer response = new StringBuffer();
         try (Socket socket = new Socket()) {
index 53125af5c95993bfd4b831eb7d33c85ea3910f7d..c4069d9875e805715989a1ef17c8ff295bba6d95 100644 (file)
@@ -48,7 +48,7 @@ public class MagentaTVNetwork {
      */
     public void initLocalNet(String localIP, String localPort) throws MagentaTVException {
         try {
-            if (localIP.isEmpty() || localIP.equals("0.0.0.0") || localIP.equals("127.0.0.1")) {
+            if (localIP.isEmpty() || "0.0.0.0".equals(localIP) || "127.0.0.1".equals(localIP)) {
                 throw new MagentaTVException("Unable to detect local IP address!");
             }
             this.localPort = localPort;
index a9ac8648d1c62309ff7257d106e832237bd9482f..667408174f68d7fcd1dd492766cf3c0089b390f0 100644 (file)
@@ -89,7 +89,6 @@ public class MagentaTVNotifyServlet extends HttpServlet {
     @Override
     protected void service(@Nullable HttpServletRequest request, @Nullable HttpServletResponse response)
             throws ServletException, IOException {
-
         String data = inputStreamToString(request);
         try {
             if ((request == null) || (response == null)) {
@@ -118,7 +117,7 @@ public class MagentaTVNotifyServlet extends HttpServlet {
                 }
             } else {
                 if (data.contains("STB_")) {
-                    data = data.replaceAll("&quot;", "\"");
+                    data = data.replace("&quot;", "\"");
                     String stbMac = substringBetween(data, "<STB_Mac>", "</STB_Mac>");
                     String stbEvent = "";
                     if (data.contains("<STB_playContent>")) {
index aa83aa5cae02e2271fb7eb79a0ee8e35dc288c0c..498024cb68a6c668c99fc0e48eba6ef22c2c7a51 100644 (file)
@@ -120,9 +120,9 @@ public class MagentaTVOAuth {
         if (cred.sam3Para != null) {
             for (OauthKeyValue si : cred.sam3Para) {
                 logger.trace("sam3Para.{} = {}", si.key, si.value);
-                if (si.key.equalsIgnoreCase("oAuthScope")) {
+                if ("oAuthScope".equalsIgnoreCase(si.key)) {
                     oAuthScope = si.value;
-                } else if (si.key.equalsIgnoreCase("SAM3ServiceURL")) {
+                } else if ("SAM3ServiceURL".equalsIgnoreCase(si.key)) {
                     oAuthService = si.value;
                 }
             }
@@ -242,7 +242,7 @@ public class MagentaTVOAuth {
             // validate response, API errors are reported as Json
             HttpFields responseHeaders = contentResponse.getHeaders();
             for (HttpField f : responseHeaders) {
-                if (f.getName().equals("Set-Cookie")) {
+                if ("Set-Cookie".equals(f.getName())) {
                     HttpCookie c = new HttpCookie(f.getName(), f.getValue());
                     cookies.add(c);
                 }
index eb46a030553638b6631b1fef52dcbbd76bb75f75..3d04d9e9b0f519d4453118d58da8b66a3e34747d 100644 (file)
@@ -168,8 +168,8 @@ public class PatchedMailcapCommandMap extends CommandMap {
                 if (fieldName.startsWith("x-java-") && fieldName.length() > 7) {
                     String command = fieldName.substring(7);
                     value = value.trim();
-                    if (command.equals("fallback-entry")) {
-                        if (value.equals("true")) {
+                    if ("fallback-entry".equals(command)) {
+                        if ("true".equals(value)) {
                             fallback = true;
                         }
                     }
index e92ef18782f75067c4dc8c4e50fc7647524531ea..a7cf802fca7398a233a20d142a86b6fefcbafffc 100644 (file)
@@ -169,9 +169,9 @@ public class POP3IMAPHandler extends BaseThingHandler {
                                 }
                                 Object rawContent = message.getContent();
                                 String contentAsString;
-                                if (rawContent instanceof String) {
+                                if (rawContent instanceof String str) {
                                     logger.trace("Detected plain text message");
-                                    contentAsString = (String) rawContent;
+                                    contentAsString = str;
                                 } else if (rawContent instanceof MimeMessage mimeMessage) {
                                     logger.trace("Detected MIME message");
                                     try (ByteArrayOutputStream os = new ByteArrayOutputStream()) {
index f25afdbe3de800bcc72fcf2372ade3cc42c7f75c..072b11a6ed2ec5264bc9963f90db5bfe45f4781e 100644 (file)
@@ -115,8 +115,7 @@ public class SMTPHandler extends BaseThingHandler {
                 Field dataField = dataSource.getClass().getDeclaredField("data");
                 dataField.setAccessible(true);
                 Object data = dataField.get(dataSource);
-                if (data instanceof MimeMultipart) {
-                    MimeMultipart mimeMultipart = (MimeMultipart) data;
+                if (data instanceof MimeMultipart mimeMultipart) {
                     for (int i = 0; i < mimeMultipart.getCount(); i++) {
                         Part mimePart = mimeMultipart.getBodyPart(i);
                         mimePart.getDataHandler().setCommandMap(commandMap);
index 0894ebe6efbd56a66727b3d615084965434d4a09..8c27b734387b2920899f25e2517c28d30571cf78 100644 (file)
@@ -230,8 +230,8 @@ public class SendMailActions implements ThingActions {
 
     @Override
     public void setThingHandler(@Nullable ThingHandler handler) {
-        if (handler instanceof SMTPHandler) {
-            this.handler = (SMTPHandler) handler;
+        if (handler instanceof SMTPHandler smtpHandler) {
+            this.handler = smtpHandler;
         }
     }
 
index 7001c40a270244037b6a2547d23ca3371a180756..38c42b842b67620552544badd9f64df9c479a16e 100644 (file)
@@ -33,7 +33,7 @@ public final class Utils {
      *            the hex value to be parsed into an integer
      * @return the given hex value as integer
      */
-    public static final int fromHex(String hex) {
+    public static int fromHex(String hex) {
         return Integer.parseInt(hex, 16);
     }
 
@@ -44,7 +44,7 @@ public final class Utils {
      *            the integer values to be converted into hexadecimal numbers
      * @return the given numbers as hexadecimal number
      */
-    public static final String toHex(int... values) {
+    public static String toHex(int... values) {
         String returnValue = "";
         for (int v : values) {
             returnValue += v < 16 ? "0" + Integer.toHexString(v).toUpperCase() : Integer.toHexString(v).toUpperCase();
@@ -60,7 +60,7 @@ public final class Utils {
      *            hexadecimal numbers
      * @return the hexadecimal number
      */
-    public static final String toHex(boolean[] bits) {
+    public static String toHex(boolean[] bits) {
         int retVal = 0;
         for (int i = 0; i < bits.length; ++i) {
             retVal |= (bits[i] ? 1 : 0) << i;
@@ -76,7 +76,7 @@ public final class Utils {
      *            the byte to be converted into its integer value
      * @return the integer value represented by the given byte
      */
-    public static final int fromByte(byte b) {
+    public static int fromByte(byte b) {
         return b & 0xFF;
     }
 
index 52f04fcb96e56d09d3ba16c06ed88945a3473952..219f630c894dca08024a6edd63775373dcc8855a 100644 (file)
@@ -38,8 +38,8 @@ public class MaxCubeActions implements ThingActions {
 
     @Override
     public void setThingHandler(@Nullable ThingHandler handler) {
-        if (handler instanceof MaxCubeBridgeHandler) {
-            this.handler = (MaxCubeBridgeHandler) handler;
+        if (handler instanceof MaxCubeBridgeHandler bridgeHandler) {
+            this.handler = bridgeHandler;
         }
     }
 
index 1c4dd8727140a425a792f53641ab4e1ad6ba9d16..e727f58283e51c6470cc91a57ea1925eddde5fcb 100644 (file)
@@ -38,8 +38,8 @@ public class MaxDevicesActions implements ThingActions {
 
     @Override
     public void setThingHandler(@Nullable ThingHandler handler) {
-        if (handler instanceof MaxDevicesHandler) {
-            this.handler = (MaxDevicesHandler) handler;
+        if (handler instanceof MaxDevicesHandler devicesHandler) {
+            this.handler = devicesHandler;
         }
     }
 
index 1a37e57bd58f2d1f2e32fb5099538b60c6be134c..3e516637b3e8a3d45ef3aad81f0ab251d44487bb 100644 (file)
@@ -29,8 +29,7 @@ public class CCommand extends CubeCommand {
 
     @Override
     public String getCommandString() {
-        String cmd = "c:" + rfAddress + '\r' + '\n';
-        return cmd;
+        return "c:" + rfAddress + '\r' + '\n';
     }
 
     @Override
index f917aaab7055b469cd6b98e51bcbc278cd3e2852..d0c584a052604a0ecdffcacba43e78acc638390e 100644 (file)
@@ -127,14 +127,14 @@ public class UdpCubeCommand {
 
                 // Check if the message is correct
                 if (message.startsWith("eQ3Max") && !message.equals(MAXCUBE_COMMAND_STRING)) {
-                    commandResponse.put("maxCubeIP", receivePacket.getAddress().getHostAddress().toString());
+                    commandResponse.put("maxCubeIP", receivePacket.getAddress().getHostAddress());
                     commandResponse.put("maxCubeState", message.substring(0, 8));
                     commandResponse.put("serialNumber", message.substring(8, 18));
                     commandResponse.put("msgValidid", message.substring(18, 19));
                     String requestType = message.substring(19, 20);
                     commandResponse.put("requestType", requestType);
 
-                    if (requestType.equals("I")) {
+                    if ("I".equals(requestType)) {
                         commandResponse.put("rfAddress",
                                 Utils.getHex(message.substring(21, 24).getBytes(StandardCharsets.UTF_8))
                                         .replace(" ", "").toLowerCase());
index fec78745c256384f67e31de3eaa5461fb648b872..5a8a19a2f59082509b7ea79c41a0ca94143705ae 100644 (file)
@@ -136,7 +136,7 @@ public class MaxCubeBridgeDiscovery extends AbstractDiscoveryService {
                     logger.trace("Msg Valid : {}", msgValidid);
                     logger.trace("Msg Type  : {}", requestType);
 
-                    if (requestType.equals("I")) {
+                    if ("I".equals(requestType)) {
                         rfAddress = Utils.getHex(Arrays.copyOfRange(messageBuf, 21, 24)).replace(" ", "").toLowerCase();
                         String firmwareVersion = Utils.getHex(Arrays.copyOfRange(messageBuf, 24, 26)).replace(" ", ".");
                         logger.debug("RF Address: {}", rfAddress);
index 26fcafdb42deb1b18a6230eacf9d3fa97929bd86..c749b7ed7c9d265283af74199380350af9a2f5d2 100644 (file)
@@ -55,8 +55,8 @@ public class MaxDeviceDiscoveryService extends AbstractDiscoveryService
 
     @Override
     public void setThingHandler(@NonNullByDefault({}) ThingHandler handler) {
-        if (handler instanceof MaxCubeBridgeHandler) {
-            this.maxCubeBridgeHandler = (MaxCubeBridgeHandler) handler;
+        if (handler instanceof MaxCubeBridgeHandler maxCubeBridgeHandler) {
+            this.maxCubeBridgeHandler = maxCubeBridgeHandler;
         }
     }
 
index d9d3e07c6d59879b1391c632e1dec4e9f70e6b94..8cadbcc720f7ff6b4f797d92440ce904d37bf2a0 100644 (file)
@@ -20,10 +20,10 @@ import java.text.DateFormat;
 import java.text.SimpleDateFormat;
 import java.util.Calendar;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.Set;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
 
@@ -198,7 +198,7 @@ public class MaxDevicesHandler extends BaseThingHandler implements DeviceStatusL
 
     @Override
     public Collection<Class<? extends ThingHandlerService>> getServices() {
-        return Collections.singleton(MaxDevicesActions.class);
+        return Set.of(MaxDevicesActions.class);
     }
 
     private void sendPropertyUpdate(Map<String, Object> configurationParameters, Map<String, Object> deviceProperties) {
@@ -543,8 +543,8 @@ public class MaxDevicesHandler extends BaseThingHandler implements DeviceStatusL
                 configuration.put(PROPERTY_ROOMNAME, device.getRoomName());
                 config_changed = true;
             }
-            if (getConfig().get(PROPERTY_ROOMID) == null || !(new BigDecimal(device.getRoomId())
-                    .compareTo((BigDecimal) getConfig().get(PROPERTY_ROOMID)) == 0)) {
+            if (getConfig().get(PROPERTY_ROOMID) == null || new BigDecimal(device.getRoomId())
+                    .compareTo((BigDecimal) getConfig().get(PROPERTY_ROOMID)) != 0) {
                 configuration.put(PROPERTY_ROOMID, new BigDecimal(device.getRoomId()));
                 config_changed = true;
             }
index 959937cf465facf78cc8aec0259336e5e2e51c29..1ca1d4a40b1a6d3e789cab33ffc7d2009628cb3c 100644 (file)
@@ -68,8 +68,7 @@ public final class SendCommand {
      * This is can be used to find duplicated commands in the queue
      */
     private static String getKey(String serialNumber, CubeCommand cubeCommand) {
-        String key = serialNumber + "-" + cubeCommand.getClass().getSimpleName();
-        return key;
+        return serialNumber + "-" + cubeCommand.getClass().getSimpleName();
     }
 
     /**
index c3ea3e0eb062fddec6a4135943c4b4691ddfdac4..222add76dcba804c14377a863a796092d76c8ac8 100644 (file)
@@ -171,7 +171,7 @@ public class MessageProcessor {
                         }
                 }
             } else {
-                if ((!counter.equals(this.numberOfRequiredLines)) || (!(index == this.receivedLines.size()))) {
+                if (!counter.equals(this.numberOfRequiredLines) || index != this.receivedLines.size()) {
                     throw new IncorrectMultilineIndexException();
                 }
 
index a1656c6d3e8eb2fc9a56b15de99b26edbe1a44e8..9f1a969eaa440a8e695455955a32d62acffa20fb 100644 (file)
@@ -36,7 +36,7 @@ public class MCommandTest {
     private List<Device> devices = new ArrayList<>();
     private List<RoomInformation> rooms = new ArrayList<>();
 
-    String deviceCMsg[] = {
+    String[] deviceCMsg = {
             "C:0b0da3,0gsNowIBEABLRVEwNTQ0MjQyLCQ9CQcYAzAM/wBIYViRSP1ZFE0gTSBNIEUgRSBFIEUgRSBFIEhhWJFQ/VkVUSBRIFEgRSBFIEUgRSBFIEUgSFBYWkj+WRRNIE0gTSBFIEUgRSBFIEUgRSBIUFhaSP5ZFE0gTSBNIEUgRSBFIEUgRSBFIEhQWFpI/lkUTSBNIE0gRSBFIEUgRSBFIEUgSFBYWkj+WRRNIE0gTSBFIEUgRSBFIEUgRSBIUFhaSP5ZFE0gTSBNIEUgRSBFIEUgRSBFIA==",
             "C:08c1d6,0gjB1gEFGP9LRVEwNjQ5MzEyKyE9CQcYAzAM/wBEeFUgVSBVIFUgVSBVIEUgRSBFIEUgRSBFIER4VRZFIEUgRSBFIEUgRSBFIEUgRSBFIEUgRFFEYkTkTQ9FIEUgRSBFIEUgRSBFIEUgRSBEUURiRORND0UgRSBFIEUgRSBFIEUgRSBFIERRRGJE5E0PRSBFIEUgRSBFIEUgRSBFIEUgRFFEYkTkTQ9FIEUgRSBFIEUgRSBFIEUgRSBEUURiRORRGEUgRSBFIEUgRSBFIEUgRSBFIA==",
             "C:0e75f6,EQ519gQCEABLRVExMTA0Mzgw",
index 8eba440c265fdeb3773f0d8e8688c2703d471bad..39150a9a7c41f6811035314591dada674092bdb5 100644 (file)
@@ -93,14 +93,14 @@ public class UtilsTest {
 
     @Test
     public void getBitsTest() {
-        boolean b1[] = Utils.getBits(0xFF);
+        boolean[] b1 = Utils.getBits(0xFF);
 
         assertEquals(b1.length, 8);
         for (int i = 0; i < 8; i++) {
             assertEquals(true, b1[i]);
         }
 
-        boolean b2[] = Utils.getBits(0x5A);
+        boolean[] b2 = Utils.getBits(0x5A);
 
         assertEquals(b2.length, 8);
         assertEquals(false, b2[0]);
index 669edcc9ea6e687ed405f5f23ff6be829afb3444..d4d058066d0b38816574792d3e7f449362440ab0 100644 (file)
@@ -334,18 +334,22 @@ public class SensorThingHandler extends BaseThingHandler {
                     JsonArray array = deviceInfo.getAsJsonArray("PatientDevices");
                     JsonObject patient = array.get(0).getAsJsonObject();
                     if (patient.has("UuidPerson") && !patient.get("UuidPerson").isJsonNull()) {
-                        return "https://cunds-syncapi.azurewebsites.net/api/ApiSensor/GetLatestApiSensorEvents"
-                                + "?UuidPatient=" + patient.get("UuidPerson").getAsString() + "&SerialNumber="
-                                + serialNumber + "&Count=1";
+                        return """
+                                https://cunds-syncapi.azurewebsites.net/api/ApiSensor/GetLatestApiSensorEvents\
+                                ?UuidPatient=\
+                                """ + patient.get("UuidPerson").getAsString() + "&SerialNumber=" + serialNumber
+                                + "&Count=1";
                     }
                 } else if (deviceInfo.has("OrganisationUnitDevices")
                         && deviceInfo.getAsJsonArray("OrganisationUnitDevices").size() != 0) {
                     JsonArray array = deviceInfo.getAsJsonArray("OrganisationUnitDevices");
                     JsonObject orgUnit = array.get(0).getAsJsonObject();
                     if (orgUnit.has("UuidOrganisationUnit") && !orgUnit.get("UuidOrganisationUnit").isJsonNull()) {
-                        return "https://cunds-syncapi.azurewebsites.net/api/ApiSensor/GetLatestApiSensorEvents"
-                                + "?UuidOrganisationUnit=" + orgUnit.get("UuidOrganisationUnit").getAsString()
-                                + "&SerialNumber=" + serialNumber + "&Count=1";
+                        return """
+                                https://cunds-syncapi.azurewebsites.net/api/ApiSensor/GetLatestApiSensorEvents\
+                                ?UuidOrganisationUnit=\
+                                """ + orgUnit.get("UuidOrganisationUnit").getAsString() + "&SerialNumber="
+                                + serialNumber + "&Count=1";
                     }
                 }
             } else {
index b0204babcdeea3f7dc96648d98514cd17004b1e8..1e331c34500613bb47a3ff1f5887b0a724af5247 100644 (file)
@@ -35,20 +35,48 @@ public class SensorThingHandlerTest {
 
     @Test
     public void getLatestValueFromJsonObjectTest() {
-        String arrayString = "[\n" + "  {\n" + "    \"IdPatient\": 1,\n" + "    \"LastName\": \"Mustermann\",\n"
-                + "    \"FirstName\": \"Max\",\n" + "    \"Devices\": [\n" + "      {\n" + "        \"IdDevice\": 2,\n"
-                + "        \"SerialNumber\": \"001\",\n" + "        \"Name\": \"Test Sitzkissen\",\n"
-                + "        \"Events\": [\n" + "          {\n" + "            \"EventDef\": \"Alarm\",\n"
-                + "            \"DateEntry\": \"2021-11-22T10:17:56.2866667\"\n" + "          }\n" + "        ]\n"
-                + "      }\n" + "    ]\n" + "  }\n" + "]";
+        String arrayString = """
+                [
+                  {
+                    "IdPatient": 1,
+                    "LastName": "Mustermann",
+                    "FirstName": "Max",
+                    "Devices": [
+                      {
+                        "IdDevice": 2,
+                        "SerialNumber": "001",
+                        "Name": "Test Sitzkissen",
+                        "Events": [
+                          {
+                            "EventDef": "Alarm",
+                            "DateEntry": "2021-11-22T10:17:56.2866667"
+                          }
+                        ]
+                      }
+                    ]
+                  }
+                ]\
+                """;
         JsonArray array = gson.fromJson(arrayString, JsonArray.class);
         JsonObject object = SensorThingHandler.getLatestValueFromJsonArray(array);
         String string = object != null ? object.toString() : null;
         assertEquals("{\"EventDef\":\"Alarm\",\"DateEntry\":\"2021-11-22T10:17:56.2866667\"}", string);
-        arrayString = "[\n" + "  {\n" + "    \"IdPatient\": 1,\n" + "    \"LastName\": \"Mustermann\",\n"
-                + "    \"FirstName\": \"Max\",\n" + "    \"Devices\": [\n" + "      {\n" + "        \"IdDevice\": 2,\n"
-                + "        \"SerialNumber\": \"001\",\n" + "        \"Name\": \"Test Sitzkissen\"\n" + "      }\n"
-                + "    ]\n" + "  }\n" + "]";
+        arrayString = """
+                [
+                  {
+                    "IdPatient": 1,
+                    "LastName": "Mustermann",
+                    "FirstName": "Max",
+                    "Devices": [
+                      {
+                        "IdDevice": 2,
+                        "SerialNumber": "001",
+                        "Name": "Test Sitzkissen"
+                      }
+                    ]
+                  }
+                ]\
+                """;
         array = gson.fromJson(arrayString, JsonArray.class);
         assertNull(SensorThingHandler.getLatestValueFromJsonArray(array));
     }
index 248cf0c77bf546a02e2333fd03a0ecb44b0ff7f0..abb0c615fad3a0624e81b368959c3508ce29cb4a 100644 (file)
@@ -14,7 +14,6 @@ package org.openhab.binding.mcp23017.internal;
 
 import static org.openhab.binding.mcp23017.internal.Mcp23017BindingConstants.THING_TYPE_MCP23017;
 
-import java.util.Collections;
 import java.util.Set;
 
 import org.openhab.binding.mcp23017.internal.handler.Mcp23017Handler;
@@ -36,7 +35,7 @@ import org.slf4j.LoggerFactory;
 @Component(service = ThingHandlerFactory.class, configurationPid = "binding.mcp23017")
 public class Mcp23017HandlerFactory extends BaseThingHandlerFactory {
 
-    private static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Collections.singleton(THING_TYPE_MCP23017);
+    private static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Set.of(THING_TYPE_MCP23017);
     private final Logger logger = LoggerFactory.getLogger(Mcp23017HandlerFactory.class);
 
     @Override
index 41a2cb64d5d346d0622864ce1deb7bf953de2f1e..0832b49430c90dfce1fbe2f6e5e7b22e3c3d5e26 100644 (file)
@@ -159,8 +159,8 @@ public class MeaterRestAPI {
             throw new MeaterException("Failed to fetch from API!");
         } catch (ExecutionException e) {
             Throwable cause = e.getCause();
-            if (cause != null && cause instanceof HttpResponseException) {
-                Response response = ((HttpResponseException) cause).getResponse();
+            if (cause instanceof HttpResponseException httpResponseException) {
+                Response response = httpResponseException.getResponse();
                 if (response.getStatus() == HttpStatus.UNAUTHORIZED_401) {
                     /*
                      * When contextId is not valid, the service will respond with HTTP code 401 without
index dc16db4789e27f87d08c6d8cbeacd9560174bd8d..70629e9d7e0ebac981dd61b89d5c50afdaa9defa 100644 (file)
@@ -60,9 +60,9 @@ public class MeaterCommandExtension extends AbstractConsoleCommandExtension impl
 
         for (Thing thing : thingRegistry.getAll()) {
             ThingHandler thingHandler = thing.getHandler();
-            if (thingHandler instanceof MeaterBridgeHandler) {
+            if (thingHandler instanceof MeaterBridgeHandler bridgeHandler) {
                 console.println("API bridge: " + thing.getLabel());
-                ((MeaterBridgeHandler) thingHandler).getMeaterThings().entrySet().stream().forEach(t -> {
+                bridgeHandler.getMeaterThings().entrySet().stream().forEach(t -> {
                     console.println("    - ID: " + t.getKey() + " (ambient temperature: "
                             + t.getValue().temperature.ambient + ")");
                 });
index af61c6f2cdf5695585de0ac527702924f3ebfcb8..20d34e333bcd7dba41c4491db451c2132daaf20d 100644 (file)
@@ -43,10 +43,10 @@ public class MeaterDiscoveryService extends AbstractDiscoveryService implements
 
     @Override
     public void setThingHandler(@Nullable ThingHandler handler) {
-        if (handler instanceof MeaterBridgeHandler) {
-            this.handler = (MeaterBridgeHandler) handler;
-            i18nProvider = ((MeaterBridgeHandler) handler).getI18nProvider();
-            localeProvider = ((MeaterBridgeHandler) handler).getLocaleProvider();
+        if (handler instanceof MeaterBridgeHandler bridgeHandler) {
+            this.handler = bridgeHandler;
+            i18nProvider = bridgeHandler.getI18nProvider();
+            localeProvider = bridgeHandler.getLocaleProvider();
         }
     }
 
index 932f45535d918536d28c9ce390469fce91bc7a58..509e6b08d8c4fa9a3fe393eedf4d29e65108669f 100644 (file)
@@ -15,7 +15,6 @@ package org.openhab.binding.meater.internal.handler;
 import static org.openhab.binding.meater.internal.MeaterBindingConstants.*;
 
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
@@ -56,7 +55,7 @@ public class MeaterBridgeHandler extends BaseBridgeHandler {
 
     private final Logger logger = LoggerFactory.getLogger(MeaterBridgeHandler.class);
 
-    public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES = Collections.singleton(THING_TYPE_BRIDGE);
+    public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES = Set.of(THING_TYPE_BRIDGE);
 
     private final Gson gson;
     private final HttpClient httpClient;
@@ -101,7 +100,7 @@ public class MeaterBridgeHandler extends BaseBridgeHandler {
 
     @Override
     public Collection<Class<? extends ThingHandlerService>> getServices() {
-        return Collections.singleton(MeaterDiscoveryService.class);
+        return Set.of(MeaterDiscoveryService.class);
     }
 
     @Override
index f20258e0d6b5f294ef8db9237a3ed1533f90da31..4a94c14136e395f7b15daafe72c476f189a38e6f 100644 (file)
@@ -46,14 +46,11 @@ public class MelCloudHandlerFactory extends BaseThingHandlerFactory {
         ThingTypeUID thingTypeUID = thing.getThingTypeUID();
 
         if (THING_TYPE_MELCLOUD_ACCOUNT.equals(thingTypeUID)) {
-            MelCloudAccountHandler handler = new MelCloudAccountHandler((Bridge) thing);
-            return handler;
+            return new MelCloudAccountHandler((Bridge) thing);
         } else if (THING_TYPE_ACDEVICE.equals(thingTypeUID)) {
-            MelCloudDeviceHandler handler = new MelCloudDeviceHandler(thing);
-            return handler;
+            return new MelCloudDeviceHandler(thing);
         } else if (THING_TYPE_HEATPUMPDEVICE.equals(thingTypeUID)) {
-            MelCloudHeatpumpDeviceHandler handler = new MelCloudHeatpumpDeviceHandler(thing);
-            return handler;
+            return new MelCloudHeatpumpDeviceHandler(thing);
         }
 
         return null;
index 6156f9dbdb131415c2ec7b1ead905f6d71641fad..9eea2f9033dca3c1c9b8ed3f88e29b45294a9db3 100644 (file)
@@ -137,8 +137,7 @@ public class MelCloudConnection {
         try {
             String response = HttpUtil.executeUrl("GET", url, getHeaderProperties(), null, null, TIMEOUT_MILLISECONDS);
             logger.debug("Device status response: {}", response);
-            DeviceStatus deviceStatus = gson.fromJson(response, DeviceStatus.class);
-            return deviceStatus;
+            return gson.fromJson(response, DeviceStatus.class);
         } catch (IOException | JsonSyntaxException e) {
             setConnected(false);
             throw new MelCloudCommException("Error occurred during device status fetch", e);
@@ -167,8 +166,7 @@ public class MelCloudConnection {
         try {
             String response = HttpUtil.executeUrl("GET", url, getHeaderProperties(), null, null, TIMEOUT_MILLISECONDS);
             logger.debug("Device heatpump status response: {}", response);
-            HeatpumpDeviceStatus heatpumpDeviceStatus = gson.fromJson(response, HeatpumpDeviceStatus.class);
-            return heatpumpDeviceStatus;
+            return gson.fromJson(response, HeatpumpDeviceStatus.class);
         } catch (IOException | JsonSyntaxException e) {
             setConnected(false);
             throw new MelCloudCommException("Error occurred during heatpump device status fetch", e);
index 679d71a55ad8555751f16ed9f51c88bb5ceac27a..8faf3ff727ab135e9793e4d1441bb1353a5b52ee 100644 (file)
@@ -130,9 +130,9 @@ public class MelCloudDiscoveryService extends AbstractDiscoveryService
 
                         Map<String, Object> deviceProperties = new HashMap<>();
                         deviceProperties.put(PROPERTY_DEVICE_ID, device.getDeviceID().toString());
-                        deviceProperties.put(Thing.PROPERTY_SERIAL_NUMBER, device.getSerialNumber().toString());
-                        deviceProperties.put(Thing.PROPERTY_MAC_ADDRESS, device.getMacAddress().toString());
-                        deviceProperties.put("deviceName", device.getDeviceName().toString());
+                        deviceProperties.put(Thing.PROPERTY_SERIAL_NUMBER, device.getSerialNumber());
+                        deviceProperties.put(Thing.PROPERTY_MAC_ADDRESS, device.getMacAddress());
+                        deviceProperties.put("deviceName", device.getDeviceName());
                         deviceProperties.put("buildingID", device.getBuildingID().toString());
 
                         String label = createLabel(device);
@@ -158,7 +158,7 @@ public class MelCloudDiscoveryService extends AbstractDiscoveryService
         } else if (device.getType() == 1) {
             sb.append("Heatpump Device - ");
         }
-        if (device.getBuildingName() != null && device.getBuildingName() instanceof String) {
+        if (device.getBuildingName() instanceof String) {
             sb.append(device.getBuildingName()).append(" - ");
         }
         sb.append(device.getDeviceName());
@@ -167,8 +167,8 @@ public class MelCloudDiscoveryService extends AbstractDiscoveryService
 
     @Override
     public void setThingHandler(@Nullable ThingHandler handler) {
-        if (handler instanceof MelCloudAccountHandler) {
-            melCloudHandler = (MelCloudAccountHandler) handler;
+        if (handler instanceof MelCloudAccountHandler accountHandler) {
+            melCloudHandler = accountHandler;
         }
     }
 
index 284d59e51ea48ab6d1b69831ad4dbf94b4a20bf1..e69640dfedb55d26ab7b8afd6d9ae0167cf5fc92 100644 (file)
@@ -16,6 +16,7 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 import java.util.Optional;
+import java.util.Set;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
 
@@ -61,7 +62,7 @@ public class MelCloudAccountHandler extends BaseBridgeHandler {
 
     @Override
     public Collection<Class<? extends ThingHandlerService>> getServices() {
-        return Collections.singleton(MelCloudDiscoveryService.class);
+        return Set.of(MelCloudDiscoveryService.class);
     }
 
     @Override
index f47595d86ff0ba9556bac30f952a2adce4b895d1..1b369d19ab0b4577122c6b8a046174f42e4037ab 100644 (file)
@@ -122,7 +122,7 @@ public class AccountHandler extends BaseBridgeHandler implements AccessTokenRefr
 
     @Override
     public void dispose() {
-        if (!server.isEmpty()) {
+        if (server.isPresent()) {
             CallbackServer serv = server.get();
             serv.stop();
             serv.dispose();
index ac86182bfc391aa162fa5d6fec6a26209f704ed4..03e0fa8c307483b9bc6e1edd24ff00b5770d6db3 100644 (file)
@@ -155,7 +155,7 @@ public class VehicleHandler extends BaseThingHandler {
                     logger.debug("Image {} is empty", key);
                 }
             }
-        } else if (channelUID.getIdWithoutGroup().equals("clear-cache") && command.equals(OnOffType.ON)) {
+        } else if ("clear-cache".equals(channelUID.getIdWithoutGroup()) && command.equals(OnOffType.ON)) {
             List<String> removals = new ArrayList<String>();
             imageStorage.get().getKeys().forEach(entry -> {
                 if (entry.contains("_" + config.get().vin)) {
index cf9711acdb03f88a1e0fe503ac92c6c98208c793..88c14ee46350fe73a34596c719cefef34ca70c59 100644 (file)
@@ -92,7 +92,7 @@ public class CallbackServer {
 
     public boolean start() {
         LOGGER.debug("Start Callback Server for port {}", config.callbackPort);
-        if (!server.isEmpty()) {
+        if (server.isPresent()) {
             LOGGER.debug("Callback server for port {} already started", config.callbackPort);
             return true;
         }
@@ -115,7 +115,7 @@ public class CallbackServer {
     public void stop() {
         LOGGER.debug("Stop Callback Server");
         try {
-            if (!server.isEmpty()) {
+            if (server.isPresent()) {
                 server.get().stop();
                 server = Optional.empty();
             }
index cff11eb84c9f77631408e646c47462a4de888999..d0c5ee4d0a56e66753a49d75f12a1046cc70fd8b 100644 (file)
@@ -103,7 +103,6 @@ public class MeteoAlertIconProvider implements IconProvider {
                 AlertLevel alertLevel = ordinal < AlertLevel.values().length ? AlertLevel.values()[ordinal]
                         : AlertLevel.UNKNOWN;
                 icon = icon.replaceAll(AlertLevel.UNKNOWN.color, alertLevel.color);
-
             } catch (NumberFormatException e) {
                 logger.debug("{} is not a valid DecimalType", state);
             }
index 0f6e5f005411068d0f01fcf78a189fa1bff1cc3b..2bb3d7290443f74e0a8bb57deae759420448a9f5 100644 (file)
@@ -56,9 +56,11 @@ import com.google.gson.Gson;
 @NonNullByDefault
 public class MeteoAlerteHandler extends BaseThingHandler {
     private static final int TIMEOUT_MS = 30000;
-    private static final String URL = "https://public.opendatasoft.com/api/records/1.0/search/?dataset=risques-meteorologiques-copy&"
-            + "facet=etat_vent&facet=etat_pluie_inondation&facet=etat_orage&facet=etat_inondation&facet=etat_neige&facet=etat_canicule&"
-            + "facet=etat_grand_froid&facet=etat_avalanches&refine.nom_dept=%s";
+    private static final String URL = """
+            https://public.opendatasoft.com/api/records/1.0/search/?dataset=risques-meteorologiques-copy&\
+            facet=etat_vent&facet=etat_pluie_inondation&facet=etat_orage&facet=etat_inondation&facet=etat_neige&facet=etat_canicule&\
+            facet=etat_grand_froid&facet=etat_avalanches&refine.nom_dept=%s\
+            """;
 
     private final Logger logger = LoggerFactory.getLogger(MeteoAlerteHandler.class);
     private final MeteoAlertIconProvider iconProvider;
index fc78d04bf43c5f6d1fa639719ada5750bef26a29..b627fee98ca486feb7d5e938c686490e25a948aa 100644 (file)
@@ -218,7 +218,7 @@ public class Forecast {
 
     // generic getter
     public Object getDatapoint(String datapointName) {
-        if (datapointName.equals("condition")) {
+        if ("condition".equals(datapointName)) {
             return String.valueOf(pictocode);
         }
 
index 42c3bddf74c138f700321889e73b23b9e08a5222..0714256e256d46ebea515c339d6fb28a794f425d 100644 (file)
@@ -13,7 +13,6 @@
 package org.openhab.binding.meteoblue.internal;
 
 import java.util.Arrays;
-import java.util.Collections;
 import java.util.HashSet;
 import java.util.Set;
 
@@ -32,7 +31,7 @@ public class MeteoBlueBindingConstants {
     public static final ThingTypeUID THING_TYPE_WEATHER = new ThingTypeUID(BINDING_ID, "weather");
     public static final ThingTypeUID THING_TYPE_BRIDGE = new ThingTypeUID(BINDING_ID, "bridge");
 
-    public static final Set<ThingTypeUID> BRIDGE_THING_TYPES_UIDS = Collections.singleton(THING_TYPE_BRIDGE);
+    public static final Set<ThingTypeUID> BRIDGE_THING_TYPES_UIDS = Set.of(THING_TYPE_BRIDGE);
     public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = new HashSet<>(Arrays.asList(THING_TYPE_WEATHER));
 
     // Bridge configuration settings
index c377be33304e4a85cd6d94d78e7e7673b138051a..6cc35ed9e00a8d9f54532709460a785742735bd6 100644 (file)
@@ -14,7 +14,6 @@ package org.openhab.binding.meteoblue.internal.handler;
 
 import static org.openhab.binding.meteoblue.internal.MeteoBlueBindingConstants.THING_TYPE_BRIDGE;
 
-import java.util.Collections;
 import java.util.Set;
 
 import org.openhab.binding.meteoblue.internal.MeteoBlueBridgeConfig;
@@ -36,7 +35,7 @@ import org.slf4j.LoggerFactory;
  * @author Chris Carman - Initial contribution
  */
 public class MeteoBlueBridgeHandler extends BaseBridgeHandler {
-    public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES = Collections.singleton(THING_TYPE_BRIDGE);
+    public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES = Set.of(THING_TYPE_BRIDGE);
     private final Logger logger = LoggerFactory.getLogger(MeteoBlueBridgeHandler.class);
 
     private String apiKey;
index 3bc1c2484e3cffb60315f5aa17d244e0b2b709d7..66f2f82f8b0e6835f39d76fbf742f52502db45c4 100644 (file)
@@ -230,9 +230,8 @@ public class MeteoBlueHandler extends BaseThingHandler {
 
         // Build a State from this value
         State state = null;
-        if (datapoint instanceof Calendar) {
-            state = new DateTimeType(
-                    ZonedDateTime.ofInstant(((Calendar) datapoint).toInstant(), ZoneId.systemDefault()));
+        if (datapoint instanceof Calendar calendar) {
+            state = new DateTimeType(ZonedDateTime.ofInstant(calendar.toInstant(), ZoneId.systemDefault()));
         } else if (datapoint instanceof Integer) {
             state = getStateForType(channel.getAcceptedItemType(), (Integer) datapoint);
         } else if (datapoint instanceof Number) {
@@ -240,9 +239,9 @@ public class MeteoBlueHandler extends BaseThingHandler {
             state = getStateForType(channel.getAcceptedItemType(), decimalValue);
         } else if (datapoint instanceof String) {
             state = new StringType(datapoint.toString());
-        } else if (datapoint instanceof BufferedImage) {
+        } else if (datapoint instanceof BufferedImage image) {
             ImageItem item = new ImageItem("rain area");
-            state = new RawType(renderImage((BufferedImage) datapoint), "image/png");
+            state = new RawType(renderImage(image), "image/png");
             item.setState(state);
         } else {
             logger.debug("Unsupported value type {}", datapoint.getClass().getSimpleName());
@@ -263,13 +262,13 @@ public class MeteoBlueHandler extends BaseThingHandler {
     private State getStateForType(String type, BigDecimal value) {
         State state = new DecimalType(value);
 
-        if (type.equals("Number:Temperature")) {
+        if ("Number:Temperature".equals(type)) {
             state = new QuantityType<>(value, SIUnits.CELSIUS);
-        } else if (type.equals("Number:Length")) {
+        } else if ("Number:Length".equals(type)) {
             state = new QuantityType<>(value, MILLI(SIUnits.METRE));
-        } else if (type.equals("Number:Pressure")) {
+        } else if ("Number:Pressure".equals(type)) {
             state = new QuantityType<>(value, HECTO(SIUnits.PASCAL));
-        } else if (type.equals("Number:Speed")) {
+        } else if ("Number:Speed".equals(type)) {
             state = new QuantityType<>(value, Units.METRE_PER_SECOND);
         }
 
@@ -335,9 +334,9 @@ public class MeteoBlueHandler extends BaseThingHandler {
 
         String errorMessage = jsonResult.getErrorMessage();
         if (errorMessage != null) {
-            if (errorMessage.equals("MB_REQUEST::DISPATCH: Invalid api key")) {
+            if ("MB_REQUEST::DISPATCH: Invalid api key".equals(errorMessage)) {
                 updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, "Invalid API Key");
-            } else if (errorMessage.equals("MB_REQUEST::DISPATCH: This datafeed is not authorized for your api key")) {
+            } else if ("MB_REQUEST::DISPATCH: This datafeed is not authorized for your api key".equals(errorMessage)) {
                 updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR,
                         "API Key not authorized for this datafeed");
             } else {
index 8cf41ef075543bb451945e1c1a8b74131c95e067..afa1f9311b816bb6d5bd94220c0685467c2e271c 100644 (file)
@@ -19,7 +19,6 @@ import static org.openhab.core.library.unit.SIUnits.*;
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.util.Collections;
 import java.util.Date;
 import java.util.Set;
 import java.util.TooManyListenersException;
@@ -54,7 +53,7 @@ import org.slf4j.LoggerFactory;
  * @author Chris Jackson - Initial contribution
  */
 public class MeteostickBridgeHandler extends BaseBridgeHandler {
-    public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES = Collections.singleton(THING_TYPE_BRIDGE);
+    public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES = Set.of(THING_TYPE_BRIDGE);
 
     private final Logger logger = LoggerFactory.getLogger(MeteostickBridgeHandler.class);
 
@@ -256,7 +255,7 @@ public class MeteostickBridgeHandler extends BaseBridgeHandler {
                     if (rxByte == 13 && rxCnt > 0) {
                         String inputString = new String(rxPacket, 0, rxCnt);
                         logger.debug("MeteoStick received: {}", inputString);
-                        String p[] = inputString.split("\\s+");
+                        String[] p = inputString.split("\\s+");
 
                         switch (p[0]) {
                             case "B": // Barometer
index 3829d3e88322458183b83836ec5e2ce74efd2d5a..c73b12545e8142707273949c898a411567e65142 100644 (file)
@@ -24,5 +24,5 @@ public interface MeteostickEventListener {
      *
      * @param data a line of data from the meteoStick
      */
-    void onDataReceived(String data[]);
+    void onDataReceived(String[] data);
 }
index d86fda0ec649c47c09a99b0547e7c1c41ca7f34b..bb62e1dd7b09bd1586e93c9539bfb8d2881b01b3 100644 (file)
@@ -50,7 +50,7 @@ import org.slf4j.LoggerFactory;
  * @author John Cocula - Added variable spoon size, UoM, wind stats, bug fixes
  */
 public class MeteostickSensorHandler extends BaseThingHandler implements MeteostickEventListener {
-    public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES = Collections.singleton(THING_TYPE_DAVIS);
+    public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES = Set.of(THING_TYPE_DAVIS);
 
     private final Logger logger = LoggerFactory.getLogger(MeteostickSensorHandler.class);
 
index 748e7caf0785b91c59e928b084431ad3792edbf5..f79203cd12d5521ea467acebb1575b1b451bdeab 100644 (file)
@@ -152,8 +152,7 @@ public class MieleApplianceDiscoveryService extends AbstractDiscoveryService imp
             ThingTypeUID thingTypeUID = getThingTypeUidFromModelId(modelId);
 
             if (getSupportedThingTypes().contains(thingTypeUID)) {
-                ThingUID thingUID = new ThingUID(thingTypeUID, bridgeUID, appliance.getApplianceIdentifier().getId());
-                return thingUID;
+                return new ThingUID(thingTypeUID, bridgeUID, appliance.getApplianceIdentifier().getId());
             } else {
                 return null;
             }
index 20aaf8d6e2f9057d3e699b45291f548c4cea6f03..121e0b60bf1a585b31e3c4d016ccae6c5f0c633c 100644 (file)
@@ -150,6 +150,7 @@ public enum CoffeeMachineChannelSelector implements ApplianceChannelSelector {
         }
     }
 
+    @Override
     public State getState(String s) {
         try {
             Method valueOf = typeClass.getMethod("valueOf", String.class);
index 82afac4d06714889ddae6a5cde4755daa9ed43a3..bbcaab2dfa78cc85329a4f0d830c4f35b0a2ecdf 100644 (file)
@@ -186,6 +186,7 @@ public enum DishwasherChannelSelector implements ApplianceChannelSelector {
         }
     }
 
+    @Override
     public State getState(String s) {
         try {
             Method valueOf = typeClass.getMethod("valueOf", String.class);
index 5242b3cc800035c84f1cc6afc97636e28cd7fe86..b3addc8701556f9fc53efce6e19d03a496c0bb99 100644 (file)
@@ -122,6 +122,7 @@ public class DishwasherHandler extends MieleApplianceHandler<DishwasherChannelSe
         updateSwitchStartStopFromState(dp);
     }
 
+    @Override
     public void onApplianceExtendedStateChanged(byte[] extendedDeviceState) {
         if (extendedDeviceState.length < EXTENDED_STATE_MIN_SIZE_BYTES) {
             logger.debug("Insufficient extended state data to extract consumption values: {}", extendedDeviceState);
index 7ca21460e054afdc6ff236e06cdaa0383dfddc55..44f243e554ae32ac5c16eb51a2c1370113c2303e 100644 (file)
@@ -141,6 +141,7 @@ public enum FridgeChannelSelector implements ApplianceChannelSelector {
         }
     }
 
+    @Override
     public State getState(String s) {
         try {
             Method valueOf = typeClass.getMethod("valueOf", String.class);
index f29ac2a5bba82b279722efc2b99a8d76038e9315..f902a94cfdf21682dd2eececb93fdd1b4788c8ce 100644 (file)
@@ -157,6 +157,7 @@ public enum FridgeFreezerChannelSelector implements ApplianceChannelSelector {
         }
     }
 
+    @Override
     public State getState(String s) {
         try {
             Method valueOf = typeClass.getMethod("valueOf", String.class);
index 99d7b305c8d7d9f57fecc410e4bff5abb1acf169..eecc93cdc56309c65445f55c2801c96c85555c0b 100644 (file)
@@ -161,6 +161,7 @@ public enum HobChannelSelector implements ApplianceChannelSelector {
         }
     }
 
+    @Override
     public State getState(String s) {
         try {
             Method valueOf = typeClass.getMethod("valueOf", String.class);
index 36d1f7b6e57eaddf4e567ccd568f16ac7b92fa4b..752b1b7fb8882266fa6dade606d5d0274ab438f6 100644 (file)
@@ -127,6 +127,7 @@ public enum HoodChannelSelector implements ApplianceChannelSelector {
         }
     }
 
+    @Override
     public State getState(String s) {
         try {
             Method valueOf = typeClass.getMethod("valueOf", String.class);
index 9dee5053bc6dda61377328068c10b52cd719d326..7d29682a5c984ac38d81744937c52d52b5fec5e4 100644 (file)
@@ -265,8 +265,8 @@ public abstract class MieleApplianceHandler<E extends Enum<E> & ApplianceChannel
                     byte[] extendedStateBytes = DeviceUtil.stringToBytes(dp.Value);
                     logger.trace("Extended device state for {}: {}", getThing().getUID(),
                             DeviceUtil.bytesToHex(extendedStateBytes));
-                    if (this instanceof ExtendedDeviceStateListener) {
-                        ((ExtendedDeviceStateListener) this).onApplianceExtendedStateChanged(extendedStateBytes);
+                    if (this instanceof ExtendedDeviceStateListener listener) {
+                        listener.onApplianceExtendedStateChanged(extendedStateBytes);
                     }
                 }
                 return;
@@ -441,8 +441,8 @@ public abstract class MieleApplianceHandler<E extends Enum<E> & ApplianceChannel
                 return null;
             }
             ThingHandler handler = bridge.getHandler();
-            if (handler instanceof MieleBridgeHandler) {
-                this.bridgeHandler = (MieleBridgeHandler) handler;
+            if (handler instanceof MieleBridgeHandler mieleBridgeHandler) {
+                this.bridgeHandler = mieleBridgeHandler;
             }
         }
         return this.bridgeHandler;
index dcd983a03e97df678e07dabb7ad9858556b664d0..12294effb1da11efef695ee8aab8055e46cba5c2 100644 (file)
@@ -195,6 +195,7 @@ public enum OvenChannelSelector implements ApplianceChannelSelector {
         }
     }
 
+    @Override
     public State getState(String s) {
         try {
             Method valueOf = typeClass.getMethod("valueOf", String.class);
index 8ccaecf4c677b51d04e5b1469549071cc409cff0..82eeabf08592465e64e952330ca846616cebba0a 100644 (file)
@@ -195,6 +195,7 @@ public enum TumbleDryerChannelSelector implements ApplianceChannelSelector {
         }
     }
 
+    @Override
     public State getState(String s) {
         try {
             Method valueOf = typeClass.getMethod("valueOf", String.class);
index 9dca96925fa763db6566ff90eb461070f22883ac..df9d1b129f80599d86ebd76b627154b73383415c 100644 (file)
@@ -210,6 +210,7 @@ public enum WashingMachineChannelSelector implements ApplianceChannelSelector {
         }
     }
 
+    @Override
     public State getState(String s) {
         try {
             Method valueOf = typeClass.getMethod("valueOf", String.class);
index 57f872640cf54ca1754286175478b7716946ee94..894225053be60866674e07a43deac93bea3f922c 100644 (file)
@@ -123,6 +123,7 @@ public class WashingMachineHandler extends MieleApplianceHandler<WashingMachineC
         updateSwitchStartStopFromState(dp);
     }
 
+    @Override
     public void onApplianceExtendedStateChanged(byte[] extendedDeviceState) {
         if (extendedDeviceState.length < EXTENDED_STATE_MIN_SIZE_BYTES) {
             logger.debug("Insufficient extended state data to extract consumption values: {}", extendedDeviceState);
index ef29930563758d9bb2dea4cc32e4df8f4e3b9893..2e8e80e96d0b51371b2fed5f9c2038cd2de1a1d4 100644 (file)
@@ -78,8 +78,8 @@ public class ThingsTemplateGenerator {
 
     private String getLocale(Bridge bridge) {
         var locale = bridge.getConfiguration().get(MieleCloudBindingConstants.CONFIG_PARAM_LOCALE);
-        if (locale instanceof String) {
-            return (String) locale;
+        if (locale instanceof String str) {
+            return str;
         } else {
             return "en";
         }
index 3b44c673c69a62377fb53f57945612f45908dab0..d2f6295b1da76d2cfeaf915f894a319508be8401 100644 (file)
@@ -171,10 +171,13 @@ public final class AccountOverviewServlet extends AbstractShowPageServlet {
 
     private String renderSslWarning(HttpServletRequest request, String skeleton) {
         if (!request.isSecure()) {
-            return skeleton.replace(NO_SSL_WARNING_PLACEHOLDER, "<div class=\"alert alert-danger\" role=\"alert\">\n"
-                    + "                    Warning: We strongly advice to proceed only with SSL enabled for a secure data exchange.\n"
-                    + "                    See <a href=\"https://www.openhab.org/docs/installation/security.html\">Securing access to openHAB</a> for details.\n"
-                    + "                </div>");
+            return skeleton.replace(NO_SSL_WARNING_PLACEHOLDER,
+                    """
+                            <div class="alert alert-danger" role="alert">
+                                                Warning: We strongly advice to proceed only with SSL enabled for a secure data exchange.
+                                                See <a href="https://www.openhab.org/docs/installation/security.html">Securing access to openHAB</a> for details.
+                                            </div>\
+                            """);
         } else {
             return skeleton.replace(NO_SSL_WARNING_PLACEHOLDER, "");
         }
index 2bd48e50465a7ea290a1d6768218f22daa367de0..074ab5c087c09e862e4f5e3ee3ee74e4d69b5265 100644 (file)
@@ -200,8 +200,7 @@ public class ThingDiscoveryService extends AbstractDiscoveryService implements D
 
     @Override
     public void setThingHandler(ThingHandler handler) {
-        if (handler instanceof MieleBridgeHandler) {
-            var bridgeHandler = (MieleBridgeHandler) handler;
+        if (handler instanceof MieleBridgeHandler bridgeHandler) {
             bridgeHandler.setDiscoveryService(this);
             this.bridgeHandler = bridgeHandler;
         }
index dbecb0c4f38476b4bab0effaf9c3fbd450dd668c..6db6675ce2c765da01dc15b30a5f5a5eb6a4144f 100644 (file)
@@ -82,10 +82,10 @@ public final class ThingInformationExtractor {
         if (deviceType.isPresent() && techType.isPresent()) {
             return Optional.of(deviceType.get() + " " + techType.get());
         }
-        if (!deviceType.isPresent() && techType.isPresent()) {
+        if (deviceType.isEmpty() && techType.isPresent()) {
             return techType;
         }
-        if (deviceType.isPresent() && !techType.isPresent()) {
+        if (deviceType.isPresent() && techType.isEmpty()) {
             return deviceType;
         }
         return Optional.empty();
index a18af7171c2d15583b226e71ed83550c30d05cc3..b5b63b5bb6a64a1d11f0ec94c5cef6bf83543f72 100644 (file)
@@ -80,7 +80,7 @@ public abstract class AbstractMieleThingHandler extends BaseThingHandler {
         }
 
         BridgeHandler handler = bridge.getHandler();
-        if (handler == null || !(handler instanceof MieleBridgeHandler)) {
+        if (!(handler instanceof MieleBridgeHandler)) {
             return Optional.empty();
         }
 
index bab514ffd8252caae0f9672f6cc73d7452f7f640..4a39cadfabe557b610ec77416cf017c34f11d15c 100644 (file)
@@ -13,8 +13,8 @@
 package org.openhab.binding.mielecloud.internal.handler;
 
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Optional;
+import java.util.Set;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ScheduledExecutorService;
@@ -230,7 +230,7 @@ public class MieleBridgeHandler extends BaseBridgeHandler
 
     private void tryInitializeWebservice() {
         Optional<String> accessToken = tokenRefresher.getAccessTokenFromStorage(getOAuthServiceHandle());
-        if (!accessToken.isPresent()) {
+        if (accessToken.isEmpty()) {
             logger.debug("No OAuth2 access token available. Retrying later.");
             updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_PENDING,
                     I18NKeys.BRIDGE_STATUS_DESCRIPTION_ACCESS_TOKEN_NOT_CONFIGURED);
@@ -301,8 +301,7 @@ public class MieleBridgeHandler extends BaseBridgeHandler
     @Override
     public Optional<String> getLanguage() {
         Object languageObject = thing.getConfiguration().get(MieleCloudBindingConstants.CONFIG_PARAM_LOCALE);
-        if (languageObject instanceof String) {
-            String language = (String) languageObject;
+        if (languageObject instanceof String language) {
             if (language.isEmpty() || !LocaleValidator.isValidLanguage(language)) {
                 return Optional.empty();
             } else {
@@ -348,6 +347,6 @@ public class MieleBridgeHandler extends BaseBridgeHandler
 
     @Override
     public Collection<Class<? extends ThingHandlerService>> getServices() {
-        return Collections.singleton(ThingDiscoveryService.class);
+        return Set.of(ThingDiscoveryService.class);
     }
 }
index a1a50d28a71a486d657fb01c0ea0aa1702eb0635..02404fb1de510c0794239ed2275fd9bc6716274c 100644 (file)
@@ -46,7 +46,7 @@ public final class ChannelTypeUtil {
      * Converts an {@link Optional} of {@link String} to {@link State}.
      */
     public static State stringToState(Optional<String> value) {
-        return value.filter(v -> !v.isEmpty()).filter(v -> !v.equals("null")).map(v -> (State) new StringType(v))
+        return value.filter(v -> !v.isEmpty()).filter(v -> !"null".equals(v)).map(v -> (State) new StringType(v))
                 .orElse(UnDefType.UNDEF);
     }
 
index 44c6b1fec04c1dcdcd9d4c18511b51e49ab6a2bd..2d4a6bde612fe4874ecd341c024f521dfcf63869 100644 (file)
@@ -132,7 +132,7 @@ public final class DefaultMieleWebservice implements MieleWebservice, SseListene
     @Nullable
     private Request createSseRequest(String endpoint) {
         Optional<String> accessToken = this.accessToken;
-        if (!accessToken.isPresent()) {
+        if (accessToken.isEmpty()) {
             logger.warn("No access token present.");
             return null;
         }
@@ -243,7 +243,7 @@ public final class DefaultMieleWebservice implements MieleWebservice, SseListene
     @Override
     public void logout() {
         Optional<String> accessToken = this.accessToken;
-        if (!accessToken.isPresent()) {
+        if (accessToken.isEmpty()) {
             logger.debug("No access token present.");
             return;
         }
@@ -301,7 +301,7 @@ public final class DefaultMieleWebservice implements MieleWebservice, SseListene
      */
     private Actions getActions(String deviceId) {
         Optional<String> accessToken = this.accessToken;
-        if (!accessToken.isPresent()) {
+        if (accessToken.isEmpty()) {
             throw new MieleWebserviceException("Missing access token.", ConnectionError.AUTHORIZATION_FAILED);
         }
 
@@ -337,7 +337,7 @@ public final class DefaultMieleWebservice implements MieleWebservice, SseListene
     private void putActions(String deviceId, String json) {
         retryStrategy.performRetryableOperation(() -> {
             Optional<String> accessToken = this.accessToken;
-            if (!accessToken.isPresent()) {
+            if (accessToken.isEmpty()) {
                 throw new MieleWebserviceException("Missing access token.", ConnectionError.AUTHORIZATION_FAILED);
             }
 
index 6ffc29cc9e8cff586d4f5cbb9ae12e221b1be0a3..7e70b08e646e8eb654897dc81d69f33b34336976 100644 (file)
@@ -81,9 +81,9 @@ public final class HttpUtil {
     private static String getHttpErrorMessageFromCloudResponse(Response response) {
         String exceptionMessage = "HTTP error " + response.getStatus() + ": " + response.getReason();
 
-        if (response instanceof ContentResponse) {
+        if (response instanceof ContentResponse contentResponse) {
             try {
-                ErrorMessage errorMessage = ErrorMessage.fromJson(((ContentResponse) response).getContentAsString());
+                ErrorMessage errorMessage = ErrorMessage.fromJson(contentResponse.getContentAsString());
                 exceptionMessage += "\nCloud returned message: " + errorMessage.getMessage();
             } catch (MieleSyntaxException e) {
                 exceptionMessage += "\nCloud returned invalid message.";
index 64477b6f911d325427bd8f9345a09cf856f42d9d..e54ba0df4985099fef10a1df67fec69329ed124b 100644 (file)
@@ -181,7 +181,7 @@ public class DeviceState {
         Optional<Integer> targetTemperature = getTargetTemperature(0);
         Optional<Integer> currentTemperature = getTemperature(0);
 
-        if (!targetTemperature.isPresent() || !currentTemperature.isPresent()) {
+        if (targetTemperature.isEmpty() || currentTemperature.isEmpty()) {
             return Optional.empty();
         }
 
@@ -452,7 +452,7 @@ public class DeviceState {
         Optional<Boolean> doorState = getDoorState();
         Optional<Boolean> failure = device.flatMap(Device::getState).flatMap(State::getSignalFailure);
 
-        if (!doorState.isPresent() || !failure.isPresent()) {
+        if (doorState.isEmpty() || failure.isEmpty()) {
             return Optional.empty();
         }
 
index 853905829512bd8d28e38d2bd8393a5fc227e264..4a4cccda6a2910acd0e0d4cb0a14b92e6a32d8fb 100644 (file)
@@ -86,7 +86,7 @@ public class TransitionState {
     }
 
     private Optional<Boolean> hasFinishedFromPreviousState(DeviceState prevState) {
-        if (!prevState.getStateType().isPresent()) {
+        if (prevState.getStateType().isEmpty()) {
             return Optional.empty();
         }
 
index ca529487a7b909c4cee3cbf453e0a893beb4bc40..1540d832f1aeca4619e5765e3981c6c2ddd44e73 100644 (file)
@@ -71,7 +71,7 @@ public class AuthorizationFailedRetryStrategy implements RetryStrategy {
         } catch (MieleWebserviceException e) {
             // Workaround for HTML response from cloud in case of a 401 HTTP error.
             var cause = e.getCause();
-            if (cause == null || !(cause instanceof ExecutionException)) {
+            if (!(cause instanceof ExecutionException)) {
                 throw e;
             }
 
index 934a43beae37c4c483f1483f5624e6e8577895c1..2efd61b8d92a9561f9e055ba4edbe4496b11acee 100644 (file)
@@ -18,6 +18,7 @@ import static org.mockito.Mockito.*;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
+import java.util.Map;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.jdt.annotation.Nullable;
@@ -138,7 +139,7 @@ public class ThingsTemplateGeneratorTest {
         when(discoveryResult.getThingTypeUID()).thenReturn(thingTypeUid);
         when(discoveryResult.getThingUID()).thenReturn(new ThingUID(thingTypeUid, id, bridgeId));
         when(discoveryResult.getProperties())
-                .thenReturn(Collections.singletonMap(MieleCloudBindingConstants.CONFIG_PARAM_DEVICE_IDENTIFIER, id));
+                .thenReturn(Map.of(MieleCloudBindingConstants.CONFIG_PARAM_DEVICE_IDENTIFIER, id));
         return discoveryResult;
     }
 
@@ -177,9 +178,12 @@ public class ThingsTemplateGeneratorTest {
                 Collections.emptyList());
 
         // then:
-        assertEquals("Bridge mielecloud:account:mielebridge [ email=\"everyone@openhab.org\", locale=\"de\" ] {\n"
-                + "    Thing oven 000137439123 \"Oven H7860XY\" [ deviceIdentifier=\"000137439123\" ]\n"
-                + "    Thing hob 000160106123 [ deviceIdentifier=\"000160106123\" ]\n}", template);
+        assertEquals("""
+                Bridge mielecloud:account:mielebridge [ email="everyone@openhab.org", locale="de" ] {
+                    Thing oven 000137439123 "Oven H7860XY" [ deviceIdentifier="000137439123" ]
+                    Thing hob 000160106123 [ deviceIdentifier="000160106123" ]
+                }\
+                """, template);
     }
 
     @Test
@@ -203,10 +207,12 @@ public class ThingsTemplateGeneratorTest {
                 discoveredThings);
 
         // then:
-        assertEquals("Bridge mielecloud:account:mielebridge [ email=\"everyone@openhab.org\", locale=\"de\" ] {\n"
-                + "    Thing fridge_freezer 000154106123 \"Fridge-Freezer Kitchen\" [ deviceIdentifier=\"000154106123\" ]\n"
-                + "    Thing washing_machine 000189106123 \"Washing Machine\" [ deviceIdentifier=\"000189106123\" ]\n}",
-                template);
+        assertEquals("""
+                Bridge mielecloud:account:mielebridge [ email="everyone@openhab.org", locale="de" ] {
+                    Thing fridge_freezer 000154106123 "Fridge-Freezer Kitchen" [ deviceIdentifier="000154106123" ]
+                    Thing washing_machine 000189106123 "Washing Machine" [ deviceIdentifier="000189106123" ]
+                }\
+                """, template);
     }
 
     @Test
@@ -237,12 +243,14 @@ public class ThingsTemplateGeneratorTest {
                 discoveredThings);
 
         // then:
-        assertEquals("Bridge mielecloud:account:mielebridge [ email=\"openhab@openhab.org\", locale=\"de\" ] {\n"
-                + "    Thing oven 000137439123 \"Oven H7860XY\" [ deviceIdentifier=\"000137439123\" ]\n"
-                + "    Thing hob 000160106123 [ deviceIdentifier=\"000160106123\" ]\n"
-                + "    Thing fridge_freezer 000154106123 \"Fridge-Freezer Kitchen\" [ deviceIdentifier=\"000154106123\" ]\n"
-                + "    Thing washing_machine 000189106123 \"Washing Machine\" [ deviceIdentifier=\"000189106123\" ]\n}",
-                template);
+        assertEquals("""
+                Bridge mielecloud:account:mielebridge [ email="openhab@openhab.org", locale="de" ] {
+                    Thing oven 000137439123 "Oven H7860XY" [ deviceIdentifier="000137439123" ]
+                    Thing hob 000160106123 [ deviceIdentifier="000160106123" ]
+                    Thing fridge_freezer 000154106123 "Fridge-Freezer Kitchen" [ deviceIdentifier="000154106123" ]
+                    Thing washing_machine 000189106123 "Washing Machine" [ deviceIdentifier="000189106123" ]
+                }\
+                """, template);
     }
 
     @Test
index da10dd4f9ae00213f8f4fc4eb1203faf50d7f976..4a249353f73c2da84a5ed93d506642bf78c8c62c 100644 (file)
@@ -398,7 +398,6 @@ public class DefaultMieleWebserviceTest {
 
         try (DefaultMieleWebservice webservice = new DefaultMieleWebservice(requestFactory, retryStrategy,
                 new DeviceStateDispatcher(), scheduler)) {
-
             // when:
             assertThrows(IllegalArgumentException.class, () -> {
                 webservice.putProcessAction(DEVICE_IDENTIFIER, ProcessAction.UNKNOWN);
index 0a69c71f99755c39663c402cf5185067b7ea5850..24cd24b43e47ddc9d00aa9246add9d655df1f3ae 100644 (file)
@@ -125,7 +125,7 @@ public class ActionsStateTest {
         // given:
         Actions actions = mock(Actions.class);
         ActionsState actionState = new ActionsState(DEVICE_IDENTIFIER, actions);
-        when(actions.getProcessAction()).thenReturn(Collections.singletonList(ProcessAction.START));
+        when(actions.getProcessAction()).thenReturn(List.of(ProcessAction.START));
 
         // when:
         boolean canBeStarted = actionState.canBeStarted();
@@ -141,7 +141,7 @@ public class ActionsStateTest {
         // given:
         Actions actions = mock(Actions.class);
         ActionsState actionState = new ActionsState(DEVICE_IDENTIFIER, actions);
-        when(actions.getProcessAction()).thenReturn(Collections.singletonList(ProcessAction.STOP));
+        when(actions.getProcessAction()).thenReturn(List.of(ProcessAction.STOP));
 
         // when:
         boolean canBeStarted = actionState.canBeStarted();
@@ -173,7 +173,7 @@ public class ActionsStateTest {
         // given:
         Actions actions = mock(Actions.class);
         ActionsState actionState = new ActionsState(DEVICE_IDENTIFIER, actions);
-        when(actions.getProcessAction()).thenReturn(Collections.singletonList(ProcessAction.START_SUPERCOOLING));
+        when(actions.getProcessAction()).thenReturn(List.of(ProcessAction.START_SUPERCOOLING));
 
         // when:
         boolean canStartSupercooling = actionState.canStartSupercooling();
@@ -189,7 +189,7 @@ public class ActionsStateTest {
         // given:
         Actions actions = mock(Actions.class);
         ActionsState actionState = new ActionsState(DEVICE_IDENTIFIER, actions);
-        when(actions.getProcessAction()).thenReturn(Collections.singletonList(ProcessAction.START_SUPERFREEZING));
+        when(actions.getProcessAction()).thenReturn(List.of(ProcessAction.START_SUPERFREEZING));
 
         // when:
         boolean canStartSuperfreezing = actionState.canStartSuperfreezing();
@@ -205,7 +205,7 @@ public class ActionsStateTest {
         // given:
         Actions actions = mock(Actions.class);
         ActionsState actionState = new ActionsState(DEVICE_IDENTIFIER, actions);
-        when(actions.getLight()).thenReturn(Collections.singletonList(Light.ENABLE));
+        when(actions.getLight()).thenReturn(List.of(Light.ENABLE));
 
         // when:
         boolean canEnableLight = actionState.canEnableLight();
@@ -219,7 +219,7 @@ public class ActionsStateTest {
         // given:
         Actions actions = mock(Actions.class);
         ActionsState actionState = new ActionsState(DEVICE_IDENTIFIER, actions);
-        when(actions.getLight()).thenReturn(Collections.singletonList(Light.DISABLE));
+        when(actions.getLight()).thenReturn(List.of(Light.DISABLE));
 
         // when:
         boolean canDisableLight = actionState.canDisableLight();
@@ -232,7 +232,7 @@ public class ActionsStateTest {
     public void testCanControlLightReturnsTrueWhenLightCanBeEnabled() {
         // given:
         Actions actions = mock(Actions.class);
-        when(actions.getLight()).thenReturn(Collections.singletonList(Light.ENABLE));
+        when(actions.getLight()).thenReturn(List.of(Light.ENABLE));
 
         ActionsState actionState = new ActionsState(DEVICE_IDENTIFIER, actions);
 
@@ -247,7 +247,7 @@ public class ActionsStateTest {
     public void testCanControlLightReturnsTrueWhenLightCanBeDisabled() {
         // given:
         Actions actions = mock(Actions.class);
-        when(actions.getLight()).thenReturn(Collections.singletonList(Light.DISABLE));
+        when(actions.getLight()).thenReturn(List.of(Light.DISABLE));
 
         ActionsState actionState = new ActionsState(DEVICE_IDENTIFIER, actions);
 
@@ -307,7 +307,7 @@ public class ActionsStateTest {
     public void testProgramIdCanBeSetWhenProgramIdIsPresent() {
         // given:
         Actions actions = mock(Actions.class);
-        when(actions.getProgramId()).thenReturn(Collections.singletonList(1));
+        when(actions.getProgramId()).thenReturn(List.of(1));
 
         ActionsState actionState = new ActionsState(DEVICE_IDENTIFIER, actions);
 
index 616c9fbdd0c893df472f30c8b7fe77cb31019fcd..e2a4592e0adf43a03434884fc9d0b51407a7aac3 100644 (file)
@@ -18,6 +18,7 @@ import static org.mockito.Mockito.*;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.LinkedList;
+import java.util.List;
 import java.util.Optional;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
@@ -851,7 +852,7 @@ public class DeviceStateTest {
         when(plateStepMock.getValueLocalized()).thenReturn(Optional.empty());
 
         State state = mock(State.class);
-        when(state.getPlateStep()).thenReturn(Collections.singletonList(plateStepMock));
+        when(state.getPlateStep()).thenReturn(List.of(plateStepMock));
         when(state.getStatus()).thenReturn(Optional.of(status));
 
         Device device = mock(Device.class);
@@ -1111,7 +1112,7 @@ public class DeviceStateTest {
 
         State state = mock(State.class);
         when(state.getStatus()).thenReturn(Optional.of(status));
-        when(state.getElapsedTime()).thenReturn(Optional.of(Collections.singletonList(2)));
+        when(state.getElapsedTime()).thenReturn(Optional.of(List.of(2)));
 
         Device device = mock(Device.class);
         when(device.getState()).thenReturn(Optional.of(state));
@@ -1866,7 +1867,7 @@ public class DeviceStateTest {
 
         // Test TargetTemperature:
         Temperature targetTemperatureMock = mock(Temperature.class);
-        when(state.getTargetTemperature()).thenReturn(Collections.singletonList(targetTemperatureMock));
+        when(state.getTargetTemperature()).thenReturn(List.of(targetTemperatureMock));
         when(targetTemperatureMock.getValueLocalized()).thenReturn(Optional.of(200));
         // when:
         Optional<Integer> targetTemperature = deviceState.getTargetTemperature(0);
@@ -1875,7 +1876,7 @@ public class DeviceStateTest {
 
         // Test Temperature:
         Temperature temperature = mock(Temperature.class);
-        when(state.getTemperature()).thenReturn(Collections.singletonList(temperature));
+        when(state.getTemperature()).thenReturn(List.of(temperature));
         when(temperature.getValueLocalized()).thenReturn(Optional.of(200));
         // when:
         Optional<Integer> t = deviceState.getTemperature(0);
index afbaeff3ac8e12d9d5d71765b475e7355d2532d2..30c7fecd6b2402076d1126f4ed7f0b4dab4f1918 100644 (file)
@@ -16,9 +16,9 @@ import static org.junit.jupiter.api.Assertions.*;
 import static org.openhab.binding.mielecloud.internal.util.ResourceUtil.getResourceAsString;
 
 import java.io.IOException;
-import java.util.Collections;
 import java.util.List;
 import java.util.Optional;
+import java.util.Set;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.junit.jupiter.api.Test;
@@ -38,13 +38,13 @@ public class ActionsCollectionTest {
         ActionsCollection collection = ActionsCollection.fromJson(json);
 
         // then:
-        assertEquals(Collections.singleton("000123456789"), collection.getDeviceIdentifiers());
+        assertEquals(Set.of("000123456789"), collection.getDeviceIdentifiers());
         Actions actions = collection.getActions("000123456789");
 
         assertEquals(List.of(ProcessAction.START, ProcessAction.STOP), actions.getProcessAction());
-        assertEquals(Collections.singletonList(Light.DISABLE), actions.getLight());
+        assertEquals(List.of(Light.DISABLE), actions.getLight());
         assertEquals(Optional.empty(), actions.getStartTime());
-        assertEquals(Collections.singletonList(123), actions.getProgramId());
+        assertEquals(List.of(123), actions.getProgramId());
         assertEquals(Optional.of(true), actions.getPowerOn());
         assertEquals(Optional.of(false), actions.getPowerOff());
     }
@@ -69,6 +69,6 @@ public class ActionsCollectionTest {
         DeviceCollection collection = DeviceCollection.fromJson(json);
 
         // then:
-        assertEquals(Collections.singleton("mac-00124B000AE539D6"), collection.getDeviceIdentifiers());
+        assertEquals(Set.of("mac-00124B000AE539D6"), collection.getDeviceIdentifiers());
     }
 }
index dd4ea2571a61c969e8a3405b9ab14f82ae672ed9..959662f982f75e34f4508f30604302f2cd56b4c0 100644 (file)
@@ -16,7 +16,6 @@ import static org.junit.jupiter.api.Assertions.*;
 
 import java.io.IOException;
 import java.util.Arrays;
-import java.util.Collections;
 import java.util.List;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
@@ -112,7 +111,7 @@ public class ActionsTest {
         Actions actions = new Gson().fromJson(json, Actions.class);
 
         // then:
-        assertEquals(Collections.singletonList(ProcessAction.START), actions.getProcessAction());
+        assertEquals(List.of(ProcessAction.START), actions.getProcessAction());
     }
 
     @Test
index 96e2d8018c81cbc9dc2c4a39ee7fdaab9844a67a..cf52e3b01a44e4c85bd6d6e25475a2932df5b978 100644 (file)
@@ -14,7 +14,6 @@ package org.openhab.binding.mihome.internal.discovery;
 
 import static org.openhab.binding.mihome.internal.XiaomiGatewayBindingConstants.*;
 
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Set;
@@ -43,7 +42,7 @@ import com.google.gson.JsonObject;
 @Component(service = DiscoveryService.class, configurationPid = "discovery.mihome")
 public class XiaomiBridgeDiscoveryService extends AbstractDiscoveryService implements XiaomiSocketListener {
 
-    private static final Set<ThingTypeUID> SUPPORTED_THING_TYPES = Collections.singleton(THING_TYPE_BRIDGE);
+    private static final Set<ThingTypeUID> SUPPORTED_THING_TYPES = Set.of(THING_TYPE_BRIDGE);
     private static final int DISCOVERY_TIMEOUT_SEC = 30;
 
     private final Logger logger = LoggerFactory.getLogger(XiaomiBridgeDiscoveryService.class);
@@ -78,7 +77,7 @@ public class XiaomiBridgeDiscoveryService extends AbstractDiscoveryService imple
     @Override
     public void onDataReceived(JsonObject data) {
         logger.debug("Received message {}", data);
-        if (data.get("cmd").getAsString().equals("iam")) {
+        if ("iam".equals(data.get("cmd").getAsString())) {
             getGatewayInfo(data);
         }
     }
index c2733c5ded0313f6cf99fc4e81e445a845ecca83..28a2ed31fb4b5fe44aa2e5f6df6ceeee026f882c 100644 (file)
@@ -91,7 +91,7 @@ public class XiaomiItemDiscoveryService extends AbstractDiscoveryService impleme
 
     @Override
     public void onItemUpdate(String sid, String command, JsonObject data) {
-        if (command.equals("read_ack") || command.equals("report") || command.equals("heartbeat")) {
+        if ("read_ack".equals(command) || "report".equals(command) || "heartbeat".equals(command)) {
             String model = data.get("model").getAsString();
 
             ThingTypeUID thingType = getThingTypeForModel(model);
index 5a6511153adaaeea8a77eebf1959868ef321445e..9cda485b122ac3bc4f5d2c9cb5c2d2cc09f0b5e5 100644 (file)
@@ -62,8 +62,8 @@ public class XiaomiActorGatewayHandler extends XiaomiActorBaseHandler {
     void execute(ChannelUID channelUID, Command command) {
         switch (channelUID.getId()) {
             case CHANNEL_BRIGHTNESS:
-                if (command instanceof PercentType) {
-                    int newBright = ((PercentType) command).intValue();
+                if (command instanceof PercentType percentCommand) {
+                    int newBright = percentCommand.intValue();
                     if (lastBrigthness != newBright) {
                         lastBrigthness = newBright;
                         logger.debug("Set brigthness to {}", lastBrigthness);
@@ -78,16 +78,15 @@ public class XiaomiActorGatewayHandler extends XiaomiActorBaseHandler {
                 }
                 break;
             case CHANNEL_COLOR:
-                if (command instanceof HSBType) {
-                    lastColor = ((HSBType) command).getRGB() & 0xffffff;
+                if (command instanceof HSBType hsbCommand) {
+                    lastColor = hsbCommand.getRGB() & 0xffffff;
                     writeBridgeLightColor(lastColor, lastBrigthness);
                     return;
                 }
                 break;
             case CHANNEL_COLOR_TEMPERATURE:
-                if (command instanceof PercentType) {
-                    PercentType colorTemperature = (PercentType) command;
-                    int kelvin = (COLOR_TEMPERATURE_MAX - COLOR_TEMPERATURE_MIN) / 100 * colorTemperature.intValue()
+                if (command instanceof PercentType percentCommand) {
+                    int kelvin = (COLOR_TEMPERATURE_MAX - COLOR_TEMPERATURE_MIN) / 100 * percentCommand.intValue()
                             + COLOR_TEMPERATURE_MIN;
                     int color = ColorUtil.getRGBFromK(kelvin);
                     writeBridgeLightColor(color, lastBrigthness);
@@ -97,23 +96,23 @@ public class XiaomiActorGatewayHandler extends XiaomiActorBaseHandler {
                 }
                 break;
             case CHANNEL_GATEWAY_SOUND:
-                if (command instanceof DecimalType) {
-                    writeBridgeRingtone(((DecimalType) command).intValue(), lastVolume);
+                if (command instanceof DecimalType decimalCommand) {
+                    writeBridgeRingtone(decimalCommand.intValue(), lastVolume);
                     updateState(CHANNEL_GATEWAY_SOUND_SWITCH, OnOffType.ON);
                     return;
                 }
                 break;
             case CHANNEL_GATEWAY_SOUND_SWITCH:
-                if (command instanceof OnOffType) {
-                    if (((OnOffType) command) == OnOffType.OFF) {
+                if (command instanceof OnOffType onOffCommand) {
+                    if (onOffCommand == OnOffType.OFF) {
                         stopRingtone();
                     }
                     return;
                 }
                 break;
             case CHANNEL_GATEWAY_VOLUME:
-                if (command instanceof DecimalType) {
-                    updateLastVolume((DecimalType) command);
+                if (command instanceof DecimalType decimalCommand) {
+                    updateLastVolume(decimalCommand);
                 }
                 return;
         }
index d1c53b42bcf4830a9327d475774b494f8c8954ac..edd5d707684f7dd2d1fa55aac9ffee03fda18f95 100644 (file)
@@ -66,7 +66,7 @@ public class XiaomiBridgeHandler extends ConfigStatusBridgeHandler implements Xi
     private static final String YES = "yes";
     private static final String NO = "no";
 
-    public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES = Collections.singleton(THING_TYPE_BRIDGE);
+    public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES = Set.of(THING_TYPE_BRIDGE);
     private static final EncryptionHelper CRYPTER = new EncryptionHelper();
     private static Map<String, JsonObject> retentionInbox = new ConcurrentHashMap<>();
 
@@ -370,15 +370,15 @@ public class XiaomiBridgeHandler extends ConfigStatusBridgeHandler implements Xi
     }
 
     private String escapeQuotes(String string) {
-        return string.replaceAll("\"", "\\\\\"");
+        return string.replace("\"", "\\\\\"");
     }
 
     private int getConfigInteger(Configuration config, String key) {
         Object value = config.get(key);
-        if (value instanceof BigDecimal) {
-            return ((BigDecimal) value).intValue();
-        } else if (value instanceof String) {
-            return Integer.parseInt((String) value);
+        if (value instanceof BigDecimal decimal) {
+            return decimal.intValue();
+        } else if (value instanceof String str) {
+            return Integer.parseInt(str);
         } else {
             return (Integer) value;
         }
index f6fd19771addae6edbff7d4e60b440678fe1d499..28263556f0e0a2331839f4f572ebd51fdb03b828 100644 (file)
@@ -203,8 +203,8 @@ public class XiaomiDeviceBaseHandler extends BaseThingHandler implements XiaomiI
 
     void execute(ChannelUID channelUID, Command command) {
         if (CHANNEL_WRITE_MSG.equals(channelUID.getId())) {
-            if (command instanceof StringType) {
-                getXiaomiBridgeHandler().writeToDevice(itemId, ((StringType) command).toFullString());
+            if (command instanceof StringType str) {
+                getXiaomiBridgeHandler().writeToDevice(itemId, str.toFullString());
             } else {
                 logger.debug("Command \"{}\" has to be of StringType", command);
             }
@@ -246,8 +246,8 @@ public class XiaomiDeviceBaseHandler extends BaseThingHandler implements XiaomiI
                 return null;
             }
             ThingHandler handler = bridge.getHandler();
-            if (handler instanceof XiaomiBridgeHandler) {
-                this.bridgeHandler = (XiaomiBridgeHandler) handler;
+            if (handler instanceof XiaomiBridgeHandler xiaomiBridgeHandler) {
+                this.bridgeHandler = xiaomiBridgeHandler;
                 this.bridgeHandler.registerItemListener(this);
             } else {
                 return null;
index c35b1a29a45c3eb2ed75caf5e32e7b006d5cfb92..d62289319fae8edf7286db1dfd2e02923c71077d 100644 (file)
@@ -81,8 +81,8 @@ public class XiaomiSensorMagnetHandler extends XiaomiSensorBaseHandlerWithTimer
     @Override
     void execute(ChannelUID channelUID, Command command) {
         if (CHANNEL_OPEN_ALARM_TIMER.equals(channelUID.getId())) {
-            if (command != null && command instanceof DecimalType) {
-                setTimerFromDecimalType((DecimalType) command);
+            if (command instanceof DecimalType decimalCommand) {
+                setTimerFromDecimalType(decimalCommand);
                 return;
             }
             // Only gets here, if no condition was met
index 3641b17bbf0cd43b71c7fa10cc48e5910d581c81..23a3e9414daf087a0cb370b8c8bd4030edc46491 100644 (file)
@@ -66,8 +66,8 @@ public class XiaomiSensorMotionHandler extends XiaomiSensorBaseHandlerWithTimer
     @Override
     void execute(ChannelUID channelUID, Command command) {
         if (CHANNEL_MOTION_OFF_TIMER.equals(channelUID.getId())) {
-            if (command != null && command instanceof DecimalType) {
-                setTimerFromDecimalType((DecimalType) command);
+            if (command instanceof DecimalType decimalCommand) {
+                setTimerFromDecimalType(decimalCommand);
                 return;
             }
             // Only gets here, if no condition was met
index 771af6ba88f61682f86fc3fcdc0283f74dd27574..c0c9483bf7cf9984b2756e720e44d7f06e04aa50 100644 (file)
@@ -219,8 +219,8 @@ public abstract class XiaomiSocket {
      */
     private void notifyListeners(JsonObject message, InetAddress address) {
         for (XiaomiSocketListener listener : listeners) {
-            if (listener instanceof XiaomiBridgeHandler) {
-                if (((XiaomiBridgeHandler) listener).getHost().equals(address)) {
+            if (listener instanceof XiaomiBridgeHandler handler) {
+                if (handler.getHost().equals(address)) {
                     listener.onDataReceived(message);
                 }
             } else if (listener instanceof XiaomiBridgeDiscoveryService) {
index 70d9ba2784e48f15d7cb15f10ab9e52b7c39be70..acc31076d29308c6657c0d6178d0f59df85d0ae2 100644 (file)
@@ -77,7 +77,7 @@ public class ActionConditions {
      * @return RGB value + brightness as first byte
      */
     private static @Nullable JsonElement hsvToBRGB(@Nullable Command command, @Nullable JsonElement value) {
-        if (command != null && command instanceof HSBType) {
+        if (command instanceof HSBType) {
             HSBType hsb = (HSBType) command;
             Color color = Color.getHSBColor(hsb.getHue().floatValue() / 360, hsb.getSaturation().floatValue() / 100,
                     hsb.getBrightness().floatValue() / 100);
@@ -119,7 +119,7 @@ public class ActionConditions {
      * @return
      */
     private static @Nullable JsonElement hsbOnly(@Nullable Command command, @Nullable JsonElement value) {
-        if (command != null && command instanceof HSBType) {
+        if (command instanceof HSBType) {
             return value;
         }
         return null;
index da8d3105881626b030271f1c5487f7e0cc199d00..bb346bbe91f42fd11d8333a4c9b64778ff15ec15 100644 (file)
@@ -24,6 +24,7 @@ import org.eclipse.jdt.annotation.NonNullByDefault;
 public class InterfaceThingConfig implements ConfigValidation {
     public String name = "";
 
+    @Override
     public boolean isValid() {
         return !name.isBlank();
     }
index edb03c5539f25a4d4eed78126d2aa87b7471b659..0bb67bd768be622b99e25460f9fb19e346143a6f 100644 (file)
@@ -28,6 +28,7 @@ public class RouterosThingConfig implements ConfigValidation {
     public String password = "";
     public int refresh = 10;
 
+    @Override
     public boolean isValid() {
         return !host.isBlank() && !login.isBlank() && !password.isBlank() && refresh > 0 && port > 0;
     }
index 537f63f19a5535f3d31abd55761df6479c7eabc7..671b71073715b6167e178a496e2541a5bffb843b 100644 (file)
@@ -26,6 +26,7 @@ public class WirelessClientThingConfig implements ConfigValidation {
     public String ssid = "";
     public int considerContinuous = 180;
 
+    @Override
     public boolean isValid() {
         return !mac.isBlank() && considerContinuous > 0;
     }
index 882b10efd4a7e0d85e0a662695e337cc1d015496..2e1f09bdee97992f49e38940b2a326adf1918b88 100644 (file)
@@ -211,8 +211,8 @@ public class MikrotikRouterosBridgeHandler extends BaseBridgeHandler {
             // refresh all the client things below
             getThing().getThings().forEach(thing -> {
                 ThingHandler handler = thing.getHandler();
-                if (handler instanceof MikrotikBaseThingHandler<?>) {
-                    ((MikrotikBaseThingHandler<?>) handler).refresh();
+                if (handler instanceof MikrotikBaseThingHandler<?> thingHandler) {
+                    thingHandler.refresh();
                 }
             });
         } catch (ChannelUpdateException e) {
index 666c528b4f83c59535f2970b6068d51f3db07297..325d23275a83af283d6a0582496647053150d690 100644 (file)
@@ -45,19 +45,19 @@ public class RouterosCapInterface extends RouterosInterfaceBase {
     }
 
     public boolean isMaster() {
-        return getProp("slave", "").equals("false");
+        return "false".equals(getProp("slave", ""));
     }
 
     public boolean isDynamic() {
-        return getProp("dynamic", "").equals("true");
+        return "true".equals(getProp("dynamic", ""));
     }
 
     public boolean isBound() {
-        return getProp("bound", "").equals("true");
+        return "true".equals(getProp("bound", ""));
     }
 
     public boolean isActive() {
-        return getProp("inactive", "").equals("false");
+        return "false".equals(getProp("inactive", ""));
     }
 
     public @Nullable String getCurrentState() {
index c74b9fed5939bc7470c46978408d4b7a62327972..c97a4ded70786c0722a6e91abf34b56565918096 100644 (file)
@@ -76,11 +76,11 @@ public abstract class RouterosInterfaceBase extends RouterosBaseData {
     }
 
     public boolean isEnabled() {
-        return getProp("disabled", "").equals("false");
+        return "false".equals(getProp("disabled", ""));
     }
 
     public boolean isConnected() {
-        return getProp("running", "").equals("true");
+        return "true".equals(getProp("running", ""));
     }
 
     public @Nullable Integer getLinkDowns() {
index ca530f541ad43231e59568c8ae6d7b590167d125..e31ed858a6770fce7ed26f32bc2da422b015cf5a 100644 (file)
@@ -44,6 +44,7 @@ public enum RouterosInterfaceType {
         return typeName.equals(otherType);
     }
 
+    @Override
     public String toString() {
         return this.typeName;
     }
index bfb4ac10d3b17f8b6030b81f0a2d67a1341939f7..244a0950b188a2bc7a6f525d9f955b654794e247 100644 (file)
@@ -51,6 +51,7 @@ public class RouterosPPPCliInterface extends RouterosInterfaceBase {
         return true;
     }
 
+    @Override
     public @Nullable String getMacAddress() {
         return null;
     }
index b61479fb82f12852ebc9c8238deaca39cc3629b5..424ff28cee5f06d1981f5aa07f8cc70c471de496 100644 (file)
@@ -51,6 +51,7 @@ public class RouterosPPPoECliInterface extends RouterosInterfaceBase {
         return true;
     }
 
+    @Override
     public @Nullable String getMacAddress() {
         return getProp("ac-mac");
     }
index 0a71302c726efab493e7cf1889510a6d5998b90a..21eca3a2a079650cafad72bb63c4fb7bad756ae5 100644 (file)
@@ -33,7 +33,7 @@ public class RouterosRouterboardInfo extends RouterosBaseData {
     }
 
     public boolean isRouterboard() {
-        return getProp("routerboard", "").equals("true");
+        return "true".equals(getProp("routerboard", ""));
     }
 
     public String getModel() {
index 9eb8ddc25149a76ffd52ed4bea158872cc41bdff..4907646884de6eca37e2c336ea45fabbaa268669 100644 (file)
@@ -324,8 +324,7 @@ public class MilightBridgeDiscovery extends AbstractDiscoveryService implements
         try (MilightV6SessionManager session = new MilightV6SessionManager(bridgeID, sessionState, addressOfBridge,
                 MilightBindingConstants.PORT_VER6, MilightV6SessionManager.TIMEOUT_MS, new byte[] { 0, 0 })) {
             session.start();
-            boolean success = s.tryAcquire(1, 1300, TimeUnit.MILLISECONDS);
-            return success;
+            return s.tryAcquire(1, 1300, TimeUnit.MILLISECONDS);
         } catch (IOException e) {
             logger.debug("checkForV6Bridge failed", e);
         }
index b44946b2e521e6f8bd8998f55eb845ce52b98f45..98a9e4b8e10b710d1645e46e28c341be65f6ca00 100644 (file)
@@ -105,20 +105,16 @@ public abstract class AbstractLedHandler extends BaseThingHandler implements Led
 
         switch (channelUID.getId()) {
             case MilightBindingConstants.CHANNEL_COLOR: {
-                if (command instanceof HSBType) {
-                    HSBType hsb = (HSBType) command;
+                if (command instanceof HSBType hsb) {
                     this.setHSB(hsb.getHue().intValue(), hsb.getSaturation().intValue(), hsb.getBrightness().intValue(),
                             state);
                     updateState(MilightBindingConstants.CHANNEL_SATURATION, new PercentType(state.saturation));
-                } else if (command instanceof OnOffType) {
-                    OnOffType hsb = (OnOffType) command;
+                } else if (command instanceof OnOffType hsb) {
                     this.setPower(hsb == OnOffType.ON, state);
-                } else if (command instanceof PercentType) {
-                    PercentType p = (PercentType) command;
+                } else if (command instanceof PercentType p) {
                     this.setBrightness(p.intValue(), state);
-                } else if (command instanceof IncreaseDecreaseType) {
-                    this.changeBrightness((IncreaseDecreaseType) command == IncreaseDecreaseType.INCREASE ? 1 : -1,
-                            state);
+                } else if (command instanceof IncreaseDecreaseType increaseDecreaseCommand) {
+                    this.changeBrightness(increaseDecreaseCommand == IncreaseDecreaseType.INCREASE ? 1 : -1, state);
                 } else {
                     logger.error(
                             "CHANNEL_COLOR channel only supports OnOffType/IncreaseDecreaseType/HSBType/PercentType");
@@ -137,15 +133,12 @@ public abstract class AbstractLedHandler extends BaseThingHandler implements Led
                 break;
             }
             case MilightBindingConstants.CHANNEL_BRIGHTNESS: {
-                if (command instanceof OnOffType) {
-                    OnOffType hsb = (OnOffType) command;
-                    this.setPower(hsb == OnOffType.ON, state);
-                } else if (command instanceof DecimalType) {
-                    DecimalType d = (DecimalType) command;
-                    this.setBrightness(d.intValue(), state);
-                } else if (command instanceof IncreaseDecreaseType) {
-                    this.changeBrightness((IncreaseDecreaseType) command == IncreaseDecreaseType.INCREASE ? 1 : -1,
-                            state);
+                if (command instanceof OnOffType onOffCommand) {
+                    this.setPower(onOffCommand == OnOffType.ON, state);
+                } else if (command instanceof DecimalType decimalCommand) {
+                    this.setBrightness(decimalCommand.intValue(), state);
+                } else if (command instanceof IncreaseDecreaseType increaseDecreaseCommand) {
+                    this.changeBrightness(increaseDecreaseCommand == IncreaseDecreaseType.INCREASE ? 1 : -1, state);
                 } else {
                     logger.error("CHANNEL_BRIGHTNESS channel only supports OnOffType/IncreaseDecreaseType/DecimalType");
                 }
@@ -155,15 +148,12 @@ public abstract class AbstractLedHandler extends BaseThingHandler implements Led
                 break;
             }
             case MilightBindingConstants.CHANNEL_SATURATION: {
-                if (command instanceof OnOffType) {
-                    OnOffType s = (OnOffType) command;
-                    this.setSaturation((s == OnOffType.ON) ? 100 : 0, state);
-                } else if (command instanceof DecimalType) {
-                    DecimalType d = (DecimalType) command;
-                    this.setSaturation(d.intValue(), state);
-                } else if (command instanceof IncreaseDecreaseType) {
-                    this.changeSaturation((IncreaseDecreaseType) command == IncreaseDecreaseType.INCREASE ? 1 : -1,
-                            state);
+                if (command instanceof OnOffType onOffCommand) {
+                    this.setSaturation((onOffCommand == OnOffType.ON) ? 100 : 0, state);
+                } else if (command instanceof DecimalType decimalCommand) {
+                    this.setSaturation(decimalCommand.intValue(), state);
+                } else if (command instanceof IncreaseDecreaseType increaseDecreaseCommand) {
+                    this.changeSaturation(increaseDecreaseCommand == IncreaseDecreaseType.INCREASE ? 1 : -1, state);
                 } else {
                     logger.error("CHANNEL_SATURATION channel only supports OnOffType/IncreaseDecreaseType/DecimalType");
                 }
@@ -173,14 +163,12 @@ public abstract class AbstractLedHandler extends BaseThingHandler implements Led
                 break;
             }
             case MilightBindingConstants.CHANNEL_TEMP: {
-                if (command instanceof OnOffType) {
-                    OnOffType s = (OnOffType) command;
-                    this.setColorTemperature((s == OnOffType.ON) ? 100 : 0, state);
-                } else if (command instanceof IncreaseDecreaseType) {
-                    this.changeColorTemperature(
-                            (IncreaseDecreaseType) command == IncreaseDecreaseType.INCREASE ? 1 : -1, state);
-                } else if (command instanceof DecimalType) {
-                    DecimalType d = (DecimalType) command;
+                if (command instanceof OnOffType onOffCommand) {
+                    this.setColorTemperature((onOffCommand == OnOffType.ON) ? 100 : 0, state);
+                } else if (command instanceof IncreaseDecreaseType increaseDecreaseCommand) {
+                    this.changeColorTemperature(increaseDecreaseCommand == IncreaseDecreaseType.INCREASE ? 1 : -1,
+                            state);
+                } else if (command instanceof DecimalType d) {
                     this.setColorTemperature(d.intValue(), state);
                 } else {
                     logger.error("CHANNEL_TEMP channel only supports OnOffType/IncreaseDecreaseType/DecimalType");
@@ -188,11 +176,10 @@ public abstract class AbstractLedHandler extends BaseThingHandler implements Led
                 break;
             }
             case MilightBindingConstants.CHANNEL_SPEED_REL: {
-                if (command instanceof IncreaseDecreaseType) {
-                    IncreaseDecreaseType id = (IncreaseDecreaseType) command;
-                    if (id == IncreaseDecreaseType.INCREASE) {
+                if (command instanceof IncreaseDecreaseType increaseDecreaseCommand) {
+                    if (increaseDecreaseCommand == IncreaseDecreaseType.INCREASE) {
                         this.changeSpeed(1, state);
-                    } else if (id == IncreaseDecreaseType.DECREASE) {
+                    } else if (increaseDecreaseCommand == IncreaseDecreaseType.DECREASE) {
                         this.changeSpeed(-1, state);
                     }
                 } else {
@@ -201,20 +188,18 @@ public abstract class AbstractLedHandler extends BaseThingHandler implements Led
                 break;
             }
             case MilightBindingConstants.CHANNEL_ANIMATION_MODE: {
-                if (command instanceof DecimalType) {
-                    DecimalType d = (DecimalType) command;
-                    this.setLedMode(d.intValue(), state);
+                if (command instanceof DecimalType decimalCommand) {
+                    this.setLedMode(decimalCommand.intValue(), state);
                 } else {
                     logger.error("Animation mode channel only supports DecimalType");
                 }
                 break;
             }
             case MilightBindingConstants.CHANNEL_ANIMATION_MODE_REL: {
-                if (command instanceof IncreaseDecreaseType) {
-                    IncreaseDecreaseType id = (IncreaseDecreaseType) command;
-                    if (id == IncreaseDecreaseType.INCREASE) {
+                if (command instanceof IncreaseDecreaseType increaseDecreaseCommand) {
+                    if (increaseDecreaseCommand == IncreaseDecreaseType.INCREASE) {
                         this.nextAnimationMode(state);
-                    } else if (id == IncreaseDecreaseType.DECREASE) {
+                    } else if (increaseDecreaseCommand == IncreaseDecreaseType.DECREASE) {
                         this.previousAnimationMode(state);
                     }
                 } else {
index 5bd799c9ecce0ea860dd3aba642524ac28262513..6651c52dbb96d71936df277886d86bc492519c79 100644 (file)
@@ -71,13 +71,13 @@ public class MilightV2RGBHandler extends AbstractLedHandler {
     public void setPower(boolean on, MilightThingState state) {
         if (on) {
             logger.debug("milight: sendOn");
-            byte messageBytes[] = null;
+            byte[] messageBytes = null;
             // message rgb bulbs ON
             messageBytes = new byte[] { 0x22, 0x00, 0x55 };
             sendQueue.queue(createRepeatable(uidc(ProtocolConstants.CAT_POWER_MODE), messageBytes));
         } else {
             logger.debug("milight: sendOff");
-            byte messageBytes[] = null;
+            byte[] messageBytes = null;
 
             // message rgb bulbs OFF
             messageBytes = new byte[] { 0x21, 0x00, 0x55 };
index a884120fd3d655ea43d89f049ce43ff3fcd82c47..b62c347ba5e161917ea0142d6123f89195d90a6b 100644 (file)
@@ -26,12 +26,12 @@ import org.openhab.core.thing.Thing;
 public class MilightV3RGBWHandler extends AbstractLedV3Handler {
     protected static final int BRIGHTNESS_LEVELS = 26;
 
-    private static final byte COMMAND_ON[] = { (byte) 0x42, (byte) 0x45, (byte) 0x47, (byte) 0x49, (byte) 0x4B };
-    private static final byte COMMAND_OFF[] = { (byte) 0x41, (byte) 0x46, (byte) 0x48, (byte) 0x4A, (byte) 0x4C };
-    private static final byte COMMAND_WHITEMODE[] = { (byte) 0xC2, (byte) 0xC5, (byte) 0xC7, (byte) 0xC9, (byte) 0xCB };
-    private static final byte NIGHTMODE_FIRST[] = { 0x41, 0x46, 0x48, 0x4A, 0x4C };
-    private static final byte NIGHTMODE_SECOND[] = { (byte) 0xC1, (byte) 0xC6, (byte) 0xC8, (byte) 0xCA, (byte) 0xCC };
-    private static final byte NEXT_ANIMATION_MODE[] = { 0x4D, 0x00, 0x55 };
+    private static final byte[] COMMAND_ON = { (byte) 0x42, (byte) 0x45, (byte) 0x47, (byte) 0x49, (byte) 0x4B };
+    private static final byte[] COMMAND_OFF = { (byte) 0x41, (byte) 0x46, (byte) 0x48, (byte) 0x4A, (byte) 0x4C };
+    private static final byte[] COMMAND_WHITEMODE = { (byte) 0xC2, (byte) 0xC5, (byte) 0xC7, (byte) 0xC9, (byte) 0xCB };
+    private static final byte[] NIGHTMODE_FIRST = { 0x41, 0x46, 0x48, 0x4A, 0x4C };
+    private static final byte[] NIGHTMODE_SECOND = { (byte) 0xC1, (byte) 0xC6, (byte) 0xC8, (byte) 0xCA, (byte) 0xCC };
+    private static final byte[] NEXT_ANIMATION_MODE = { 0x4D, 0x00, 0x55 };
 
     public MilightV3RGBWHandler(Thing thing, QueuedSend sendQueue) {
         super(thing, sendQueue, 10);
@@ -45,8 +45,8 @@ public class MilightV3RGBWHandler extends AbstractLedV3Handler {
             whiteMode(state);
         } else {
             state.hue360 = hue;
-            final byte messageBytes[] = new byte[] { 0x40, makeColor(hue), 0x55 };
-            final byte cOn[] = { COMMAND_ON[config.zone], 0x00, 0x55 };
+            final byte[] messageBytes = new byte[] { 0x40, makeColor(hue), 0x55 };
+            final byte[] cOn = { COMMAND_ON[config.zone], 0x00, 0x55 };
             sendQueue.queue(createRepeatable(uidc(ProtocolConstants.CAT_COLOR_SET), cOn).addRepeatable(messageBytes));
         }
 
@@ -68,15 +68,15 @@ public class MilightV3RGBWHandler extends AbstractLedV3Handler {
 
     @Override
     public void whiteMode(MilightThingState state) {
-        final byte cOn[] = { COMMAND_ON[config.zone], 0x00, 0x55 };
-        final byte cWhite[] = { COMMAND_WHITEMODE[config.zone], 0x00, 0x55 };
+        final byte[] cOn = { COMMAND_ON[config.zone], 0x00, 0x55 };
+        final byte[] cWhite = { COMMAND_WHITEMODE[config.zone], 0x00, 0x55 };
         sendQueue.queue(createRepeatable(uidc(ProtocolConstants.CAT_WHITEMODE), cOn).addRepeatable(cWhite));
     }
 
     @Override
     public void nightMode(MilightThingState state) {
-        final byte cN1[] = { NIGHTMODE_FIRST[config.zone], 0x00, 0x55 };
-        final byte cN2[] = { NIGHTMODE_SECOND[config.zone], 0x00, 0x55 };
+        final byte[] cN1 = { NIGHTMODE_FIRST[config.zone], 0x00, 0x55 };
+        final byte[] cN2 = { NIGHTMODE_SECOND[config.zone], 0x00, 0x55 };
         sendQueue.queue(createRepeatable(uidc(ProtocolConstants.CAT_POWER_MODE), cN1).addRepeatable(cN2));
     }
 
@@ -101,7 +101,7 @@ public class MilightV3RGBWHandler extends AbstractLedV3Handler {
 
         int br = (int) Math.ceil((value * BRIGHTNESS_LEVELS) / 100.0) + 1;
 
-        final byte cOn[] = { COMMAND_ON[config.zone], 0x00, 0x55 };
+        final byte[] cOn = { COMMAND_ON[config.zone], 0x00, 0x55 };
         sendQueue.queue(createRepeatable(uidc(ProtocolConstants.CAT_BRIGHTNESS_SET), cOn)
                 .addRepeatable(new byte[] { 0x4E, (byte) br, 0x55 }));
 
@@ -119,8 +119,8 @@ public class MilightV3RGBWHandler extends AbstractLedV3Handler {
             return;
         }
 
-        final byte cOn[] = { COMMAND_ON[config.zone], 0x00, 0x55 };
-        final byte cSpeed[] = { (byte) (relativeSpeed > 0 ? 0x44 : 0x43), 0x00, 0x55 };
+        final byte[] cOn = { COMMAND_ON[config.zone], 0x00, 0x55 };
+        final byte[] cSpeed = { (byte) (relativeSpeed > 0 ? 0x44 : 0x43), 0x00, 0x55 };
         sendQueue.queue(createRepeatable(cOn).addNonRepeatable(cSpeed));
     }
 
@@ -128,14 +128,14 @@ public class MilightV3RGBWHandler extends AbstractLedV3Handler {
     // instead.
     @Override
     public void previousAnimationMode(MilightThingState state) {
-        final byte cOn[] = { COMMAND_ON[config.zone], 0x00, 0x55 };
+        final byte[] cOn = { COMMAND_ON[config.zone], 0x00, 0x55 };
         sendQueue.queue(createRepeatable(cOn).addNonRepeatable(NEXT_ANIMATION_MODE));
         state.animationMode = (state.animationMode + 1) % (MAX_ANIM_MODES + 1);
     }
 
     @Override
     public void nextAnimationMode(MilightThingState state) {
-        final byte cOn[] = { COMMAND_ON[config.zone], 0x00, 0x55 };
+        final byte[] cOn = { COMMAND_ON[config.zone], 0x00, 0x55 };
         sendQueue.queue(createRepeatable(cOn).addNonRepeatable(NEXT_ANIMATION_MODE));
         state.animationMode = (state.animationMode + 1) % (MAX_ANIM_MODES + 1);
     }
index 4af9b3dbcae0078fa4ab9475c4b67ddc975f030f..a79f704ebc22e594057dc1a97b5742ef3e12090a 100644 (file)
@@ -33,12 +33,12 @@ public class MilightV3WhiteHandler extends AbstractLedV3Handler {
         super(thing, sendQueue, 0);
     }
 
-    private static final byte COMMAND_FULL[] = { (byte) 0xB5, (byte) 0xB8, (byte) 0xBD, (byte) 0xB7, (byte) 0xB2 };
-    private static final byte COMMAND_ON[] = { (byte) 0x35, (byte) 0x38, (byte) 0x3D, (byte) 0x37, (byte) 0x32 };
-    private static final byte COMMAND_OFF[] = { (byte) 0x39, (byte) 0x3B, (byte) 0x33, (byte) 0x3A, (byte) 0x36 };
-    private static final byte COMMAND_NIGHTMODE[] = { (byte) 0xB9, (byte) 0xBB, (byte) 0xB3, (byte) 0xBA, (byte) 0xB6 };
-    private static final byte PREV_ANIMATION_MODE[] = { 0x27, 0x00, 0x55 };
-    private static final byte NEXT_ANIMATION_MODE[] = { 0x27, 0x00, 0x55 };
+    private static final byte[] COMMAND_FULL = { (byte) 0xB5, (byte) 0xB8, (byte) 0xBD, (byte) 0xB7, (byte) 0xB2 };
+    private static final byte[] COMMAND_ON = { (byte) 0x35, (byte) 0x38, (byte) 0x3D, (byte) 0x37, (byte) 0x32 };
+    private static final byte[] COMMAND_OFF = { (byte) 0x39, (byte) 0x3B, (byte) 0x33, (byte) 0x3A, (byte) 0x36 };
+    private static final byte[] COMMAND_NIGHTMODE = { (byte) 0xB9, (byte) 0xBB, (byte) 0xB3, (byte) 0xBA, (byte) 0xB6 };
+    private static final byte[] PREV_ANIMATION_MODE = { 0x27, 0x00, 0x55 };
+    private static final byte[] NEXT_ANIMATION_MODE = { 0x27, 0x00, 0x55 };
 
     protected void setFull(int zone, MilightThingState state) {
         sendQueue.queue(createRepeatable(uidc(ProtocolConstants.CAT_BRIGHTNESS_SET),
@@ -72,8 +72,8 @@ public class MilightV3WhiteHandler extends AbstractLedV3Handler {
 
     @Override
     public void nightMode(MilightThingState state) {
-        final byte cOn[] = { COMMAND_ON[config.zone], 0x00, 0x55 };
-        final byte cNight[] = { COMMAND_NIGHTMODE[config.zone], 0x00, 0x55 };
+        final byte[] cOn = { COMMAND_ON[config.zone], 0x00, 0x55 };
+        final byte[] cNight = { COMMAND_NIGHTMODE[config.zone], 0x00, 0x55 };
         sendQueue.queue(createRepeatable(uidc(ProtocolConstants.CAT_POWER_MODE), cOn).addRepeatable(cNight));
     }
 
@@ -113,8 +113,8 @@ public class MilightV3WhiteHandler extends AbstractLedV3Handler {
     @Override
     public void changeColorTemperature(int colorTempRelative, MilightThingState state) {
         state.colorTemperature = Math.min(100, Math.max(state.colorTemperature + colorTempRelative, 0));
-        final byte cOn[] = { COMMAND_ON[config.zone], 0x00, 0x55 };
-        final byte cTemp[] = { (byte) (colorTempRelative > 0 ? 0x3E : 0x3F), 0x00, 0x55 };
+        final byte[] cOn = { COMMAND_ON[config.zone], 0x00, 0x55 };
+        final byte[] cTemp = { (byte) (colorTempRelative > 0 ? 0x3E : 0x3F), 0x00, 0x55 };
         sendQueue.queue(createRepeatable(cOn).addNonRepeatable(cTemp));
     }
 
@@ -134,7 +134,7 @@ public class MilightV3WhiteHandler extends AbstractLedV3Handler {
 
         // When turning on start from full brightness
         int oldLevel;
-        final byte cFull[] = { COMMAND_FULL[config.zone], 0x00, 0x55 };
+        final byte[] cFull = { COMMAND_FULL[config.zone], 0x00, 0x55 };
         QueueItem item = createRepeatable(cFull);
         boolean skipFirst = false;
 
@@ -155,7 +155,7 @@ public class MilightV3WhiteHandler extends AbstractLedV3Handler {
                 String.valueOf(value), repeatCount);
 
         int op = newLevel > oldLevel ? +1 : -1;
-        final byte cOn[] = { COMMAND_ON[config.zone], 0x00, 0x55 };
+        final byte[] cOn = { COMMAND_ON[config.zone], 0x00, 0x55 };
         for (int i = 0; i < repeatCount; i++) {
             final byte[] cBr = { (byte) (op < 0 ? 0x34 : 0x3C), 0x00, 0x55 };
             item = item.addRepeatable(cOn).addNonRepeatable(cBr);
@@ -182,8 +182,8 @@ public class MilightV3WhiteHandler extends AbstractLedV3Handler {
             sendQueue.queue(createRepeatable(uidc(ProtocolConstants.CAT_POWER_MODE),
                     new byte[] { COMMAND_OFF[config.zone], 0x00, 0x55 }));
         } else {
-            final byte cOn[] = { COMMAND_ON[config.zone], 0x00, 0x55 };
-            final byte cBr[] = { (byte) (relativeBrightness < 0 ? 0x34 : 0x3C), 0x00, 0x55 };
+            final byte[] cOn = { COMMAND_ON[config.zone], 0x00, 0x55 };
+            final byte[] cBr = { (byte) (relativeBrightness < 0 ? 0x34 : 0x3C), 0x00, 0x55 };
             sendQueue.queue(createRepeatable(cOn).addNonRepeatable(cBr));
         }
     }
@@ -194,14 +194,14 @@ public class MilightV3WhiteHandler extends AbstractLedV3Handler {
 
     @Override
     public void previousAnimationMode(MilightThingState state) {
-        final byte cOn[] = { COMMAND_ON[config.zone], 0x00, 0x55 };
+        final byte[] cOn = { COMMAND_ON[config.zone], 0x00, 0x55 };
         sendQueue.queue(createRepeatable(cOn).addNonRepeatable(PREV_ANIMATION_MODE));
         state.animationMode = Math.max(state.animationMode - 1, 0);
     }
 
     @Override
     public void nextAnimationMode(MilightThingState state) {
-        final byte cOn[] = { COMMAND_ON[config.zone], 0x00, 0x55 };
+        final byte[] cOn = { COMMAND_ON[config.zone], 0x00, 0x55 };
         sendQueue.queue(createRepeatable(cOn).addNonRepeatable(NEXT_ANIMATION_MODE));
         state.animationMode = Math.min(state.animationMode + 1, MAX_ANIM_MODES);
     }
index 5be1a48d8077679e40287b09a693ac862cce1320..0eb77637629d4bd0cf16c4150d9d7a5cdb3c2ec4 100644 (file)
@@ -64,10 +64,10 @@ public class MilightV6SessionManager implements Runnable, Closeable {
     private int sequenceNo = 0;
 
     // Password bytes 1 and 2
-    public byte pw[] = { 0, 0 };
+    public byte[] pw = { 0, 0 };
 
     // Session bytes 1 and 2
-    public byte sid[] = { 0, 0 };
+    public byte[] sid = { 0, 0 };
 
     // Client session bytes 1 and 2. Those are fixed for now.
     public final byte clientSID1 = (byte) 0xab;
index a15ffd9144606232c455c29de0d2d23c0ca8fc43..5fa35e406d67124953ee0febcb6cfc607e8082f3 100644 (file)
@@ -47,29 +47,29 @@ public class EmulatedV6Bridge {
             (byte) 0xD4 };
 
     // Send to the network by clients to find V6 bridges
-    private byte searchBroadcast[] = new byte[] { 0x10, 0, 0, 0, 0x24, 0x02, cls1, cls2, 0x02, 0x39, 0x38, 0x35, 0x62,
+    private byte[] searchBroadcast = new byte[] { 0x10, 0, 0, 0, 0x24, 0x02, cls1, cls2, 0x02, 0x39, 0x38, 0x35, 0x62,
             0x31, 0x35, 0x37, 0x62, 0x66, 0x36, 0x66, 0x63, 0x34, 0x33, 0x33, 0x36, 0x38, 0x61, 0x36, 0x33, 0x34, 0x36,
             0x37, 0x65, 0x61, 0x33, 0x62, 0x31, 0x39, 0x64, 0x30, 0x64 };
 
     // Send to broadcast address by the client usually and used to test if the client with the contained bridge id
     // is present on the network. If the IP of the bridge is known already, then SESSION_REQUEST is used usually.
-    private byte sessionRequestFindBroadcast[] = new byte[] { 0x10, 0, 0, 0, 0x0A, 2, cls1, cls2, 1, FAKE_MAC[0],
+    private byte[] sessionRequestFindBroadcast = new byte[] { 0x10, 0, 0, 0, 0x0A, 2, cls1, cls2, 1, FAKE_MAC[0],
             FAKE_MAC[1], FAKE_MAC[2], FAKE_MAC[3], FAKE_MAC[4], FAKE_MAC[5] };
 
     // Some clients send this as first command to get a session id, especially if the bridge IP is already known.
-    private byte sessionRequest[] = new byte[] { (byte) 0x20, 0, 0, 0, (byte) 0x16, 2, (byte) 0x62, (byte) 0x3A,
+    private byte[] sessionRequest = new byte[] { (byte) 0x20, 0, 0, 0, (byte) 0x16, 2, (byte) 0x62, (byte) 0x3A,
             (byte) 0xD5, (byte) 0xED, (byte) 0xA3, 1, (byte) 0xAE, (byte) 0x08, (byte) 0x2D, (byte) 0x46, (byte) 0x61,
             (byte) 0x41, (byte) 0xA7, (byte) 0xF6, (byte) 0xDC, (byte) 0xAF, cls1, cls2, 0, 0, (byte) 0x1E };
 
-    private byte sessionResponse[] = { (byte) 0x28, 0, 0, 0, (byte) 0x11, 0, 2, (byte) 0xAC, (byte) 0xCF, (byte) 0x23,
+    private byte[] sessionResponse = { (byte) 0x28, 0, 0, 0, (byte) 0x11, 0, 2, (byte) 0xAC, (byte) 0xCF, (byte) 0x23,
             (byte) 0xF5, (byte) 0x7A, (byte) 0xD4, (byte) 0x69, (byte) 0xF0, (byte) 0x3C, (byte) 0x23, 0, 1, SID1, SID2,
             0 };
 
     // Some clients call this as second command to establish a session.
-    private static final byte ESTABLISH_SESSION_REQUEST[] = new byte[] { (byte) 0x30, 0, 0, 0, 3, SID1, SID2, 0 };
+    private static final byte[] ESTABLISH_SESSION_REQUEST = new byte[] { (byte) 0x30, 0, 0, 0, 3, SID1, SID2, 0 };
 
     // In response to SEARCH, ESTABLISH_SESSION_REQUEST but also to SESSION_REQUEST_FIND_BROADCAST
-    private static final byte REESTABLISH_SESSION_RESPONSE[] = new byte[] { (byte) 0x18, 0, 0, 0, (byte) 0x40, 2,
+    private static final byte[] REESTABLISH_SESSION_RESPONSE = new byte[] { (byte) 0x18, 0, 0, 0, (byte) 0x40, 2,
             FAKE_MAC[0], FAKE_MAC[1], FAKE_MAC[2], FAKE_MAC[3], FAKE_MAC[4], FAKE_MAC[5], 0, (byte) 0x20, (byte) 0x39,
             (byte) 0x38, (byte) 0x35, (byte) 0x62, (byte) 0x31, (byte) 0x35, (byte) 0x37, (byte) 0x62, (byte) 0x66,
             (byte) 0x36, (byte) 0x66, (byte) 0x63, (byte) 0x34, (byte) 0x33, (byte) 0x33, (byte) 0x36, (byte) 0x38,
@@ -79,11 +79,11 @@ public class EmulatedV6Bridge {
             (byte) 0x6E, (byte) 0x6B, (byte) 0x5F, (byte) 0x64, (byte) 0x65, (byte) 0x76, (byte) 0x07, (byte) 0x5B,
             (byte) 0xCD, (byte) 0x15 };
 
-    private static final byte REGISTRATION_REQUEST[] = { (byte) 0x80, 0, 0, 0, 0x11, SID1, SID2, SEQ1, SEQ2, 0, 0x33,
+    private static final byte[] REGISTRATION_REQUEST = { (byte) 0x80, 0, 0, 0, 0x11, SID1, SID2, SEQ1, SEQ2, 0, 0x33,
             PW1, PW2, 0, 0, 0, 0, 0, 0, 0, 0, 0x33 };
 
     // 80:00:00:00:15:(f0:fe:6b:16:b0:8a):05:02:00:34:00:00:00:00:00:00:00:00:00:00:34
-    private static final byte REGISTRATION_REQUEST_RESPONSE[] = { (byte) 0x80, 0, 0, 0, 0x15, FAKE_MAC[0], FAKE_MAC[1],
+    private static final byte[] REGISTRATION_REQUEST_RESPONSE = { (byte) 0x80, 0, 0, 0, 0x15, FAKE_MAC[0], FAKE_MAC[1],
             FAKE_MAC[2], FAKE_MAC[3], FAKE_MAC[4], FAKE_MAC[5], 5, 2, 0, 0x34, PW1, PW2, 0, 0, 0, 0, 0, 0, 0, 0, 0x34 };
 
     private static final byte[] KEEP_ALIVE_REQUEST = { (byte) 0xD0, 0, 0, 0, 2, SID1, SID2 };
@@ -96,7 +96,7 @@ public class EmulatedV6Bridge {
         new Thread(this::runBrigde).start();
     }
 
-    private void replaceWithMac(byte data[], int offset) {
+    private void replaceWithMac(byte[] data, int offset) {
         data[offset + 0] = FAKE_MAC[0];
         data[offset + 1] = FAKE_MAC[1];
         data[offset + 2] = FAKE_MAC[2];
@@ -106,7 +106,7 @@ public class EmulatedV6Bridge {
     }
 
     public void runDiscovery() {
-        final byte discover[] = "HF-A11ASSISTHREAD".getBytes();
+        final byte[] discover = "HF-A11ASSISTHREAD".getBytes();
 
         try {
             byte[] a = new byte[0];
@@ -286,7 +286,7 @@ public class EmulatedV6Bridge {
                                 debugStr.append("iBox ");
                             }
 
-                            debugStr.append("Zone " + String.valueOf(buffer[19]) + " ");
+                            debugStr.append("Zone " + buffer[19] + " ");
 
                             for (int i = 13; i < 19; ++i) {
                                 debugStr.append(String.format("%02X ", buffer[i]));
@@ -295,7 +295,7 @@ public class EmulatedV6Bridge {
                         }
                     }
 
-                    byte response[] = { (byte) 0x88, 0, 0, 0, (byte) 0x03, 0, seq, 0 };
+                    byte[] response = { (byte) 0x88, 0, 0, 0, (byte) 0x03, 0, seq, 0 };
                     sendMessage(sPacket, datagramSocket, response);
                     continue;
                 }
@@ -320,7 +320,7 @@ public class EmulatedV6Bridge {
         logger.error("{}: {}", reason, s);
     }
 
-    protected void sendMessage(DatagramPacket packet, DatagramSocket datagramSocket, byte buffer[]) {
+    protected void sendMessage(DatagramPacket packet, DatagramSocket datagramSocket, byte[] buffer) {
         packet.setData(buffer);
         try {
             datagramSocket.send(packet);
@@ -330,7 +330,7 @@ public class EmulatedV6Bridge {
         }
     }
 
-    private void debugSessionSend(byte buffer[], InetAddress address) {
+    private void debugSessionSend(byte[] buffer, InetAddress address) {
         StringBuilder s = new StringBuilder();
         for (int i = 0; i < buffer.length; ++i) {
             s.append(String.format("%02X ", buffer[i]));
index 3a12c7690bb3ab21e249db9f66ec746c2c33e492..21aec1b582b162bece2ef851e620b32be254d49e 100644 (file)
@@ -21,5 +21,5 @@ import com.google.gson.annotations.SerializedName;
  */
 public class GetIndependentDevicesByHomeResponse extends AbstractResponse {
     @SerializedName("deviceInfo")
-    public DeviceDTO devices[] = new DeviceDTO[0];
+    public DeviceDTO[] devices = new DeviceDTO[0];
 }
index 176608f01749aa563003f958bad7de2f4526f8ff..9ce18af1f8f6abdc03d46dd328cd18fc69579e5b 100644 (file)
@@ -372,8 +372,8 @@ public class MillheatAccountHandler extends BaseBridgeHandler {
         final Optional<Room> optionalRoom = model.findRoomById(roomId);
         if (optionalHome.isPresent() && optionalRoom.isPresent()) {
             final SetRoomTempRequest req = new SetRoomTempRequest(optionalHome.get(), optionalRoom.get());
-            if (command instanceof QuantityType<?>) {
-                final int newTemp = (int) ((QuantityType<?>) command).longValue();
+            if (command instanceof QuantityType<?> quantityCommand) {
+                final int newTemp = (int) quantityCommand.longValue();
                 switch (mode) {
                     case SLEEP:
                         req.sleepTemp = newTemp;
@@ -404,8 +404,8 @@ public class MillheatAccountHandler extends BaseBridgeHandler {
             @Nullable final Command fanCommand) {
         model.findHeaterByMacOrId(macAddress, heaterId).ifPresent(heater -> {
             int setTemp = heater.getTargetTemp();
-            if (temperatureCommand instanceof QuantityType<?>) {
-                setTemp = (int) ((QuantityType<?>) temperatureCommand).longValue();
+            if (temperatureCommand instanceof QuantityType<?> temperature) {
+                setTemp = (int) temperature.longValue();
             }
             boolean masterOnOff = heater.powerStatus();
             if (masterOnOffCommand != null) {
index 5a084b22a9034c116f35c6c9e51d7efa98eddb9b..a9b97bc3f3c752aef395d417e7a013f610c0db64 100644 (file)
@@ -68,9 +68,9 @@ public class MillheatHomeHandler extends MillheatBaseThingHandler {
                     updateState(channelUID, new QuantityType<>(home.getHolidayTemp(), SIUnits.CELSIUS));
                 } else if (command instanceof QuantityType<?>) {
                     updateVacationModeProperty(home, SetHolidayParameterRequest.PROP_TEMP, command);
-                } else if (command instanceof DecimalType) {
+                } else if (command instanceof DecimalType decimalCommand) {
                     updateVacationModeProperty(home, SetHolidayParameterRequest.PROP_TEMP,
-                            new QuantityType<>((DecimalType) command, SIUnits.CELSIUS));
+                            new QuantityType<>(decimalCommand, SIUnits.CELSIUS));
                 }
             } else if (CHANNEL_HOME_VACATION_MODE.equals(channelUID.getId())) {
                 if (command instanceof RefreshType) {
index a2766be76f294ab26fcc33bb724950e4dad92e2c..8dc27f03f07ff7a95f52ee1a6f2f821ad42b4a58 100644 (file)
@@ -60,7 +60,7 @@ public class MillheatModel {
         if (macAddress != null) {
             heater = findHeaterByMac(macAddress);
         }
-        if (!heater.isPresent() && id != null) {
+        if (heater.isEmpty() && id != null) {
             heater = findHeaterById(id);
         }
         return heater;
index eef426f8b801ce6465b2367092da539a3dc6ccf3..4ef3f082454ef525669100641488a9e2cb8b0ee4 100644 (file)
@@ -65,11 +65,9 @@ public class MinecraftHandlerFactory extends BaseThingHandlerFactory {
             minecraftServers.add(serverHandler);
             return serverHandler;
         } else if (thingTypeUID.equals(MinecraftBindingConstants.THING_TYPE_PLAYER)) {
-            MinecraftPlayerHandler playerHandler = new MinecraftPlayerHandler(thing);
-            return playerHandler;
+            return new MinecraftPlayerHandler(thing);
         } else if (thingTypeUID.equals(MinecraftBindingConstants.THING_TYPE_SIGN)) {
-            MinecraftSignHandler signHandler = new MinecraftSignHandler(thing);
-            return signHandler;
+            return new MinecraftSignHandler(thing);
         }
 
         return null;
index 650034ec049f5cc6857ea788a372a8405f423701..738da9c62775e0ffb8b64f6204357540e9e1ef44 100644 (file)
@@ -12,9 +12,9 @@
  */
 package org.openhab.binding.minecraft.internal.discovery;
 
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Set;
 
 import org.openhab.binding.minecraft.internal.MinecraftBindingConstants;
 import org.openhab.binding.minecraft.internal.MinecraftHandlerFactory;
@@ -53,7 +53,7 @@ public class MinecraftDiscoveryService extends AbstractDiscoveryService {
     private CompositeSubscription subscription;
 
     public MinecraftDiscoveryService() {
-        super(Collections.singleton(MinecraftBindingConstants.THING_TYPE_SERVER), DISCOVER_TIMEOUT_SECONDS, false);
+        super(Set.of(MinecraftBindingConstants.THING_TYPE_SERVER), DISCOVER_TIMEOUT_SECONDS, false);
     }
 
     @Override
@@ -91,10 +91,8 @@ public class MinecraftDiscoveryService extends AbstractDiscoveryService {
      * @return subscription for listening to sign events.
      */
     private Subscription subscribeSignsRx(Observable<ServerConnection> serverRx) {
-        return serverRx
-                .flatMap(connection -> connection.getSocketHandler().getSignsRx().distinct(), (connection, signs) -> {
-                    return new Pair<>(connection, signs);
-                }).subscribe(conectionSignPair -> {
+        return serverRx.flatMap(connection -> connection.getSocketHandler().getSignsRx().distinct(),
+                (connection, signs) -> new Pair<>(connection, signs)).subscribe(conectionSignPair -> {
                     for (SignData sign : conectionSignPair.second) {
                         submitSignDiscoveryResults(conectionSignPair.first.getThingUID(), sign);
                     }
index ad84118719e23d59cccafc90fecf1cdc47a0a16f..f85a4d46bb9009a46ef98e6ad8af159b4529a9e9 100644 (file)
@@ -12,7 +12,6 @@
  */
 package org.openhab.binding.minecraft.internal.discovery;
 
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Set;
@@ -38,7 +37,7 @@ public class MinecraftMDNSDiscoveryParticipant implements MDNSDiscoveryParticipa
 
     @Override
     public Set<ThingTypeUID> getSupportedThingTypeUIDs() {
-        return Collections.singleton(MinecraftBindingConstants.THING_TYPE_SERVER);
+        return Set.of(MinecraftBindingConstants.THING_TYPE_SERVER);
     }
 
     @Override
@@ -48,7 +47,7 @@ public class MinecraftMDNSDiscoveryParticipant implements MDNSDiscoveryParticipa
 
     @Override
     public DiscoveryResult createResult(ServiceInfo service) {
-        if (service.getName().equals("wc-minecraft")) {
+        if ("wc-minecraft".equals(service.getName())) {
             ThingUID uid = getThingUID(service);
 
             if (uid != null) {
index ed8e46cc6b3d1db634c5c4d9b4412278bbce453f..784d6401314cacb88b043359ca30bbc8593eb5b0 100644 (file)
@@ -141,8 +141,8 @@ public class MinecraftPlayerHandler extends BaseThingHandler {
         MinecraftServerHandler bridgeHandler = null;
 
         ThingHandler handler = bridge.getHandler();
-        if (handler instanceof MinecraftServerHandler) {
-            bridgeHandler = (MinecraftServerHandler) handler;
+        if (handler instanceof MinecraftServerHandler serverHandler) {
+            bridgeHandler = serverHandler;
         } else {
             logger.debug("No available bridge handler found yet. Bridge: {} .", bridge.getUID());
             bridgeHandler = null;
index 80858941be14c865383d2cba9728e8b5e83cf039..6316dffadc726c5c3e411a969ee065445bfb4420 100644 (file)
@@ -113,8 +113,8 @@ public class MinecraftSignHandler extends BaseThingHandler {
         MinecraftServerHandler bridgeHandler = null;
 
         ThingHandler handler = bridge.getHandler();
-        if (handler instanceof MinecraftServerHandler) {
-            bridgeHandler = (MinecraftServerHandler) handler;
+        if (handler instanceof MinecraftServerHandler serverHandler) {
+            bridgeHandler = serverHandler;
         } else {
             logger.debug("No available bridge handler found yet. Bridge: {} .", bridge.getUID());
             bridgeHandler = null;
index f5104dd5adcffecbaac7579292ee5deff7fe9420..eef3382f66e53030c3e566417fda4a7004927803 100644 (file)
@@ -276,9 +276,8 @@ public class E3DCThingHandler extends BaseBridgeHandler {
             return null;
         }
 
-        if (handler instanceof ModbusEndpointThingHandler) {
-            ModbusEndpointThingHandler slaveEndpoint = (ModbusEndpointThingHandler) handler;
-            return slaveEndpoint;
+        if (handler instanceof ModbusEndpointThingHandler thingHandler) {
+            return thingHandler;
         } else {
             logger.debug("Unexpected bridge handler: {}", handler);
             return null;
index 327b2b3148ae18738721639798887480fab312c0..49ed4ff5935038bb866d7658ba0768a8e498b7e4 100644 (file)
@@ -54,7 +54,6 @@ public class HeliosEasyControlsActions implements ThingActions {
     private void triggerSwitch(String variableName) {
         try {
             if (handler != null) {
-
                 handler.writeValue(variableName, "1");
             }
         } catch (HeliosException e) {
index 30603d92d7fc96eeb5ac756249edf59918430c98..d0a8f366b60f9665b8cecfea358674fc7a34e55b 100644 (file)
@@ -21,10 +21,10 @@ import java.time.ZoneId;
 import java.time.ZonedDateTime;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
+import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.Semaphore;
@@ -207,8 +207,8 @@ public class HeliosEasyControlsHandler extends BaseThingHandler {
             return null;
         }
 
-        if (handler instanceof ModbusEndpointThingHandler) {
-            return (ModbusEndpointThingHandler) handler;
+        if (handler instanceof ModbusEndpointThingHandler thingHandler) {
+            return thingHandler;
         } else {
             logger.debug("Unexpected bridge handler: {}", handler);
             return null;
@@ -319,9 +319,9 @@ public class HeliosEasyControlsHandler extends BaseThingHandler {
             String value = null;
             if (command instanceof OnOffType) {
                 value = command == OnOffType.ON ? "1" : "0";
-            } else if (command instanceof DateTimeType) {
+            } else if (command instanceof DateTimeType dateTimeCommand) {
                 try {
-                    ZonedDateTime d = ((DateTimeType) command).getZonedDateTime();
+                    ZonedDateTime d = dateTimeCommand.getZonedDateTime();
                     if (channelId.equals(HeliosEasyControlsBindingConstants.SYS_DATE)) {
                         setSysDateTime(d);
                     } else if (channelId.equals(HeliosEasyControlsBindingConstants.BYPASS_FROM)) {
@@ -329,7 +329,7 @@ public class HeliosEasyControlsHandler extends BaseThingHandler {
                     } else if (channelId.equals(HeliosEasyControlsBindingConstants.BYPASS_TO)) {
                         this.setBypass(false, d.getDayOfMonth(), d.getMonthValue());
                     } else {
-                        value = formatDate(channelId, ((DateTimeType) command).getZonedDateTime());
+                        value = formatDate(channelId, dateTimeCommand.getZonedDateTime());
                     }
                 } catch (InterruptedException e) {
                     logger.debug(
@@ -338,14 +338,13 @@ public class HeliosEasyControlsHandler extends BaseThingHandler {
                 }
             } else if ((command instanceof DecimalType) || (command instanceof StringType)) {
                 value = command.toString();
-            } else if (command instanceof QuantityType<?>) {
+            } else if (command instanceof QuantityType<?> val) {
                 // convert item's unit to the Helios device's unit
                 Map<String, HeliosVariable> variableMap = this.variableMap;
                 if (variableMap != null) {
                     HeliosVariable v = variableMap.get(channelId);
                     if (v != null) {
                         String unit = v.getUnit();
-                        QuantityType<?> val = (QuantityType<?>) command;
                         if (unit != null) {
                             switch (unit) {
                                 case HeliosVariable.UNIT_DAY:
@@ -406,7 +405,7 @@ public class HeliosEasyControlsHandler extends BaseThingHandler {
 
     @Override
     public Collection<Class<? extends ThingHandlerService>> getServices() {
-        return Collections.singleton(HeliosEasyControlsActions.class);
+        return Set.of(HeliosEasyControlsActions.class);
     }
 
     /**
@@ -855,7 +854,7 @@ public class HeliosEasyControlsHandler extends BaseThingHandler {
                     switch (itemType) {
                         case "Number":
                             if (((HeliosVariable.TYPE_INTEGER.equals(variableType))
-                                    || (HeliosVariable.TYPE_FLOAT.equals(variableType))) && (!value.equals("-"))) {
+                                    || (HeliosVariable.TYPE_FLOAT.equals(variableType))) && (!"-".equals(value))) {
                                 State state = null;
                                 if (v.getUnit() == null) {
                                     state = DecimalType.valueOf(value);
@@ -880,7 +879,7 @@ public class HeliosEasyControlsHandler extends BaseThingHandler {
                             break;
                         case "Switch":
                             if (variableType.equals(HeliosVariable.TYPE_INTEGER)) {
-                                updateState(v.getGroupAndName(), value.equals("1") ? OnOffType.ON : OnOffType.OFF);
+                                updateState(v.getGroupAndName(), "1".equals(value) ? OnOffType.ON : OnOffType.OFF);
                             }
                             break;
                         case "String":
index 3db53f6b0a7dadad1542bb720426fcf748e042b6..6c61b108e8083251725db4615e6d0a2bec8c21ab 100644 (file)
@@ -14,7 +14,6 @@ package org.openhab.binding.modbus.helioseasycontrols.internal;
 
 import static org.openhab.binding.modbus.helioseasycontrols.internal.HeliosEasyControlsBindingConstants.THING_TYPE_HELIOS_VENTILATION_EASY_CONTROLS;
 
-import java.util.Collections;
 import java.util.Set;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
@@ -39,8 +38,8 @@ import org.osgi.service.component.annotations.Reference;
 @Component(configurationPid = "binding.helioseasycontrols", service = ThingHandlerFactory.class)
 public class HeliosEasyControlsHandlerFactory extends BaseThingHandlerFactory {
 
-    private static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Collections
-            .singleton(THING_TYPE_HELIOS_VENTILATION_EASY_CONTROLS);
+    private static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Set
+            .of(THING_TYPE_HELIOS_VENTILATION_EASY_CONTROLS);
     private final HeliosEasyControlsTranslationProvider translationProvider;
 
     @Activate
index d9aa3feba29b5881d89f41616783bd809f744fd6..69d83ee84ec8e1ff0002683be51d43bdb32191a1 100644 (file)
@@ -14,7 +14,6 @@ package org.openhab.binding.modbus.stiebeleltron.internal;
 
 import static org.openhab.binding.modbus.stiebeleltron.internal.StiebelEltronBindingConstants.THING_TYPE_HEATPUMP;
 
-import java.util.Collections;
 import java.util.Set;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
@@ -37,7 +36,7 @@ import org.osgi.service.component.annotations.Component;
 @Component(configurationPid = "binding.stiebeleltron", service = ThingHandlerFactory.class)
 public class StiebelEltronHandlerFactory extends BaseThingHandlerFactory {
 
-    private static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Collections.singleton(THING_TYPE_HEATPUMP);
+    private static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Set.of(THING_TYPE_HEATPUMP);
 
     @Override
     public boolean supportsThingType(ThingTypeUID thingTypeUID) {
index 67cd7982c632dbaf335d1148fb287118975427b7..20f2804478080964a9fafba61636f92c74bfcf9b 100644 (file)
@@ -90,7 +90,6 @@ public class StiebelEltronHandler extends BaseThingHandler {
          * Register poll task This is where we set up our regular poller
          */
         public synchronized void registerPollTask(int address, int length, ModbusReadFunctionCode readFunctionCode) {
-
             logger.debug("Setting up regular polling");
 
             ModbusCommunicationInterface mycomms = StiebelEltronHandler.this.comms;
@@ -220,16 +219,15 @@ public class StiebelEltronHandler extends BaseThingHandler {
      *         the stiebel eltron modbus documentation)
      */
     private short getScaledInt16Value(Command command) throws StiebelEltronException {
-        if (command instanceof QuantityType) {
-            QuantityType<?> c = ((QuantityType<?>) command).toUnit(CELSIUS);
+        if (command instanceof QuantityType quantityCommand) {
+            QuantityType<?> c = quantityCommand.toUnit(CELSIUS);
             if (c != null) {
                 return (short) (c.doubleValue() * 10);
             } else {
                 throw new StiebelEltronException("Unsupported unit");
             }
         }
-        if (command instanceof DecimalType) {
-            DecimalType c = (DecimalType) command;
+        if (command instanceof DecimalType c) {
             return (short) (c.doubleValue() * 10);
         }
         throw new StiebelEltronException("Unsupported command type");
@@ -240,8 +238,7 @@ public class StiebelEltronHandler extends BaseThingHandler {
      * @return short the value of the command as short
      */
     private short getInt16Value(Command command) throws StiebelEltronException {
-        if (command instanceof DecimalType) {
-            DecimalType c = (DecimalType) command;
+        if (command instanceof DecimalType c) {
             return c.shortValue();
         }
         throw new StiebelEltronException("Unsupported command type");
@@ -327,7 +324,6 @@ public class StiebelEltronHandler extends BaseThingHandler {
      * Start the periodic polling1
      */
     private void startUp() {
-
         if (comms != null) {
             return;
         }
@@ -479,9 +475,8 @@ public class StiebelEltronHandler extends BaseThingHandler {
             return null;
         }
 
-        if (handler instanceof ModbusEndpointThingHandler) {
-            ModbusEndpointThingHandler slaveEndpoint = (ModbusEndpointThingHandler) handler;
-            return slaveEndpoint;
+        if (handler instanceof ModbusEndpointThingHandler thingHandler) {
+            return thingHandler;
         } else {
             throw new IllegalStateException("Unexpected bridge handler: " + handler.toString());
         }
index 7df703382bfcb92982c8bbfb8da2970ea4a54843..d6a9aeb9cc9a97da26589abdc7ea9ca5357b36f3 100644 (file)
@@ -106,7 +106,6 @@ public class StuderHandler extends BaseThingHandler {
 
     @Override
     public void handleCommand(ChannelUID channelUID, Command command) {
-
         // Currently we do not support any commands
     }
 
@@ -132,7 +131,6 @@ public class StuderHandler extends BaseThingHandler {
      * Start the periodic polling
      */
     private void startUp() {
-
         connectEndpoint();
 
         if (comms == null || config == null) {
@@ -203,9 +201,8 @@ public class StuderHandler extends BaseThingHandler {
             return null;
         }
 
-        if (handler instanceof ModbusEndpointThingHandler) {
-            ModbusEndpointThingHandler slaveEndpoint = (ModbusEndpointThingHandler) handler;
-            return slaveEndpoint;
+        if (handler instanceof ModbusEndpointThingHandler thingHandler) {
+            return thingHandler;
         } else {
             logger.debug("Unexpected bridge handler: {}", handler);
             return null;
index 257fd203332218ec93b4a4b5ed6070f74a523bda..fa0299dbd1c147e6427e59e41092aaedb14246d3 100644 (file)
@@ -207,7 +207,7 @@ public class StuderParser {
      * @return the converted float
      */
     public @Nullable Float hexToFloat(String hex) {
-        String t = hex.replaceAll(" ", "");
+        String t = hex.replace(" ", "");
         float f = Float.intBitsToFloat((int) Long.parseLong(t, 16));
         if (Float.isNaN(f)) {
             return null;
index 00dd6316b672f1c0108f7ccd32a85713a142fb5f..8f6500ebf7efc132e01f31e12d35a5934facdfbe 100644 (file)
@@ -171,7 +171,7 @@ public class SunspecDiscoveryProcess {
 
         Optional<DecimalType> id = ModbusBitUtilities.extractStateFromRegisters(registers, 0, ValueType.UINT32);
 
-        if (!id.isPresent() || id.get().longValue() != SUNSPEC_ID) {
+        if (id.isEmpty() || id.get().longValue() != SUNSPEC_ID) {
             logger.debug("Could not find SunSpec DID at address {}, received: {}, expected: {}", baseAddress, id,
                     SUNSPEC_ID);
             detectModel();
@@ -207,7 +207,7 @@ public class SunspecDiscoveryProcess {
         Optional<DecimalType> blockLength = ModbusBitUtilities.extractStateFromRegisters(registers, 1,
                 ValueType.UINT16);
 
-        if (!moduleID.isPresent() || !blockLength.isPresent()) {
+        if (moduleID.isEmpty() || blockLength.isEmpty()) {
             logger.info("Could not find valid module id or block length field.");
             parsingFinished();
             return;
index e509a77a1b3b11132d6103a5e6e784f3627fe763..3a23c0df2824396db2218644cb137de4c54cdf7c 100644 (file)
@@ -257,9 +257,8 @@ public abstract class AbstractSunSpecHandler extends BaseThingHandler {
             return null;
         }
 
-        if (handler instanceof ModbusEndpointThingHandler) {
-            ModbusEndpointThingHandler slaveEndpoint = (ModbusEndpointThingHandler) handler;
-            return slaveEndpoint;
+        if (handler instanceof ModbusEndpointThingHandler thingHandler) {
+            return thingHandler;
         } else {
             logger.debug("Unexpected bridge handler: {}", handler);
             return null;
@@ -433,7 +432,7 @@ public abstract class AbstractSunSpecHandler extends BaseThingHandler {
      * @return the scaled value as a DecimalType
      */
     protected State getScaled(Optional<? extends Number> value, Optional<Short> scaleFactor, Unit<?> unit) {
-        if (!value.isPresent() || !scaleFactor.isPresent()) {
+        if (value.isEmpty() || scaleFactor.isEmpty()) {
             return UnDefType.UNDEF;
         }
         return getScaled(value.get().longValue(), scaleFactor.get(), unit);
index 23721dfa4c65894dc6e88f2a09080b35ffa9adc4..91e3d3b0d0ba0833a604c1a358879af0efe8317b 100644 (file)
@@ -52,8 +52,8 @@ public class ModbusEndpointDiscoveryService implements ModbusThingHandlerDiscove
 
     @Override
     public void setThingHandler(@Nullable ThingHandler handler) {
-        if (handler instanceof ModbusEndpointThingHandler) {
-            this.handler = (ModbusEndpointThingHandler) handler;
+        if (handler instanceof ModbusEndpointThingHandler thingHandler) {
+            this.handler = thingHandler;
         }
     }
 
index 8de22c6254413fc0df00f7407459f9211ee7d857..6ae9652b061228e938e9888fdb9b4484c0c17bfa 100644 (file)
@@ -185,8 +185,8 @@ public abstract class BaseModbusThingHandler extends BaseThingHandler {
 
             BridgeHandler handler = bridge.getHandler();
 
-            if (handler instanceof ModbusEndpointThingHandler) {
-                return (ModbusEndpointThingHandler) handler;
+            if (handler instanceof ModbusEndpointThingHandler thingHandler) {
+                return thingHandler;
             } else {
                 throw new IllegalStateException("Not a Modbus Bridge: " + handler);
             }
index 82ca0957966d4d7b8aacf22059d1e5581958030b..10491b01a7b4b24d7a785b21a92c81637ce349d4 100644 (file)
@@ -225,9 +225,8 @@ public class ModbusPollerThingHandler extends BaseBridgeHandler {
             return null;
         }
 
-        if (handler instanceof ModbusEndpointThingHandler) {
-            ModbusEndpointThingHandler slaveEndpoint = (ModbusEndpointThingHandler) handler;
-            return slaveEndpoint;
+        if (handler instanceof ModbusEndpointThingHandler thingHandler) {
+            return thingHandler;
         } else {
             logger.debug("Unexpected bridge handler: {}", handler);
             return null;
@@ -385,8 +384,8 @@ public class ModbusPollerThingHandler extends BaseBridgeHandler {
 
     @Override
     public void childHandlerInitialized(ThingHandler childHandler, Thing childThing) {
-        if (childHandler instanceof ModbusDataThingHandler) {
-            this.childCallbacks.add((ModbusDataThingHandler) childHandler);
+        if (childHandler instanceof ModbusDataThingHandler modbusDataThingHandler) {
+            this.childCallbacks.add(modbusDataThingHandler);
         }
     }
 
index c04bfd11e6d7ca9c0a725522389cf0c6f9f1a7a6..8c02d7fbca796d4d84c2c17b1b440920f10b4f6a 100644 (file)
@@ -13,7 +13,6 @@
 package org.openhab.binding.modbus.internal;
 
 import java.util.Arrays;
-import java.util.Collections;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -38,7 +37,7 @@ public class CascadedValueTransformationImpl implements ValueTransformation {
                 .filter(s -> !s.isEmpty()).map(transformation -> new SingleValueTransformation(transformation))
                 .collect(Collectors.toList());
         if (localTransformations.isEmpty()) {
-            localTransformations = Collections.singletonList(new SingleValueTransformation(transformationString));
+            localTransformations = List.of(new SingleValueTransformation(transformationString));
         }
         transformations = localTransformations;
     }
index fc20b7d1971f801c8af4bac26afe92078ee0bb12..bcfdfb308cbc40067ba93ca1279bc6fb01b1f71a 100644 (file)
@@ -168,8 +168,7 @@ public class SingleValueTransformation implements ValueTransformation {
     }
 
     public static Optional<Command> tryConvertToCommand(String transformed) {
-        Optional<Command> transformedCommand = Optional.ofNullable(TypeParser.parseCommand(DEFAULT_TYPES, transformed));
-        return transformedCommand;
+        return Optional.ofNullable(TypeParser.parseCommand(DEFAULT_TYPES, transformed));
     }
 
     @Override
index 1e3ca086349e3db35330f079346c1d944b613c59..8eb720b40cf74414bc127ea318013ae3bea7f222 100644 (file)
@@ -211,7 +211,7 @@ public class ModbusDataThingHandler extends BaseThingHandler {
             return;
         }
 
-        if (!transformedCommand.isPresent()) {
+        if (transformedCommand.isEmpty()) {
             // transformation failed, return
             logger.warn("Cannot process command {} (of type {}) with channel {} since transformation was unsuccessful",
                     command, command.getClass().getSimpleName(), channelUID);
@@ -277,7 +277,7 @@ public class ModbusDataThingHandler extends BaseThingHandler {
         }
         if (writeType.equals(WRITE_TYPE_COIL)) {
             Optional<Boolean> commandAsBoolean = ModbusBitUtilities.translateCommand2Boolean(transformedCommand);
-            if (!commandAsBoolean.isPresent()) {
+            if (commandAsBoolean.isEmpty()) {
                 logger.warn(
                         "Cannot process command {} with channel {} since command is not OnOffType, OpenClosedType or Decimal trying to write to coil. Do not know how to convert to 0/1. Transformed command was '{}'",
                         origCommand, channelUID, transformedCommand);
@@ -417,9 +417,7 @@ public class ModbusDataThingHandler extends BaseThingHandler {
                         bridge.getLabel());
                 throw new ModbusConfigurationException(errmsg);
             }
-            if (bridgeHandler instanceof ModbusEndpointThingHandler) {
-                // Write-only thing, parent is endpoint
-                ModbusEndpointThingHandler endpointHandler = (ModbusEndpointThingHandler) bridgeHandler;
+            if (bridgeHandler instanceof ModbusEndpointThingHandler endpointHandler) {
                 slaveId = endpointHandler.getSlaveId();
                 comms = endpointHandler.getCommunicationInterface();
                 childOfEndpoint = true;
@@ -691,7 +689,7 @@ public class ModbusDataThingHandler extends BaseThingHandler {
         @Nullable
         ModbusReadRequestBlueprint readRequest = this.readRequest;
         ValueType readValueType = this.readValueType;
-        if (!readIndex.isPresent() || readRequest == null) {
+        if (readIndex.isEmpty() || readRequest == null) {
             return;
         }
         assert readValueType != null;
@@ -721,7 +719,7 @@ public class ModbusDataThingHandler extends BaseThingHandler {
             String errmsg = String.format(
                     "readStart=X.Y notation is not allowed to be used with value types larger than 16bit! Use readStart=X instead.");
             throw new ModbusConfigurationException(errmsg);
-        } else if (!bitQuery && valueTypeBitCount < 16 && !readSubIndex.isPresent()) {
+        } else if (!bitQuery && valueTypeBitCount < 16 && readSubIndex.isEmpty()) {
             // User has specified value type which is less than register width (16 bits).
             // readStart=X.Y notation must be used to define which data to extract from the 16 bit register.
             String errmsg = String
@@ -753,7 +751,7 @@ public class ModbusDataThingHandler extends BaseThingHandler {
     private void validateWriteIndex() throws ModbusConfigurationException {
         @Nullable
         ModbusReadRequestBlueprint readRequest = this.readRequest;
-        if (!writeStart.isPresent() || !writeSubIndex.isPresent()) {
+        if (writeStart.isEmpty() || writeSubIndex.isEmpty()) {
             //
             // this validation is really about writeStart=X.Y validation
             //
@@ -786,15 +784,11 @@ public class ModbusDataThingHandler extends BaseThingHandler {
     }
 
     private boolean containsOnOff(List<Class<? extends State>> channelAcceptedDataTypes) {
-        return channelAcceptedDataTypes.stream().anyMatch(clz -> {
-            return clz.equals(OnOffType.class);
-        });
+        return channelAcceptedDataTypes.stream().anyMatch(clz -> clz.equals(OnOffType.class));
     }
 
     private boolean containsOpenClosed(List<Class<? extends State>> acceptedDataTypes) {
-        return acceptedDataTypes.stream().anyMatch(clz -> {
-            return clz.equals(OpenClosedType.class);
-        });
+        return acceptedDataTypes.stream().anyMatch(clz -> clz.equals(OpenClosedType.class));
     }
 
     public synchronized void onReadResult(AsyncModbusReadResult result) {
index d60ec5fd493239e50419de86fc7ef6e99212cf9a..67c9519832de40a27feb3e3ad4b087c4b72c4918 100644 (file)
@@ -13,8 +13,8 @@
 package org.openhab.binding.modbus.internal.handler;
 
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Optional;
+import java.util.Set;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.openhab.binding.modbus.discovery.internal.ModbusEndpointDiscoveryService;
@@ -111,6 +111,6 @@ public class ModbusSerialThingHandler
 
     @Override
     public Collection<Class<? extends ThingHandlerService>> getServices() {
-        return Collections.singleton(ModbusEndpointDiscoveryService.class);
+        return Set.of(ModbusEndpointDiscoveryService.class);
     }
 }
index 13359dc6666db65caaf4832562496e2f9923a57d..8bf45d4e4a6581d2813a69d972cd21c592a73d3a 100644 (file)
@@ -13,8 +13,8 @@
 package org.openhab.binding.modbus.internal.handler;
 
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Optional;
+import java.util.Set;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.openhab.binding.modbus.discovery.internal.ModbusEndpointDiscoveryService;
@@ -101,6 +101,6 @@ public class ModbusTcpThingHandler
 
     @Override
     public Collection<Class<? extends ThingHandlerService>> getServices() {
-        return Collections.singleton(ModbusEndpointDiscoveryService.class);
+        return Set.of(ModbusEndpointDiscoveryService.class);
     }
 }
index cabddd0aecc6c3c60599595aae81c4d2dd2d48af..34620910d48274fa4e4842edaa002fa1d86b662c 100644 (file)
@@ -104,18 +104,18 @@ public class ModbusGainOffsetProfile<Q extends Quantity<Q>> implements StateProf
     @Override
     public void onCommandFromItem(Command command) {
         Type result = applyGainOffset(command, false);
-        if (result instanceof Command) {
+        if (result instanceof Command cmd) {
             logger.trace("Command '{}' from item, sending converted '{}' state towards handler.", command, result);
-            callback.handleCommand((Command) result);
+            callback.handleCommand(cmd);
         }
     }
 
     @Override
     public void onCommandFromHandler(Command command) {
         Type result = applyGainOffset(command, true);
-        if (result instanceof Command) {
+        if (result instanceof Command cmd) {
             logger.trace("Command '{}' from handler, sending converted '{}' command towards item.", command, result);
-            callback.sendCommand((Command) result);
+            callback.sendCommand(cmd);
         }
     }
 
@@ -141,23 +141,22 @@ public class ModbusGainOffsetProfile<Q extends Quantity<Q>> implements StateProf
         QuantityType<Dimensionless> pregainOffsetQt = localPregainOffset.get();
         String formula = towardsItem ? String.format("( '%s' + '%s') * '%s'", state, pregainOffsetQt, gain)
                 : String.format("'%s'/'%s' - '%s'", state, gain, pregainOffsetQt);
-        if (state instanceof QuantityType) {
+        if (state instanceof QuantityType quantityState) {
             try {
                 if (towardsItem) {
                     @SuppressWarnings("unchecked") // xx.toUnit(ONE) returns null or QuantityType<Dimensionless>
                     @Nullable
-                    QuantityType<Dimensionless> qtState = (QuantityType<Dimensionless>) (((QuantityType<?>) state)
+                    QuantityType<Dimensionless> qtState = (QuantityType<Dimensionless>) (quantityState
                             .toUnit(Units.ONE));
                     if (qtState == null) {
                         logger.warn("Profile can only process plain numbers from handler. Got unit {}. Returning UNDEF",
-                                ((QuantityType<?>) state).getUnit());
+                                quantityState.getUnit());
                         return UnDefType.UNDEF;
                     }
                     QuantityType<Dimensionless> offsetted = qtState.add(pregainOffsetQt);
                     result = applyGainTowardsItem(offsetted, gain);
                 } else {
-                    final QuantityType<?> qtState = (QuantityType<?>) state;
-                    result = applyGainTowardsHandler(qtState, gain).subtract(pregainOffsetQt);
+                    result = applyGainTowardsHandler(quantityState, gain).subtract(pregainOffsetQt);
 
                 }
             } catch (UnconvertibleException | UnsupportedOperationException e) {
@@ -166,8 +165,7 @@ public class ModbusGainOffsetProfile<Q extends Quantity<Q>> implements StateProf
                         gain, pregainOffsetQt, state, formula, towardsItem, e.getMessage());
                 return UnDefType.UNDEF;
             }
-        } else if (state instanceof DecimalType) {
-            DecimalType decState = (DecimalType) state;
+        } else if (state instanceof DecimalType decState) {
             return applyGainOffset(new QuantityType<>(decState, Units.ONE), towardsItem);
         } else if (state instanceof RefreshType) {
             result = state;
@@ -188,17 +186,16 @@ public class ModbusGainOffsetProfile<Q extends Quantity<Q>> implements StateProf
             Object parameterValue, @Nullable Unit<QU> assertUnit) {
         Optional<QuantityType<QU>> result = Optional.empty();
         Unit<QU> sourceUnit = null;
-        if (parameterValue instanceof String) {
+        if (parameterValue instanceof String str) {
             try {
-                QuantityType<QU> qt = new QuantityType<>((String) parameterValue);
+                QuantityType<QU> qt = new QuantityType<>(str);
                 result = Optional.of(qt);
                 sourceUnit = qt.getUnit();
             } catch (IllegalArgumentException e) {
                 logger.error("Cannot convert value '{}' of parameter '{}' into a QuantityType.", parameterValue,
                         parameterName);
             }
-        } else if (parameterValue instanceof BigDecimal) {
-            BigDecimal parameterBigDecimal = (BigDecimal) parameterValue;
+        } else if (parameterValue instanceof BigDecimal parameterBigDecimal) {
             result = Optional.of(new QuantityType<QU>(parameterBigDecimal.toString()));
         } else {
             logger.error("Parameter '{}' is not of type String or BigDecimal", parameterName);
@@ -248,7 +245,7 @@ public class ModbusGainOffsetProfile<Q extends Quantity<Q>> implements StateProf
     private static Object orDefault(Object defaultValue, @Nullable Object value) {
         if (value == null) {
             return defaultValue;
-        } else if (value instanceof String && ((String) value).isBlank()) {
+        } else if (value instanceof String str && str.isBlank()) {
             return defaultValue;
         } else {
             return value;
index c57e663ef89d40eed75efdd745945b0d17afe484..5f0faddb8b0a67b124d485cbd4e888f5f6ba19a3 100644 (file)
@@ -137,8 +137,8 @@ public class ModbusGainOffsetProfileTest {
         final Type actualStateUpdateTowardsItem;
         if (stateUpdateFromHandler) {
             final State updateFromHandler;
-            if (updateFromHandlerObj instanceof String) {
-                updateFromHandler = new QuantityType((String) updateFromHandlerObj);
+            if (updateFromHandlerObj instanceof String str) {
+                updateFromHandler = new QuantityType(str);
             } else {
                 assertTrue(updateFromHandlerObj instanceof State);
                 updateFromHandler = (State) updateFromHandlerObj;
@@ -151,8 +151,8 @@ public class ModbusGainOffsetProfileTest {
             actualStateUpdateTowardsItem = capture.getValue();
         } else {
             final Command updateFromHandler;
-            if (updateFromHandlerObj instanceof String) {
-                updateFromHandler = new QuantityType((String) updateFromHandlerObj);
+            if (updateFromHandlerObj instanceof String str) {
+                updateFromHandler = new QuantityType(str);
             } else {
                 assertTrue(updateFromHandlerObj instanceof State);
                 updateFromHandler = (Command) updateFromHandlerObj;
@@ -165,8 +165,7 @@ public class ModbusGainOffsetProfileTest {
             actualStateUpdateTowardsItem = capture.getValue();
         }
 
-        Type expectedStateUpdateTowardsItem = (expectedUpdateTowardsItemObj instanceof String)
-                ? new QuantityType((String) expectedUpdateTowardsItemObj)
+        Type expectedStateUpdateTowardsItem = (expectedUpdateTowardsItemObj instanceof String s) ? new QuantityType(s)
                 : (Type) expectedUpdateTowardsItemObj;
         assertEquals(expectedStateUpdateTowardsItem, actualStateUpdateTowardsItem);
         verifyNoMoreInteractions(callback);
@@ -218,7 +217,7 @@ public class ModbusGainOffsetProfileTest {
         ProfileCallback callback = mock(ProfileCallback.class);
         ModbusGainOffsetProfile profile = createProfile(callback, gain, preGainOffset);
 
-        Command commandFromItem = (commandFromItemObj instanceof String) ? new QuantityType((String) commandFromItemObj)
+        Command commandFromItem = (commandFromItemObj instanceof String str) ? new QuantityType(str)
                 : (Command) commandFromItemObj;
         profile.onCommandFromItem(commandFromItem);
 
@@ -227,8 +226,8 @@ public class ModbusGainOffsetProfileTest {
             ArgumentCaptor<Command> capture = ArgumentCaptor.forClass(Command.class);
             verify(callback, times(1)).handleCommand(capture.capture());
             Command actualCommandTowardsHandler = capture.getValue();
-            Command expectedCommandTowardsHandler = (expectedCommandTowardsHandlerObj instanceof String)
-                    ? new QuantityType((String) expectedCommandTowardsHandlerObj)
+            Command expectedCommandTowardsHandler = (expectedCommandTowardsHandlerObj instanceof String str)
+                    ? new QuantityType(str)
                     : (Command) expectedCommandTowardsHandlerObj;
             assertEquals(expectedCommandTowardsHandler, actualCommandTowardsHandler);
             verifyNoMoreInteractions(callback);
index d54c259086dc56ce1f88de8fc1715b85f095aaab..ab270297db4c37c0bbfd7c38f8e5ce2a22d9ed8c 100644 (file)
@@ -248,8 +248,8 @@ public class MonopriceAudioHandler extends BaseThingHandler implements Monoprice
                         }
                         break;
                     case CHANNEL_TYPE_SOURCE:
-                        if (command instanceof DecimalType) {
-                            final int value = ((DecimalType) command).intValue();
+                        if (command instanceof DecimalType decimalCommand) {
+                            final int value = decimalCommand.intValue();
                             if (value >= ONE && value <= amp.getNumSources()) {
                                 logger.debug("Got source command {} zone {}", value, zoneId);
                                 connector.sendCommand(zoneId, amp.getSourceCmd(), value);
@@ -258,9 +258,9 @@ public class MonopriceAudioHandler extends BaseThingHandler implements Monoprice
                         }
                         break;
                     case CHANNEL_TYPE_VOLUME:
-                        if (command instanceof PercentType) {
-                            final int value = (int) Math.round(
-                                    ((PercentType) command).doubleValue() / 100.0 * (amp.getMaxVol() - MIN_VOLUME))
+                        if (command instanceof PercentType percentCommand) {
+                            final int value = (int) Math
+                                    .round(percentCommand.doubleValue() / 100.0 * (amp.getMaxVol() - MIN_VOLUME))
                                     + MIN_VOLUME;
                             logger.debug("Got volume command {} zone {}", value, zoneId);
                             connector.sendCommand(zoneId, amp.getVolumeCmd(), value);
@@ -274,8 +274,8 @@ public class MonopriceAudioHandler extends BaseThingHandler implements Monoprice
                         }
                         break;
                     case CHANNEL_TYPE_TREBLE:
-                        if (command instanceof DecimalType) {
-                            final int value = ((DecimalType) command).intValue();
+                        if (command instanceof DecimalType decimalCommand) {
+                            final int value = decimalCommand.intValue();
                             if (value >= amp.getMinTone() && value <= amp.getMaxTone()) {
                                 logger.debug("Got treble command {} zone {}", value, zoneId);
                                 connector.sendCommand(zoneId, amp.getTrebleCmd(), value + amp.getToneOffset());
@@ -284,8 +284,8 @@ public class MonopriceAudioHandler extends BaseThingHandler implements Monoprice
                         }
                         break;
                     case CHANNEL_TYPE_BASS:
-                        if (command instanceof DecimalType) {
-                            final int value = ((DecimalType) command).intValue();
+                        if (command instanceof DecimalType decimalCommand) {
+                            final int value = decimalCommand.intValue();
                             if (value >= amp.getMinTone() && value <= amp.getMaxTone()) {
                                 logger.debug("Got bass command {} zone {}", value, zoneId);
                                 connector.sendCommand(zoneId, amp.getBassCmd(), value + amp.getToneOffset());
@@ -294,8 +294,8 @@ public class MonopriceAudioHandler extends BaseThingHandler implements Monoprice
                         }
                         break;
                     case CHANNEL_TYPE_BALANCE:
-                        if (command instanceof DecimalType) {
-                            final int value = ((DecimalType) command).intValue();
+                        if (command instanceof DecimalType decimalCommand) {
+                            final int value = decimalCommand.intValue();
                             if (value >= amp.getMinBal() && value <= amp.getMaxBal()) {
                                 logger.debug("Got balance command {} zone {}", value, zoneId);
                                 connector.sendCommand(zoneId, amp.getBalanceCmd(), value + amp.getBalOffset());
@@ -334,8 +334,8 @@ public class MonopriceAudioHandler extends BaseThingHandler implements Monoprice
                         }
                         break;
                     case CHANNEL_TYPE_ALLSOURCE:
-                        if (command instanceof DecimalType) {
-                            final int value = ((DecimalType) command).intValue();
+                        if (command instanceof DecimalType decimalCommand) {
+                            final int value = decimalCommand.intValue();
                             if (value >= ONE && value <= amp.getNumSources()) {
                                 zoneStream.forEach((streamZoneId) -> {
                                     if (!ignoreZones.contains(amp.getZoneName(streamZoneId))) {
@@ -355,9 +355,9 @@ public class MonopriceAudioHandler extends BaseThingHandler implements Monoprice
                         }
                         break;
                     case CHANNEL_TYPE_ALLVOLUME:
-                        if (command instanceof PercentType) {
-                            allVolume = (int) Math.round(
-                                    ((PercentType) command).doubleValue() / 100.0 * (amp.getMaxVol() - MIN_VOLUME))
+                        if (command instanceof PercentType percentCommand) {
+                            allVolume = (int) Math
+                                    .round(percentCommand.doubleValue() / 100.0 * (amp.getMaxVol() - MIN_VOLUME))
                                     + MIN_VOLUME;
                             zoneStream.forEach((streamZoneId) -> {
                                 if (!ignoreZones.contains(amp.getZoneName(streamZoneId))) {
index f4cce9a08e9febc59f77fff476eb17617d2b4c26..dbd4f29d83f2d7fdd61617ecf134004bf55acbe1 100644 (file)
@@ -14,7 +14,6 @@ package org.openhab.binding.mpd.internal;
 
 import static org.openhab.binding.mpd.internal.MPDBindingConstants.THING_TYPE_MPD;
 
-import java.util.Collections;
 import java.util.Set;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
@@ -37,7 +36,7 @@ import org.osgi.service.component.annotations.Component;
 @Component(configurationPid = "binding.mpd", service = ThingHandlerFactory.class)
 public class MPDHandlerFactory extends BaseThingHandlerFactory {
 
-    private static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Collections.singleton(THING_TYPE_MPD);
+    private static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Set.of(THING_TYPE_MPD);
 
     @Override
     public boolean supportsThingType(ThingTypeUID thingTypeUID) {
index 00e08dcc3277714efc50c9531ab6b7c2b4a03728..14c74131c8ce4e3a641d1e937197217297869f96 100644 (file)
@@ -38,8 +38,8 @@ public class MPDActions implements ThingActions {
 
     @Override
     public void setThingHandler(@Nullable ThingHandler handler) {
-        if (handler instanceof MPDHandler) {
-            this.handler = (MPDHandler) handler;
+        if (handler instanceof MPDHandler mpdHandler) {
+            this.handler = mpdHandler;
         }
     }
 
index 34fd36c5fb4b7e5bc1f95dc650ec414587268f6b..42988e404d89a614d8adc92b4938f2eaeeb76fb3 100644 (file)
@@ -13,7 +13,6 @@
 package org.openhab.binding.mpd.internal.discovery;
 
 import java.net.Inet4Address;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Set;
@@ -46,7 +45,7 @@ public class MPDDiscoveryParticipant implements MDNSDiscoveryParticipant {
 
     @Override
     public Set<ThingTypeUID> getSupportedThingTypeUIDs() {
-        return Collections.singleton(MPDBindingConstants.THING_TYPE_MPD);
+        return Set.of(MPDBindingConstants.THING_TYPE_MPD);
     }
 
     @Override
@@ -76,9 +75,8 @@ public class MPDDiscoveryParticipant implements MDNSDiscoveryParticipant {
 
         String name = service.getName();
 
-        final DiscoveryResult result = DiscoveryResultBuilder.create(uid).withLabel(name).withProperties(properties)
+        return DiscoveryResultBuilder.create(uid).withLabel(name).withProperties(properties)
                 .withRepresentationProperty(MPDBindingConstants.UNIQUE_ID).build();
-        return result;
     }
 
     @Nullable
index bc10b5bc6f07497f18b32feb4280b0d513a05774..61589f82903db5db40bc32f5334c331584d32d0f 100644 (file)
@@ -18,6 +18,7 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
 
@@ -111,7 +112,7 @@ public class MPDHandler extends BaseThingHandler implements MPDEventListener {
 
     @Override
     public Collection<Class<? extends ThingHandlerService>> getServices() {
-        return Collections.singleton(MPDActions.class);
+        return Set.of(MPDActions.class);
     }
 
     /**
@@ -232,10 +233,10 @@ public class MPDHandler extends BaseThingHandler implements MPDEventListener {
             } else if (command == OnOffType.OFF) {
                 newValue = 0;
             }
-        } else if (command instanceof DecimalType) {
-            newValue = ((DecimalType) command).intValue();
-        } else if (command instanceof PercentType) {
-            newValue = ((PercentType) command).intValue();
+        } else if (command instanceof DecimalType decimalCommand) {
+            newValue = decimalCommand.intValue();
+        } else if (command instanceof PercentType percentCommand) {
+            newValue = percentCommand.intValue();
         } else {
             logger.debug("Command {} is not supported to change volume", command);
             return;
index afc4c3e3396ce4c617bb8e3850c6f216e267acd3..19c4346d0fd10a86efa3190f15cb307062072d03 100644 (file)
@@ -82,7 +82,7 @@ public class MPDCommand {
         for (String param : parameters) {
             builder.append(" ");
             builder.append("\"");
-            builder.append(param.replaceAll("\"", "\\\\\"").replaceAll("'", "\\\\'"));
+            builder.append(param.replace("\"", "\\\\\"").replace("'", "\\\\'"));
             builder.append("\"");
         }
 
@@ -100,7 +100,7 @@ public class MPDCommand {
             if ("password".equals(command)) {
                 builder.append(param.replaceAll(".", "."));
             } else {
-                builder.append(param.replaceAll("\"", "\\\\\"").replaceAll("'", "\\\\'"));
+                builder.append(param.replace("\"", "\\\\\"").replace("'", "\\\\'"));
             }
             builder.append("\"");
         }
index 48fef50fdcc4aa3c3b421035472734392d39728d..72d46aa9000a4f9efe07ab4f504ca48b80f30340 100644 (file)
@@ -190,7 +190,7 @@ public class EspMilightHubHandler extends BaseThingHandler implements MqttMessag
                         bulbSaturation = "100";
                     }
                     // 360 isn't allowed by OpenHAB
-                    if (bulbHue.equals("360")) {
+                    if ("360".equals(bulbHue)) {
                         bulbHue = "0";
                     }
                     var hsb = new HSBType(new DecimalType(Integer.valueOf(bulbHue)),
@@ -368,8 +368,7 @@ public class EspMilightHubHandler extends BaseThingHandler implements MqttMessag
             }
             sendMQTT("{\"state\":\"ON\",\"level\":" + savedLevel.intValue() + "}");
             return;
-        } else if (command instanceof HSBType) {
-            HSBType hsb = (HSBType) command;
+        } else if (command instanceof HSBType hsb) {
             // This feature allows google home or Echo to trigger white mode when asked to turn color to white.
             if (hsb.getHue().intValue() == config.whiteHue && hsb.getSaturation().intValue() == config.whiteSat) {
                 if (hasCCT()) {
@@ -394,8 +393,7 @@ public class EspMilightHubHandler extends BaseThingHandler implements MqttMessag
             }
             savedLevel = hsb.getBrightness().toBigDecimal();
             return;
-        } else if (command instanceof PercentType) {
-            PercentType percentType = (PercentType) command;
+        } else if (command instanceof PercentType percentType) {
             if (percentType.intValue() == 0) {
                 turnOff();
                 return;
@@ -526,8 +524,7 @@ public class EspMilightHubHandler extends BaseThingHandler implements MqttMessag
             return;
         }
         ThingHandler handler = localBridge.getHandler();
-        if (handler instanceof AbstractBrokerHandler) {
-            AbstractBrokerHandler abh = (AbstractBrokerHandler) handler;
+        if (handler instanceof AbstractBrokerHandler abh) {
             final MqttBrokerConnection connection;
             try {
                 connection = abh.getConnectionAsync().get(500, TimeUnit.MILLISECONDS);
index cfe3f7316caab83629d8e0368fbed28d82aefd10..41866f0773937f82419b83eaa62690d385309efc 100644 (file)
@@ -79,8 +79,7 @@ public class SubscribeFieldToMQTTtopic implements MqttMessageSubscriber {
         // Handle the conversion case of BigDecimal to Float,Double,Long,Integer and the respective
         // primitive types
         String typeName = type.getSimpleName();
-        if (value instanceof BigDecimal && !type.equals(BigDecimal.class)) {
-            BigDecimal bdValue = (BigDecimal) value;
+        if (value instanceof BigDecimal bdValue && !type.equals(BigDecimal.class)) {
             if (type.equals(Float.class) || "float".equals(typeName)) {
                 result = bdValue.floatValue();
             } else if (type.equals(Double.class) || "double".equals(typeName)) {
@@ -93,8 +92,7 @@ public class SubscribeFieldToMQTTtopic implements MqttMessageSubscriber {
         } else
         // Handle the conversion case of String to Float,Double,Long,Integer,BigDecimal and the respective
         // primitive types
-        if (value instanceof String && !type.equals(String.class)) {
-            String bdValue = (String) value;
+        if (value instanceof String bdValue && !type.equals(String.class)) {
             if (type.equals(Float.class) || "float".equals(typeName)) {
                 result = Float.valueOf(bdValue);
             } else if (type.equals(Double.class) || "double".equals(typeName)) {
index 541c0e16f21f35d8fb7ad795d61d0a15465e3da1..b6ad6fbdb184abd026a7c6b5eedb9303fc1fac1a 100644 (file)
@@ -83,15 +83,14 @@ public class ColorValue extends Value {
     @Override
     public HSBType parseCommand(Command command) throws IllegalArgumentException {
         HSBType oldvalue = (state == UnDefType.UNDEF) ? new HSBType() : (HSBType) state;
-        if (command instanceof HSBType) {
-            return (HSBType) command;
-        } else if (command instanceof OnOffType) {
-            OnOffType boolValue = ((OnOffType) command);
+        if (command instanceof HSBType hsbCommand) {
+            return hsbCommand;
+        } else if (command instanceof OnOffType onOffCommand) {
             PercentType minOn = new PercentType(Math.max(oldvalue.getBrightness().intValue(), onBrightness));
             return new HSBType(oldvalue.getHue(), oldvalue.getSaturation(),
-                    boolValue == OnOffType.ON ? minOn : new PercentType(0));
-        } else if (command instanceof PercentType) {
-            return new HSBType(oldvalue.getHue(), oldvalue.getSaturation(), (PercentType) command);
+                    onOffCommand == OnOffType.ON ? minOn : new PercentType(0));
+        } else if (command instanceof PercentType percentCommand) {
+            return new HSBType(oldvalue.getHue(), oldvalue.getSaturation(), percentCommand);
         } else {
             final String updatedValue = command.toString();
             if (onValue.equals(updatedValue)) {
index fa2c4a052512c6386a43f229991714f44ed8269d..209d1c4bf5e3b0bb9b1cb4d4656834d7d47e6d6f 100644 (file)
@@ -35,8 +35,8 @@ public class DateTimeValue extends Value {
 
     @Override
     public DateTimeType parseCommand(Command command) throws IllegalArgumentException {
-        if (command instanceof DateTimeType) {
-            return ((DateTimeType) command);
+        if (command instanceof DateTimeType dateTimeCommand) {
+            return dateTimeCommand;
         } else {
             return DateTimeType.valueOf(command.toString());
         }
index 5e2daa91761bffe5dec856d63acf6e1fd3dbc396..aa23020b95556e9cf28c4a331d40e25fabb1ce42 100644 (file)
@@ -52,8 +52,8 @@ public class LocationValue extends Value {
 
     @Override
     public PointType parseCommand(Command command) throws IllegalArgumentException {
-        if (command instanceof PointType) {
-            return ((PointType) command);
+        if (command instanceof PointType point) {
+            return point;
         } else {
             return PointType.valueOf(command.toString());
         }
index 16b9e53ec38740b7c9105aeb60b392ba5db8cf13..f65dd125e4036b83bddd390ce307123f38f29dc4 100644 (file)
@@ -86,8 +86,8 @@ public class NumberValue extends Value {
     @Override
     public Command parseCommand(Command command) throws IllegalArgumentException {
         BigDecimal newValue = null;
-        if (command instanceof DecimalType) {
-            newValue = ((DecimalType) command).toBigDecimal();
+        if (command instanceof DecimalType decimalCommand) {
+            newValue = decimalCommand.toBigDecimal();
         } else if (command instanceof IncreaseDecreaseType || command instanceof UpDownType) {
             BigDecimal oldValue = getOldValue();
             if (command == IncreaseDecreaseType.INCREASE || command == UpDownType.UP) {
@@ -95,8 +95,8 @@ public class NumberValue extends Value {
             } else {
                 newValue = oldValue.subtract(step);
             }
-        } else if (command instanceof QuantityType<?>) {
-            newValue = getQuantityTypeAsDecimal((QuantityType<?>) command);
+        } else if (command instanceof QuantityType<?> quantityCommand) {
+            newValue = getQuantityTypeAsDecimal(quantityCommand);
         } else {
             newValue = new BigDecimal(command.toString());
         }
@@ -114,10 +114,10 @@ public class NumberValue extends Value {
 
     private BigDecimal getOldValue() {
         BigDecimal val = BigDecimal.ZERO;
-        if (state instanceof DecimalType) {
-            val = ((DecimalType) state).toBigDecimal();
-        } else if (state instanceof QuantityType<?>) {
-            val = ((QuantityType<?>) state).toBigDecimal();
+        if (state instanceof DecimalType decimalCommand) {
+            val = decimalCommand.toBigDecimal();
+        } else if (state instanceof QuantityType<?> quantityCommand) {
+            val = quantityCommand.toBigDecimal();
         }
         return val;
     }
index 839502d9f02385fbd97d694f1c1d19016d98c689..116c8de61437ccd060e89dd2a825c7644c194053 100644 (file)
@@ -73,8 +73,8 @@ public class OnOffValue extends Value {
 
     @Override
     public OnOffType parseCommand(Command command) throws IllegalArgumentException {
-        if (command instanceof OnOffType) {
-            return (OnOffType) command;
+        if (command instanceof OnOffType onOffCommand) {
+            return onOffCommand;
         } else {
             final String updatedValue = command.toString();
             if (onState.equals(updatedValue)) {
index d9cf7f9adb9a4893e661198b78481659ceaf0b1f..d9064dbaed151e1c7df4209c7010a3785ae80b08 100644 (file)
@@ -54,8 +54,8 @@ public class OpenCloseValue extends Value {
 
     @Override
     public OpenClosedType parseCommand(Command command) throws IllegalArgumentException {
-        if (command instanceof OpenClosedType) {
-            return (OpenClosedType) command;
+        if (command instanceof OpenClosedType openClosed) {
+            return openClosed;
         } else {
             final String updatedValue = command.toString();
             if (openString.equals(updatedValue)) {
index 12a01e3f0455b0f87d184a0caa174014b8b51073..217d16dc11759c3dc3abc586ae35562b6a8611d1 100644 (file)
@@ -75,18 +75,18 @@ public class PercentageValue extends Value {
     public PercentType parseCommand(Command command) throws IllegalArgumentException {
         PercentType oldvalue = (state == UnDefType.UNDEF) ? new PercentType() : (PercentType) state;
         // Nothing do to -> We have received a percentage
-        if (command instanceof PercentType) {
-            return (PercentType) command;
+        if (command instanceof PercentType percent) {
+            return percent;
         } else //
                // A decimal type need to be converted according to the current min/max values
-        if (command instanceof DecimalType) {
-            BigDecimal v = ((DecimalType) command).toBigDecimal();
+        if (command instanceof DecimalType decimal) {
+            BigDecimal v = decimal.toBigDecimal();
             v = v.subtract(min).multiply(HUNDRED).divide(max.subtract(min), MathContext.DECIMAL128);
             return new PercentType(v);
         } else //
                // A quantity type need to be converted according to the current min/max values
-        if (command instanceof QuantityType) {
-            QuantityType<?> qty = ((QuantityType<?>) command).toUnit(Units.PERCENT);
+        if (command instanceof QuantityType quantity) {
+            QuantityType<?> qty = quantity.toUnit(Units.PERCENT);
             if (qty != null) {
                 BigDecimal v = qty.toBigDecimal();
                 v = v.subtract(min).multiply(HUNDRED).divide(max.subtract(min), MathContext.DECIMAL128);
@@ -95,8 +95,8 @@ public class PercentageValue extends Value {
             return oldvalue;
         } else //
                // Increase or decrease by "step"
-        if (command instanceof IncreaseDecreaseType) {
-            if (((IncreaseDecreaseType) command) == IncreaseDecreaseType.INCREASE) {
+        if (command instanceof IncreaseDecreaseType increaseDecreaseCommand) {
+            if (increaseDecreaseCommand == IncreaseDecreaseType.INCREASE) {
                 final BigDecimal v = oldvalue.toBigDecimal().add(stepPercent);
                 return v.compareTo(HUNDRED) <= 0 ? new PercentType(v) : PercentType.HUNDRED;
             } else {
@@ -105,12 +105,12 @@ public class PercentageValue extends Value {
             }
         } else //
                // On/Off equals 100 or 0 percent
-        if (command instanceof OnOffType) {
-            return ((OnOffType) command) == OnOffType.ON ? PercentType.HUNDRED : PercentType.ZERO;
+        if (command instanceof OnOffType increaseDecreaseCommand) {
+            return increaseDecreaseCommand == OnOffType.ON ? PercentType.HUNDRED : PercentType.ZERO;
         } else//
               // Increase or decrease by "step"
-        if (command instanceof UpDownType) {
-            if (((UpDownType) command) == UpDownType.UP) {
+        if (command instanceof UpDownType upDownCommand) {
+            if (upDownCommand == UpDownType.UP) {
                 final BigDecimal v = oldvalue.toBigDecimal().add(stepPercent);
                 return v.compareTo(HUNDRED) <= 0 ? new PercentType(v) : PercentType.HUNDRED;
             } else {
index 8626f8df36c5aa7213e21d36c04acce700022c21..c0a977ac4bed6aec19676d2c9455192aed6a1471 100644 (file)
@@ -77,8 +77,8 @@ public class RollershutterValue extends Value {
                     return PercentType.HUNDRED;
                 }
             }
-        } else if (command instanceof PercentType) {
-            return (PercentType) command;
+        } else if (command instanceof PercentType percentage) {
+            return percentage;
         } else if (command instanceof StringType) {
             final String updatedValue = command.toString();
             if (updatedValue.equals(upString)) {
@@ -115,13 +115,13 @@ public class RollershutterValue extends Value {
             } else {
                 return ((StopMoveType) command).name();
             }
-        } else if (command instanceof PercentType) {
+        } else if (command instanceof PercentType percentage) {
             if (command.equals(PercentType.HUNDRED) && downString != null) {
                 return downString;
             } else if (command.equals(PercentType.ZERO) && upString != null) {
                 return upString;
             } else {
-                return String.valueOf(((PercentType) command).intValue());
+                return String.valueOf(percentage.intValue());
             }
         } else {
             throw new IllegalArgumentException("Invalid command type for Rollershutter item");
index 9604eb968f3ed886ebef6eee526877f20ca1a435..e5f672da28336184d06fdd7679cc128c96273029 100644 (file)
@@ -155,7 +155,7 @@ public abstract class Value {
      * @param data The binary payload to update the internal value.
      * @exception IllegalArgumentException Thrown if for example a text is assigned to a number type.
      */
-    public void update(byte data[]) throws IllegalArgumentException {
+    public void update(byte[] data) throws IllegalArgumentException {
         String mimeType = null;
 
         // URLConnection.guessContentTypeFromStream(input) is not sufficient to detect all JPEG files
index 8a6fc89ef1e6b667892487152e5eeeb96b63fe12..e56bca22796b4c7d6e0623d4bb8349b9c46637ea 100644 (file)
@@ -112,7 +112,7 @@ public class ChannelStateTransformationTests {
 
         ChannelStateTransformation transformation = channelConfig.transformationsIn.get(0);
 
-        byte payload[] = JSON_PATH_JSON.getBytes();
+        byte[] payload = JSON_PATH_JSON.getBytes();
         assertThat(transformation.pattern, is(JSON_PATH_PATTERN));
         // Test process message
         channelConfig.processMessage(channelConfig.getStateTopic(), payload);
index 4204a21a5c7efce580b2f625cb6556eb94f7bcc5..ccfa9d778e094835b1afcc635fbbda209929f9d4 100644 (file)
@@ -185,7 +185,7 @@ public class GenericThingHandlerTests {
                         textValue, thingHandler));
         doReturn(channelConfig).when(thingHandler).createChannelState(any(), any(), any());
         thingHandler.initialize();
-        byte payload[] = "UPDATE".getBytes();
+        byte[] payload = "UPDATE".getBytes();
         // Test process message
         channelConfig.processMessage("test/state", payload);
 
index 728c25ecdeefdeb7177d9328087c74b5a8d26150..c2e354dab211aca63980dad191d4f0cdb5809802 100644 (file)
@@ -53,10 +53,10 @@ abstract class AbstractRawSchemaLight extends Light {
             if (newState.getBrightness().equals(PercentType.ZERO)) {
                 newState = new HSBType(newState.getHue(), newState.getSaturation(), PercentType.HUNDRED);
             }
-        } else if (command instanceof HSBType) {
-            newState = (HSBType) command;
-        } else if (command instanceof PercentType) {
-            newState = new HSBType(newState.getHue(), newState.getSaturation(), (PercentType) command);
+        } else if (command instanceof HSBType hsb) {
+            newState = hsb;
+        } else if (command instanceof PercentType brightness) {
+            newState = new HSBType(newState.getHue(), newState.getSaturation(), brightness);
         } else {
             return false;
         }
index e082782e69fde424a7deaac06972e545e9a2723c..a2ad15e81b64ae51ff8088e97d650ae1745153bc 100644 (file)
@@ -58,7 +58,7 @@ public class Climate extends AbstractComponent<Climate.ChannelConfiguration> {
     public static final String TEMPERATURE_LOW_CH_ID = "temperatureLow";
     public static final String POWER_CH_ID = "power";
 
-    public static enum TemperatureUnit {
+    public enum TemperatureUnit {
         @SerializedName("C")
         CELSIUS(SIUnits.CELSIUS, new BigDecimal("0.1")),
         @SerializedName("F")
index 55d0b310e6c978044c99b0753602943c4df37bbf..092b898a695f6c4e1810526155f5510f86a3be07 100644 (file)
@@ -224,8 +224,7 @@ public class DefaultSchemaLight extends Light {
     private boolean handleColorCommand(Command command) {
         if (!handleOnOffCommand(command)) {
             return false;
-        } else if (command instanceof HSBType) {
-            HSBType color = (HSBType) command;
+        } else if (command instanceof HSBType color) {
             if (channelConfiguration.hsCommandTopic != null) {
                 // If we don't have a brightness channel, something is probably busted
                 // but don't choke
@@ -250,7 +249,7 @@ public class DefaultSchemaLight extends Light {
                 String xyString = String.format("%f,%f", xy[0].doubleValue(), xy[1].doubleValue());
                 xyChannel.getState().publishValue(new StringType(xyString));
             }
-        } else if (command instanceof PercentType) {
+        } else if (command instanceof PercentType brightness) {
             if (channelConfiguration.brightnessCommandTopic != null) {
                 brightnessChannel.getState().publishValue(command);
             } else {
@@ -261,8 +260,7 @@ public class DefaultSchemaLight extends Light {
                     color = HSBType.WHITE;
                 }
                 HSBType existingColor = (HSBType) color;
-                HSBType newCommand = new HSBType(existingColor.getHue(), existingColor.getSaturation(),
-                        (PercentType) command);
+                HSBType newCommand = new HSBType(existingColor.getHue(), existingColor.getSaturation(), brightness);
                 // re-process
                 handleColorCommand(newCommand);
             }
index a0da3587175dcbe6950932cf09b24bbf5f53799a..657483fc538a7ec70f752b4fd3dd5096931f297f 100644 (file)
@@ -47,7 +47,7 @@ public class DeviceTrigger extends AbstractComponent<DeviceTrigger.ChannelConfig
     public DeviceTrigger(ComponentFactory.ComponentConfiguration componentConfiguration) {
         super(componentConfiguration, ChannelConfiguration.class);
 
-        if (!channelConfiguration.automationType.equals("trigger")) {
+        if (!"trigger".equals(channelConfiguration.automationType)) {
             throw new ConfigurationException("Component:DeviceTrigger must have automation_type 'trigger'");
         }
         if (channelConfiguration.type.isBlank()) {
index ab8fc37ebfd0442e9911d6c0e40330d0e27e8c9c..01e8dcb9fe02ba35264650144a1e6bac991d5f68 100644 (file)
@@ -137,6 +137,7 @@ public class JSONSchemaLight extends AbstractRawSchemaLight {
         rawChannel.getState().publishValue(new StringType(command));
     }
 
+    @Override
     protected boolean handleCommand(Command command) {
         JSONState json = new JSONState();
         if (command.getClass().equals(OnOffType.class)) {
index 37df9fcc7672656dce2337f6647f8728fab642a2..c28e5a58a483977a73844dce74850c6cc83fd60d 100644 (file)
@@ -103,8 +103,7 @@ public class ChannelConfigurationTypeAdapterFactory implements TypeAdapterFactor
             @Override
             public @Nullable T read(JsonReader in) throws IOException {
                 /* read the object using the default adapter, but translate the names in the reader */
-                T result = delegate.read(MappingJsonReader.getDeviceMapper(in));
-                return result;
+                return delegate.read(MappingJsonReader.getDeviceMapper(in));
             }
 
             @Override
index 69f0505edc66674cb1ae6121dff44a49b48e0d36..a020c28067171a9b508c5eb47d62135a2226f0b5 100644 (file)
@@ -43,9 +43,11 @@ public class ConnectionDeserializer implements JsonDeserializer<Connection> {
         try {
             list = json.getAsJsonArray();
         } catch (IllegalStateException e) {
-            throw new JsonParseException("Cannot parse JSON array. Each connection must be defined as array with two "
-                    + "elements: connection_type, connection identifier. For example: \"connections\": [[\"mac\", "
-                    + "\"02:5b:26:a8:dc:12\"]]", e);
+            throw new JsonParseException("""
+                    Cannot parse JSON array. Each connection must be defined as array with two \
+                    elements: connection_type, connection identifier. For example: "connections": [["mac", \
+                    "02:5b:26:a8:dc:12"]]\
+                    """, e);
         }
         if (list.size() != 2) {
             throw new JsonParseException("Connection information must be a tuple, but has " + list.size()
index 503dd12ffd8bf644ef143328c2f321fd93c9980a..01c78712d92ad5def5e0200de2cf155bb2f4a0d6 100644 (file)
@@ -14,7 +14,6 @@ package org.openhab.binding.mqtt.homeassistant.internal.config;
 
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
 
@@ -63,7 +62,7 @@ public class ListOrStringDeserializer extends TypeAdapter<List<String>> {
                 in.nextNull();
                 return null;
             case STRING:
-                return Collections.singletonList(in.nextString());
+                return List.of(in.nextString());
             case BEGIN_ARRAY:
                 return readList(in);
             default:
index 776c2ed6a2e6b048091e61a3fd515fdbc1c15d28..0b9570a620bfe0b03209479404bcae0a1b18adcd 100644 (file)
@@ -17,7 +17,7 @@ import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.core.IsIterableContaining.hasItem;
 
 import java.util.Collection;
-import java.util.Collections;
+import java.util.List;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.junit.jupiter.api.Test;
@@ -45,8 +45,7 @@ public class HaIDTests {
 
         assertThat(restore, is(subject));
 
-        HandlerConfiguration haConfig = new HandlerConfiguration(subject.baseTopic,
-                Collections.singletonList(subject.toShortTopic()));
+        HandlerConfiguration haConfig = new HandlerConfiguration(subject.baseTopic, List.of(subject.toShortTopic()));
 
         Collection<HaID> restoreList = HaID.fromConfig(haConfig);
         assertThat(restoreList, hasItem(new HaID("homeassistant/switch/name/config")));
@@ -68,8 +67,7 @@ public class HaIDTests {
 
         assertThat(restore, is(subject));
 
-        HandlerConfiguration haConfig = new HandlerConfiguration(subject.baseTopic,
-                Collections.singletonList(subject.toShortTopic()));
+        HandlerConfiguration haConfig = new HandlerConfiguration(subject.baseTopic, List.of(subject.toShortTopic()));
 
         Collection<HaID> restoreList = HaID.fromConfig(haConfig);
         assertThat(restoreList, hasItem(new HaID("homeassistant/switch/node/name/config")));
index 5f07e6fffb4d78fdd13a7ca0bf3cde08930458af..3a365424741b9773b82572ef9b2e6863567b02ac 100644 (file)
@@ -36,31 +36,33 @@ public class AlarmControlPanelTests extends AbstractComponentTests {
     public void testAlarmControlPanel() {
         // @formatter:off
         var component = discoverComponent(configTopicToMqtt(CONFIG_TOPIC),
-                "{ " +
-                        "  \"availability\": [ " +
-                        "    { " +
-                        "      \"topic\": \"zigbee2mqtt/bridge/state\" " +
-                        "    } " +
-                        "  ], " +
-                        "  \"code\": \"12345\", " +
-                        "  \"command_topic\": \"zigbee2mqtt/alarm/set/state\", " +
-                        "  \"device\": { " +
-                        "    \"identifiers\": [ " +
-                        "      \"zigbee2mqtt_0x0000000000000000\" " +
-                        "    ], " +
-                        "    \"manufacturer\": \"BestAlarmEver\", " +
-                        "    \"model\": \"Heavy duty super duper alarm\", " +
-                        "    \"name\": \"Alarm\", " +
-                        "    \"sw_version\": \"Zigbee2MQTT 1.18.2\" " +
-                        "  }, " +
-                        "  \"name\": \"alarm\", " +
-                        "  \"payload_arm_away\": \"ARM_AWAY_\", " +
-                        "  \"payload_arm_home\": \"ARM_HOME_\", " +
-                        "  \"payload_arm_night\": \"ARM_NIGHT_\", " +
-                        "  \"payload_arm_custom_bypass\": \"ARM_CUSTOM_BYPASS_\", " +
-                        "  \"payload_disarm\": \"DISARM_\", " +
-                        "  \"state_topic\": \"zigbee2mqtt/alarm/state\" " +
-                        "} ");
+                """
+                { \
+                  "availability": [ \
+                    { \
+                      "topic": "zigbee2mqtt/bridge/state" \
+                    } \
+                  ], \
+                  "code": "12345", \
+                  "command_topic": "zigbee2mqtt/alarm/set/state", \
+                  "device": { \
+                    "identifiers": [ \
+                      "zigbee2mqtt_0x0000000000000000" \
+                    ], \
+                    "manufacturer": "BestAlarmEver", \
+                    "model": "Heavy duty super duper alarm", \
+                    "name": "Alarm", \
+                    "sw_version": "Zigbee2MQTT 1.18.2" \
+                  }, \
+                  "name": "alarm", \
+                  "payload_arm_away": "ARM_AWAY_", \
+                  "payload_arm_home": "ARM_HOME_", \
+                  "payload_arm_night": "ARM_NIGHT_", \
+                  "payload_arm_custom_bypass": "ARM_CUSTOM_BYPASS_", \
+                  "payload_disarm": "DISARM_", \
+                  "state_topic": "zigbee2mqtt/alarm/state" \
+                } \
+                """);
         // @formatter:on
 
         assertThat(component.channels.size(), is(4));
index f2ef928fca14b2b531401adf5ab51a8853375114..0bc38915a425ff14cf4c8dcf34d08481d878b505 100644 (file)
@@ -36,29 +36,31 @@ public class BinarySensorTests extends AbstractComponentTests {
     public void test() throws InterruptedException {
         // @formatter:off
         var component = discoverComponent(configTopicToMqtt(CONFIG_TOPIC),
-                "{ " +
-                        "  \"availability\": [ " +
-                        "    { " +
-                        "      \"topic\": \"zigbee2mqtt/bridge/state\" " +
-                        "    } " +
-                        "  ], " +
-                        "  \"device\": { " +
-                        "    \"identifiers\": [ " +
-                        "      \"zigbee2mqtt_0x0000000000000000\" " +
-                        "    ], " +
-                        "    \"manufacturer\": \"Sensors inc\", " +
-                        "    \"model\": \"On Off Sensor\", " +
-                        "    \"name\": \"OnOffSensor\", " +
-                        "    \"sw_version\": \"Zigbee2MQTT 1.18.2\" " +
-                        "  }, " +
-                        "  \"name\": \"onoffsensor\", " +
-                        "  \"force_update\": \"true\", " +
-                        "  \"payload_off\": \"OFF_\", " +
-                        "  \"payload_on\": \"ON_\", " +
-                        "  \"state_topic\": \"zigbee2mqtt/sensor/state\", " +
-                        "  \"unique_id\": \"sn1\", " +
-                        "  \"value_template\": \"{{ value_json.state }}\" " +
-                        "}");
+                """
+                { \
+                  "availability": [ \
+                    { \
+                      "topic": "zigbee2mqtt/bridge/state" \
+                    } \
+                  ], \
+                  "device": { \
+                    "identifiers": [ \
+                      "zigbee2mqtt_0x0000000000000000" \
+                    ], \
+                    "manufacturer": "Sensors inc", \
+                    "model": "On Off Sensor", \
+                    "name": "OnOffSensor", \
+                    "sw_version": "Zigbee2MQTT 1.18.2" \
+                  }, \
+                  "name": "onoffsensor", \
+                  "force_update": "true", \
+                  "payload_off": "OFF_", \
+                  "payload_on": "ON_", \
+                  "state_topic": "zigbee2mqtt/sensor/state", \
+                  "unique_id": "sn1", \
+                  "value_template": "{{ value_json.state }}" \
+                }\
+                """);
         // @formatter:on
 
         assertThat(component.channels.size(), is(1));
@@ -82,30 +84,32 @@ public class BinarySensorTests extends AbstractComponentTests {
     public void offDelayTest() {
         // @formatter:off
         var component = discoverComponent(configTopicToMqtt(CONFIG_TOPIC),
-                "{ " +
-                        "  \"availability\": [ " +
-                        "    { " +
-                        "      \"topic\": \"zigbee2mqtt/bridge/state\" " +
-                        "    } " +
-                        "  ], " +
-                        "  \"device\": { " +
-                        "    \"identifiers\": [ " +
-                        "      \"zigbee2mqtt_0x0000000000000000\" " +
-                        "    ], " +
-                        "    \"manufacturer\": \"Sensors inc\", " +
-                        "    \"model\": \"On Off Sensor\", " +
-                        "    \"name\": \"OnOffSensor\", " +
-                        "    \"sw_version\": \"Zigbee2MQTT 1.18.2\" " +
-                        "  }, " +
-                        "  \"name\": \"onoffsensor\", " +
-                        "  \"force_update\": \"true\", " +
-                        "  \"off_delay\": \"1\", " +
-                        "  \"payload_off\": \"OFF_\", " +
-                        "  \"payload_on\": \"ON_\", " +
-                        "  \"state_topic\": \"zigbee2mqtt/sensor/state\", " +
-                        "  \"unique_id\": \"sn1\", " +
-                        "  \"value_template\": \"{{ value_json.state }}\" " +
-                        "}");
+                """
+                { \
+                  "availability": [ \
+                    { \
+                      "topic": "zigbee2mqtt/bridge/state" \
+                    } \
+                  ], \
+                  "device": { \
+                    "identifiers": [ \
+                      "zigbee2mqtt_0x0000000000000000" \
+                    ], \
+                    "manufacturer": "Sensors inc", \
+                    "model": "On Off Sensor", \
+                    "name": "OnOffSensor", \
+                    "sw_version": "Zigbee2MQTT 1.18.2" \
+                  }, \
+                  "name": "onoffsensor", \
+                  "force_update": "true", \
+                  "off_delay": "1", \
+                  "payload_off": "OFF_", \
+                  "payload_on": "ON_", \
+                  "state_topic": "zigbee2mqtt/sensor/state", \
+                  "unique_id": "sn1", \
+                  "value_template": "{{ value_json.state }}" \
+                }\
+                """);
         // @formatter:on
 
         publishMessage("zigbee2mqtt/sensor/state", "{ \"state\": \"ON_\" }");
@@ -118,30 +122,32 @@ public class BinarySensorTests extends AbstractComponentTests {
     public void expireAfterTest() {
         // @formatter:off
         var component = discoverComponent(configTopicToMqtt(CONFIG_TOPIC),
-                "{ " +
-                        "  \"availability\": [ " +
-                        "    { " +
-                        "      \"topic\": \"zigbee2mqtt/bridge/state\" " +
-                        "    } " +
-                        "  ], " +
-                        "  \"device\": { " +
-                        "    \"identifiers\": [ " +
-                        "      \"zigbee2mqtt_0x0000000000000000\" " +
-                        "    ], " +
-                        "    \"manufacturer\": \"Sensors inc\", " +
-                        "    \"model\": \"On Off Sensor\", " +
-                        "    \"name\": \"OnOffSensor\", " +
-                        "    \"sw_version\": \"Zigbee2MQTT 1.18.2\" " +
-                        "  }, " +
-                        "  \"name\": \"onoffsensor\", " +
-                        "  \"expire_after\": \"1\", " +
-                        "  \"force_update\": \"true\", " +
-                        "  \"payload_off\": \"OFF_\", " +
-                        "  \"payload_on\": \"ON_\", " +
-                        "  \"state_topic\": \"zigbee2mqtt/sensor/state\", " +
-                        "  \"unique_id\": \"sn1\", " +
-                        "  \"value_template\": \"{{ value_json.state }}\" " +
-                        "}");
+                """
+                { \
+                  "availability": [ \
+                    { \
+                      "topic": "zigbee2mqtt/bridge/state" \
+                    } \
+                  ], \
+                  "device": { \
+                    "identifiers": [ \
+                      "zigbee2mqtt_0x0000000000000000" \
+                    ], \
+                    "manufacturer": "Sensors inc", \
+                    "model": "On Off Sensor", \
+                    "name": "OnOffSensor", \
+                    "sw_version": "Zigbee2MQTT 1.18.2" \
+                  }, \
+                  "name": "onoffsensor", \
+                  "expire_after": "1", \
+                  "force_update": "true", \
+                  "payload_off": "OFF_", \
+                  "payload_on": "ON_", \
+                  "state_topic": "zigbee2mqtt/sensor/state", \
+                  "unique_id": "sn1", \
+                  "value_template": "{{ value_json.state }}" \
+                }\
+                """);
         // @formatter:on
 
         publishMessage("zigbee2mqtt/sensor/state", "{ \"state\": \"OFF_\" }");
index b1b8b77cf4f1e02c494c45ea66ab23e5f0c2d99b..8b32c33a34a856a6e8a6448ef1fc916eef83f518 100644 (file)
@@ -35,24 +35,26 @@ public class CameraTests extends AbstractComponentTests {
     public void test() throws InterruptedException {
         // @formatter:off
         var component = discoverComponent(configTopicToMqtt(CONFIG_TOPIC),
-                "{ " +
-                        "  \"availability\": [ " +
-                        "    { " +
-                        "      \"topic\": \"zigbee2mqtt/bridge/state\" " +
-                        "    } " +
-                        "  ], " +
-                        "  \"device\": { " +
-                        "    \"identifiers\": [ " +
-                        "      \"zigbee2mqtt_0x0000000000000000\" " +
-                        "    ], " +
-                        "    \"manufacturer\": \"Cameras inc\", " +
-                        "    \"model\": \"Camera\", " +
-                        "    \"name\": \"camera\", " +
-                        "    \"sw_version\": \"Zigbee2MQTT 1.18.2\" " +
-                        "  }, " +
-                        "  \"name\": \"cam1\", " +
-                        "  \"topic\": \"zigbee2mqtt/cam1/state\"" +
-                        "}");
+                """
+                { \
+                  "availability": [ \
+                    { \
+                      "topic": "zigbee2mqtt/bridge/state" \
+                    } \
+                  ], \
+                  "device": { \
+                    "identifiers": [ \
+                      "zigbee2mqtt_0x0000000000000000" \
+                    ], \
+                    "manufacturer": "Cameras inc", \
+                    "model": "Camera", \
+                    "name": "camera", \
+                    "sw_version": "Zigbee2MQTT 1.18.2" \
+                  }, \
+                  "name": "cam1", \
+                  "topic": "zigbee2mqtt/cam1/state"\
+                }\
+                """);
         // @formatter:on
 
         assertThat(component.channels.size(), is(1));
index 96afff6ded19b757bd328512af644b350224ceaf..1093bce458190d0cb06335ceb598a7e31a2e5ff0 100644 (file)
@@ -41,31 +41,34 @@ public class ClimateTests extends AbstractComponentTests {
     @SuppressWarnings("null")
     @Test
     public void testTS0601Climate() {
-        var component = discoverComponent(configTopicToMqtt(CONFIG_TOPIC), "{"
-                + " \"action_template\": \"{% set values = {'idle':'off','heat':'heating','cool':'cooling','fan only':'fan'} %}{{ values[value_json.running_state] }}\","
-                + " \"action_topic\": \"zigbee2mqtt/th1\", \"availability\": [ {"
-                + " \"topic\": \"zigbee2mqtt/bridge/state\" } ],"
-                + " \"away_mode_command_topic\": \"zigbee2mqtt/th1/set/away_mode\","
-                + " \"away_mode_state_template\": \"{{ value_json.away_mode }}\","
-                + " \"away_mode_state_topic\": \"zigbee2mqtt/th1\","
-                + " \"current_temperature_template\": \"{{ value_json.local_temperature }}\","
-                + " \"current_temperature_topic\": \"zigbee2mqtt/th1\", \"device\": {"
-                + " \"identifiers\": [ \"zigbee2mqtt_0x847127fffe11dd6a\" ],  \"manufacturer\": \"TuYa\","
-                + " \"model\": \"Radiator valve with thermostat (TS0601_thermostat)\","
-                + " \"name\": \"th1\", \"sw_version\": \"Zigbee2MQTT 1.18.2\" },"
-                + " \"hold_command_topic\": \"zigbee2mqtt/th1/set/preset\", \"hold_modes\": ["
-                + " \"schedule\", \"manual\", \"boost\", \"complex\",  \"comfort\", \"eco\" ],"
-                + " \"hold_state_template\": \"{{ value_json.preset }}\","
-                + " \"hold_state_topic\": \"zigbee2mqtt/th1\","
-                + " \"json_attributes_topic\": \"zigbee2mqtt/th1\", \"max_temp\": \"35\","
-                + " \"min_temp\": \"5\", \"mode_command_topic\": \"zigbee2mqtt/th1/set/system_mode\","
-                + " \"mode_state_template\": \"{{ value_json.system_mode }}\","
-                + " \"mode_state_topic\": \"zigbee2mqtt/th1\", \"modes\": [ \"heat\","
-                + " \"auto\", \"off\" ], \"name\": \"th1\", \"temp_step\": 0.5,"
-                + " \"temperature_command_topic\": \"zigbee2mqtt/th1/set/current_heating_setpoint\","
-                + " \"temperature_state_template\": \"{{ value_json.current_heating_setpoint }}\","
-                + " \"temperature_state_topic\": \"zigbee2mqtt/th1\", \"temperature_unit\": \"C\","
-                + " \"unique_id\": \"0x847127fffe11dd6a_climate_zigbee2mqtt\"}");
+        var component = discoverComponent(configTopicToMqtt(CONFIG_TOPIC),
+                """
+                        {\
+                         "action_template": "{% set values = {'idle':'off','heat':'heating','cool':'cooling','fan only':'fan'} %}{{ values[value_json.running_state] }}",\
+                         "action_topic": "zigbee2mqtt/th1", "availability": [ {\
+                         "topic": "zigbee2mqtt/bridge/state" } ],\
+                         "away_mode_command_topic": "zigbee2mqtt/th1/set/away_mode",\
+                         "away_mode_state_template": "{{ value_json.away_mode }}",\
+                         "away_mode_state_topic": "zigbee2mqtt/th1",\
+                         "current_temperature_template": "{{ value_json.local_temperature }}",\
+                         "current_temperature_topic": "zigbee2mqtt/th1", "device": {\
+                         "identifiers": [ "zigbee2mqtt_0x847127fffe11dd6a" ],  "manufacturer": "TuYa",\
+                         "model": "Radiator valve with thermostat (TS0601_thermostat)",\
+                         "name": "th1", "sw_version": "Zigbee2MQTT 1.18.2" },\
+                         "hold_command_topic": "zigbee2mqtt/th1/set/preset", "hold_modes": [\
+                         "schedule", "manual", "boost", "complex",  "comfort", "eco" ],\
+                         "hold_state_template": "{{ value_json.preset }}",\
+                         "hold_state_topic": "zigbee2mqtt/th1",\
+                         "json_attributes_topic": "zigbee2mqtt/th1", "max_temp": "35",\
+                         "min_temp": "5", "mode_command_topic": "zigbee2mqtt/th1/set/system_mode",\
+                         "mode_state_template": "{{ value_json.system_mode }}",\
+                         "mode_state_topic": "zigbee2mqtt/th1", "modes": [ "heat",\
+                         "auto", "off" ], "name": "th1", "temp_step": 0.5,\
+                         "temperature_command_topic": "zigbee2mqtt/th1/set/current_heating_setpoint",\
+                         "temperature_state_template": "{{ value_json.current_heating_setpoint }}",\
+                         "temperature_state_topic": "zigbee2mqtt/th1", "temperature_unit": "C",\
+                         "unique_id": "0x847127fffe11dd6a_climate_zigbee2mqtt"}\
+                        """);
 
         assertThat(component.channels.size(), is(6));
         assertThat(component.getName(), is("th1"));
@@ -81,10 +84,11 @@ public class ClimateTests extends AbstractComponentTests {
         assertChannel(component, Climate.TEMPERATURE_CH_ID, "zigbee2mqtt/th1",
                 "zigbee2mqtt/th1/set/current_heating_setpoint", "th1", NumberValue.class);
 
-        publishMessage("zigbee2mqtt/th1",
-                "{\"running_state\": \"idle\", \"away_mode\": \"ON\", "
-                        + "\"local_temperature\": \"22.2\", \"preset\": \"schedule\", \"system_mode\": \"heat\", "
-                        + "\"current_heating_setpoint\": \"24\"}");
+        publishMessage("zigbee2mqtt/th1", """
+                {"running_state": "idle", "away_mode": "ON", \
+                "local_temperature": "22.2", "preset": "schedule", "system_mode": "heat", \
+                "current_heating_setpoint": "24"}\
+                """);
         assertState(component, Climate.ACTION_CH_ID, new StringType("off"));
         assertState(component, Climate.AWAY_MODE_CH_ID, OnOffType.ON);
         assertState(component, Climate.CURRENT_TEMPERATURE_CH_ID, new QuantityType<>(22.2, SIUnits.CELSIUS));
@@ -105,32 +109,35 @@ public class ClimateTests extends AbstractComponentTests {
     @SuppressWarnings("null")
     @Test
     public void testTS0601ClimateNotSendIfOff() {
-        var component = discoverComponent(configTopicToMqtt(CONFIG_TOPIC), "{"
-                + " \"action_template\": \"{% set values = {'idle':'off','heat':'heating','cool':'cooling','fan only':'fan'} %}{{ values[value_json.running_state] }}\","
-                + " \"action_topic\": \"zigbee2mqtt/th1\", \"availability\": [ {"
-                + " \"topic\": \"zigbee2mqtt/bridge/state\" } ],"
-                + " \"away_mode_command_topic\": \"zigbee2mqtt/th1/set/away_mode\","
-                + " \"away_mode_state_template\": \"{{ value_json.away_mode }}\","
-                + " \"away_mode_state_topic\": \"zigbee2mqtt/th1\","
-                + " \"current_temperature_template\": \"{{ value_json.local_temperature }}\","
-                + " \"current_temperature_topic\": \"zigbee2mqtt/th1\", \"device\": {"
-                + " \"identifiers\": [ \"zigbee2mqtt_0x847127fffe11dd6a\" ],  \"manufacturer\": \"TuYa\","
-                + " \"model\": \"Radiator valve with thermostat (TS0601_thermostat)\","
-                + " \"name\": \"th1\", \"sw_version\": \"Zigbee2MQTT 1.18.2\" },"
-                + " \"hold_command_topic\": \"zigbee2mqtt/th1/set/preset\", \"hold_modes\": ["
-                + " \"schedule\", \"manual\", \"boost\", \"complex\",  \"comfort\", \"eco\" ],"
-                + " \"hold_state_template\": \"{{ value_json.preset }}\","
-                + " \"hold_state_topic\": \"zigbee2mqtt/th1\","
-                + " \"json_attributes_topic\": \"zigbee2mqtt/th1\", \"max_temp\": \"35\","
-                + " \"min_temp\": \"5\", \"mode_command_topic\": \"zigbee2mqtt/th1/set/system_mode\","
-                + " \"mode_state_template\": \"{{ value_json.system_mode }}\","
-                + " \"mode_state_topic\": \"zigbee2mqtt/th1\", \"modes\": [ \"heat\","
-                + " \"auto\", \"off\" ], \"name\": \"th1\", \"temp_step\": 0.5,"
-                + " \"temperature_command_topic\": \"zigbee2mqtt/th1/set/current_heating_setpoint\","
-                + " \"temperature_state_template\": \"{{ value_json.current_heating_setpoint }}\","
-                + " \"temperature_state_topic\": \"zigbee2mqtt/th1\", \"temperature_unit\": \"C\","
-                + " \"power_command_topic\": \"zigbee2mqtt/th1/power\","
-                + " \"unique_id\": \"0x847127fffe11dd6a_climate_zigbee2mqtt\", \"send_if_off\": \"false\"}");
+        var component = discoverComponent(configTopicToMqtt(CONFIG_TOPIC),
+                """
+                        {\
+                         "action_template": "{% set values = {'idle':'off','heat':'heating','cool':'cooling','fan only':'fan'} %}{{ values[value_json.running_state] }}",\
+                         "action_topic": "zigbee2mqtt/th1", "availability": [ {\
+                         "topic": "zigbee2mqtt/bridge/state" } ],\
+                         "away_mode_command_topic": "zigbee2mqtt/th1/set/away_mode",\
+                         "away_mode_state_template": "{{ value_json.away_mode }}",\
+                         "away_mode_state_topic": "zigbee2mqtt/th1",\
+                         "current_temperature_template": "{{ value_json.local_temperature }}",\
+                         "current_temperature_topic": "zigbee2mqtt/th1", "device": {\
+                         "identifiers": [ "zigbee2mqtt_0x847127fffe11dd6a" ],  "manufacturer": "TuYa",\
+                         "model": "Radiator valve with thermostat (TS0601_thermostat)",\
+                         "name": "th1", "sw_version": "Zigbee2MQTT 1.18.2" },\
+                         "hold_command_topic": "zigbee2mqtt/th1/set/preset", "hold_modes": [\
+                         "schedule", "manual", "boost", "complex",  "comfort", "eco" ],\
+                         "hold_state_template": "{{ value_json.preset }}",\
+                         "hold_state_topic": "zigbee2mqtt/th1",\
+                         "json_attributes_topic": "zigbee2mqtt/th1", "max_temp": "35",\
+                         "min_temp": "5", "mode_command_topic": "zigbee2mqtt/th1/set/system_mode",\
+                         "mode_state_template": "{{ value_json.system_mode }}",\
+                         "mode_state_topic": "zigbee2mqtt/th1", "modes": [ "heat",\
+                         "auto", "off" ], "name": "th1", "temp_step": 0.5,\
+                         "temperature_command_topic": "zigbee2mqtt/th1/set/current_heating_setpoint",\
+                         "temperature_state_template": "{{ value_json.current_heating_setpoint }}",\
+                         "temperature_state_topic": "zigbee2mqtt/th1", "temperature_unit": "C",\
+                         "power_command_topic": "zigbee2mqtt/th1/power",\
+                         "unique_id": "0x847127fffe11dd6a_climate_zigbee2mqtt", "send_if_off": "false"}\
+                        """);
 
         assertThat(component.channels.size(), is(7));
         assertThat(component.getName(), is("th1"));
@@ -146,10 +153,11 @@ public class ClimateTests extends AbstractComponentTests {
         assertChannel(component, Climate.TEMPERATURE_CH_ID, "zigbee2mqtt/th1",
                 "zigbee2mqtt/th1/set/current_heating_setpoint", "th1", NumberValue.class);
 
-        publishMessage("zigbee2mqtt/th1",
-                "{\"running_state\": \"idle\", \"away_mode\": \"ON\", "
-                        + "\"local_temperature\": \"22.2\", \"preset\": \"schedule\", \"system_mode\": \"heat\", "
-                        + "\"current_heating_setpoint\": \"24\"}");
+        publishMessage("zigbee2mqtt/th1", """
+                {"running_state": "idle", "away_mode": "ON", \
+                "local_temperature": "22.2", "preset": "schedule", "system_mode": "heat", \
+                "current_heating_setpoint": "24"}\
+                """);
         assertState(component, Climate.ACTION_CH_ID, new StringType("off"));
         assertState(component, Climate.AWAY_MODE_CH_ID, OnOffType.ON);
         assertState(component, Climate.CURRENT_TEMPERATURE_CH_ID, new QuantityType<>(22.2, SIUnits.CELSIUS));
@@ -170,10 +178,11 @@ public class ClimateTests extends AbstractComponentTests {
         assertPublished("zigbee2mqtt/th1/power", "ON");
 
         // Enabled
-        publishMessage("zigbee2mqtt/th1",
-                "{\"running_state\": \"heat\", \"away_mode\": \"ON\", "
-                        + "\"local_temperature\": \"22.2\", \"preset\": \"schedule\", \"system_mode\": \"heat\", "
-                        + "\"current_heating_setpoint\": \"24\"}");
+        publishMessage("zigbee2mqtt/th1", """
+                {"running_state": "heat", "away_mode": "ON", \
+                "local_temperature": "22.2", "preset": "schedule", "system_mode": "heat", \
+                "current_heating_setpoint": "24"}\
+                """);
 
         // Climate is in ON state
         component.getChannel(Climate.AWAY_MODE_CH_ID).getState().publishValue(OnOffType.OFF);
@@ -189,48 +198,49 @@ public class ClimateTests extends AbstractComponentTests {
     @SuppressWarnings("null")
     @Test
     public void testClimate() {
-        var component = discoverComponent(configTopicToMqtt(CONFIG_TOPIC),
-                "{\"action_template\": \"{{ value_json.action }}\", \"action_topic\": \"zigbee2mqtt/th1\","
-                        + " \"aux_command_topic\": \"zigbee2mqtt/th1/aux\","
-                        + " \"aux_state_template\": \"{{ value_json.aux }}\", \"aux_state_topic\": \"zigbee2mqtt/th1\","
-                        + " \"away_mode_command_topic\": \"zigbee2mqtt/th1/away_mode\","
-                        + " \"away_mode_state_template\": \"{{ value_json.away_mode }}\","
-                        + " \"away_mode_state_topic\": \"zigbee2mqtt/th1\","
-                        + " \"current_temperature_template\": \"{{ value_json.current_temperature }}\","
-                        + " \"current_temperature_topic\": \"zigbee2mqtt/th1\","
-                        + " \"fan_mode_command_template\": \"fan_mode={{ value }}\","
-                        + " \"fan_mode_command_topic\": \"zigbee2mqtt/th1/fan_mode\","
-                        + " \"fan_mode_state_template\": \"{{ value_json.fan_mode }}\","
-                        + " \"fan_mode_state_topic\": \"zigbee2mqtt/th1\", \"fan_modes\": [ \"p1\","
-                        + " \"p2\" ], \"hold_command_template\": \"hold={{ value }}\","
-                        + " \"hold_command_topic\": \"zigbee2mqtt/th1/hold\","
-                        + " \"hold_state_template\": \"{{ value_json.hold }}\","
-                        + " \"hold_state_topic\": \"zigbee2mqtt/th1\", \"hold_modes\": [ \"u1\", \"u2\","
-                        + " \"u3\" ], \"json_attributes_template\": \"{{ value_json.attrs }}\","
-                        + " \"json_attributes_topic\": \"zigbee2mqtt/th1\","
-                        + " \"mode_command_template\": \"mode={{ value }}\","
-                        + " \"mode_command_topic\": \"zigbee2mqtt/th1/mode\","
-                        + " \"mode_state_template\": \"{{ value_json.mode }}\","
-                        + " \"mode_state_topic\": \"zigbee2mqtt/th1\", \"modes\": [ \"B1\", \"B2\""
-                        + " ], \"swing_command_template\": \"swing={{ value }}\","
-                        + " \"swing_command_topic\": \"zigbee2mqtt/th1/swing\","
-                        + " \"swing_state_template\": \"{{ value_json.swing }}\","
-                        + " \"swing_state_topic\": \"zigbee2mqtt/th1\", \"swing_modes\": [ \"G1\","
-                        + " \"G2\" ], \"temperature_command_template\": \"temperature={{ value }}\","
-                        + " \"temperature_command_topic\": \"zigbee2mqtt/th1/temperature\","
-                        + " \"temperature_state_template\": \"{{ value_json.temperature }}\","
-                        + " \"temperature_state_topic\": \"zigbee2mqtt/th1\","
-                        + " \"temperature_high_command_template\": \"temperature_high={{ value }}\","
-                        + " \"temperature_high_command_topic\": \"zigbee2mqtt/th1/temperature_high\","
-                        + " \"temperature_high_state_template\": \"{{ value_json.temperature_high }}\","
-                        + " \"temperature_high_state_topic\": \"zigbee2mqtt/th1\","
-                        + " \"temperature_low_command_template\": \"temperature_low={{ value }}\","
-                        + " \"temperature_low_command_topic\": \"zigbee2mqtt/th1/temperature_low\","
-                        + " \"temperature_low_state_template\": \"{{ value_json.temperature_low }}\","
-                        + " \"temperature_low_state_topic\": \"zigbee2mqtt/th1\","
-                        + " \"power_command_topic\": \"zigbee2mqtt/th1/power\", \"initial\": \"10\","
-                        + " \"max_temp\": \"40\", \"min_temp\": \"0\", \"temperature_unit\": \"F\","
-                        + " \"temp_step\": \"1\", \"precision\": \"0.5\", \"send_if_off\": \"false\" }");
+        var component = discoverComponent(configTopicToMqtt(CONFIG_TOPIC), """
+                {"action_template": "{{ value_json.action }}", "action_topic": "zigbee2mqtt/th1",\
+                 "aux_command_topic": "zigbee2mqtt/th1/aux",\
+                 "aux_state_template": "{{ value_json.aux }}", "aux_state_topic": "zigbee2mqtt/th1",\
+                 "away_mode_command_topic": "zigbee2mqtt/th1/away_mode",\
+                 "away_mode_state_template": "{{ value_json.away_mode }}",\
+                 "away_mode_state_topic": "zigbee2mqtt/th1",\
+                 "current_temperature_template": "{{ value_json.current_temperature }}",\
+                 "current_temperature_topic": "zigbee2mqtt/th1",\
+                 "fan_mode_command_template": "fan_mode={{ value }}",\
+                 "fan_mode_command_topic": "zigbee2mqtt/th1/fan_mode",\
+                 "fan_mode_state_template": "{{ value_json.fan_mode }}",\
+                 "fan_mode_state_topic": "zigbee2mqtt/th1", "fan_modes": [ "p1",\
+                 "p2" ], "hold_command_template": "hold={{ value }}",\
+                 "hold_command_topic": "zigbee2mqtt/th1/hold",\
+                 "hold_state_template": "{{ value_json.hold }}",\
+                 "hold_state_topic": "zigbee2mqtt/th1", "hold_modes": [ "u1", "u2",\
+                 "u3" ], "json_attributes_template": "{{ value_json.attrs }}",\
+                 "json_attributes_topic": "zigbee2mqtt/th1",\
+                 "mode_command_template": "mode={{ value }}",\
+                 "mode_command_topic": "zigbee2mqtt/th1/mode",\
+                 "mode_state_template": "{{ value_json.mode }}",\
+                 "mode_state_topic": "zigbee2mqtt/th1", "modes": [ "B1", "B2"\
+                 ], "swing_command_template": "swing={{ value }}",\
+                 "swing_command_topic": "zigbee2mqtt/th1/swing",\
+                 "swing_state_template": "{{ value_json.swing }}",\
+                 "swing_state_topic": "zigbee2mqtt/th1", "swing_modes": [ "G1",\
+                 "G2" ], "temperature_command_template": "temperature={{ value }}",\
+                 "temperature_command_topic": "zigbee2mqtt/th1/temperature",\
+                 "temperature_state_template": "{{ value_json.temperature }}",\
+                 "temperature_state_topic": "zigbee2mqtt/th1",\
+                 "temperature_high_command_template": "temperature_high={{ value }}",\
+                 "temperature_high_command_topic": "zigbee2mqtt/th1/temperature_high",\
+                 "temperature_high_state_template": "{{ value_json.temperature_high }}",\
+                 "temperature_high_state_topic": "zigbee2mqtt/th1",\
+                 "temperature_low_command_template": "temperature_low={{ value }}",\
+                 "temperature_low_command_topic": "zigbee2mqtt/th1/temperature_low",\
+                 "temperature_low_state_template": "{{ value_json.temperature_low }}",\
+                 "temperature_low_state_topic": "zigbee2mqtt/th1",\
+                 "power_command_topic": "zigbee2mqtt/th1/power", "initial": "10",\
+                 "max_temp": "40", "min_temp": "0", "temperature_unit": "F",\
+                 "temp_step": "1", "precision": "0.5", "send_if_off": "false" }\
+                """);
 
         assertThat(component.channels.size(), is(12));
         assertThat(component.getName(), is("MQTT HVAC"));
@@ -258,11 +268,12 @@ public class ClimateTests extends AbstractComponentTests {
                 "MQTT HVAC", NumberValue.class);
         assertChannel(component, Climate.POWER_CH_ID, "", "zigbee2mqtt/th1/power", "MQTT HVAC", OnOffValue.class);
 
-        publishMessage("zigbee2mqtt/th1",
-                "{ \"action\": \"fan\",  \"aux\": \"ON\",  \"away_mode\": \"OFF\", "
-                        + "\"current_temperature\": \"35.5\",  \"fan_mode\": \"p2\",  \"hold\": \"u2\", "
-                        + "\"mode\": \"B1\",  \"swing\": \"G1\",  \"temperature\": \"30\", "
-                        + "\"temperature_high\": \"37\",  \"temperature_low\": \"20\" }");
+        publishMessage("zigbee2mqtt/th1", """
+                { "action": "fan",  "aux": "ON",  "away_mode": "OFF", \
+                "current_temperature": "35.5",  "fan_mode": "p2",  "hold": "u2", \
+                "mode": "B1",  "swing": "G1",  "temperature": "30", \
+                "temperature_high": "37",  "temperature_low": "20" }\
+                """);
 
         assertState(component, Climate.ACTION_CH_ID, new StringType("fan"));
         assertState(component, Climate.AUX_CH_ID, OnOffType.ON);
index a63a758a0bf0fc7f2432d86a0da920432e6936ea..502d77dcf5e7bcab81617b3e8835df08deeb4331 100644 (file)
@@ -37,28 +37,30 @@ public class CoverTests extends AbstractComponentTests {
     public void test() throws InterruptedException {
         // @formatter:off
         var component = discoverComponent(configTopicToMqtt(CONFIG_TOPIC),
-                "{ " +
-                        "  \"availability\": [ " +
-                        "    { " +
-                        "      \"topic\": \"zigbee2mqtt/bridge/state\" " +
-                        "    } " +
-                        "  ], " +
-                        "  \"device\": { " +
-                        "    \"identifiers\": [ " +
-                        "      \"zigbee2mqtt_0x0000000000000000\" " +
-                        "    ], " +
-                        "    \"manufacturer\": \"Covers inc\", " +
-                        "    \"model\": \"cover v1\", " +
-                        "    \"name\": \"Cover\", " +
-                        "    \"sw_version\": \"Zigbee2MQTT 1.18.2\" " +
-                        "  }, " +
-                        "  \"name\": \"cover\", " +
-                        "  \"payload_open\": \"OPEN_\", " +
-                        "  \"payload_close\": \"CLOSE_\", " +
-                        "  \"payload_stop\": \"STOP_\", " +
-                        "  \"state_topic\": \"zigbee2mqtt/cover/state\", " +
-                        "  \"command_topic\": \"zigbee2mqtt/cover/set/state\" " +
-                        "}");
+                """
+                { \
+                  "availability": [ \
+                    { \
+                      "topic": "zigbee2mqtt/bridge/state" \
+                    } \
+                  ], \
+                  "device": { \
+                    "identifiers": [ \
+                      "zigbee2mqtt_0x0000000000000000" \
+                    ], \
+                    "manufacturer": "Covers inc", \
+                    "model": "cover v1", \
+                    "name": "Cover", \
+                    "sw_version": "Zigbee2MQTT 1.18.2" \
+                  }, \
+                  "name": "cover", \
+                  "payload_open": "OPEN_", \
+                  "payload_close": "CLOSE_", \
+                  "payload_stop": "STOP_", \
+                  "state_topic": "zigbee2mqtt/cover/state", \
+                  "command_topic": "zigbee2mqtt/cover/set/state" \
+                }\
+                """);
         // @formatter:on
 
         assertThat(component.channels.size(), is(1));
index 7d1217fa4b20590eb4c787fa4ece79c1abe4a366..a5b092b01e779a6caeaa6bec1682aeadd4c1af8a 100644 (file)
@@ -46,34 +46,36 @@ public class DefaultSchemaLightTests extends AbstractComponentTests {
     public void testRgb() throws InterruptedException {
         // @formatter:off
         var component = (Light) discoverComponent(configTopicToMqtt(CONFIG_TOPIC),
-                "{ " +
-                        "  \"availability\": [ " +
-                        "    { " +
-                        "      \"topic\": \"zigbee2mqtt/bridge/state\" " +
-                        "    } " +
-                        "  ], " +
-                        "  \"device\": { " +
-                        "    \"identifiers\": [ " +
-                        "      \"zigbee2mqtt_0x0000000000000000\" " +
-                        "    ], " +
-                        "    \"manufacturer\": \"Lights inc\", " +
-                        "    \"model\": \"light v1\", " +
-                        "    \"name\": \"Light\", " +
-                        "    \"sw_version\": \"Zigbee2MQTT 1.18.2\" " +
-                        "  }, " +
-                        "  \"name\": \"light\", " +
-                        "  \"state_topic\": \"zigbee2mqtt/light/state\", " +
-                        "  \"command_topic\": \"zigbee2mqtt/light/set/state\", " +
-                        "  \"state_value_template\": \"{{ value_json.power }}\", " +
-                        "  \"payload_on\": \"ON_\", " +
-                        "  \"payload_off\": \"OFF_\", " +
-                        "  \"rgb_state_topic\": \"zigbee2mqtt/light/rgb\", " +
-                        "  \"rgb_command_topic\": \"zigbee2mqtt/light/set/rgb\", " +
-                        "  \"rgb_value_template\": \"{{ value_json.rgb }}\", " +
-                        "  \"brightness_state_topic\": \"zigbee2mqtt/light/brightness\", " +
-                        "  \"brightness_command_topic\": \"zigbee2mqtt/light/set/brightness\", " +
-                        "  \"brightness_value_template\": \"{{ value_json.br }}\" " +
-                        "}");
+                """
+                { \
+                  "availability": [ \
+                    { \
+                      "topic": "zigbee2mqtt/bridge/state" \
+                    } \
+                  ], \
+                  "device": { \
+                    "identifiers": [ \
+                      "zigbee2mqtt_0x0000000000000000" \
+                    ], \
+                    "manufacturer": "Lights inc", \
+                    "model": "light v1", \
+                    "name": "Light", \
+                    "sw_version": "Zigbee2MQTT 1.18.2" \
+                  }, \
+                  "name": "light", \
+                  "state_topic": "zigbee2mqtt/light/state", \
+                  "command_topic": "zigbee2mqtt/light/set/state", \
+                  "state_value_template": "{{ value_json.power }}", \
+                  "payload_on": "ON_", \
+                  "payload_off": "OFF_", \
+                  "rgb_state_topic": "zigbee2mqtt/light/rgb", \
+                  "rgb_command_topic": "zigbee2mqtt/light/set/rgb", \
+                  "rgb_value_template": "{{ value_json.rgb }}", \
+                  "brightness_state_topic": "zigbee2mqtt/light/brightness", \
+                  "brightness_command_topic": "zigbee2mqtt/light/set/brightness", \
+                  "brightness_value_template": "{{ value_json.br }}" \
+                }\
+                """);
         // @formatter:on
 
         assertThat(component.channels.size(), is(1));
@@ -119,17 +121,19 @@ public class DefaultSchemaLightTests extends AbstractComponentTests {
     public void testRgbWithoutBrightness() throws InterruptedException {
         // @formatter:off
         var component = (Light) discoverComponent(configTopicToMqtt(CONFIG_TOPIC),
-                "{ " +
-                        "  \"name\": \"light\", " +
-                        "  \"state_topic\": \"zigbee2mqtt/light/state\", " +
-                        "  \"command_topic\": \"zigbee2mqtt/light/set/state\", " +
-                        "  \"state_value_template\": \"{{ value_json.power }}\", " +
-                        "  \"payload_on\": \"ON_\", " +
-                        "  \"payload_off\": \"OFF_\", " +
-                        "  \"rgb_state_topic\": \"zigbee2mqtt/light/rgb\", " +
-                        "  \"rgb_command_topic\": \"zigbee2mqtt/light/set/rgb\", " +
-                        "  \"rgb_value_template\": \"{{ value_json.rgb }}\"" +
-                        "}");
+                """
+                { \
+                  "name": "light", \
+                  "state_topic": "zigbee2mqtt/light/state", \
+                  "command_topic": "zigbee2mqtt/light/set/state", \
+                  "state_value_template": "{{ value_json.power }}", \
+                  "payload_on": "ON_", \
+                  "payload_off": "OFF_", \
+                  "rgb_state_topic": "zigbee2mqtt/light/rgb", \
+                  "rgb_command_topic": "zigbee2mqtt/light/set/rgb", \
+                  "rgb_value_template": "{{ value_json.rgb }}"\
+                }\
+                """);
         // @formatter:on
 
         publishMessage("zigbee2mqtt/light/rgb", "{\"rgb\": \"255,255,255\"}");
@@ -148,20 +152,22 @@ public class DefaultSchemaLightTests extends AbstractComponentTests {
     public void testHsb() throws InterruptedException {
         // @formatter:off
         var component = (Light) discoverComponent(configTopicToMqtt(CONFIG_TOPIC),
-                "{ " +
-                        "  \"name\": \"light\", " +
-                        "  \"state_topic\": \"zigbee2mqtt/light/state\", " +
-                        "  \"command_topic\": \"zigbee2mqtt/light/set/state\", " +
-                        "  \"state_value_template\": \"{{ value_json.power }}\", " +
-                        "  \"payload_on\": \"ON_\", " +
-                        "  \"payload_off\": \"OFF_\", " +
-                        "  \"hs_state_topic\": \"zigbee2mqtt/light/hs\", " +
-                        "  \"hs_command_topic\": \"zigbee2mqtt/light/set/hs\", " +
-                        "  \"hs_value_template\": \"{{ value_json.hs }}\", " +
-                        "  \"brightness_state_topic\": \"zigbee2mqtt/light/brightness\", " +
-                        "  \"brightness_command_topic\": \"zigbee2mqtt/light/set/brightness\", " +
-                        "  \"brightness_value_template\": \"{{ value_json.br }}\" " +
-                        "}");
+                """
+                { \
+                  "name": "light", \
+                  "state_topic": "zigbee2mqtt/light/state", \
+                  "command_topic": "zigbee2mqtt/light/set/state", \
+                  "state_value_template": "{{ value_json.power }}", \
+                  "payload_on": "ON_", \
+                  "payload_off": "OFF_", \
+                  "hs_state_topic": "zigbee2mqtt/light/hs", \
+                  "hs_command_topic": "zigbee2mqtt/light/set/hs", \
+                  "hs_value_template": "{{ value_json.hs }}", \
+                  "brightness_state_topic": "zigbee2mqtt/light/brightness", \
+                  "brightness_command_topic": "zigbee2mqtt/light/set/brightness", \
+                  "brightness_value_template": "{{ value_json.br }}" \
+                }\
+                """);
         // @formatter:on
 
         assertThat(component.channels.size(), is(1));
@@ -206,16 +212,18 @@ public class DefaultSchemaLightTests extends AbstractComponentTests {
     public void testBrightnessAndOnOff() throws InterruptedException {
         // @formatter:off
         var component = (Light) discoverComponent(configTopicToMqtt(CONFIG_TOPIC),
-                "{ " +
-                        "  \"name\": \"light\", " +
-                        "  \"state_topic\": \"zigbee2mqtt/light/state\", " +
-                        "  \"command_topic\": \"zigbee2mqtt/light/set/state\", " +
-                        "  \"state_value_template\": \"{{ value_json.power }}\", " +
-                        "  \"brightness_state_topic\": \"zigbee2mqtt/light/brightness\", " +
-                        "  \"brightness_command_topic\": \"zigbee2mqtt/light/set/brightness\", " +
-                        "  \"payload_on\": \"ON_\", " +
-                        "  \"payload_off\": \"OFF_\" " +
-                        "}");
+                """
+                { \
+                  "name": "light", \
+                  "state_topic": "zigbee2mqtt/light/state", \
+                  "command_topic": "zigbee2mqtt/light/set/state", \
+                  "state_value_template": "{{ value_json.power }}", \
+                  "brightness_state_topic": "zigbee2mqtt/light/brightness", \
+                  "brightness_command_topic": "zigbee2mqtt/light/set/brightness", \
+                  "payload_on": "ON_", \
+                  "payload_off": "OFF_" \
+                }\
+                """);
         // @formatter:on
 
         assertThat(component.channels.size(), is(1));
@@ -249,14 +257,16 @@ public class DefaultSchemaLightTests extends AbstractComponentTests {
     public void testOnOffOnly() throws InterruptedException {
         // @formatter:off
         var component = (Light) discoverComponent(configTopicToMqtt(CONFIG_TOPIC),
-                "{ " +
-                        "  \"name\": \"light\", " +
-                        "  \"state_topic\": \"zigbee2mqtt/light/state\", " +
-                        "  \"command_topic\": \"zigbee2mqtt/light/set/state\", " +
-                        "  \"state_value_template\": \"{{ value_json.power }}\", " +
-                        "  \"payload_on\": \"ON_\", " +
-                        "  \"payload_off\": \"OFF_\" " +
-                        "}");
+                """
+                { \
+                  "name": "light", \
+                  "state_topic": "zigbee2mqtt/light/state", \
+                  "command_topic": "zigbee2mqtt/light/set/state", \
+                  "state_value_template": "{{ value_json.power }}", \
+                  "payload_on": "ON_", \
+                  "payload_off": "OFF_" \
+                }\
+                """);
         // @formatter:on
 
         assertThat(component.channels.size(), is(1));
index fde17cfc1a2f6c4231d4fd1d3f88c534609cc232..a5e6328aa538d2a7d6f8ba0d064637df387c4cbf 100644 (file)
@@ -36,27 +36,29 @@ public class FanTests extends AbstractComponentTests {
     public void test() throws InterruptedException {
         // @formatter:off
         var component = discoverComponent(configTopicToMqtt(CONFIG_TOPIC),
-                "{ " +
-                        "  \"availability\": [ " +
-                        "    { " +
-                        "      \"topic\": \"zigbee2mqtt/bridge/state\" " +
-                        "    } " +
-                        "  ], " +
-                        "  \"device\": { " +
-                        "    \"identifiers\": [ " +
-                        "      \"zigbee2mqtt_0x0000000000000000\" " +
-                        "    ], " +
-                        "    \"manufacturer\": \"Fans inc\", " +
-                        "    \"model\": \"Fan\", " +
-                        "    \"name\": \"FanBlower\", " +
-                        "    \"sw_version\": \"Zigbee2MQTT 1.18.2\" " +
-                        "  }, " +
-                        "  \"name\": \"fan\", " +
-                        "  \"payload_off\": \"OFF_\", " +
-                        "  \"payload_on\": \"ON_\", " +
-                        "  \"state_topic\": \"zigbee2mqtt/fan/state\", " +
-                        "  \"command_topic\": \"zigbee2mqtt/fan/set/state\" " +
-                        "}");
+                """
+                { \
+                  "availability": [ \
+                    { \
+                      "topic": "zigbee2mqtt/bridge/state" \
+                    } \
+                  ], \
+                  "device": { \
+                    "identifiers": [ \
+                      "zigbee2mqtt_0x0000000000000000" \
+                    ], \
+                    "manufacturer": "Fans inc", \
+                    "model": "Fan", \
+                    "name": "FanBlower", \
+                    "sw_version": "Zigbee2MQTT 1.18.2" \
+                  }, \
+                  "name": "fan", \
+                  "payload_off": "OFF_", \
+                  "payload_on": "ON_", \
+                  "state_topic": "zigbee2mqtt/fan/state", \
+                  "command_topic": "zigbee2mqtt/fan/set/state" \
+                }\
+                """);
         // @formatter:on
 
         assertThat(component.channels.size(), is(1));
index fdd18ee34a6ef8449386d67fa975403785cc4b07..e1c50de28992f90fa41a7c78b6555bbcf7e8fc7c 100644 (file)
@@ -41,29 +41,31 @@ public class JSONSchemaLightTests extends AbstractComponentTests {
     public void testRgb() throws InterruptedException {
         // @formatter:off
         var component = (Light) discoverComponent(configTopicToMqtt(CONFIG_TOPIC),
-                "{ " +
-                        "  \"availability\": [ " +
-                        "    { " +
-                        "      \"topic\": \"zigbee2mqtt/bridge/state\" " +
-                        "    } " +
-                        "  ], " +
-                        "  \"device\": { " +
-                        "    \"identifiers\": [ " +
-                        "      \"zigbee2mqtt_0x0000000000000000\" " +
-                        "    ], " +
-                        "    \"manufacturer\": \"Lights inc\", " +
-                        "    \"model\": \"light v1\", " +
-                        "    \"name\": \"Light\", " +
-                        "    \"sw_version\": \"Zigbee2MQTT 1.18.2\" " +
-                        "  }, " +
-                        "  \"name\": \"light\", " +
-                        "  \"schema\": \"json\", " +
-                        "  \"state_topic\": \"zigbee2mqtt/light/state\", " +
-                        "  \"command_topic\": \"zigbee2mqtt/light/set/state\", " +
-                        "  \"brightness\": true, " +
-                        "  \"color_mode\": true, " +
-                        "  \"supported_color_modes\": [\"onoff\", \"brightness\", \"rgb\"]" +
-                        "}");
+                """
+                { \
+                  "availability": [ \
+                    { \
+                      "topic": "zigbee2mqtt/bridge/state" \
+                    } \
+                  ], \
+                  "device": { \
+                    "identifiers": [ \
+                      "zigbee2mqtt_0x0000000000000000" \
+                    ], \
+                    "manufacturer": "Lights inc", \
+                    "model": "light v1", \
+                    "name": "Light", \
+                    "sw_version": "Zigbee2MQTT 1.18.2" \
+                  }, \
+                  "name": "light", \
+                  "schema": "json", \
+                  "state_topic": "zigbee2mqtt/light/state", \
+                  "command_topic": "zigbee2mqtt/light/set/state", \
+                  "brightness": true, \
+                  "color_mode": true, \
+                  "supported_color_modes": ["onoff", "brightness", "rgb"]\
+                }\
+                """);
         // @formatter:on
 
         assertThat(component.channels.size(), is(1));
@@ -97,13 +99,15 @@ public class JSONSchemaLightTests extends AbstractComponentTests {
     public void testBrightnessAndOnOff() throws InterruptedException {
         // @formatter:off
         var component = (Light) discoverComponent(configTopicToMqtt(CONFIG_TOPIC),
-                "{ " +
-                        "  \"name\": \"light\", " +
-                        "  \"schema\": \"json\", " +
-                        "  \"state_topic\": \"zigbee2mqtt/light/state\", " +
-                        "  \"command_topic\": \"zigbee2mqtt/light/set/state\", " +
-                        "  \"brightness\": true" +
-                        "}");
+                """
+                { \
+                  "name": "light", \
+                  "schema": "json", \
+                  "state_topic": "zigbee2mqtt/light/state", \
+                  "command_topic": "zigbee2mqtt/light/set/state", \
+                  "brightness": true\
+                }\
+                """);
         // @formatter:on
 
         assertThat(component.channels.size(), is(1));
@@ -126,12 +130,14 @@ public class JSONSchemaLightTests extends AbstractComponentTests {
     public void testOnOffOnly() throws InterruptedException {
         // @formatter:off
         var component = (Light) discoverComponent(configTopicToMqtt(CONFIG_TOPIC),
-                "{ " +
-                        "  \"name\": \"light\", " +
-                        "  \"schema\": \"json\", " +
-                        "  \"state_topic\": \"zigbee2mqtt/light/state\", " +
-                        "  \"command_topic\": \"zigbee2mqtt/light/set/state\"" +
-                        "}");
+                """
+                { \
+                  "name": "light", \
+                  "schema": "json", \
+                  "state_topic": "zigbee2mqtt/light/state", \
+                  "command_topic": "zigbee2mqtt/light/set/state"\
+                }\
+                """);
         // @formatter:on
 
         assertThat(component.channels.size(), is(1));
index 83fb02c3e56f957e3208a0eb29443ab4cb47d515..c988806ef3811ffc6ed06e81d390ed6a054e0ccd 100644 (file)
@@ -36,27 +36,29 @@ public class LockTests extends AbstractComponentTests {
     public void test() throws InterruptedException {
         // @formatter:off
         var component = discoverComponent(configTopicToMqtt(CONFIG_TOPIC),
-                "{ " +
-                        "  \"availability\": [ " +
-                        "    { " +
-                        "      \"topic\": \"zigbee2mqtt/bridge/state\" " +
-                        "    } " +
-                        "  ], " +
-                        "  \"device\": { " +
-                        "    \"identifiers\": [ " +
-                        "      \"zigbee2mqtt_0x0000000000000000\" " +
-                        "    ], " +
-                        "    \"manufacturer\": \"Locks inc\", " +
-                        "    \"model\": \"Lock\", " +
-                        "    \"name\": \"LockBlower\", " +
-                        "    \"sw_version\": \"Zigbee2MQTT 1.18.2\" " +
-                        "  }, " +
-                        "  \"name\": \"lock\", " +
-                        "  \"payload_unlock\": \"UNLOCK_\", " +
-                        "  \"payload_lock\": \"LOCK_\", " +
-                        "  \"state_topic\": \"zigbee2mqtt/lock/state\", " +
-                        "  \"command_topic\": \"zigbee2mqtt/lock/set/state\" " +
-                        "}");
+                """
+                { \
+                  "availability": [ \
+                    { \
+                      "topic": "zigbee2mqtt/bridge/state" \
+                    } \
+                  ], \
+                  "device": { \
+                    "identifiers": [ \
+                      "zigbee2mqtt_0x0000000000000000" \
+                    ], \
+                    "manufacturer": "Locks inc", \
+                    "model": "Lock", \
+                    "name": "LockBlower", \
+                    "sw_version": "Zigbee2MQTT 1.18.2" \
+                  }, \
+                  "name": "lock", \
+                  "payload_unlock": "UNLOCK_", \
+                  "payload_lock": "LOCK_", \
+                  "state_topic": "zigbee2mqtt/lock/state", \
+                  "command_topic": "zigbee2mqtt/lock/set/state" \
+                }\
+                """);
         // @formatter:on
 
         assertThat(component.channels.size(), is(1));
@@ -84,28 +86,30 @@ public class LockTests extends AbstractComponentTests {
     public void forceOptimisticIsNotSupported() {
         // @formatter:off
         publishMessage(configTopicToMqtt(CONFIG_TOPIC),
-                "{ " +
-                        "  \"availability\": [ " +
-                        "    { " +
-                        "      \"topic\": \"zigbee2mqtt/bridge/state\" " +
-                        "    } " +
-                        "  ], " +
-                        "  \"device\": { " +
-                        "    \"identifiers\": [ " +
-                        "      \"zigbee2mqtt_0x0000000000000000\" " +
-                        "    ], " +
-                        "    \"manufacturer\": \"Locks inc\", " +
-                        "    \"model\": \"Lock\", " +
-                        "    \"name\": \"LockBlower\", " +
-                        "    \"sw_version\": \"Zigbee2MQTT 1.18.2\" " +
-                        "  }, " +
-                        "  \"name\": \"lock\", " +
-                        "  \"payload_unlock\": \"UNLOCK_\", " +
-                        "  \"payload_lock\": \"LOCK_\", " +
-                        "  \"optimistic\": \"true\", " +
-                        "  \"state_topic\": \"zigbee2mqtt/lock/state\", " +
-                        "  \"command_topic\": \"zigbee2mqtt/lock/set/state\" " +
-                        "}");
+                """
+                { \
+                  "availability": [ \
+                    { \
+                      "topic": "zigbee2mqtt/bridge/state" \
+                    } \
+                  ], \
+                  "device": { \
+                    "identifiers": [ \
+                      "zigbee2mqtt_0x0000000000000000" \
+                    ], \
+                    "manufacturer": "Locks inc", \
+                    "model": "Lock", \
+                    "name": "LockBlower", \
+                    "sw_version": "Zigbee2MQTT 1.18.2" \
+                  }, \
+                  "name": "lock", \
+                  "payload_unlock": "UNLOCK_", \
+                  "payload_lock": "LOCK_", \
+                  "optimistic": "true", \
+                  "state_topic": "zigbee2mqtt/lock/state", \
+                  "command_topic": "zigbee2mqtt/lock/set/state" \
+                }\
+                """);
         // @formatter:on
     }
 
index 4ea7b25f155d7e75d48babaf08e4da6e30051e8e..b42b912aff0c042d6e05fcc0bcea1cda23d103e0 100644 (file)
@@ -40,25 +40,27 @@ public class SensorTests extends AbstractComponentTests {
     public void test() throws InterruptedException {
         // @formatter:off
         var component = discoverComponent(configTopicToMqtt(CONFIG_TOPIC),
-                "{ " +
-                        "  \"availability_topic\": \"zigbee2mqtt/bridge/state\", " +
-                        "  \"availability_template\": \"{{value_json.state}}\", " +
-                        "  \"device\": { " +
-                        "    \"identifiers\": [ " +
-                        "      \"zigbee2mqtt_0x0000000000000000\" " +
-                        "    ], " +
-                        "    \"manufacturer\": \"Sensors inc\", " +
-                        "    \"model\": \"Sensor\", " +
-                        "    \"name\": \"Sensor\", " +
-                        "    \"sw_version\": \"Zigbee2MQTT 1.18.2\" " +
-                        "  }, " +
-                        "  \"name\": \"sensor1\", " +
-                        "  \"expire_after\": \"1\", " +
-                        "  \"force_update\": \"true\", " +
-                        "  \"unit_of_measurement\": \"W\", " +
-                        "  \"state_topic\": \"zigbee2mqtt/sensor/state\", " +
-                        "  \"unique_id\": \"sn1\" " +
-                        "}");
+                """
+                { \
+                  "availability_topic": "zigbee2mqtt/bridge/state", \
+                  "availability_template": "{{value_json.state}}", \
+                  "device": { \
+                    "identifiers": [ \
+                      "zigbee2mqtt_0x0000000000000000" \
+                    ], \
+                    "manufacturer": "Sensors inc", \
+                    "model": "Sensor", \
+                    "name": "Sensor", \
+                    "sw_version": "Zigbee2MQTT 1.18.2" \
+                  }, \
+                  "name": "sensor1", \
+                  "expire_after": "1", \
+                  "force_update": "true", \
+                  "unit_of_measurement": "W", \
+                  "state_topic": "zigbee2mqtt/sensor/state", \
+                  "unique_id": "sn1" \
+                }\
+                """);
         // @formatter:on
 
         assertThat(component.channels.size(), is(1));
@@ -87,23 +89,25 @@ public class SensorTests extends AbstractComponentTests {
     public void testMeasurementStateClass() throws InterruptedException {
         // @formatter:off
         var component = discoverComponent(configTopicToMqtt(CONFIG_TOPIC),
-                "{ " +
-                        "  \"device\": { " +
-                        "    \"identifiers\": [ " +
-                        "      \"zigbee2mqtt_0x0000000000000000\" " +
-                        "    ], " +
-                        "    \"manufacturer\": \"Sensors inc\", " +
-                        "    \"model\": \"Sensor\", " +
-                        "    \"name\": \"Sensor\", " +
-                        "    \"sw_version\": \"Zigbee2MQTT 1.18.2\" " +
-                        "  }, " +
-                        "  \"name\": \"sensor1\", " +
-                        "  \"expire_after\": \"1\", " +
-                        "  \"force_update\": \"true\", " +
-                        "  \"state_class\": \"measurement\", " +
-                        "  \"state_topic\": \"zigbee2mqtt/sensor/state\", " +
-                        "  \"unique_id\": \"sn1\" " +
-                        "}");
+                """
+                { \
+                  "device": { \
+                    "identifiers": [ \
+                      "zigbee2mqtt_0x0000000000000000" \
+                    ], \
+                    "manufacturer": "Sensors inc", \
+                    "model": "Sensor", \
+                    "name": "Sensor", \
+                    "sw_version": "Zigbee2MQTT 1.18.2" \
+                  }, \
+                  "name": "sensor1", \
+                  "expire_after": "1", \
+                  "force_update": "true", \
+                  "state_class": "measurement", \
+                  "state_topic": "zigbee2mqtt/sensor/state", \
+                  "unique_id": "sn1" \
+                }\
+                """);
         // @formatter:on
 
         assertChannel(component, Sensor.SENSOR_CHANNEL_ID, "zigbee2mqtt/sensor/state", "", "sensor1",
@@ -114,22 +118,24 @@ public class SensorTests extends AbstractComponentTests {
     public void testNonNumericSensor() throws InterruptedException {
         // @formatter:off
         var component = discoverComponent(configTopicToMqtt(CONFIG_TOPIC),
-                "{ " +
-                        "  \"device\": { " +
-                        "    \"identifiers\": [ " +
-                        "      \"zigbee2mqtt_0x0000000000000000\" " +
-                        "    ], " +
-                        "    \"manufacturer\": \"Sensors inc\", " +
-                        "    \"model\": \"Sensor\", " +
-                        "    \"name\": \"Sensor\", " +
-                        "    \"sw_version\": \"Zigbee2MQTT 1.18.2\" " +
-                        "  }, " +
-                        "  \"name\": \"sensor1\", " +
-                        "  \"expire_after\": \"1\", " +
-                        "  \"force_update\": \"true\", " +
-                        "  \"state_topic\": \"zigbee2mqtt/sensor/state\", " +
-                        "  \"unique_id\": \"sn1\" " +
-                        "}");
+                """
+                { \
+                  "device": { \
+                    "identifiers": [ \
+                      "zigbee2mqtt_0x0000000000000000" \
+                    ], \
+                    "manufacturer": "Sensors inc", \
+                    "model": "Sensor", \
+                    "name": "Sensor", \
+                    "sw_version": "Zigbee2MQTT 1.18.2" \
+                  }, \
+                  "name": "sensor1", \
+                  "expire_after": "1", \
+                  "force_update": "true", \
+                  "state_topic": "zigbee2mqtt/sensor/state", \
+                  "unique_id": "sn1" \
+                }\
+                """);
         // @formatter:on
 
         assertChannel(component, Sensor.SENSOR_CHANNEL_ID, "zigbee2mqtt/sensor/state", "", "sensor1", TextValue.class);
index fdb250539d3f629a54e39ff024a4e49f803cef8c..032a094cab525b1f3cc033478ba4e04431f81204 100644 (file)
@@ -34,20 +34,34 @@ public class SwitchTests extends AbstractComponentTests {
     @SuppressWarnings("null")
     @Test
     public void testSwitchWithStateAndCommand() {
-        var component = discoverComponent(configTopicToMqtt(CONFIG_TOPIC),
-                "" + "{\n" + "  \"availability\": [\n" + "    {\n" + "      \"topic\": \"zigbee2mqtt/bridge/state\"\n"
-                        + "    }\n" + "  ],\n" + "  \"command_topic\": \"zigbee2mqtt/th1/set/auto_lock\",\n"
-                        + "  \"device\": {\n" + "    \"identifiers\": [\n"
-                        + "      \"zigbee2mqtt_0x847127fffe11dd6a\"\n" + "    ],\n"
-                        + "    \"manufacturer\": \"TuYa\",\n"
-                        + "    \"model\": \"Radiator valve with thermostat (TS0601_thermostat)\",\n"
-                        + "    \"name\": \"th1\",\n" + "    \"sw_version\": \"Zigbee2MQTT 1.18.2\"\n" + "  },\n"
-                        + "  \"json_attributes_topic\": \"zigbee2mqtt/th1\",\n" + "  \"name\": \"th1 auto lock\",\n"
-                        + "  \"payload_off\": \"MANUAL\",\n" + "  \"payload_on\": \"AUTO\",\n"
-                        + "  \"state_off\": \"MANUAL\",\n" + "  \"state_on\": \"AUTO\",\n"
-                        + "  \"state_topic\": \"zigbee2mqtt/th1\",\n"
-                        + "  \"unique_id\": \"0x847127fffe11dd6a_auto_lock_zigbee2mqtt\",\n"
-                        + "  \"value_template\": \"{{ value_json.auto_lock }}\"\n" + "}");
+        var component = discoverComponent(configTopicToMqtt(CONFIG_TOPIC), """
+                {
+                  "availability": [
+                    {
+                      "topic": "zigbee2mqtt/bridge/state"
+                    }
+                  ],
+                  "command_topic": "zigbee2mqtt/th1/set/auto_lock",
+                  "device": {
+                    "identifiers": [
+                      "zigbee2mqtt_0x847127fffe11dd6a"
+                    ],
+                    "manufacturer": "TuYa",
+                    "model": "Radiator valve with thermostat (TS0601_thermostat)",
+                    "name": "th1",
+                    "sw_version": "Zigbee2MQTT 1.18.2"
+                  },
+                  "json_attributes_topic": "zigbee2mqtt/th1",
+                  "name": "th1 auto lock",
+                  "payload_off": "MANUAL",
+                  "payload_on": "AUTO",
+                  "state_off": "MANUAL",
+                  "state_on": "AUTO",
+                  "state_topic": "zigbee2mqtt/th1",
+                  "unique_id": "0x847127fffe11dd6a_auto_lock_zigbee2mqtt",
+                  "value_template": "{{ value_json.auto_lock }}"
+                }\
+                """);
 
         assertThat(component.channels.size(), is(1));
         assertThat(component.getName(), is("th1 auto lock"));
@@ -68,18 +82,31 @@ public class SwitchTests extends AbstractComponentTests {
 
     @Test
     public void testSwitchWithState() {
-        var component = discoverComponent(configTopicToMqtt(CONFIG_TOPIC),
-                "" + "{\n" + "  \"availability\": [\n" + "    {\n" + "      \"topic\": \"zigbee2mqtt/bridge/state\"\n"
-                        + "    }\n" + "  ],\n" + "  \"device\": {\n" + "    \"identifiers\": [\n"
-                        + "      \"zigbee2mqtt_0x847127fffe11dd6a\"\n" + "    ],\n"
-                        + "    \"manufacturer\": \"TuYa\",\n"
-                        + "    \"model\": \"Radiator valve with thermostat (TS0601_thermostat)\",\n"
-                        + "    \"name\": \"th1\",\n" + "    \"sw_version\": \"Zigbee2MQTT 1.18.2\"\n" + "  },\n"
-                        + "  \"json_attributes_topic\": \"zigbee2mqtt/th1\",\n" + "  \"name\": \"th1 auto lock\",\n"
-                        + "  \"state_off\": \"MANUAL\",\n" + "  \"state_on\": \"AUTO\",\n"
-                        + "  \"state_topic\": \"zigbee2mqtt/th1\",\n"
-                        + "  \"unique_id\": \"0x847127fffe11dd6a_auto_lock_zigbee2mqtt\",\n"
-                        + "  \"value_template\": \"{{ value_json.auto_lock }}\"\n" + "}");
+        var component = discoverComponent(configTopicToMqtt(CONFIG_TOPIC), """
+                {
+                  "availability": [
+                    {
+                      "topic": "zigbee2mqtt/bridge/state"
+                    }
+                  ],
+                  "device": {
+                    "identifiers": [
+                      "zigbee2mqtt_0x847127fffe11dd6a"
+                    ],
+                    "manufacturer": "TuYa",
+                    "model": "Radiator valve with thermostat (TS0601_thermostat)",
+                    "name": "th1",
+                    "sw_version": "Zigbee2MQTT 1.18.2"
+                  },
+                  "json_attributes_topic": "zigbee2mqtt/th1",
+                  "name": "th1 auto lock",
+                  "state_off": "MANUAL",
+                  "state_on": "AUTO",
+                  "state_topic": "zigbee2mqtt/th1",
+                  "unique_id": "0x847127fffe11dd6a_auto_lock_zigbee2mqtt",
+                  "value_template": "{{ value_json.auto_lock }}"
+                }\
+                """);
 
         assertThat(component.channels.size(), is(1));
         assertThat(component.getName(), is("th1 auto lock"));
@@ -95,18 +122,31 @@ public class SwitchTests extends AbstractComponentTests {
     @SuppressWarnings("null")
     @Test
     public void testSwitchWithCommand() {
-        var component = discoverComponent(configTopicToMqtt(CONFIG_TOPIC),
-                "" + "{\n" + "  \"availability\": [\n" + "    {\n" + "      \"topic\": \"zigbee2mqtt/bridge/state\"\n"
-                        + "    }\n" + "  ],\n" + "  \"command_topic\": \"zigbee2mqtt/th1/set/auto_lock\",\n"
-                        + "  \"device\": {\n" + "    \"identifiers\": [\n"
-                        + "      \"zigbee2mqtt_0x847127fffe11dd6a\"\n" + "    ],\n"
-                        + "    \"manufacturer\": \"TuYa\",\n"
-                        + "    \"model\": \"Radiator valve with thermostat (TS0601_thermostat)\",\n"
-                        + "    \"name\": \"th1\",\n" + "    \"sw_version\": \"Zigbee2MQTT 1.18.2\"\n" + "  },\n"
-                        + "  \"json_attributes_topic\": \"zigbee2mqtt/th1\",\n" + "  \"name\": \"th1 auto lock\",\n"
-                        + "  \"payload_off\": \"MANUAL\",\n" + "  \"payload_on\": \"AUTO\",\n"
-                        + "  \"unique_id\": \"0x847127fffe11dd6a_auto_lock_zigbee2mqtt\",\n"
-                        + "  \"value_template\": \"{{ value_json.auto_lock }}\"\n" + "}");
+        var component = discoverComponent(configTopicToMqtt(CONFIG_TOPIC), """
+                {
+                  "availability": [
+                    {
+                      "topic": "zigbee2mqtt/bridge/state"
+                    }
+                  ],
+                  "command_topic": "zigbee2mqtt/th1/set/auto_lock",
+                  "device": {
+                    "identifiers": [
+                      "zigbee2mqtt_0x847127fffe11dd6a"
+                    ],
+                    "manufacturer": "TuYa",
+                    "model": "Radiator valve with thermostat (TS0601_thermostat)",
+                    "name": "th1",
+                    "sw_version": "Zigbee2MQTT 1.18.2"
+                  },
+                  "json_attributes_topic": "zigbee2mqtt/th1",
+                  "name": "th1 auto lock",
+                  "payload_off": "MANUAL",
+                  "payload_on": "AUTO",
+                  "unique_id": "0x847127fffe11dd6a_auto_lock_zigbee2mqtt",
+                  "value_template": "{{ value_json.auto_lock }}"
+                }\
+                """);
 
         assertThat(component.channels.size(), is(1));
         assertThat(component.getName(), is("th1 auto lock"));
index fdb75650f49908a8027dc67361ccf313d9350ac0..9713c1675de2b1b67288a59f1013a6ce36a13192 100644 (file)
@@ -40,26 +40,28 @@ public class VacuumTests extends AbstractComponentTests {
     @Test
     public void testRoborockValetudo() {
         // @formatter:off
-        var component = discoverComponent(configTopicToMqtt(CONFIG_TOPIC), "{" +
-                "\"name\":\"Rockrobo\"," +
-                "\"unique_id\":\"rockrobo_vacuum\"," +
-                "\"schema\":\"state\"," +
-                "\"device\":{" +
-                "   \"manufacturer\":\"Roborock\"," +
-                "   \"model\":\"v1\"," +
-                "   \"name\":\"rockrobo\"," +
-                "   \"identifiers\":[\"rockrobo\"]," +
-                "   \"sw_version\":\"0.9.9\"" +
-                "}," +
-                "\"supported_features\":[\"start\",\"pause\",\"stop\",\"return_home\",\"battery\",\"status\"," +
-                "   \"locate\",\"clean_spot\",\"fan_speed\",\"send_command\"]," +
-                "\"command_topic\":\"valetudo/rockrobo/command\"," +
-                "\"state_topic\":\"valetudo/rockrobo/state\"," +
-                "\"set_fan_speed_topic\":\"valetudo/rockrobo/set_fan_speed\"," +
-                "\"fan_speed_list\":[\"min\",\"medium\",\"high\",\"max\",\"mop\"]," +
-                "\"send_command_topic\":\"valetudo/rockrobo/custom_command\"," +
-                "\"json_attributes_topic\":\"valetudo/rockrobo/attributes\"" +
-                "}");
+        var component = discoverComponent(configTopicToMqtt(CONFIG_TOPIC), """
+                {\
+                "name":"Rockrobo",\
+                "unique_id":"rockrobo_vacuum",\
+                "schema":"state",\
+                "device":{\
+                   "manufacturer":"Roborock",\
+                   "model":"v1",\
+                   "name":"rockrobo",\
+                   "identifiers":["rockrobo"],\
+                   "sw_version":"0.9.9"\
+                },\
+                "supported_features":["start","pause","stop","return_home","battery","status",\
+                   "locate","clean_spot","fan_speed","send_command"],\
+                "command_topic":"valetudo/rockrobo/command",\
+                "state_topic":"valetudo/rockrobo/state",\
+                "set_fan_speed_topic":"valetudo/rockrobo/set_fan_speed",\
+                "fan_speed_list":["min","medium","high","max","mop"],\
+                "send_command_topic":"valetudo/rockrobo/custom_command",\
+                "json_attributes_topic":"valetudo/rockrobo/attributes"\
+                }\
+                """);
         // @formatter:on
 
         assertThat(component.channels.size(), is(6)); // command, state, fan speed, send command, battery, json attrs
@@ -82,41 +84,45 @@ public class VacuumTests extends AbstractComponentTests {
 
         // @formatter:off
         String jsonValue;
-        publishMessage("valetudo/rockrobo/attributes", jsonValue = "{" +
-                "\"mainBrush\":\"245.1\"," +
-                "\"sideBrush\":\"145.1\"," +
-                "\"filter\":\"95.1\"," +
-                "\"sensor\":\"0.0\"," +
-                "\"currentCleanTime\":\"52.0\"," +
-                "\"currentCleanArea\":\"46.7\"," +
-                "\"cleanTime\":\"54.9\"," +
-                "\"cleanArea\":\"3280.9\"," +
-                "\"cleanCount\":84," +
-                "\"last_run_stats\":{" +
-                "   \"startTime\":1633257319000," +
-                "   \"endTime\":1633260439000," +
-                "   \"duration\":3120," +
-                "   \"area\":\"46.7\"," +
-                "   \"errorCode\":0," +
-                "   \"errorDescription\":\"No error\"," +
-                "   \"finishedFlag\":true" +
-                "}," +
-                "\"last_bin_out\":2147483647000," +
-                "\"state\":\"docked\"," +
-                "\"valetudo_state\":{" +
-                "   \"id\":8," +
-                "   \"name\":\"Charging\"" +
-                "}," +
-                "\"last_bin_full\":0" +
-                "}");
+        publishMessage("valetudo/rockrobo/attributes", jsonValue = """
+                {\
+                "mainBrush":"245.1",\
+                "sideBrush":"145.1",\
+                "filter":"95.1",\
+                "sensor":"0.0",\
+                "currentCleanTime":"52.0",\
+                "currentCleanArea":"46.7",\
+                "cleanTime":"54.9",\
+                "cleanArea":"3280.9",\
+                "cleanCount":84,\
+                "last_run_stats":{\
+                   "startTime":1633257319000,\
+                   "endTime":1633260439000,\
+                   "duration":3120,\
+                   "area":"46.7",\
+                   "errorCode":0,\
+                   "errorDescription":"No error",\
+                   "finishedFlag":true\
+                },\
+                "last_bin_out":2147483647000,\
+                "state":"docked",\
+                "valetudo_state":{\
+                   "id":8,\
+                   "name":"Charging"\
+                },\
+                "last_bin_full":0\
+                }\
+                """);
         // @formatter:on
 
         // @formatter:off
-        publishMessage("valetudo/rockrobo/state", "{" +
-                "\"state\":\"docked\"," +
-                "\"battery_level\":100," +
-                "\"fan_speed\":\"max\"" +
-                "}");
+        publishMessage("valetudo/rockrobo/state", """
+                {\
+                "state":"docked",\
+                "battery_level":100,\
+                "fan_speed":"max"\
+                }\
+                """);
         // @formatter:on
 
         assertState(component, Vacuum.STATE_CH_ID, new StringType(Vacuum.STATE_DOCKED));
@@ -128,11 +134,13 @@ public class VacuumTests extends AbstractComponentTests {
         assertPublished("valetudo/rockrobo/command", "start");
 
         // @formatter:off
-        publishMessage("valetudo/rockrobo/state", "{" +
-                "\"state\":\"cleaning\"," +
-                "\"battery_level\":99," +
-                "\"fan_speed\":\"max\"" +
-                "}");
+        publishMessage("valetudo/rockrobo/state", """
+                {\
+                "state":"cleaning",\
+                "battery_level":99,\
+                "fan_speed":"max"\
+                }\
+                """);
         // @formatter:on
 
         assertState(component, Vacuum.STATE_CH_ID, new StringType(Vacuum.STATE_CLEANING));
@@ -144,11 +152,13 @@ public class VacuumTests extends AbstractComponentTests {
         assertPublished("valetudo/rockrobo/set_fan_speed", "medium");
 
         // @formatter:off
-        publishMessage("valetudo/rockrobo/state", "{" +
-                "\"state\":\"returning\"," +
-                "\"battery_level\":80," +
-                "\"fan_speed\":\"medium\"" +
-                "}");
+        publishMessage("valetudo/rockrobo/state", """
+                {\
+                "state":"returning",\
+                "battery_level":80,\
+                "fan_speed":"medium"\
+                }\
+                """);
         // @formatter:on
 
         assertState(component, Vacuum.STATE_CH_ID, new StringType(Vacuum.STATE_RETURNING));
@@ -161,35 +171,37 @@ public class VacuumTests extends AbstractComponentTests {
     @Test
     public void testLegacySchema() {
         // @formatter:off
-        var component = discoverComponent(configTopicToMqtt(CONFIG_TOPIC), "{" +
-                "\"name\":\"Rockrobo\"," +
-                "\"unique_id\":\"rockrobo_vacuum\"," +
-                "\"device\":{" +
-                "   \"manufacturer\":\"Roborock\"," +
-                "   \"model\":\"v1\"," +
-                "   \"name\":\"rockrobo\"," +
-                "   \"identifiers\":[\"rockrobo\"]," +
-                "   \"sw_version\":\"0.9.9\"" +
-                "}," +
-                "\"supported_features\":[\"turn_on\", \"turn_off\",\"pause\",\"stop\",\"return_home\",\"battery\",\"status\"," +
-                "   \"locate\",\"clean_spot\",\"fan_speed\",\"send_command\"]," +
-                "\"command_topic\":\"vacuum/command\"," +
-                "\"battery_level_topic\":\"vacuum/state\"," +
-                "\"battery_level_template\":\"{{ value_json.battery_level }}\"," +
-                "\"charging_topic\":\"vacuum/state\"," +
-                "\"charging_template\":\"{{ value_json.charging }}\"," +
-                "\"cleaning_topic\":\"vacuum/state\"," +
-                "\"cleaning_template\":\"{{ value_json.cleaning }}\"," +
-                "\"docked_topic\":\"vacuum/state\"," +
-                "\"docked_template\":\"{{ value_json.docked }}\"," +
-                "\"error_topic\":\"vacuum/state\"," +
-                "\"error_template\":\"{{ value_json.error }}\"," +
-                "\"fan_speed_topic\":\"vacuum/state\"," +
-                "\"set_fan_speed_topic\":\"vacuum/set_fan_speed\"," +
-                "\"fan_speed_template\":\"{{ value_json.fan_speed }}\"," +
-                "\"fan_speed_list\":[\"min\",\"medium\",\"high\",\"max\"]," +
-                "\"send_command_topic\":\"vacuum/send_command\"" +
-                "}");
+        var component = discoverComponent(configTopicToMqtt(CONFIG_TOPIC), """
+                {\
+                "name":"Rockrobo",\
+                "unique_id":"rockrobo_vacuum",\
+                "device":{\
+                   "manufacturer":"Roborock",\
+                   "model":"v1",\
+                   "name":"rockrobo",\
+                   "identifiers":["rockrobo"],\
+                   "sw_version":"0.9.9"\
+                },\
+                "supported_features":["turn_on", "turn_off","pause","stop","return_home","battery","status",\
+                   "locate","clean_spot","fan_speed","send_command"],\
+                "command_topic":"vacuum/command",\
+                "battery_level_topic":"vacuum/state",\
+                "battery_level_template":"{{ value_json.battery_level }}",\
+                "charging_topic":"vacuum/state",\
+                "charging_template":"{{ value_json.charging }}",\
+                "cleaning_topic":"vacuum/state",\
+                "cleaning_template":"{{ value_json.cleaning }}",\
+                "docked_topic":"vacuum/state",\
+                "docked_template":"{{ value_json.docked }}",\
+                "error_topic":"vacuum/state",\
+                "error_template":"{{ value_json.error }}",\
+                "fan_speed_topic":"vacuum/state",\
+                "set_fan_speed_topic":"vacuum/set_fan_speed",\
+                "fan_speed_template":"{{ value_json.fan_speed }}",\
+                "fan_speed_list":["min","medium","high","max"],\
+                "send_command_topic":"vacuum/send_command"\
+                }\
+                """);
         // @formatter:on
 
         assertThat(component.channels.size(), is(8)); // command, battery, charging, cleaning, docked, error,
@@ -206,14 +218,16 @@ public class VacuumTests extends AbstractComponentTests {
         assertChannel(component, Vacuum.CUSTOM_COMMAND_CH_ID, "", "vacuum/send_command", "Rockrobo", TextValue.class);
 
         // @formatter:off
-        publishMessage("vacuum/state", "{" +
-                "\"battery_level\": 61," +
-                "\"docked\": true," +
-                "\"cleaning\": false," +
-                "\"charging\": true," +
-                "\"fan_speed\": \"off\"," +
-                "\"error\": \"Error message\"" +
-                "}");
+        publishMessage("vacuum/state", """
+                {\
+                "battery_level": 61,\
+                "docked": true,\
+                "cleaning": false,\
+                "charging": true,\
+                "fan_speed": "off",\
+                "error": "Error message"\
+                }\
+                """);
         // @formatter:on
 
         assertState(component, Vacuum.BATTERY_LEVEL_CH_ID, new PercentType(61));
@@ -227,14 +241,16 @@ public class VacuumTests extends AbstractComponentTests {
         assertPublished("vacuum/command", "turn_on");
 
         // @formatter:off
-        publishMessage("vacuum/state", "{" +
-                "\"battery_level\": 55," +
-                "\"docked\": false," +
-                "\"cleaning\": true," +
-                "\"charging\": false," +
-                "\"fan_speed\": \"medium\"," +
-                "\"error\": \"\"" +
-                "}");
+        publishMessage("vacuum/state", """
+                {\
+                "battery_level": 55,\
+                "docked": false,\
+                "cleaning": true,\
+                "charging": false,\
+                "fan_speed": "medium",\
+                "error": ""\
+                }\
+                """);
         // @formatter:on
 
         assertState(component, Vacuum.BATTERY_LEVEL_CH_ID, new PercentType(55));
index 397432047580c85a0205c017e0e709509f03cf9e..f18920f0c4af1e8d520de1cf01433649883625f6 100644 (file)
@@ -13,9 +13,9 @@
 package org.openhab.binding.mqtt.homie.internal.discovery;
 
 import java.nio.charset.StandardCharsets;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Set;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.jdt.annotation.Nullable;
@@ -47,7 +47,7 @@ public class Homie300Discovery extends AbstractMQTTDiscovery {
 
     @Activate
     public Homie300Discovery(@Reference MQTTTopicDiscoveryService discoveryService) {
-        super(Collections.singleton(MqttBindingConstants.HOMIE300_MQTT_THING), 3, true, "+/+/$homie");
+        super(Set.of(MqttBindingConstants.HOMIE300_MQTT_THING), 3, true, "+/+/$homie");
         this.discoveryService = discoveryService;
     }
 
index 56d43475e97cf14766de00c373928d34723d6d81..96a5a2d596d20029879aa444c86677b98717bef1 100644 (file)
@@ -126,11 +126,11 @@ public class HomieThingHandler extends AbstractMQTTThingHandler implements Devic
                     "Homie devices require QoS 1 but Qos 0/2 is configured. Using override. Please check the configuration");
             connection.setQos(1);
         }
-        return device.subscribe(connection, scheduler, attributeReceiveTimeout).thenCompose((Void v) -> {
-            return device.startChannels(connection, scheduler, attributeReceiveTimeout, this);
-        }).thenRun(() -> {
-            logger.debug("Homie device {} fully attached (start)", config.deviceid);
-        });
+        return device.subscribe(connection, scheduler, attributeReceiveTimeout)
+                .thenCompose((Void v) -> device.startChannels(connection, scheduler, attributeReceiveTimeout, this))
+                .thenRun(() -> {
+                    logger.debug("Homie device {} fully attached (start)", config.deviceid);
+                });
     }
 
     @Override
@@ -241,9 +241,8 @@ public class HomieThingHandler extends AbstractMQTTThingHandler implements Devic
             logger.warn("couldn't remove retained topics for {} because connection is null", thing.getUID());
             return;
         }
-        device.getRetainedTopics().stream().map(d -> {
-            return String.format("%s/%s", config.basetopic, d);
-        }).collect(Collectors.toList()).forEach(t -> connection.publish(t, new byte[0], 1, true));
+        device.getRetainedTopics().stream().map(d -> String.format("%s/%s", config.basetopic, d))
+                .collect(Collectors.toList()).forEach(t -> connection.publish(t, new byte[0], 1, true));
     }
 
     @Override
index 86e251a8900313b3b9b7981f6f1287eb23a5f440..5a3d16d7b46c17d80f4c2f4ab450f6a064eaef84 100644 (file)
@@ -188,9 +188,9 @@ public class Property implements AttributeChanged {
                 value = new OnOffValue("true", "false");
                 break;
             case color_:
-                if (attributes.format.equals("hsv")) {
+                if ("hsv".equals(attributes.format)) {
                     value = new ColorValue(ColorMode.HSB, null, null, 100);
-                } else if (attributes.format.equals("rgb")) {
+                } else if ("rgb".equals(attributes.format)) {
                     value = new ColorValue(ColorMode.RGB, null, null, 100);
                 } else {
                     logger.warn("Non supported color format: '{}'. Only 'hsv' and 'rgb' are supported",
@@ -199,13 +199,13 @@ public class Property implements AttributeChanged {
                 }
                 break;
             case enum_:
-                String enumValues[] = attributes.format.split(",");
+                String[] enumValues = attributes.format.split(",");
                 value = new TextValue(enumValues);
                 break;
             case float_:
             case integer_:
                 isDecimal = attributes.datatype == DataTypeEnum.float_;
-                String s[] = attributes.format.split("\\:");
+                String[] s = attributes.format.split("\\:");
                 BigDecimal min = s.length == 2 ? convertFromString(s[0]) : null;
                 BigDecimal max = s.length == 2 ? convertFromString(s[1]) : null;
                 BigDecimal step = (min != null && max != null)
@@ -338,9 +338,8 @@ public class Property implements AttributeChanged {
     public List<String> getRetainedTopics() {
         List<String> topics = new ArrayList<>();
 
-        topics.addAll(Stream.of(this.attributes.getClass().getDeclaredFields()).map(f -> {
-            return String.format("%s/$%s", this.propertyID, f.getName());
-        }).collect(Collectors.toList()));
+        topics.addAll(Stream.of(this.attributes.getClass().getDeclaredFields())
+                .map(f -> String.format("%s/$%s", this.propertyID, f.getName())).collect(Collectors.toList()));
 
         // All exceptions can be ignored because the 'retained' attribute of the PropertyAttributes class
         // is public, is a boolean variable and has a default value (true)
index d19f1c37d8d94150330d77fa503527c2ed3913c0..35c51a304762760fa2ec62a019e326e91715c738 100644 (file)
@@ -170,7 +170,6 @@ public class GatewayPayloadParser {
         if (payloadIntermediate == null) {
             throw new JsonSyntaxException("JSON parsing failed");
         }
-        GatewayPayload payload = new GatewayPayload(payloadIntermediate);
-        return payload;
+        return new GatewayPayload(payloadIntermediate);
     }
 }
index fdc5d8cfe15567cde2d35a9488ca896d88044c95..fa99b56e10e708e063ad12e3cb65cd3f77d1a3f2 100644 (file)
@@ -113,18 +113,16 @@ public class RuuviGatewayDiscoveryTests {
         }));
 
         assertTrue(//
-                discoveryResults.stream().anyMatch(result -> {
-                    return "DE:EA:DB:BE:FF:00"
-                            .equals(result.getProperties().get(RuuviGatewayBindingConstants.PROPERTY_TAG_ID))
-                            && "ruuvi/foo/bar/de:ea:DB:be:ff:00".equals(result.getProperties()
-                                    .get(RuuviGatewayBindingConstants.CONFIGURATION_PROPERTY_TOPIC));
-                }) && //
-                        discoveryResults.stream().anyMatch(result -> {
-                            return "DE:EA:DB:BE:FF:01"
-                                    .equals(result.getProperties().get(RuuviGatewayBindingConstants.PROPERTY_TAG_ID))
-                                    && "ruuvi/foo/bar/de:ea:DB:be:ff:01".equals(result.getProperties()
-                                            .get(RuuviGatewayBindingConstants.CONFIGURATION_PROPERTY_TOPIC));
-                        })
+                discoveryResults.stream().anyMatch(result -> "DE:EA:DB:BE:FF:00"
+                        .equals(result.getProperties().get(RuuviGatewayBindingConstants.PROPERTY_TAG_ID))
+                        && "ruuvi/foo/bar/de:ea:DB:be:ff:00".equals(
+                                result.getProperties().get(RuuviGatewayBindingConstants.CONFIGURATION_PROPERTY_TOPIC)))
+                        && //
+                        discoveryResults.stream()
+                                .anyMatch(result -> "DE:EA:DB:BE:FF:01".equals(
+                                        result.getProperties().get(RuuviGatewayBindingConstants.PROPERTY_TAG_ID))
+                                        && "ruuvi/foo/bar/de:ea:DB:be:ff:01".equals(result.getProperties()
+                                                .get(RuuviGatewayBindingConstants.CONFIGURATION_PROPERTY_TOPIC)))
 
                 , "Failed to match: " + discoveryResults.toString());
     }
index dca4c824aa22796fa5e8aedad9703eb2ff904369..db0b20fa1e61aeed0c14b6ecec46e0d95a7228c5 100644 (file)
@@ -114,13 +114,16 @@ public class GatewayPayloadParserTests {
     public void testUnexpectedTypes3() {
         assertThrows(JsonSyntaxException.class, () -> {
             GatewayPayloadParser.parse(bytes(//
-                    "{\"gw_mac\": \"DE:AD:BE:EF:00:00\","//
-                            + "  \"rssi\": \"foobar\","// should be number
-                            + "  \"aoa\": [],"//
-                            + "  \"gwts\": \"1659365438\","//
-                            + "  \"ts\": \"1659365438\","//
-                            + "  \"data\": \"0201061BFF99040512FC5394C37C0004FFFC040CAC364200CDCBB8334C884F\","
-                            + "  \"coords\": \"\"" + "}"));
+                    """
+                            {"gw_mac": "DE:AD:BE:EF:00:00",\
+                              "rssi": "foobar",\
+                              "aoa": [],\
+                              "gwts": "1659365438",\
+                              "ts": "1659365438",\
+                              "data": "0201061BFF99040512FC5394C37C0004FFFC040CAC364200CDCBB8334C884F",\
+                              "coords": ""\
+                            }\
+                            """));
         });
     }
 
@@ -141,14 +144,16 @@ public class GatewayPayloadParserTests {
     public void testUnexpectedManufacturer() {
         assertThrows(IllegalArgumentException.class, () -> {
             GatewayPayloadParser.parse(bytes(//
-                    "{\"gw_mac\": \"DE:AD:BE:EF:00:00\","//
-                            + "  \"rssi\": -83,"//
-                            + "  \"aoa\": [],"//
-                            + "  \"gwts\": \"1659365438\","//
-                            + "  \"ts\": \"1659365438\","//
-            // manufacturer is not 99 04 (Ruuvi) but 99 99
-                            + "  \"data\": \"0201061BFF99990512FC5394C37C0004FFFC040CAC364200CDCBB8334C884F\","
-                            + "  \"coords\": \"\"" + "}"));
+                    """
+                            {"gw_mac": "DE:AD:BE:EF:00:00",\
+                              "rssi": -83,\
+                              "aoa": [],\
+                              "gwts": "1659365438",\
+                              "ts": "1659365438",\
+                              "data": "0201061BFF99990512FC5394C37C0004FFFC040CAC364200CDCBB8334C884F",\
+                              "coords": ""\
+                            }\
+                            """));
         });
     }
 
@@ -156,14 +161,16 @@ public class GatewayPayloadParserTests {
     public void testDataNotBluetoothAdvertisement() {
         assertThrows(IllegalArgumentException.class, () -> {
             GatewayPayloadParser.parse(bytes(//
-                    "{\"gw_mac\": \"DE:AD:BE:EF:00:00\","//
-                            + "  \"rssi\": -83,"//
-                            + "  \"aoa\": [],"//
-                            + "  \"gwts\": \"1659365438\","//
-                            + "  \"ts\": \"1659365438\","//
-            // not advertisement (FF) but AA
-                            + "  \"data\": \"0201061BAA99040512FC5394C37C0004FFFC040CAC364200CDCBB8334C884F\","
-                            + "  \"coords\": \"\"" + "}"));
+                    """
+                            {"gw_mac": "DE:AD:BE:EF:00:00",\
+                              "rssi": -83,\
+                              "aoa": [],\
+                              "gwts": "1659365438",\
+                              "ts": "1659365438",\
+                              "data": "0201061BAA99040512FC5394C37C0004FFFC040CAC364200CDCBB8334C884F",\
+                              "coords": ""\
+                            }\
+                            """));
         });
     }
 }
index f859ea2ad9e0aa526565b68003c1c0c7f7049765..68906bf8919035e86b9477941407f5007f1c37bd 100644 (file)
@@ -13,9 +13,9 @@
 package org.openhab.binding.mqtt.handler;
 
 import java.util.Collection;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.TimeoutException;
 
@@ -61,7 +61,7 @@ public abstract class AbstractBrokerHandler extends BaseBridgeHandler implements
 
     @Override
     public Collection<Class<? extends ThingHandlerService>> getServices() {
-        return Collections.singleton(MQTTActions.class);
+        return Set.of(MQTTActions.class);
     }
 
     /**
index 53a8ddf01cdce5d0c15d8aee2abae19b9c98465d..3613ba6f5564dabc8b25faccf133ffe24d6a44aa 100644 (file)
@@ -28,7 +28,7 @@ public class MqttThingID {
      * for creating a ThingUID with that string (tcp_122_123_111_123_1883).
      */
     public static String getThingID(String host, int port) {
-        return host.replace('.', '_').replace("://", "_") + "_" + String.valueOf(port);
+        return host.replace('.', '_').replace("://", "_") + "_" + port;
     }
 
     /**
index 6ee4c4f6647bbaa227453acb9f07d2879b1135b6..881d6b5a8ca41575c4e4808aa099f96edad32810 100644 (file)
@@ -66,9 +66,7 @@ public class MyBMWHandlerFactory extends BaseThingHandlerFactory {
         if (THING_TYPE_CONNECTED_DRIVE_ACCOUNT.equals(thingTypeUID)) {
             return new MyBMWBridgeHandler((Bridge) thing, httpClientFactory, localeLanguage);
         } else if (SUPPORTED_THING_SET.contains(thingTypeUID)) {
-            VehicleHandler vh = new VehicleHandler(thing, commandOptionProvider, locationProvider,
-                    thingTypeUID.getId());
-            return vh;
+            return new VehicleHandler(thing, commandOptionProvider, locationProvider, thingTypeUID.getId());
         }
         return null;
     }
index c5fa7c36e43e0df7acfa586c4ca1338a3be968fa..9612ec20da0d76ed92368387b73d28f5fdf467db 100644 (file)
@@ -161,8 +161,8 @@ public class VehicleDiscovery extends AbstractDiscoveryService implements Discov
 
     @Override
     public void setThingHandler(ThingHandler handler) {
-        if (handler instanceof MyBMWBridgeHandler) {
-            bridgeHandler = Optional.of((MyBMWBridgeHandler) handler);
+        if (handler instanceof MyBMWBridgeHandler bmwBridgeHandler) {
+            bridgeHandler = Optional.of(bmwBridgeHandler);
             bridgeHandler.get().setDiscoveryService(this);
         }
     }
index 91c3b5b06af87d75f1d71d087d516c5ffb2008a5..837afe85716129ad6ec7cee60dea5112ac1dbc05 100644 (file)
@@ -13,9 +13,9 @@
 package org.openhab.binding.mybmw.internal.handler;
 
 import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
 import java.util.Optional;
+import java.util.Set;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
 
@@ -128,7 +128,7 @@ public class MyBMWBridgeHandler extends BaseBridgeHandler implements StringRespo
 
     @Override
     public Collection<Class<? extends ThingHandlerService>> getServices() {
-        return Collections.singleton(VehicleDiscovery.class);
+        return Set.of(VehicleDiscovery.class);
     }
 
     public Optional<MyBMWProxy> getProxy() {
index e29021e0e150cfdf7639fc9ef776af961848c558..6dd9a85317de4e447d9d654001e40a93e60f73a7 100644 (file)
@@ -163,10 +163,10 @@ public class MyBMWProxy {
                     logger.debug("HTTP Error {}", error.toString());
                     callback.onError(error);
                 } else {
-                    if (callback instanceof StringResponseCallback) {
-                        ((StringResponseCallback) callback).onResponse(getContentAsString());
-                    } else if (callback instanceof ByteResponseCallback) {
-                        ((ByteResponseCallback) callback).onResponse(getContent());
+                    if (callback instanceof StringResponseCallback responseCallback) {
+                        responseCallback.onResponse(getContentAsString());
+                    } else if (callback instanceof ByteResponseCallback responseCallback) {
+                        responseCallback.onResponse(getContent());
                     } else {
                         logger.error("unexpected reponse type {}", callback.getClass().getName());
                     }
@@ -425,10 +425,10 @@ public class MyBMWProxy {
         UrlEncoded.decodeTo(encodedUrl, tokenMap, StandardCharsets.US_ASCII);
         final StringBuilder codeFound = new StringBuilder();
         tokenMap.forEach((key, value) -> {
-            if (value.size() > 0) {
+            if (!value.isEmpty()) {
                 String val = value.get(0);
                 if (key.endsWith(CODE)) {
-                    codeFound.append(val.toString());
+                    codeFound.append(val);
                 }
             }
         });
index 81c0b67ada63a14d7b73f5f85952156492ea4870..cc38f261dfa370e8c49ffb02907ac40dfcb4d89e 100644 (file)
@@ -83,8 +83,8 @@ public class VehicleHandler extends VehicleChannelHandler {
             // Check for Channel Group and corresponding Actions
         } else if (CHANNEL_GROUP_REMOTE.equals(group)) {
             // Executing Remote Services
-            if (command instanceof StringType) {
-                String serviceCommand = ((StringType) command).toFullString();
+            if (command instanceof StringType str) {
+                String serviceCommand = str.toFullString();
                 remote.ifPresent(remot -> {
                     switch (serviceCommand) {
                         case REMOTE_SERVICE_LIGHT_FLASH:
@@ -213,7 +213,7 @@ public class VehicleHandler extends VehicleChannelHandler {
                     prox.requestChargeStatistics(config, chargeStatisticsCallback);
                     prox.requestChargeSessions(config, chargeSessionCallback);
                 }
-                if (!imageCache.isPresent() && !imageProperties.failLimitReached()) {
+                if (imageCache.isEmpty() && !imageProperties.failLimitReached()) {
                     prox.requestImage(config, imageProperties, imageCallback);
                 }
             }, () -> {
index d94e6a87275bf32e1283097b4a7b55e25a049c76..5b1047c91bc87cdac19e4dc30a21af54fa9404e5 100644 (file)
@@ -254,10 +254,8 @@ public class Converter {
         int rightLimit = 122; // letter 'z'
         Random random = new SecureRandom();
 
-        String generatedString = random.ints(leftLimit, rightLimit + 1).limit(size)
+        return random.ints(leftLimit, rightLimit + 1).limit(size)
                 .collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append).toString();
-
-        return generatedString;
     }
 
     public static State getLockState(boolean lock) {
index 0b2d862ea44efbc3b9740e3831696232eb2932b8..05b82e7f615fdedb0a4210697c65e32afb7ea64a 100644 (file)
@@ -55,8 +55,7 @@ public class VehicleStatusUtils {
         if (serviceDate.equals(farFuture)) {
             return UnDefType.UNDEF;
         } else {
-            DateTimeType dt = DateTimeType.valueOf(serviceDate.format(Converter.DATE_INPUT_PATTERN));
-            return dt;
+            return DateTimeType.valueOf(serviceDate.format(Converter.DATE_INPUT_PATTERN));
         }
     }
 
index c7f0f5f10c7fb0a235bac20df284583760223f08..9f51a318674b3c1bfafe881acab2d91c3d6ee7fd 100644 (file)
@@ -248,8 +248,8 @@ public class StatusWrapper {
                 assertEquals(expected.toString(), dtt.toString(), "Last Update");
                 break;
             case GPS:
-                if (state instanceof PointType) {
-                    pt = (PointType) state;
+                if (state instanceof PointType point) {
+                    pt = point;
                     assertNotNull(vehicle.properties.vehicleLocation);
                     assertEquals(
                             PointType.valueOf(Double.toString(vehicle.properties.vehicleLocation.coordinates.latitude)
@@ -258,8 +258,8 @@ public class StatusWrapper {
                 } // else no check needed
                 break;
             case HEADING:
-                if (state instanceof QuantityType) {
-                    qt = ((QuantityType) state);
+                if (state instanceof QuantityType quantityCommand) {
+                    qt = quantityCommand;
                     assertEquals(Units.DEGREE_ANGLE, qt.getUnit(), "Angle Unit");
                     assertNotNull(vehicle.properties.vehicleLocation);
                     assertEquals(vehicle.properties.vehicleLocation.heading, qt.intValue(), 0.01, "Heading");
@@ -572,15 +572,15 @@ public class StatusWrapper {
                 }
                 break;
             case ADDRESS:
-                if (state instanceof StringType) {
-                    st = (StringType) state;
+                if (state instanceof StringType str) {
+                    st = str;
                     assertEquals(st.toFullString(), vehicle.properties.vehicleLocation.address.formatted,
                             "Location Address");
                 } // else no check needed
                 break;
             case HOME_DISTANCE:
-                if (state instanceof QuantityType) {
-                    qt = (QuantityType) state;
+                if (state instanceof QuantityType quantity) {
+                    qt = quantity;
                     PointType vehicleLocation = PointType
                             .valueOf(Double.toString(vehicle.properties.vehicleLocation.coordinates.latitude) + ","
                                     + Double.toString(vehicle.properties.vehicleLocation.coordinates.longitude));
index 081982168e7bff60ef78afca71c5b44463c4913b..52f05bd57c5e7480b2624cf1848d86d548efa661 100644 (file)
@@ -313,10 +313,10 @@ class AuthTest {
         UrlEncoded.decodeTo(encodedUrl, tokenMap, StandardCharsets.US_ASCII);
         final StringBuilder codeFound = new StringBuilder();
         tokenMap.forEach((key, value) -> {
-            if (value.size() > 0) {
+            if (!value.isEmpty()) {
                 String val = value.get(0);
                 if (key.endsWith(CODE)) {
-                    codeFound.append(val.toString());
+                    codeFound.append(val);
                 }
             }
         });
index 559d7daf576fbe067a6d159994cb744cb0470f65..61b509254c5d7e587a0fb8038920b2855945d890 100644 (file)
@@ -31,7 +31,7 @@ import org.openhab.binding.mybmw.internal.utils.Constants;
 public class FileReader {
 
     public static String readFileInString(String filename) {
-        try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(filename), "UTF-8"));) {
+        try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(filename), "UTF-8"))) {
             StringBuilder buf = new StringBuilder();
             String sCurrentLine;
 
index 1ce4763f2f9a42bea062ef1f207bf2de604f7a2b..47014f04c9ed0bba28dca8997d926c63f806a6db 100644 (file)
@@ -190,7 +190,6 @@ public class MycroftConnection {
                     listeners.getOrDefault(mycroftMessage.type, new HashSet<>()).stream()).forEach(listener -> {
                         listener.baseMessageReceived(finalMessage);
                     });
-
         } catch (RuntimeException e) {
             // we need to catch all processing exceptions, otherwise they could affect the connection
             logger.debug("{} encountered an error while processing the message {}: {}", socketName, message,
@@ -200,7 +199,6 @@ public class MycroftConnection {
 
     @OnWebSocketError
     public void onError(@Nullable Session session, Throwable cause) {
-
         if (session == null || !session.equals(this.session)) {
             handleWrongSession(session, "Connection error: " + cause.getMessage());
             return;
index eb3d4bdf6f30947398af26aa089fd8e65b08a674..be3a8e62b45426531c767ca3a62acd7229584275 100644 (file)
@@ -69,26 +69,26 @@ public class AudioPlayerChannel extends MycroftChannel<State> {
 
     @Override
     public void handleCommand(Command command) {
-        if (command instanceof PlayPauseType) {
-            if (((PlayPauseType) command) == PlayPauseType.PAUSE) {
+        if (command instanceof PlayPauseType playPauseCommand) {
+            if (playPauseCommand == PlayPauseType.PAUSE) {
                 if (handler.sendMessage(new MessageAudioPause())) {
                     updateMyState(PlayPauseType.PAUSE);
                 }
             }
-            if (((PlayPauseType) command) == PlayPauseType.PLAY) {
+            if (playPauseCommand == PlayPauseType.PLAY) {
                 handler.sendMessage(new MessageAudioPlay());
                 if (handler.sendMessage(new MessageAudioResume())) {
                     updateMyState(PlayPauseType.PLAY);
                 }
             }
         }
-        if (command instanceof NextPreviousType) {
-            if (((NextPreviousType) command) == NextPreviousType.NEXT) {
+        if (command instanceof NextPreviousType nextPreviousCommand) {
+            if (nextPreviousCommand == NextPreviousType.NEXT) {
                 if (handler.sendMessage(new MessageAudioNext())) {
                     updateMyState(PlayPauseType.PLAY);
                 }
             }
-            if (((NextPreviousType) command) == NextPreviousType.PREVIOUS) {
+            if (nextPreviousCommand == NextPreviousType.PREVIOUS) {
                 if (handler.sendMessage(new MessageAudioPrev())) {
                     updateMyState(PlayPauseType.PLAY);
                 }
index 5e81d6dae76993ad15248ecf1ef4e316c57ec3d1..bf038715e6e6834bb01c0d351f464586fa6b9ffd 100644 (file)
@@ -72,8 +72,7 @@ public class MuteChannel extends MycroftChannel<OnOffType> {
     }
 
     private boolean sendVolumeSetMessage(float volume) {
-        String messageToSend = VolumeChannel.VOLUME_SETTER_MESSAGE.replaceAll("\\$\\$VOLUME",
-                Float.valueOf(volume).toString());
+        String messageToSend = VolumeChannel.VOLUME_SETTER_MESSAGE.replaceAll("\\$\\$VOLUME", Float.toString(volume));
         return handler.sendMessage(messageToSend);
     }
 
index 4764854ad24b9e6181fc4f7f71a3480d8df10c64..a5064098f7bf55c684f32d246cc9739f14368181 100644 (file)
@@ -68,7 +68,6 @@ public class VolumeChannel extends MycroftChannel<State> {
 
     @Override
     public void messageReceived(BaseMessage message) {
-
         if (message.type == MessageType.mycroft_volume_get_response) {
             float volumeGet = ((MessageVolumeGetResponse) message).data.percent;
             updateAndSaveMyState(normalizeVolume(volumeGet));
@@ -87,10 +86,10 @@ public class VolumeChannel extends MycroftChannel<State> {
     }
 
     protected final void updateAndSaveMyState(State state) {
-        if (state instanceof PercentType) {
-            this.lastVolume = ((PercentType) state);
-            if (((PercentType) state).intValue() > 0) {
-                this.lastNonZeroVolume = ((PercentType) state);
+        if (state instanceof PercentType volume) {
+            this.lastVolume = volume;
+            if (volume.intValue() > 0) {
+                this.lastNonZeroVolume = volume;
             }
         }
         super.updateMyState(state);
@@ -140,7 +139,7 @@ public class VolumeChannel extends MycroftChannel<State> {
     }
 
     private boolean sendSetMessage(float volume) {
-        String messageToSend = VOLUME_SETTER_MESSAGE.replaceAll("\\$\\$VOLUME", Float.valueOf(volume).toString());
+        String messageToSend = VOLUME_SETTER_MESSAGE.replaceAll("\\$\\$VOLUME", Float.toString(volume));
         return handler.sendMessage(messageToSend);
     }
 
@@ -167,9 +166,9 @@ public class VolumeChannel extends MycroftChannel<State> {
                 handler.sendMessage(new MessageVolumeDecrease());
                 updateAndSaveMyState(computeNewVolume(-10));
             }
-        } else if (command instanceof PercentType) {
-            sendSetMessage(toMycroftVolume((PercentType) command));
-            updateAndSaveMyState((PercentType) command);
+        } else if (command instanceof PercentType volume) {
+            sendSetMessage(toMycroftVolume(volume));
+            updateAndSaveMyState(volume);
         } else if (command instanceof RefreshType) {
             handler.sendMessage(new MessageVolumeGet());
         }
index c7148b0fa1bdbd5db980846d5c0b1c141e64d4cb..85d74a6b36364b5a00cd17e472b0c6ab7b0e87ff 100644 (file)
@@ -48,7 +48,6 @@ public class MycroftConnectionTest {
 
     @Test
     public void testConnectionOK() throws IOException {
-
         MycroftConnection mycroftConnection = new MycroftConnection(mycroftConnectionListener, new WebSocketClient());
         Mockito.when(sessionMock.getRemoteAddress()).thenReturn(new InetSocketAddress(1234));
         mycroftConnection.onConnect(sessionMock);
@@ -85,7 +84,6 @@ public class MycroftConnectionTest {
 
     @Test
     public void testSpeakListener() throws IOException {
-
         MycroftConnection mycroftConnection = new MycroftConnection(mycroftConnectionListener, new WebSocketClient());
 
         Mockito.when(sessionMock.getRemoteAddress()).thenReturn(new InetSocketAddress(1234));
index 0c5be7dc5db00ee11c9e0b14d0e2d6d5bbae4840..d6d820432d567f92cea780efdc48e67e3b74d18d 100644 (file)
@@ -22,7 +22,7 @@ public class Authentication {
     public enum UserPerm {
         wait,
         user,
-        admin;
+        admin
     }
 
     @XStreamAsAttribute
index e4a0b3b042ac93669042f8d7d430dc0ac7677acd..9094f67f5c8dbbf7c5a652a834589edca33fef1a 100644 (file)
@@ -25,7 +25,7 @@ public class Device {
         UP_AND_OVER,
         SLIDING,
         BARRIER,
-        SWING;
+        SWING
     }
 
     @XStreamAsAttribute
index 92026c0255cec58568a4d111c2616e6aa6b190f9..a0a52464457445ebbc862f669249bfcb82f155ea 100644 (file)
@@ -20,7 +20,7 @@ import com.thoughtworks.xstream.annotations.XStreamAlias;
  */
 @XStreamAlias("Properties")
 public class Properties {
-    public static enum DoorStatus {
+    public enum DoorStatus {
         OPEN(false),
         CLOSED(false),
         OPENING(true),
index 26c95e76d542a70a503c58b7865935ff0e60d0da..48863f22893ca02577c3f70c68693649edf0f2c5 100644 (file)
@@ -81,8 +81,8 @@ public class MyQDiscoveryService extends AbstractDiscoveryService implements Dis
 
     @Override
     public void setThingHandler(ThingHandler handler) {
-        if (handler instanceof MyQAccountHandler) {
-            accountHandler = (MyQAccountHandler) handler;
+        if (handler instanceof MyQAccountHandler myqAccountHandler) {
+            accountHandler = myqAccountHandler;
         }
     }
 
index 70902167fc6aaf7065156bcf5d34483f500c9035..c850d15fad88675fae18a7cf6616a5bb3300f008 100644 (file)
@@ -27,10 +27,10 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Base64;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.Random;
+import java.util.Set;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
@@ -176,17 +176,15 @@ public class MyQAccountHandler extends BaseBridgeHandler implements AccessTokenR
 
     @Override
     public Collection<Class<? extends ThingHandlerService>> getServices() {
-        return Collections.singleton(MyQDiscoveryService.class);
+        return Set.of(MyQDiscoveryService.class);
     }
 
     @Override
     public void childHandlerInitialized(ThingHandler childHandler, Thing childThing) {
         List<DeviceDTO> localDeviceCaches = devicesCache;
-        if (childHandler instanceof MyQDeviceHandler) {
-            MyQDeviceHandler handler = (MyQDeviceHandler) childHandler;
-            localDeviceCaches.stream()
-                    .filter(d -> ((MyQDeviceHandler) childHandler).getSerialNumber().equalsIgnoreCase(d.serialNumber))
-                    .findFirst().ifPresent(handler::handleDeviceUpdate);
+        if (childHandler instanceof MyQDeviceHandler deviceHandler) {
+            localDeviceCaches.stream().filter(d -> deviceHandler.getSerialNumber().equalsIgnoreCase(d.serialNumber))
+                    .findFirst().ifPresent(deviceHandler::handleDeviceUpdate);
         }
     }
 
index 8cb59267b3b3cb9acdd30e6b44431c661cab5807..7f7591600a11c10890dca0336b965d6322ef7079 100644 (file)
@@ -71,8 +71,8 @@ public class MyQGarageDoorHandler extends BaseThingHandler implements MyQDeviceH
                 if (command instanceof UpDownType) {
                     cmd = command == UpDownType.UP ? "open" : "close";
                 }
-                if (command instanceof PercentType) {
-                    cmd = ((PercentType) command).as(UpDownType.class) == UpDownType.UP ? "open" : "close";
+                if (command instanceof PercentType percentage) {
+                    cmd = percentage.as(UpDownType.class) == UpDownType.UP ? "open" : "close";
                 }
                 if (command instanceof StringType) {
                     cmd = command.toString();
index aad1dad8e15f5fe96cd612a6dae92e3136bcaed9..9187ca06f2fec684ad01f799c775c399797b7150 100644 (file)
@@ -95,18 +95,18 @@ public class MyStromBulbHandler extends AbstractMyStromHandler {
                         }
                         break;
                     case CHANNEL_COLOR:
-                        if (command instanceof HSBType) {
-                            if (Objects.equals(((HSBType) command).as(OnOffType.class), OnOffType.OFF)) {
+                        if (command instanceof HSBType hsb) {
+                            if (Objects.equals(hsb.as(OnOffType.class), OnOffType.OFF)) {
                                 sResp = sendToBulb("off", null, null, null);
                             } else {
-                                String hsv = command.toString().replaceAll(",", ";");
+                                String hsv = command.toString().replace(",", ";");
                                 sResp = sendToBulb("on", hsv, null, HSV);
                             }
                         }
                         break;
                     case CHANNEL_BRIGHTNESS:
-                        if (command instanceof PercentType) {
-                            if (Objects.equals(((PercentType) command).as(OnOffType.class), OnOffType.OFF)) {
+                        if (command instanceof PercentType brightness) {
+                            if (Objects.equals(brightness.as(OnOffType.class), OnOffType.OFF)) {
                                 sResp = sendToBulb("off", null, null, null);
                             } else {
                                 if (lastMode.equals(MONO)) {
@@ -122,9 +122,8 @@ public class MyStromBulbHandler extends AbstractMyStromHandler {
                         }
                         break;
                     case CHANNEL_COLOR_TEMPERATURE:
-                        if (command instanceof PercentType) {
-                            String mono = convertPercentageToMyStromCT((PercentType) command) + ";"
-                                    + lastBrightness.toString();
+                        if (command instanceof PercentType temperature) {
+                            String mono = convertPercentageToMyStromCT(temperature) + ";" + lastBrightness.toString();
                             sResp = sendToBulb("on", mono, null, MONO);
                         }
                         break;
@@ -186,8 +185,8 @@ public class MyStromBulbHandler extends AbstractMyStromHandler {
         if (deviceInfo != null) {
             updateState(CHANNEL_SWITCH, deviceInfo.on ? OnOffType.ON : OnOffType.OFF);
             updateState(CHANNEL_RAMP, QuantityType.valueOf(deviceInfo.ramp, MetricPrefix.MILLI(SECOND)));
-            if (deviceInfo instanceof MyStromDeviceSpecificInfo) {
-                updateState(CHANNEL_POWER, QuantityType.valueOf(((MyStromDeviceSpecificInfo) deviceInfo).power, WATT));
+            if (deviceInfo instanceof MyStromDeviceSpecificInfo info) {
+                updateState(CHANNEL_POWER, QuantityType.valueOf(info.power, WATT));
             }
             if (deviceInfo.on) {
                 try {
@@ -200,9 +199,9 @@ public class MyStromBulbHandler extends AbstractMyStromHandler {
                         lastColor = new HSBType(lastColor.getHue() + ",0," + lastBrightness);
                         updateState(CHANNEL_COLOR_TEMPERATURE, lastColorTemperature);
                     } else if (numSemicolon == 2 && deviceInfo.mode.equals(HSV)) {
-                        lastColor = HSBType.valueOf(deviceInfo.color.replaceAll(";", ","));
+                        lastColor = HSBType.valueOf(deviceInfo.color.replace(";", ","));
                         lastBrightness = lastColor.getBrightness();
-                    } else if (!deviceInfo.color.equals("") && deviceInfo.mode.equals(RGB)) {
+                    } else if (!"".equals(deviceInfo.color) && deviceInfo.mode.equals(RGB)) {
                         int r = Integer.parseInt(deviceInfo.color.substring(2, 4), 16);
                         int g = Integer.parseInt(deviceInfo.color.substring(4, 6), 16);
                         int b = Integer.parseInt(deviceInfo.color.substring(6, 8), 16);