* Upgrade commons-text to 1.10.0 (prevents CVE-2022-42889)
* Upgrade commons-lang3 to 3.12.0
* Remove commons-text, wrap from feature because it is embedded into the bundle
Signed-off-by: Wouter Born <github@maindrain.net>
According to the add-on documentation the Derby driver is included which was no longer the case.
The derby version was also changed because 10.16.1.1 is for Java 17+.
Signed-off-by: Wouter Born <github@maindrain.net>
* Update Shelly and Tradfri bindings for upgrade to Californium 2.7.3
* Fixes deprecated API usages
* Resolves itest runbundles
Signed-off-by: Wouter Born <github@maindrain.net>
Using the pool prevents exceptions like:
```
java.nio.channels.ClosedByInterruptException: null
at java.nio.channels.spi.AbstractInterruptibleChannel.end(AbstractInterruptibleChannel.java:199) ~[?:?]
at sun.nio.ch.FileChannelImpl.endBlocking(FileChannelImpl.java:162) ~[?:?]
at sun.nio.ch.FileChannelImpl.size(FileChannelImpl.java:388) ~[?:?]
at org.rrd4j.core.RrdNioBackend.<init>(RrdNioBackend.java:94) ~[?:?]
at org.rrd4j.core.RrdNioBackendFactory.open(RrdNioBackendFactory.java:163) ~[?:?]
at org.rrd4j.core.RrdBackendFactory.getBackend(RrdBackendFactory.java:521) ~[?:?]
at org.rrd4j.core.RrdDb.<init>(RrdDb.java:627) ~[?:?]
at org.rrd4j.core.RrdDb.of(RrdDb.java:500) ~[?:?]
at org.openhab.persistence.rrd4j.internal.RRD4jPersistenceService.getDB(RRD4jPersistenceService.java:323) ~[?:?]
at org.openhab.persistence.rrd4j.internal.RRD4jPersistenceService.store(RRD4jPersistenceService.java:141) ~[?:?]
at org.openhab.persistence.rrd4j.internal.RRD4jPersistenceService.lambda$0(RRD4jPersistenceService.java:211) ~[?:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
at java.lang.Thread.run(Thread.java:829) [?:?]
```
Fixes#13297
Also includes a few code improvements.
Signed-off-by: Wouter Born <github@maindrain.net>
This prevents the following warnings when executing: `mvn i18n:generate-default-translations`
[WARNING] The POM for org.eclipse.m2e:lifecycle-mapping:jar:1.0.0 is missing, no dependency information available
[WARNING] Failed to retrieve plugin descriptor for org.eclipse.m2e:lifecycle-mapping:1.0.0: Plugin org.eclipse.m2e:lifecycle-mapping:1.0.0 or one of its dependencies could not be resolved: org.eclipse.m2e:lifecycle-mapping:jar:1.0.0 was not found in https://openhab.jfrog.io/openhab/libs-snapshot during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of openhab-snapshot has elapsed or updates are forced
Signed-off-by: Wouter Born <github@maindrain.net>
Generated Swagger/OpenAPI code can be messy resulting in a lot of compiler warnings obscuring more important compiler warnings.
Fixes#12498
Signed-off-by: Wouter Born <github@maindrain.net>
* Upgrade actions to latest versions
* Upgrade Maven to 3.8.6
* Use Temurin JDK instead of Zulu JDK
The Temurin JDK is preinstalled in the [Ubuntu image](https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2004-Readme.md#java) whereas the Zulu JDK first need to be downloaded.
It should also perform better because the Temurin JDK is linked to glibc 2.12 whereas the Zulu JDK is linked to glibc 2.5.
Signed-off-by: Wouter Born <github@maindrain.net>
These tests use the real website which causes unwanted load, network connections and test failures.
See: https://github.com/openhab/openhab-addons/actions/runs/2529936944
```
[ERROR] Tests run: 2, Failures: 0, Errors: 2, Skipped: 0, Time elapsed: 4.109 s <<< FAILURE! - in org.openhab.binding.ahawastecollection.internal.AhaCollectionScheduleTest
[ERROR] org.openhab.binding.ahawastecollection.internal.AhaCollectionScheduleTest.testGetValuesForRegion Time elapsed: 3.294 s <<< ERROR!
org.jsoup.UnsupportedMimeTypeException: Unhandled content type. Must be text/*, application/xml, or application/*+xml
at org.openhab.binding.ahawastecollection.internal.AhaCollectionScheduleTest.testGetValuesForRegion(AhaCollectionScheduleTest.java:42)
[ERROR] org.openhab.binding.ahawastecollection.internal.AhaCollectionScheduleTest.testGetValuesForHannoverCity Time elapsed: 0.726 s <<< ERROR!
org.jsoup.UnsupportedMimeTypeException: Unhandled content type. Must be text/*, application/xml, or application/*+xml
at org.openhab.binding.ahawastecollection.internal.AhaCollectionScheduleTest.testGetValuesForHannoverCity(AhaCollectionScheduleTest.java:33)
```
Signed-off-by: Wouter Born <github@maindrain.net>
* Syncs the karaf.version so the new Maven plugin is used
* Resolves itest runbundles for the new runtime dependencies
Signed-off-by: Wouter Born <github@maindrain.net>
This fixes all the compilation/dependency issues in the MQTT itests so they can be reenabled again.
The tests now create and use their own Moquette instance instead of the removed embedded MQTT broker.
The moquette-broker JAR is also included in the test bundles as workaround for its missing OSGi bundle manifest headers.
Signed-off-by: Wouter Born <github@maindrain.net>
This fixes the issue of the integration tests sometimes failing because channels have not yet been linked causing item state to remain null.
Signed-off-by: Wouter Born <github@maindrain.net>
On Windows the PrintWriter used in the NutConnector adds different line endings causing some tests to fail.
Signed-off-by: Wouter Born <github@maindrain.net>
On Windows the view has different line endings causing some tests to fail.
For readability the big strings have also been moved into files.
Signed-off-by: Wouter Born <github@maindrain.net>
The MqttService was used to keep track of the system MQTT brokers.
Since there are none the dependency can be removed.
Related to: openhab/openhab-core#2842
See also: #12157
Signed-off-by: Wouter Born <github@maindrain.net>
When a URL attachment is used a check is done if an InputStream to the URL can be opened to see if it is valid.
Because the openHAB website was used the test would fail when the website has issues:
```
[ERROR] org.openhab.binding.mail.MailBuilderTest.withURLAttachmentReturnsMultiPartEmail Time elapsed: 10.391 s <<< ERROR!
org.apache.commons.mail.EmailException: Invalid URL set:http://www.openhab.org
at org.openhab.binding.mail.MailBuilderTest.withURLAttachmentReturnsMultiPartEmail(MailBuilderTest.java:77)
Caused by: java.io.IOException: Server returned HTTP response code: 520 for URL: http://www.openhab.org
at org.openhab.binding.mail.MailBuilderTest.withURLAttachmentReturnsMultiPartEmail(MailBuilderTest.java:77)
```
It will now use a file URL instead so it is no longer depends on a website.
Signed-off-by: Wouter Born <github@maindrain.net>
* Add error annotations only in Java 11 matrix build to prevent duplicates
* Make sure Java 11 build is not cancelled when Java 17 build fails so it can add annotations by using `fail-fast: false`
* Use changed files only for incremental PR builds so a full build is done for changes merged into 'main' branch
* Add GHA build status badge
Signed-off-by: Wouter Born <github@maindrain.net>
This workaround fixes the modbus itests.
It seems that the methods that were added to the `BaseThingHandler` in openhab/openhab-core#2773 have caused some class loading issues when creating mocks of ThingHandlers in the modbus itests:
```
java.lang.NoClassDefFoundError: org/openhab/core/thing/type/ChannelTypeUID
at org.mockito.codegen.ModbusPollerThingHandler$MockitoMock$1698831298.<clinit>(Unknown Source)
at jdk.internal.reflect.GeneratedSerializationConstructorAccessor6.newInstance(Unknown Source)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
at org.objenesis.instantiator.sun.SunReflectionFactoryInstantiator.newInstance(SunReflectionFactoryInstantiator.java:48)
at org.objenesis.ObjenesisBase.newInstance(ObjenesisBase.java:73)
at org.mockito.internal.creation.instance.ObjenesisInstantiator.newInstance(ObjenesisInstantiator.java:22)
at org.mockito.internal.creation.bytebuddy.SubclassByteBuddyMockMaker.createMock(SubclassByteBuddyMockMaker.java:48)
at org.mockito.internal.creation.bytebuddy.ByteBuddyMockMaker.createMock(ByteBuddyMockMaker.java:42)
at org.mockito.internal.util.MockUtil.createMock(MockUtil.java:53)
at org.mockito.internal.MockitoCore.mock(MockitoCore.java:96)
at org.mockito.Mockito.mock(Mockito.java:1954)
at org.mockito.Mockito.mock(Mockito.java:1869)
at org.openhab.binding.modbus.tests.ModbusDataHandlerTest.createPollerMock(ModbusDataHandlerTest.java:199)
at org.openhab.binding.modbus.tests.ModbusDataHandlerTest.testInitGeneric(ModbusDataHandlerTest.java:1039)
at org.openhab.binding.modbus.tests.ModbusDataHandlerTest.testInitGeneric(ModbusDataHandlerTest.java:1007)
at org.openhab.binding.modbus.tests.ModbusDataHandlerTest.testWriteOnlyData(ModbusDataHandlerTest.java:1101)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:725)
at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140)
at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84)
at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:214)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:210)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:135)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:66)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
at aQute.tester.bundle.engine.BundleDescriptor.executeChild(BundleDescriptor.java:49)
at aQute.tester.bundle.engine.BundleEngine.lambda$executeBundle$7(BundleEngine.java:120)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
at aQute.tester.bundle.engine.BundleEngine.executeBundle(BundleEngine.java:120)
at aQute.tester.bundle.engine.BundleEngine.lambda$executeBundle$8(BundleEngine.java:133)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
at aQute.tester.bundle.engine.BundleEngine.executeBundle(BundleEngine.java:133)
at aQute.tester.bundle.engine.BundleEngine.lambda$execute$5(BundleEngine.java:100)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
at aQute.tester.bundle.engine.BundleEngine.execute(BundleEngine.java:100)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53)
at aQute.tester.junit.platform.Activator.test(Activator.java:439)
at aQute.tester.junit.platform.Activator.automatic(Activator.java:344)
at aQute.tester.junit.platform.Activator.run(Activator.java:216)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at aQute.launcher.Launcher.launch(Launcher.java:450)
at aQute.launcher.Launcher.run(Launcher.java:184)
at aQute.launcher.Launcher.main(Launcher.java:160)
at aQute.launcher.pre.EmbeddedLauncher.executeWithRunPath(EmbeddedLauncher.java:170)
at aQute.launcher.pre.EmbeddedLauncher.findAndExecute(EmbeddedLauncher.java:135)
at aQute.launcher.pre.EmbeddedLauncher.main(EmbeddedLauncher.java:52)
Caused by: java.lang.ClassNotFoundException: org.openhab.core.thing.type.ChannelTypeUID
at net.bytebuddy.dynamic.loading.ByteArrayClassLoader.findClass(ByteArrayClassLoader.java:397)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
... 128 more
```
Signed-off-by: Wouter Born <github@maindrain.net>
This adds Java 17 to the GitHub Actions CI build matrix so we can make sure the build keeps working with both Java 11 and Java 17.
It also updates the required Java version range used by the enforcer plugin so it is also possible to build with the supported Java versions.
Signed-off-by: Wouter Born <github@maindrain.net>
* Adds --add-opens to the surefire-maven-plugin config required for deserialization using Gson/XStream
* Upgrades plugin dependencies to JDK 17 compatible versions
* Replaces some reflection that no longer works on JDK 17
* Fixes issues when mocking Random
* Run Nashorn dependant tests only on JDK < 15
Signed-off-by: Wouter Born <github@maindrain.net>
* Syncs the karaf.version so the new Maven plugin is used
* Resolves itest runbundles for the new runtime dependencies
Signed-off-by: Wouter Born <github@maindrain.net>
This fixes the comment showing up in the translations.
The code seems to use the 'message.discovery.failed' instead of 'discovery.failed'.
Signed-off-by: Wouter Born <github@maindrain.net>
* Syncs the karaf.version so the new Maven plugin is used
* Resolves itest runbundles for the new runtime dependencies
Signed-off-by: Wouter Born <github@maindrain.net>
While uploading the German translations I noticed the file had a different name.
Renaming it prevents us ending up with 2 German translations files once all the texts are translated in German.
Signed-off-by: Wouter Born <github@maindrain.net>
* Add default translations for binding add-ons
This makes the texts used by these add-ons translatable with Crowdin.
To keep the PR simple, it only adds default translations for add-ons which do not yet have any default translations properties file.
We can do follow up PRs for adding missing key/values to add-ons that already have these files or to remove duplications.
There are several add-ons in this PR that do have non-English translation files, so I'll upload those to Crowdin when the PR is merged.
Signed-off-by: Wouter Born <github@maindrain.net>
* Add default translations for io add-ons
This makes the texts used by these add-ons translatable with Crowdin.
Signed-off-by: Wouter Born <github@maindrain.net>
This fixes the issue that the 'power' channel would not update with the correct state because the number of pulses in the PowerInformationResponseMessage is signed instead of unsigned.
When the binding detected these strange readings it would normally log: "Circle (...) is in a kind of error state ...".
Signed-off-by: Wouter Born <github@maindrain.net>
When the plugin dependency is managed you can also use the plugin without adding GAV parameters to commands.
E.g. it allows for using it with:
```
mvn i18n:generate-default-translations
```
Signed-off-by: Wouter Born <github@maindrain.net>
When the binding is stopped sleeping threads are interrupted by design.
By throwing the InterruptedException, it should be caught in LifxSelectorUtil.sendPacket (which is waiting for the packet interval to elapse), which will then abort sending a packet.
This prevents:
```
[ERROR] [lifx.internal.util.LifxThrottlingUtil] - An exception occurred while putting the thread to sleep : 'sleep interrupted'
```
Signed-off-by: Wouter Born <github@maindrain.net>
When the docs are generated any {{ }} constructs are substituted with variables.
As a result the docs are less easy to understand.
Signed-off-by: Wouter Born <github@maindrain.net>
When the docs are generated any {{ }} constructs are substituted with variables causing the place holders to get lost.
As a result the docs are less easy to understand.
Signed-off-by: Wouter Born <github@maindrain.net>
Missing bundles in this BOM can cause issues like:
* Karaf feature projects building before bundle add-on projects completed
* Incremental build issues
* Other projects using the BOM having to manually add dependency management for these bundles
Signed-off-by: Wouter Born <github@maindrain.net>
Looks like only the POM dependencies are used by the indexer, so the JAR is unused and useless as this warning correctly indicates when you build them:
```
[WARNING] JAR will be empty - no content was marked for inclusion!
```
Signed-off-by: Wouter Born <github@maindrain.net>
It is probably always a good idea to run the OSGi HTTP service on a random available port in itests.
So when this is always done it prevents future issues and removes a bit of duplication.
Signed-off-by: Wouter Born <github@maindrain.net>
Ignores warnings like:
```
Warning: /home/runner/work/openhab-addons/openhab-addons/bom/runtime-index/pom.xml [0:0]: Unused Export-Package instructions: [org.openhab.*]
Warning: /home/runner/work/openhab-addons/openhab-addons/bom/runtime-index/pom.xml [0:0]: Unused Import-Package instructions: [io.swagger.v3.oas.annotations.*,
```
These are safe to ignore because the import/export packages are globally defined and not every bundle imports/exports all these packages.
The `skipIfEmpty` configuration furthermore prevents warnings when the bnd-maven-plugin runs on projects that don't have any code like BOMs.
More important compiler/SAT warnings standout more when there are there are fewer useless warnings.
Signed-off-by: Wouter Born <github@maindrain.net>
* Checkout merged branches for pull requests
* Add support for incremental add-on builds to speed up PR builds
* Echo the mvn command used for builds
Signed-off-by: Wouter Born <github@maindrain.net>
This PR adds a CI build using GitHub Actions.
Besides having a backup for Jenkins, it will also make it easy for contributors to use a GitHub Actions build with their fork.
It features the following:
* Uncluttered simple build progress like we used with Travis CI
* Uploads the full build log and SAT summary report so they can be downloaded for further analysis
* Uses a Maven repository cache to speed up builds (first build takes a bit longer)
* Has some maven.wagon configuration options to prevent Maven Central artifact download issues from Azure
* Uses a matrix so we can easily add builds for other OS-es or newer Java LTS versions in the future
Signed-off-by: Wouter Born <github@maindrain.net>
Adds the products with IDs 93, 112, 113, 114 so that they can be discovered and the right features are available.
Fixes#11402
Signed-off-by: Wouter Born <github@maindrain.net>
The XStream.setupDefaultSecurity method is deprecated since XStream 1.4.18.
It no longer does anything, because this is the default in newer XStream versions.
Signed-off-by: Wouter Born <github@maindrain.net>
* Switch properties files encoding from ISO-8859-1 to UTF-8
Crowdin will generate translations in this encoding, so this prevents a lot of diffs which makes it easier to review future Crowdin PRs.
Related to openhab/openhab-core#2298
Signed-off-by: Wouter Born <github@maindrain.net>
* [lifx] Add channels for controlling absolute color temperature in Kelvin
Adds an 'abstemperature' channel to all Thing Types for controlling the absolute color temperature in Kelvin.
MultiZone lights also have 'abstemperaturezone' channels that allow for controlling the color temperature of a zone in Kelvin.
These channels make it easier to use the same color temperature with lights that have a different color temperature range.
Furthermore the channel type tags have been updated which simplifies using the generated items with the semantic model.
Signed-off-by: Wouter Born <github@maindrain.net>