Little-Endian types have been removed as FieldTypes in djutils-serialization. Instead, messages that
need to be decoded can indicate whether they want to (de)code as Little-Endian or Big-Endian.
By default, following Java standards, djutils-serialization encodes in Big Endian (network byte order).
DJUNITS has been updated to version 4.00.04, bringing major changes to the way vectors and matrices
are stored and processed.
As a result of moving to DJUNITS-4, the Money units with their special encoding have been removed
temporarily. This also holds for the MoneyPerUnit types.
As a result of moving to DJUNITS-4, several new types have been added to the possible units to use:
AbsorbedDose, AmountOfSubstance, CatalyticActivity, ElectricalCapacitance, ElectricalConductance,
ElectricalInductance, EquivalentDose, Illuminance, LuminousFlux, LuminousIntensity,
MagneticFluxDensity, MagneticFlux, and RadioActivity.
The package structure for djutils-serialization has been updated. Complex (de)serializers
have been coded in their own classes rather than in an inline class.
CliUtil in djutils-ext now has a method call with a CommandLine object. This enables e.g., the
registration of custom parameter converters. An example and test is provided in
TestCLIRegisterConverters.java in the test package.
Added unit tests for djunits converters for the CLI package. Dimensionless can also parse just a number.
Unit tests with System.exit() were failing in Maven surefire. Surefire documents that System.exit()
calls cannot be tested. Therefore a Security Manager has been implemented in the test class ExitHelper
for these tests that catches the System.Exit and turns it into an ExitException.
Repaired the code for the ClassFileDescriptor for paths with spaces.
Added a unit test to see if folders with spaces can be found for the ClassFileDescriptor.
Repaired a bug for folders with spaces for the ClassFileDescriptor.
Added unit tests for ClassUtil.
Repaired a number of bugs and changed some code in ClassUtil. It does not make sense to resolve
constructors of superclasses, as only constructors of a class to be instantiated can be called.
Therefore all code that deals with constructors in superclasses has been removed.
The methods in ClassUtil that deal with visibility from a callerClass now throw an
IllegalAccessException when the method/field/constructor is not visible from the callerClass
and a NoSuchMethodException or NoSuchFieldException when the method/constructor/field
cannot be found.
ClassUtil has resolveAnnotation methods.
CliUtil also resolved @Command and @Option annotations in a superclass.
ClassUtil got extra methods to retrieve information about a class file, e.g. the last changed date.
CliIUtil has been renamed to the correct CliUtil.
Several helper methods have been added to CliUtil to change some of the @Options and
@Command settings.
A project for more utility classes that require more dependencies called djutils-ext has been added.
Classes for Command Line Interface parsing have been added. The classes are based on picocli.
A utility class with converters for DJUTILS command line arguments has been added. With these
converters, it is possible to e.g. specify --timeout=30s on the command line and convert the
timeout to a DJUNITS Duration scalar.
The byte[][] serialization destroyed the underlying data -- this has been repaired.
The serializers have all been made strongly typed, avoiding casting. Or actually, the casting has been
shifted to the encode method on a higher level.
The ImmutableLinkedHashMap.values() was overriding a non-reproducible values() method from the
ImmutableAbstractMap. The ImmutableLinkedHashMap now has its own values() method.
The ImmutableLinkedHashMap returned a non-linked HashSet as EntrySet and as KeySet. This has
been repaired.
The UTF-8 Strings in djutils-serialization have been improved. The UTF-8 String can now handle
1-byte, 2-byte, 3-byte and 4-byte characters. The length of the UTF-8 serialized bytes indicates
the number of bytes. The length does not say anything about the number of characters.
The UTF-16 Strings in djutils-serialization have been improved. The UTF-16 String can now handle
2-byte and 4-byte characters. The length of the UTF-16 String indicates the number of 2-byte
shorts in the array. The length does not say anything about the number of characters.
The byte array in djutils-serialization has been repaired. The underlying byte array was nulled
during serialization.
ObjectArraySerializer and ObjectMatrixSerializer added.
SerialDataDumper added to provide insight into structure of the serialized data.
The djunits-serialization project has been added to serialize and deserialize different classes
including djunits scalars, vectors and matrices in a strongly typed manner.
EntrySets have been added to the ImmutableMap classes.
The keySet(), values() and entrySet() methods cache the results as these are often called.
The ImmutableCollections class has been added, which takes care of those functions of the
Collections class that do not update the (immutable) collections that the methods receive
as arguments.
Cat class in the logger package belongs in dsol, not in djutils, so removed it.
The 'decoderdumper' package has been added to the djutils project, extending
and replacing HexDump.
The CategoryLogger has been extended with a 'when(condition)' static method.
A call like CategoryLogger.when(ok).always().info("Ok"); is now possible.
The HexDump class has been added to djutils to create hexadecimal dumps of data.
Copyright message changed to 2019.
The 'means' package has been added to the djutils project.
Several classes from other projects that are heavily shared between the projects, but not
specific for one of the projects have been transferred to the djutils project.