Most changes are in the Time2 Library and can be summarized as:
- improved thread safety, achieved by the elimination of
- partial reorganization of the package structure;
- support for nanoseconds;
- various fixes and improvements.
Version 2.0.0 of the Time2 Library is not fully compatible with version 1.1.7. Due to the elimination and replacement of some classes and interfaces, a minimum of application recoding is unavoidable. It is in principle limited to initialization code. In addition, the reorganization of packages makes it necessary to reorganize imports.
The important change is the improvement of thread safety. Factories were implemented as singletons and thread safety was enforced with the help of synchronized methods. In rare and hard-to-replicate cases, the software experienced deadlocks. To address the issue, all singletons have been eliminated. The functionality is of course still available. It is implemented by using injection and immutable objects. The new approach does not require any synchronization and is inherently safer. As a bonus, it also makes testing easier.
TimeDomainFactory, applications use a
implemented as an immutable object with all time domains passed as parameters to the constructor.
The role of
TimeSeriesFactory has been taken over by public constructors of
The functionality of
ExternalTimeFormat has been split into
The CrNiCKL database software depends on the Time2 Library and has been upgraded. Its version 2.0.0 is likewise incompatible with the previous one, 1.2.1. The JDBC and MongoDB drivers have also been upgraded. Use crnickl-jdbc 2.0.1 and crnickl-mongodb 2.0.1 instead of 2.0.0; the 2.0.0 versions have a glitch in their POMs and cannot be used for unit testing.