To prevent weak cipher/protocol warnings it's better to not customize the default excluded ciphers and protocols.
The MD5 ciphers have already been excluded by default since Jetty 9.3.11.v20160721.
Fixes#1064
Signed-off-by: Wouter Born <github@maindrain.net>
Make sure Throwables are not be substituted into log messages so they can be formatted according to the logging configuration.
Signed-off-by: Wouter Born <github@maindrain.net>
For bnd 4.3.0 release notes, see:
https://github.com/bndtools/bnd/wiki/Changes-in-4.3.0
Also note:
The Bnd Maven plugins are now marked thread safe and can be used with -T.
It seems to work well so far as long as the features are build after the bundles so I've added the bundles BOM as dependency to the features POM.
We still need to make SAT thread safe (openhab/static-code-analysis#200).
When disabling SAT you can build using one thread per processor core by executing:
mvn clean install -DskipChecks -T 1C
This significantly speeds up Maven builds and puts all your processor cores to good use. :-)
Signed-off-by: Wouter Born <github@maindrain.net>
Using waitForAssert instead of sleeping 10ms makes the tests stable when the system has some load.
Fixes#1139
Signed-off-by: Wouter Born <github@maindrain.net>
Every connection to the LSP server failed because it always threw a org.eclipse.smarthome.model.ide.SitemapIdeSetup NoClassDefFoundError.
Which is caused by the SitemapIdeSetup residing in a package that is split between both the org.openhab.core.model.item.ide and the org.openhab.core.model.sitemap.ide bundles.
The SitemapIdeSetup class is also using classes from the org.eclipse.smarthome.model package which is also a package split between the org.openhab.core.model.items and org.openhab.core.model.sitemap bundles.
After renaming the packages used for the sitemap classes the NoClassDefFoundError is resolved and LSP works properly again.
Many imports were updated for the sitemap model package changes.
Fixes#1030
Signed-off-by: Wouter Born <github@maindrain.net>
waitForAssert doesn't catch NPEs so this PR fixes that by also checking the localized modules for null.
Related to #1089
Signed-off-by: Wouter Born <github@maindrain.net>
Adds null annotations to all registries, the interfaces they implement and a few other classes.
Also-by: Christoph Weitkamp <github@christophweitkamp.de>
Signed-off-by: Wouter Born <github@maindrain.net>
* Use !isEmpty() instead of "size() > 0" or "size() != 0"
!isEmpty() expresses the intent more clearly and is therefore preferred.
Counting the number of elements can also be an expensive operation e.g. when using linked lists.
Co-Authored-By: Christoph Weitkamp <github@christophweitkamp.de>
Signed-off-by: Wouter Born <github@maindrain.net>
isEmpty() expresses the intent more clearly and is therefore preferred.
Counting the number of elements can also be an expensive operation e.g. when using linked lists.
Signed-off-by: Wouter Born <github@maindrain.net>
When waitForAssert uses ruleEvents.stream() the ruleEventHandler may add an event to ruleEvents at the same time causing a ConcurrentModificationException.
Using a CopyOnWriteArrayList instead of an ArrayList should fix this.
Signed-off-by: Wouter Born <github@maindrain.net>
The test now makes sure the models and items are removed and the removal events have been processed during tearDown so these events don't interfere with subsequent tests.
Also merges the GenericItemProviderTest and GenericItemProvider2Test together which was still a Groovy leftover.
Fixes#1140
Signed-off-by: Wouter Born <github@maindrain.net>
* Improve ThingTypeXmlProvider exception handling
When a binding such as ZWave has hundereds of ThingTypes it's hard to debug thing type definition issues.
This PR adds a UID (ConfigDescription, ChannelType, ChannelGroupType and ThingType) to the logging so it will be easier to find the root cause of exceptions.
Because the exceptions are caught, an error in one ThingType definition will no longer prevent other perfectly fine ThingTypes to be registered so the impact of definition issues is reduced.
Signed-off-by: Wouter Born <github@maindrain.net>
Most likely the test is unstable because the ChannelGroupTypeProvider is still processing the bundle XML. So using waitForAssert may fix this. It's also used like this to assert the channel types got added by the ChannelTypeProvider.
Fixes#1090
Signed-off-by: Wouter Born <github@maindrain.net>
Activating the PersistentInbox after the mocks are initialized prevents the TimeToLiveCheckingThread calling the storage mock which would cause the exception.
Fixes#1091
Signed-off-by: Wouter Born <github@maindrain.net>
Mockito 3 does not introduce any breaking API changes, but now requires Java 8 over Java 6 for Mockito 2.
Signed-off-by: Wouter Born <github@maindrain.net>
Suppresses the SystemPrintln SAT findings because this class is a Karaf shell command which prints to the console.
Signed-off-by: Wouter Born <github@maindrain.net>
Fixes wrong names identified by the following rules:
* ConstantNameCheck
* LocalFinalVariableNameCheck
* LocalVariableNameCheck
* StaticVariableNameCheck
Most mismatches identified by the MemberNameCheck have also been fixed except for those where the variables are used in events/DTOs etc which would cause issues.
Signed-off-by: Wouter Born <github@maindrain.net>
Fixes the SAT warning: First javadoc author should have "Initial contribution" contribution description.
Signed-off-by: Wouter Born <github@maindrain.net>
* Move IO HTTP unit tests
All IO HTTP tests are unit tests so there is no need for an itests project.
Signed-off-by: Wouter Born <github@maindrain.net>
* Move thing XML unit tests
Moves the thing XML unit tests from the itests project to the bundle project.
Signed-off-by: Wouter Born <github@maindrain.net>
* Move compat1x unit tests
All compat1x tests are unit tests so there is no need for an itests project.
Signed-off-by: Wouter Born <github@maindrain.net>
* Move model LSP unit tests
All model LSP tests are unit tests so there is no need for an itests project.
Signed-off-by: Wouter Born <github@maindrain.net>
* Move semantics unit tests
All semantics tests are unit tests so there is no need for an itests project.
Signed-off-by: Wouter Born <github@maindrain.net>
* Move transform unit tests
All transform tests are unit tests so there is no need for an itests project.
Signed-off-by: Wouter Born <github@maindrain.net>
* Move UI icon unit tests
All UI icon tests are unit tests so there is no need for an itests project.
Signed-off-by: Wouter Born <github@maindrain.net>
Wait for stop future to complete and fix the NPE that would cause the future not to complete.
When disconnecting the client the callback is null.
Signed-off-by: Wouter Born <github@maindrain.net>
* Fix DateTimeType parsing of strings with 2 nano digits
Some formatters such as the DateTimeFormatter.ISO_LOCAL_DATE_TIME may also output a string containing 2 nano digits which fail to be parsed by DateTimeValue.
* Fix parsing of arbitrary number of nano digits for Java 11
Signed-off-by: Wouter Born <github@maindrain.net>
* Move null annotations between modifiers and variable type
* Remove redundant public modifiers from interfaces where applicable
* Remove redundant `@NonNull` annotations
Signed-off-by: Wouter Born <github@maindrain.net>
On newer Maven versions the reactor summary also contains the project name and version so the regexp needs to be adjusted for this.
Also make sure grep treats binary data as text (-aE switch) so the pipe doesn't choke on this.
Signed-off-by: Wouter Born <github@maindrain.net>
Change reference cardinality from MULTIPLE to AT_LEAST_ONE so the serial port provider can be used immediately when ThingHandlers are initialized.
Fixes#937
This would always result in the following logging on startup:
[WARN ] [serial.internal.SerialPortManagerImpl] - No SerialPortProvider found for: /dev/ttyUSB0
Bindings without serial port reconnection logic would need to be manually restarted (Z-Wave Binding).
Signed-off-by: Wouter Born <github@maindrain.net>
* Get all serial port identifiers by calling RXTX with and without using the gnu.io.rxtx.SerialPorts property
* Filter getSerialPortIdentifiers() stream on distinct port names
* Fix thread safety issues by saving getPortIdentifiers() Enumeration result to new list
Fixes#805
Signed-off-by: Wouter Born <github@maindrain.net>
When debugging openHAB in Eclipse I ran into serial port locking issues again on Ubuntu 18.04.2.
We resolved these in the distro by using 3.15.0.OH2 which doesn't use liblockdev.
Errors similar to the one below may show after stopping/restarting openHAB when using serial ports on certain distros:
RXTX fhs_lock() Error: opening lock file: /var/lock/LCK..ttyUSB0: File exists. It is mine
testRead() Lock file failed
See also:
https://github.com/openhab/openhab-core/pull/761
Signed-off-by: Wouter Born <github@maindrain.net>
* Update enforcer to allow compilation with Java 8, 9, 10 and 11
* Update Travis CI configuration to require the Java 11 build to succeed
Signed-off-by: Wouter Born <github@maindrain.net>
Adds the following bundles required for building on Java 11 by default to the run requirements:
* org.apache.servicemix.specs.activation-api-1.1
* org.apache.servicemix.specs.annotation-api-1.3
* org.apache.servicemix.specs.jaxb-api-2.2
Signed-off-by: Wouter Born <github@maindrain.net>
Incompatible code can be used/generated when using JDK8 on the command line and JDK11 in Eclipse (or vice versa).
The explanation for this is given in https://github.com/apache/felix/pull/114 :
Java 9 introduces overridden methods with covariant return types for the following methods in java.nio.ByteBuffer:
* position(int newPosition)
* limit(int newLimit)
* flip()
* clear()
* mark()
* reset()
* rewind()
In Java 9 they all now return ByteBuffer, whereas the methods they override return Buffer,
resulting in exceptions like this when executing on Java 8 and lower:
java.lang.NoSuchMethodError: java.nio.ByteBuffer.limit(I)Ljava/nio/ByteBuffer
This is because the generated byte code includes the static return type of the method, which is not found on Java 8 and lower because the overloaded methods with covariant return types don't exist (the issue appears even with source and target 8 or lower in compilation parameters).
The solution is to cast ByteBuffer instances to Buffer before calling the method.
Signed-off-by: Wouter Born <github@maindrain.net>
Since Java 9 (JDK-8164428) the maximum resolution from the underlying clock is used.
Instead of just milliseconds the resolution can now even be tenth of microseconds.
According to the Type JavaDocs toFullString() should return the full string representation of the type to be consumed by 'valueOf(String)'.
With the changes in this PR toFullString() may return higher resolution date time strings on newer Java versions and valueOf(value) is able to parse these.
Code depending on a certain resolution returned by toFullString() should use the format(pattern) method instead so the resolution will not change.
Fixes#667
Signed-off-by: Wouter Born <github@maindrain.net>