Releases: averbraeck/djutils
djutils v2.3.0
The following issues have been handled in this version:
- Issue #48. Update djutils to Java-17
- Issue #49. Update Javadoc to be compliant with Java-17
- Issue #50. Update Locale tester for Java 17 (repaired for implementation differences in Java releases)
- Issue #51. Find new way to test terminating program without
setSecurityManager
in Java-17 - Dependency on djutils-base 2.3.0 (Java-17)
- Dependency on djunits 5.2.0 (Java-17)
Please note that djutils needs Java-17 from version 2.3.0 onward.
djutils v2.2.3
The following issues have been handled in this version:
- Issue #13. CliUtil default decimal values and Locale
- Issue #14. Add a project djutils-eval for expression evaluation
- Issue #15. Polygon2d.contains() returns false for a clearly true result
- Issue #16. Methods getName() and getDescription() in class ObjectDescriptor should be public
- Issue #18. Rename toExcel() methods as toTsv() in djutils-draw
- Issue #19. Move toPlot() method from various djutils-draw classes into utility class
- Issue #23. Improve documentation for Ray and OrientedPoint
- Issue #25. Throw.whenNull() without "may not be null"
- Issue #30. PolyLine.getLocation(..) not intuitive
- Issue #37. Remove maven-changes-plugin from pom file and site.xml
- Issue #38. Documentation Project.projectOrthogonalFractional NaN/null
- Issue #39. Cannot happen handling in djutils-draw
- Issue #40. Bounds should only be concerned with other Bounds in their methods
- Issue #41. Remove OrientedPoint2d
- Issue #42. Extend DirectedPoint3d into OrientedPoint3d
- Issue #46. Remove
{@inheritDoc}
from overridden methods
djutils v2.2.2
The following issues have been handled in this version:
- Issue #32. The readthedocs pipeline has been improved for proper documentation creation.
- Issue #33. The generation of the site and api information has been updated to the latest version.
- Issue #34. Generation of documentation on djutils.org has been updated
- Issue #35. Generation of documentation from djutils-base integrated into djutils documentation
- Issue #36. Maven site generation has been updated to version 2.0.0 and modernized.
- Furthermore, all maven plugins and libraries have been updated to the latest versions.
djutils v2.2.1
In this version, the following updates have been made:
- Issue #27. Eval > RetrieveValue > Eval nested dependency not supported bug djutils-eval enhancement
- Issue #28. Allow @, # and _ in variable or function name djutils-eval enhancement
- Issue #29. Allow non DoubleScalar and non Boolean retrieve values djutils-eval
- Issue #31. Update libraries to latest version (fewer bugs and vulnerabilities) enhancement
- Dependency on djutils-base updated to v2.2.1
- Dependency on djunits updated to v5.1.3
djutils v2.2.0
The djutils 2.2.0 project has three major changes:
- The module djutils-base (aka djutils) has been split off into a separate project to avoid circular dependencies (issue #24).
- A module called djutils-eval has been added. This module can evaluate textual expressions including stored variables. It is fully integrated with djunits, and it can make calculations on quantities, where units are converted and checked. Example expressions are
3[kg.ms-2]
,PI()*AVOGADRO()
,12 [ms-1] / 123[/s]
,12>4?TRUE():(9+5)
, and5*2[s]/5[s]
. - The unit tests have been upgraded from JUnit 4 to JUnit 5.
The following issues have been addressed:
- Issue #11. Constructing a Bezier of two points and epsilon fails. The method
PolyLine2d Bezier.bezier(double epsilon, final Point2d... points)
crashes when it tries to compute the first t value to put the points in theNavigableMap
. When only two points are given, the value of t is effectively computed as 0/0; resulting in NaN. It is likely that this also goes wrong in the PolyLine3d version. This was fixed. The test coverage of 3D bezier construction with epsilon was also improved / added. - Issue #17. Update unit tests from JUnit 4 to JUnit 5. Update unit tests from JUnit 4 to JUnit 5. All unit tests have been adapted and upgraded to the JUnit 5 framework. Code with the
ExitHelper
class and tests to check theSystem.out
andSystem.err
output have been upgraded to use thesystem-lambda
package from https://github.com/stefanbirkner/system-lambda/ - Issue #24. Separate djutils-base (aka djutils) into a separate project. Break the circular dependency between djunits and djutils. the djutils module has been placed in a separate project djutils-base. As a result, djunits can be made dependent on djutils-base, breaking the circular dependency. This allows full usage of the classes and data structures of djutils-base in djunits (such as
Throw
,Try
,UrlResource
,CategoryLogger
, and immutable collections), and it allows the latest version of djunits to be used in turn in several of the djutils modules in this project.
djutils v2.1.9
In this version of djutils, two additions were made in djutils-base:
- Issue #10 : Addition of a
NumberParser
class. Locale-dependent parsing can be quite difficult. The classes provided in Java are very strict, which means that an extra space or plus at the start of the parsed String already leads to a partially parsed String or to an exception. The newNumberParser
class in djutils-base tries to address this issue. and provides many options to parse Strings to numbers (int, long, float, and double). It allows for the use of different Locales, and it can parse in a strict manner (only allowing the exact format that the Locale prescribes) or in a lenient manner (allowing for leading plus sign for the number and leading plus sign for the exponent, and allowing for the wrong case of the exponent character). Both strict and lenient parsing ignores leading and trailing whitespace. The parser also allows for trailing characters (such as units) and keeps a pointer where the first trailing character begins. - Addition of Mutable Primitives. Mutable Primitives These classes augment the Java primitive wrappers with mutable variants. Sometimes, we want to return one or more primitive values after a method call in addition to the return value itself. As an example, consider a parser that returns the parsed value, but also an index for the character where the parsing stopped. Often, 'ugly' constructs are used, such as providing a
new int[1] {}
to the method, or anAtomicInteger
. Both can be written. Instead of these solutions, djutils-base contains the classesMutableInt
,MutableLong
,MutableFloat
,MutableDouble
,MutableShort
,MutableByte
, andMutableBoolean
.
Note that the interpretation of a strictly formatted number string (related to Issue #10) can differ per Java version (!). Jdk11 uses the CLDR version 33 (see https://cldr.unicode.org/index/downloads/cldr-33) and Jdk17 uses the CLDR version 35.1 (see https://cldr.unicode.org/index/downloads/cldr-35). In the Unit tests, this means that, for instance, both the French and the Arabic NumberFormat test are different and version-dependent.
djutils v2.1.8
pom file has only one test-resources entry. Originally, test-resources contained both /src/main/resources and /src/test/resources, to make the resources also available to the unit tests. The latest version of Eclipse, however, cannot deal with two locations. Since we already copy the resources with Maven, having both locations is not needed.
Dependency on djunits has been updated to v5.0.2.
CLI test that failed on 100.0erg/g for an AbsorbedDose
has been repaired by adding a space between the value and the unit. An issue in djunits should resolve this issue.
djutils v2.1.7
djutils-data project
In djutils v2.1.7, Issue #8 has been resolved. This issue was about merging the updates that were made to data tables in the opentrafficsim project into djutils-data. Design choices are extensively described in the comments for Issue #8.
Main changes:
- Class names changed to, e.g.,
Column
,ListTable
,Row
andTable
- Updated CsvData and TsvData, JsonData, XmlData and changed class names to camel case
Column
now checks for correct unit and does autoboxing- An extra interface for the Serializers has been added for types that do not need to be specified further, nor need a unit. To avoid having to implement
IllegalOperationException
, the djunits versions of theTextSerializer
are taken as the basis, and an extra interface with a conveniencedeserialize(text)
method is added. This interface is calledSpecificTextSerializer
. All primitive serializers and theStringSerializer
implement theSpecificTextSerializer
. - null values are allowed in (de)serialization to denote empty column
- Implemented code for Scalar columns with a different unit
- Javadoc updated
- Unit tests extended to 96% test coverage
- Documentation for djutils-data project updated
djutils project
One addition has been made to the djutils project:
CompressedFileWriter
class moved from ots to djutils-base; code has been further streamlined- unit tests were added for
CompressedFileWriter
djutils v2.1.6
Updates in djutils (base) project:
Addressed Issue #7
- removed
testSucceed()
method inTry
class for for unit tests - improved
testFail()
method inTry
class for unit tests - improved javadoc for
Try
class - improved unit tests for
Try
class
Solved an issue with the DecoderDumperTest
unit test; the test was dependent on a 'null' configuration of the CategoryLogger
, which meant that if another unit test had used the CategoryLogger
, the DecoderDumperTest
unit test would fail. DecoderDumperTest
is not not dependent on the CategoryLogger
anymore.
djutils v2.1.5
Updates in djutils-stats project:
Addressed Issue #5.
- The
Tally
,Counter
,WeightedTally
andTimestampWeightedTally
classes have reporting methods to a String. When iterating over multiple statistics to make a table, thereportHeader()
andreportFooter()
methods were not accessible because there is no instance yet on which to call the header or footer method. This problem has been solved by making these methods static.
Addressed Issue #6.
- In the
TimestampWeightedTally.reportLine()
method the header did not match with the content. This has been repaired.