* Add more null annotations to automation bundles. This adds null annotations to many classes in the automation bundles and a few dimension classes.
* Further cleanup AutomationCommandExport
* Remove null from RuleStatusInfo JavaDocs. This should be clear from how the class is now annotated.
* Validate deserialized RuleStatusInfo
* Allow TriggerHandlerCallback to be triggered without providing a context
Signed-off-by: Wouter Born <github@maindrain.net>
The expectation is, that when a `DecimalType` was constructed with a
`float` value, the precision of its `doubleValue()`, `floatValue()`,
`toBigDecimal()` and `toString()` is preserved. But there are `float`
values like `4.2f` or `37.1f` that cannot directly converted to `double`
without precision loss.
This commit replaces all the numerical constructors of `DecimalType`
with a single constructor with a `Number` argument, so that all `float`
values can be used without precision loss.
NOTE: There is some special handling needed for `QuantityType` and
`HSBType` because these types has a special none convential `toString`
implementation.
Signed-off-by: Ringo Frischmann <ringo.frischmann@kiwigrid.com>
* New translations validation.properties (Czech)
* New translations voice.properties (Czech)
* New translations SystemThingStatusInfos.properties (Czech)
On Java 17 there is no Nashorn scripting engine so it takes a bit longer before ScriptEngines are available.
Rules would stay uninitialized forever because the ScriptModuleTypeProvider did not notify its listeners whenever script.ScriptAction, script.ScriptCondition became available.
Signed-off-by: Wouter Born <github@maindrain.net>
Trigger information is inserted in the execution context. This information is changed to the new information each time the context is updated with the same keys. If the context of the next execution does not contain values for each key, the old key is re-used, leading e.g. to wrong event information in the context.
The solution is to re-set the individual context after each execution.
Signed-off-by: Jan N. Klug <github@klug.nrw>
Looks like this workaround introduced in #2480 is unnecessary nowadays because #2484 addressed the root cause.
This fixes the AvoidCatchingThrowable SAT findings.
Signed-off-by: Wouter Born <github@maindrain.net>
* Add more null annotations
* Fix mock name
Adds null annotations to most of the tests as well as a few other classes.
Also fixes a few other SAT findings.
Fixes ~300 SAT findings in total.
Signed-off-by: Wouter Born <github@maindrain.net>
* New translations validation.properties (German)
* New translations validation.properties (Finnish)
* New translations validation.properties (Italian)
* New translations validation.properties (Hebrew)
* New translations SystemProfiles.properties (French)
* New translations validation.properties (French)
* New translations validation.properties (German)
* New translations validation.properties (Italian)
* New translations voice.properties (French)
* New translations hli.properties (French)
* New translations validation.properties (French)
* New translations validation.properties (Italian)
* New translations SystemThingStatusInfos.properties (French)
* New translations validation.properties (Hebrew)
* New translations validation.properties (Finnish)
* New translations validation.properties (Italian)
* New translations validation.properties (Finnish)
* New translations validation.properties (German)
* New translations validation.properties (Hebrew)
* New translations voice.properties (Italian)
* New translations validation.properties (Luxembourgish)
* New translations voice.properties (German)
* New translations voice.properties (Finnish)
* New translations voice.properties (Hebrew)
Related to #2688
Updated methods startDialog
New method stopDialog
Null annotations added to the class DialogProcessor
Allow translation of sentences "said" by the dialog processor in case of error
2 console commands added to start and stop a dialog
Enhanced integration tests
Signed-off-by: Laurent Garnier <lg.hc@free.fr>
* [config] improve type validation message
The message did not contain the detected wrong type which makes it harder to define what the actual error is.
Signed-off-by: Jan N. Klug <github@klug.nrw>
* New translations SystemThingStatusInfos.properties (Italian)
* New translations SystemThingStatusInfos.properties (German)
* New translations SystemThingStatusInfos.properties (Hebrew)
* New translations SystemThingStatusInfos.properties (Finnish)
* New translations marketplace.properties (Czech)
* New translations voice.properties (French)
* New translations sitemap.properties (French)
* [audio] Remove 'clac' noise when playing wav (javasound)
A 'clac' can be heard at the beginning of a wav file when playing on the javasound sink.
Close#2669
Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>
* Update groovy license headers to 2022
* Reuse existing header file and use Groovy 3.0.9
Updates the year in a few groovy file headers that were missed in #2671.
Signed-off-by: Wouter Born <github@maindrain.net>
Related to https://community.openhab.org/t/error-installing-widgets-from-community-in-user-interfaces/128729/16
When the locale is not English the timestamp might fail to be deserialized into a Date:
```
2022-01-02 21:01:42.260 [ERROR] [munity.CommunityUIWidgetAddonHandler] - Unable to parse YAML: Cannot deserialize value of type `java.util.Date` from String "Oct 2, 2021, 9:24:59 PM": not a valid representation (error: Failed to parse Date value 'Oct 2, 2021, 9:24:59 PM': Unparseable date: "Oct 2, 2021, 9:24:59 PM")
at [Source: (StringReader); line: 36, column: 12] (through reference chain: org.openhab.core.ui.components.RootUIComponent["timestamp"])
2022-01-02 21:01:42.261 [ERROR] [munity.CommunityUIWidgetAddonHandler] - Widget from marketplace is invalid: Unable to parse YAML
```
Signed-off-by: Yannick Schaus <github@schaus.net>
* Added a PEMTrustManager to deal with different PEM files (e.g.
self-signed or global CA certificates)
Signed-off-by: Christoph Weitkamp <github@christophweitkamp.de>
As discussed in https://github.com/openhab/openhab-addons/issues/11818.
This should select `application/x-python` for Jython (instead of `application/python` currently)
and allow other script engines to advertise their MIME type:
- JRuby: `application/x-ruby`
- Groovy: `application/x-groovy`
Signed-off-by: Yannick Schaus <github@schaus.net>
* New translations addons.properties (Italian)
* New translations brokerConnectionInstance.properties (Italian)
* New translations i18n.properties (Italian)
* New translations inbox.properties (Italian)
* New translations marketplace.properties (German)
* New translations marketplace.properties (Hebrew)
* New translations marketplace.properties (Hungarian)
* New translations marketplace.properties (Italian)
* New translations restauth.properties (Italian)
* New translations tags.properties (Italian)
* New translations tags.properties (Polish)
* New translations validation.properties (Italian)
* Use the mime types provided by the ScriptEngineFactory and not the underlying script engines they provide. This allows mutliple versions of script engines to co-exist, like Nashorn and GraalVM .
Signed-off-by: Dan Cunningham <dan@digitaldan.com>
Fixes#2510.
This changes the placeholder syntax used by the reference resolver notably
used in rule templates from `${reference}` to `{{reference}}`.
The former syntax is also used by other languages, notably JavaScript's
template strings, and therefore writing rule templates including JavaScript
code with template strings wouldn't behave as expected.
This also fixes a bug identified in #2510 where you couldn't have a
single closing brace before the start of the first placeholder - which
could more easily happen than having two closing braces.
Signed-off-by: Yannick Schaus <github@schaus.net>
* [marketplace] add a 3rd Party compatible marketplace
This adds a new marketplace addon provider which allows to add marketplaces maintained by 3rd party organizations (similar to alternative app stores on your smartphone). The configuration allows one or multiple marketplaces which provide their addons via JSON files (instead of a topic in the community forum).
Signed-off-by: Jan N. Klug <jan.n.klug@rub.de>
Related to https://github.com/openhab/openhab-webui/pull/1225.
This add-on handler supports installing block libraries in the
UIComponentRegistry, `ui:blocks` namespace.
It is very similar to the CommunityUIWidgetAddonHandler, as the format
is the same, so are the features and implementation, the only
differences being:
- Supported content type: `application/vnd.openhab.uicomponent;type=blocks`
(vs. `application/vnd.openhab.uicomponent;type=widget`)
- Discourse category nb.: 76 (vs. 75)
- Inferred Add-on type: "automation" (vs. "ui")
Signed-off-by: Yannick Schaus <github@schaus.net>
The issue occurs when expired entries are removed from the cache.
Also adds some unit tests in which the same issue could be reproduced.
Fixes#2528
Signed-off-by: Wouter Born <github@maindrain.net>
* [marketplace] avoid collisions with multiple AddonProviders
The current implementation could result in collision of file-path and failed in determining the installation status if other AddonProviders re-use the marketplace addon handlers.
Signed-off-by: Jan N. Klug <jan.n.klug@rub.de>
* New translations audio.properties (Hungarian)
* New translations DefaultSystemChannels.properties (German)
* New translations inbox.properties (Hungarian)
* New translations magic.properties (Hebrew)
* New translations magic.properties (Hungarian)
* New translations magic.properties (Italian)
* New translations marketplace.properties (Hungarian)
* New translations sitemap.properties (Hungarian)
* Fixed unit tests
Signed-off-by: Christoph Weitkamp <github@christophweitkamp.de>
* Add ser2net mDNS USB serial discovery
* Add support for using multiple UsbSerialDiscovery services
* Add Ser2NetUsbSerialDiscovery that can use mDNS to discover ser2net RFC2217 serial ports
* Use discovered USB ports in SerialConfigOptionProvider
mDNS discovery is supported in ser2net 4.3.0 and newer.
E.g. you can install a ser2net version that provides this using APT in Ubuntu 21.04 and Debian 11.
Example ser2net YAML configuration that allows a serial port to be discovered using mDNS discovery:
%YAML 1.1
---
connection: &con01
accepter: telnet(rfc2217),tcp,2222
connector: serialdev,/dev/ttyUSB0
options:
mdns: true
mdns-sysattrs: true
mdns-name: devicename
Closes#1511
Signed-off-by: Wouter Born <github@maindrain.net>
* New exception class that incorporates support for internationalization
* Add ConnectionException, CommunicationException and ConfigurationException
Signed-off-by: Laurent Garnier <lg.hc@free.fr>
Update the WebClientFactoryImpl so it no longer uses a deprecated WebSocketClient constructor.
Use a workaround so WebClientFactoryImplTest.tearDown() cannot block forever when the commonWebSocketClient is stopped when it has not yet been fully started.
Signed-off-by: Wouter Born <github@maindrain.net>