In case of cyclic/recursive membership of groups (i.e. a group has itself or a child as parent) the recursive processing of the items leads to an `StackOverflowError` (reported in the forum and the german Facebook group). Also this is clearly a configuration error it should not result in the bundle not starting.
Signed-off-by: Jan N. Klug <github@klug.nrw>
* Align system-channel-types for electricity
These are only used by one binding at the moment and it's very inconsistent to have power, voltage and current with the "electric" prefix and energy with "electrical".
Signed-off-by: Jan N. Klug <github@klug.nrw>
On larger installations with 1000+ items the limit of 1000 elements in the queue is exceeded easily. Since no events are lost (they just take longer to be processed), the limit that needs to be exceeded before a warning is issued should be increased.
See reports on the forum.
Signed-off-by: Jan N. Klug <github@klug.nrw>
* Improve threading in EventHandler
* refactor pagechangelistener to event
* One executor per subscriber type, not per subscriber
Signed-off-by: Jan N. Klug <github@klug.nrw>
See title. This brings the query id in-line with the other add-on services.
Also adds correct content type.
Signed-off-by: Jan N. Klug <github@klug.nrw>
* Add a ScriptEngineFactory bundle tracker
The `ScriptEngingeFactoryBundleTracker` tracks all bundles that provide `ScriptEngineFcatory` capabilities and sets a `ReadyMarker` if all of them are activated.
Signed-off-by: Jan N. Klug <github@klug.nrw>
* Add group name to GroupStateTriggerHandler
When triggering on state change/update of group member, the group is not available in the rule context (because the event is the `ItemStateChanged/UpdatedEvent` that caused the group to change/update. This adds a new element `triggeringGroup` to the rule context.
This is useful for generalized rules that trigger on different groups.
Signed-off-by: Jan N. Klug <github@klug.nrw>
Posting the `ItemAddedEvent` after notifying the listeners results in `ItemStateUpdated/ChangedEvents` before the `ItemAddedEvent` because the state could be altered by persistence services. This is at least unexpected and can be fixed by swapping the order.
Signed-off-by: Jan N. Klug <github@klug.nrw>
Reported on the forum. State descriptions do no necessarily contain a pattern and thus `.get("pattern")` can return null.
Signed-off-by: Jan N. Klug <github@klug.nrw>
This is needed to clean-up UI. The categories should be used for add-ons while core services should use `system`.
Signed-off-by: Jan N. Klug <github@klug.nrw>
This is needed to clean-up UI. The categories should be used for add-ons while core services should use `system`.
Signed-off-by: Jan N. Klug <github@klug.nrw>
* Add dimension RadiationSpecificActivity
This can be used e.g. for radon monitoring. The unit Bq/m3 was wrongly assigned to the dimension `Density` before.
Signed-off-by: Jan N. Klug <github@klug.nrw>
* improvement
Signed-off-by: Jan N. Klug <github@klug.nrw>
It seems that in some cases GSON is not able to correctly serialize/deserialize ZonedDateTime. Since we do not depend on the value in any case (it's just informational), we can store a String instead.
A missing metadata database also failed the check when upgrading items. This has been fixed, too.
Signed-off-by: Jan N. Klug <github@klug.nrw>
* Fix marketplace add-on services fail after upgrade
A format change in the database (related to the introduction of addon.xml) leads to a non-migrateable and permanent error that floods the log with exceptions and malfunctions.
If such an error is detected, the database is purged and an error logged.
Signed-off-by: Jan N. Klug <github@klug.nrw>
The log level was increased during the UoM refactoring but it turns out that a lot of code depends on failing silently. Therefore the log level is again reduced to DEBUG.
Signed-off-by: Jan N. Klug <github@klug.nrw>
The `GroupStateTrigger` subscibed to `ItemStateEvent` instead of `ItemStateUpdatedEvent` (while `ItemStateTrigger` uses `ItemStateUpdatedEvent`), this is confusiing and results in different behavior of both triggers.
The `ItemStateTrigger` did not subscribe to `GroupStateUpdatedEvent` which results in the trigger not firing for group state UPDATES. This is wrong because it fires for item UPDATES and for both, group and item CHANGES.
Signed-off-by: Jan N. Klug <github@klug.nrw>
It was found that things from textual configuration are not properly updated if changes are only made in configuration or label of a channel. The reason is that for equality only uid and accepted item-type where checked.
Signed-off-by: Jan N. Klug <github@klug.nrw>
* Add ColorUtil for better support of xyY conversion
This has been refactored to align with the usually used conversion by a lot of ZigBee products like Hue or Deconz.
Signed-off-by: Jan N. Klug <github@klug.nrw>
On Samba shares a single MODIFY event may result in different sequences of CREATE/DELETE/MODIFY events. Unfortunately this is not properly handled by the underlying library and we have to re-introduce our ugly workaround. The solution itself is a bit improved over the old one as it not only keeps the last event but determines the correct event by examining the sequence of received events.
Signed-off-by: Jan N. Klug <github@klug.nrw>
Also makes sure the `checkPrerequisites` job can't crash by catching `RuntimeException` during processing.
Signed-off-by: Jan N. Klug <github@klug.nrw>
* Refactor ThingManagerImpl
This
- moves config description URI to type-base class
- decouples the thing manager from bundle loading
- makes sure that all thing/channel-types and config descriptions are available when the thing is initialized
- enables thing type updates
Signed-off-by: Jan N. Klug <github@klug.nrw>
When calculating `.changedSince` the "then" state is queried via the `.historicState` method. Regardless of the `serviceId` used when calling `.changedSince` the historic state was always queried from the default persistence service.
Signed-off-by: Jan N. Klug <github@klug.nrw>
* Add an add-on service that provides add-ons in the addons-folder
* fix connection and countries
This is needed to show the add-ons from the addons in the UI.
Signed-off-by: Jan N. Klug <github@klug.nrw>