Changes Report

Release History

Version Date Description
1.05.04 2020-08-22 EventInterface and EventTypeInterface used in a consequent manner
1.05.03 2020-07-27 TraceVerifier added
1.05.02 2020-05-16 Changed CSVReader/Writer
1.05.01 2020-05-05 EventType and TimedEventType separated
1.04.21 2020-05-05 MetaData construction with varargs
1.04.20 2020-05-03 Added float and char payload for the fireEvent method
1.04.19 2020-04-19 Metadata and ObjectDescriptor updates
1.04.18 2020-04-18 Metadata expansions and fixes
1.04.17 2020-04-06 Metadata fixes
1.04.16 2020-04-06 Metadata fixes and expanded use
1.04.15 2020-04-03 Metadata and Java-8 compatibility
1.04.14 2020-03-08 timed events for timestamped statistics
1.04.13 2020-03-07 extra events in djutils-stats; statistics formulas
1.04.12 2020-03-03 several fixes in djutils-stats
1.04.11 2020-03-03 djutils-data project added; Immutable.of() methods
1.04.10 2020-02-29 djutils-stats project added; djutils-parent project for pom
1.04.09 2020-02-10 MultiKeyMap added; EventType equals() and hashCode()
1.04.08 2020-02-08 EventProducer access to listeners
1.04.07 2020-02-07 EventProducerImpl; RemoteEventProducer; Profile class
1.04.06 2020-02-04 CliUtil for subclasses
1.04.05 2020-01-24 Comparator immutableTreeset; new units for serialization
1.04.04 2020-01-19 EventProducer uses Serializable sourceId
1.04.03 2020-01-17 RMIUtils, RMIObject and RemoteEvent updates
1.04.02 2020-01-05 EventProducer cleanup; Logger updates
1.04.01 2019-12-31 EventProducer serializability
1.04.00 2019-12-30 DSOL Event package added to DJUTILS
1.03.02 2019-10-31 SpotBugs instead of FindBugs in Maven
1.03.01 2019-10-25 Updated DJUTILS to version 4
1.03.00 2019-10-19 @Generated annotations in code in djutils-cli
1.03.00 2019-10-19 Little Endian (de)serialization; use of djunits v4
1.02.03 2019-09-14 CliUtil.execute with CommandLine object; unit tests
1.02.02 2019-08-16 Resolving annotations
1.02.01 2019-08-13 CLI helper methods, ClassFileDescriptor
1.02.00 2019-08-11 djutils-ext project added; CLI code
1.01.03 2019-07-04 byte[][] serialization repaired
1.01.02 2019-07-02 ImmutableLinkedHashMap.values() repaired
1.01.01 2019-07-01 ImmutableLinkedHashMap repaired; serialization of UTF-8, UTF-16
1.01.00 2019-06-21 djutils-serialization project added
1.00.06 2019-05-10 EntrySets added; caching of keySet, values in Map
1.00.05 2019-02-26 ImmutableCollections class added
1.00.04 2019-01-29 Removed logger Cat class
1.00.03 2018-12-18 DecoderDumper package
1.00.02 2019-01-17 ConditionalLogger, HexDump
1.00.01 2018-12-15 Means package
1.00.00 2018-11-17 Initial release

Release 1.05.04 – 2020-08-22

Type Changes By
Update The EventInterface and Event were used in a mixed way in the event package. Same for EventType and EventTypeInterface. For TimedEvent and TimedEventType, no interfaces were present, leading to a further asymmetry. All event methods now act on the interface, and return interfaces instead of implementations of the Events and EventTypes. averbraeck
Fix The TraceVerifier class threw a java.util.FormatFlagsConversionMismatchException for the error string instead of a regular RunTimeException showing the mismatch. This has been repaired. averbraeck
Add The TraceVerifier class now throws a TraceVerifierException instead of a generic RunTimeException. averbraeck
Update Javadoc comments updated to contain correct types of parameters. averbraeck

Release 1.05.03 – 2020-07-27

Type Changes By
Add The TraceVerifier creates or verifies a file containing a series of traced events. When the file does not exist, it is created and each traced event is written to the file. If the file does exist, it is read and each traced event is compared to the corresponding event in the file. On a mismatch a RuntimeException is thrown. To use, create a TraceVerifier object in the class that is to be traced. In a method where you expect a fixed sequence of events, but suspect that this may not be true ()due to, e.g., a race condition), add a call to the sample method of the TraceVerifier. Then run the program repeatedly. The first run will create the trace file, all subsequent runs will compare what happens to the contents of the trace file. pknoppers

Release 1.05.02 – 2020-05-16

Type Changes By
Update The OpenCSV package had over 5 MB of imports, such as commons-lang3, commons-text, commons-beanutils, commons-collections, commons-collections4, and commons-logging. Instead, the very small and faster fastcsv package has been used, which has no further dependencies and is only 16 kB. averbraeck

Release 1.05.01 – 2020-05-05

Type Changes By
Add The EventType and TimedEventType are now two SEPARATE classes, both extending from AbstractEventType and implementing the EventTypeInterface. This allows for the fireTimedEvent(...) methods to ONLY accept TimedEvents of type TimedEventType. A TimedEvent is not a subclass anymore of Event. This breaks compatibility, but ensures a much stricter compliance to the fact that TimedEvents and ordinary Events are different and have a different signature. averbraeck
Add The AbstractEventType constructor accepts an optional argument specifying the valid Event type for the event to be fired. As an example: when a TimedEvent is expected, the fire(Event) method of an EventProducer should fail when the argument is not a TimedEvent or a subclass of TimedEvent. averbraeck

Release 1.04.21 – 2020-05-05

Type Changes By
Update The MetaData constructor has changed to a varargs parameter for the object descriptors, making it easier to construct metaData objects with zero or one descriptor. The construction with new ObjectDescriptor[] {...} of course remains possible. averbraeck
Fix The MetaData constructor now fires a NullPointerException if one of the ObjectDescriptors is null. averbraeck

Release 1.04.20 – 2020-05-03

Type Changes By
Add The float and char primitive types were missing as allowed payloads for the fireEvent and fireTimedEvent methods. Methods have been added to the classes EventProducer, EventProducerImpl and RemoteEventProducer. averbraeck
Add It is now possible to turn off verification of the fields of each individual event, which can be useful for high-frequency events. The method to verify uses the isAssignableFrom(...) method that could be quite expensive. The fireEvent methods in EventProducerImpl have an extra boolean for verification (true by default). averbraeck
Add The EventProducer, EventProducerImpl and RemoteEventProducer got extra methods to be able to fire unverified events as well. averbraeck

Release 1.04.19 – 2020-04-19

Type Changes By
Add An extra EventType constructor has been added to not have to duplicate the event type name in the metaData object. averbraeck
Add MetaData and ObjectDescriptor have equals() and hashCode() methods. averbraeck
Add MetaData has a getObjectDescriptors() method that returns a clone of the object descriptors. averbraeck
Update The NO_META_DATA static constant has been moved to the MetaData class. averbraeck

Release 1.04.18 – 2020-04-18

Type Changes By
Fix MetaData and ObjectDescriptor are now serializable. EventType constructor with no metaData argument is now deprecated. The constructor with a metadata argument no longer takes a null pointer for that argument. There is a NO_META_DATA value that can be used in case no meta data can be provided. This should only be used in case the payload has a varying composition, but it can also be abused in case the program writer is too lazy to provide decent meta data (as is the case in many of our unit tests). EventProducing collections now put the (unchanged) size of the collection in the OBJECT_CHANGED_EVENT events. pknoppers

Release 1.04.17 – 2020-04-06

Type Changes By
Fix MetaData now permits null pointers for the arguments that it verifies. Renamed some methods (Field is now Object). pknoppers

Release 1.04.16 – 2020-04-06

Type Changes By
Fix MetaData was not 100% correct in the previous version. Some methods were not public (and should have been). Metadata can now also handle single object payload (not requiring an Object[]). The stats package now uses MetaData verification of the payload of the events. pknoppers

Release 1.04.15 – 2020-04-03

Type Changes By
Add Added package metadata. Events can now verify their payload using the metadata. Specification of metadata is done in the constructor of EventType. For now a null pointer is permitted for the MetaData argument, but that is only during the transition phase. pknoppers
Fix Unit tests of djutils are made compatible again with Java-8. Several functions of Java-9 and Java-11 were used. averbraeck

Release 1.04.14 – 2020-03-08

Type Changes By
Add The timestamped statistics now fire TimedEvents rather than normal events. averbraeck
Add In case an class extending one of the EventBased statistics wants to fire its own events, or fire the events in a different way, it can override the protected method 'fireEvents()'. averbraeck

Release 1.04.13 – 2020-03-07

Type Changes By
Update Changed the package structure of the events a bit by moving the generic classes to the 'stats' package, and the event-based classes to a separate 'summarizers.event' package. averbraeck
Add Created a generic StatisticsEvents class for the 'OBSERVATION_ADDED_EVENT' and 'STATISTIC_INITIALIZED_EVENT'. Added more specific events for 'WEIGTHED_OBSERVATION_ADDED_EVENT' and 'TIMESTAMPED_OBSERVATION_ADDED_EVENT'. averbraeck
Add Ensured that specific events about every statistics value can be fired by the EventBased statistics. This can be used to, e.g., create a graph of the observed (weighted) sample mean over time, or to update a specific statistics value on the screen. averbraeck
Fix Made a number of small changes to the calculation of the kurtosis and skewness. Separated excess kurtosis from regular kurtosis and added formulas for both. averbraeck
Update Added the term 'Population' to the calculation of the (biased) statistics that work on the basis of the full population of values. averbraeck

Release 1.04.12 – 2020-03-03

Type Changes By
Fix Renamed getWeightedSampleStdDev to getWeightedSampleStDev in EventBasedTimeStampWeightedTally and EventBasedTimestampWeightedTally. Added getSampleMean to TimestampTallyInterface. Added getWeightedMean to TimeStampTallyInterface. Added getWeightedStDev and getWeightedVariance to EventBasedTimestampWeightedTally and TimeStampWeightedTally. Fixed error in getWeightedSampleMean in WeightedTally. Augmented unit test to re-achieve 100% coverage. pknoppers
Update Removed some 'final' qualifiers for methods so they can be extended, e.g. in the dsol project. Made the various TallyInterfaces public so they can be used outside of the djutils-stats project. averbraeck

Release 1.04.11 – 2020-03-03

Type Changes By
Add The djutils-data project contains classes for sampling, storing and retrieving statistics data. For now, the main data type is a data table with column heading information and records. wjschakel
Add Separate packages to read/write the tables from the djutils-data project have been added for: JSON, XML, and csv/tsv. Specific (de)serializers have been added for primitive types, Number types, String, DoubleScalar types and FloatScalar types. averbraeck
Add static 'of' methods have been added to the Immutable collections, to have an easy instantiation method for the collections. Example: ImmutableMap map = ImmutableMap.of(1, "value1", 2, "value2"); These static methods have been added to: ImmutableList, ImmutableSet, ImmutableSortedSet, ImmutableMap, and ImmutableSortedMap. The maps can take up to 8 key-value parameters, whereas the sets and lists can take an unlimited number. averbraeck
Add The Tally now has methods to request the skewness and kurtosis of the provided data. pknoppers

Release 1.04.10 – 2020-02-29

Type Changes By
Add The djutils-stats project contains data summarizers such as the Counter, the Tally, and the WeighedTally. The original classes Counter, Tally and Persistent from dsol-core have been generalized and improved. pknoppers
Add A class called DistNormalTable has been added to calculate the cumulative values of the cumulative normal distribution. This replaces an older and less precise table from dsol-core. A project called djutils-generator has been added that contains a class to generate this table. pknoppers
Add For the new classes in djutils-stats, EventBased versions have been created that can receive the data via a notify() method. averbraeck
Add Because of the increasing number of sub-projects in djutils, a parent pom project has been added called djutils-pom. This project contains all version numbers, dependencies and definitions for the derived djutils projects. averbraeck

Release 1.04.09 – 2020-02-10

Type Changes By
Add Added the MultiKeyMap to djutils (comes from ots.core.gtu.NestedCache in a less generic form). MultiKeyMap implements a map with multiple keys. pknoppers
Add In order to prevent name clashes for the EventType, the full name of the class from which the EventType was defined (usually in the clinit method) is added to the equals() and hashCode() methods of the EventType. In that way, EventTypes that are the same will be unique, but EventTypes with just the same name but defined in different classes will be different. The reason why this is important is because remote events that use EventTypes can have multiple versions of the same public static final EventType: one the is defined in the client, and one that is defined via the network. These will have different addresses in memory but they share the same class and name info, so equals() will yield true. averbraeck

Release 1.04.08 – 2020-02-08

Type Changes By
Add Added a protected method to the EventProducer to return a safe copy of the list of (strong or weak) references to the registered listeners for a provided event type, rather than exposing the internal 'listener' object. averbraeck

Release 1.04.07 – 2020-02-07

Type Changes By
Update The EventProducer classes uses a helper class EventProducerImpl to do the real work, to avoid code duplication. averbraeck
Add The RemoteEventProducer class lacked implementation of the fireEvent and fireTimedEvent protected methods. These have been added and linked to the EventProducerImpl class to do the work. averbraeck
Add Added the Profile class to DJUTILS (moved it out of the ots-core project). Contains profiler code for methods or parts of methods. pknoppers
Add More extensive tests of the Try class and the URLResource class added. averbraeck

Release 1.04.06 – 2020-02-04

Type Changes By
Fix CliUtil in djutils-ext had problems with changing the default option values for subclasses, where the options were defined in a superclass. The key under which the overrides are stored in CliUtil have been changed to the actual class where the option was defined, both in storing and in retrieving the override. Tests in the TestCLI unit tests check the new behavior. averbraeck

Release 1.04.05 – 2020-01-24

Type Changes By
Add Added the three new DJUNITS units AngularAcceleration, AngularVelocity and Momentum to djutils-serialization. pknoppers
Fix The subSet, headSet and tailSet methods of ImmutableTreeSet would use the default comparator of the data type instead of inheriting the comparator of the underlying set. This bug was discovered while writing thorough unit tests. The documentation of (non-immutable) TreeSet is not clear about whether the subSet and friends should inherit the comparator, but the implementations in the java Collections framework do inherit the comparator. pknoppers

Release 1.04.04 – 2020-01-19

Type Changes By
Update In contrast with earlier implementations of the Event package, a sourceId is sent over the network rather than a pointer to the source itself. This has several advantages:
  1. The object extending the EventProducer does not have to be Serializable itself
  2. There is no risk that the entire EventProducer object gets serialized (including subclasses) and is sent over the network
  3. The receiver of an event does not get a pointer to the sending object
  4. The receiver of an event is still able to identify the sending object
averbraeck

Release 1.04.03 – 2020-01-17

Type Changes By
Add New version of generated code in TestCLIUnitConverters.java. New units in CliUnitConverters. pknoppers
Add The classes RMIUtils and RMIObject have been added to make it easier to work with remote objects. averbraeck
Update RemoteEventProducer and RemoteEventListener extend RMIObject to select the host and port of the RMI registry. Therewith the remote event handling has become a lot more flexible. averbraeck
Update EventProducer is not an abstract class anymore, as it does not contain any unimplemented methods and because it is used as an embedded class in the RemoteEventProducer. averbraeck
Update Demanded that the fields of the Event and TimedEvent are serializable, so they can be sent over the network or stored on disk by serialization. averbraeck

Release 1.04.02 – 2020-01-05

Type Changes By
Fix Removed various redundant synchronized blocks from EventProducer.java (method was already synchronized). pknoppers
Update More complete nullPointer checks in EventProducer.java; Javadoc cleanup in EventProducer.java pknoppers
Update Removed the ConditionalLogger from the CategoryLogger and transfered the when(...) functions to both the static Logger and the DelegateLogger class. pknoppers
Fix DelegateLogger did not consider the LogLevel correctly in deciding whether a message needed to be logged. This has been repaired. Every logging method now first checks whether the indicated log level is included in the log levels that need to be shown. pknoppers
Update CategoryLogger now has methods for adding and removing Writers, and listing which writers are available. pknoppers
Update Expanded unit tests for CategoryLogger and EventProducer. pknoppers
Fix The explicit setting of log level and message formatter on individual writers in the CategoryLogger now works as intended. The setAllLogMessageFormat and setAllLogLevel methods in the CategoryWriter reset the values for each individual Writer, as well as the global standard for next writers to be registered. averbraeck
Fix ClassUtil had a method called changeAnnotationValue to change the value of an annotation field value. This method made changes to an internal data structure that is not intended to be altered. From Java-13 onwards a warning appears in the console for manipulating this data structure. Therefore the method has been removed. averbraeck
Fix The CliUtil class in djutils-ext used the changeAnnotationValue method from ClassUtil. Instead of changing the internal data structure of the annotations, an override map is now used to store the changes. This also ensures that the code structure is reentrant: no structural changes have been made to the appearance of the loaded code (which the changeAnnotationValue method did in a sense). averbraeck
Add Methods to read the (overridden or original) program version, program name and program description in @Command have been added to CliUtil. averbraeck

Release 1.04.01 – 2019-12-31

Type Changes By
Fix The EventProducer had a non-transient semaphore object, rendering it non-serializable. The lock has been replaced by a lock on the listeners object instead. The lock has been applied more consistently in the code to avoid ConcurrentModificationExceptions. averbraeck
Update All Dumper classes in DecoderDumper now use UTF-8 to dump the data, to ensure reproducibility of the code across platforms. averbraeck

Release 1.04.00 – 2019-12-30

Type Changes By
Add The event package for pub/sub, originally the dsol-event package, has been added to DJUTILS and will be removed from the next version of DSOL. averbraeck
Fix Many open issues in the DSOL event package has been fixed in the port to DJUTILS. Examples are adding equals and hashCode methods for the TimedEvent, better writeObject and readObject methods for the EventListenerMap, repair of the failure to sometimes remove an EventListener from the EventProducer, etc. averbraeck
Add Almost full unit test coverage has been added to the djunits event package. averbraeck
Update The event producing collections in the event.util package now only fire events when additions or removals actually took place, not just when the add / remove / put methods are called. averbraeck
Add The EventProducingCollection, EventProducingList, EventProducingMap and EventProducingSet in the event.util package also fire events when content in the collections has changed. In that case, a CHANGE_EVENT is fired. averbraeck
Add The events of the event producing collections in the event.util package now have events that carry a payload. The payload is the new number of entries in the collection for the ADD_EVENT and REMOVE_EVENT. The event's content is equal to null for the CHANGE_EVENT. averbraeck
Update Since the boolean for strong versus weak references in the EventProducer was always unclear (does true mean strong or weak?), it has been replaced by an enum. averbraeck
Update Several of the underlying data structures of the djutils package have been changed from a HashMap to a LinkedHashMap and from a HashSet to a LinkedHashSet to guarantee reproducibility of results. As an exception the ImmutableHashSet and ImmutableHashMap are still backed by unlinked variants, as they explicitly are not reproducible. averbraeck
Update DJUNITS updated to 4.01.03. averbraeck
Add Extensive unit test coverage has been added for the ClassUtil class. Several errors have been repaired, and the signature of a number of methods has changed slightly (getAllMethods returns a List rather than an array, for example). averbraeck

Release 1.03.02 – 2019-10-31

Type Changes By
Fix Ensured that "package-list" exists in apidocs for backward compatibility of javadoc linking. averbraeck
Fix Replaced FindBugs (which already had a problem supporting Java 8) with SpotBugs (supporting later Java versions as well). averbraeck
Update DJUNITS updated to 4.01.01. averbraeck
Update Included jakarta.annotation-api to be compatible with Java 11+. averbraeck
Fix tt-tag in javadoc replaced by code-tag to be compatible with HTML-5 and Java-11+. averbraeck
Fix javadoc source version 8 added to pom-file to be compatible with Java-11+. averbraeck

Release 1.03.01 – 2019-10-25

Type Changes By
Update DJUNITS updated to 4.01.00. averbraeck

Release 1.03.00 – 2019-10-19

Type Changes By
Update CliUnitConverters in djutils-ext have been regenerated. A @Generated tag has been added to each generated method. averbraeck

Release 1.03.00 – 2019-10-19

Type Changes By
Remove 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). averbraeck
Update DJUNITS has been updated to version 4.00.04, bringing major changes to the way vectors and matrices are stored and processed. averbraeck
Remove 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. averbraeck
Add 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. averbraeck
Update 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. averbraeck

Release 1.02.03 – 2019-09-14

Type Changes By
Add 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. averbraeck
Add Added unit tests for djunits converters for the CLI package. Dimensionless can also parse just a number. averbraeck
Fix 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. averbraeck
Fix Repaired the code for the ClassFileDescriptor for paths with spaces. averbraeck
Add Added a unit test to see if folders with spaces can be found for the ClassFileDescriptor. averbraeck
Fix Repaired a bug for folders with spaces for the ClassFileDescriptor. averbraeck
Add Added unit tests for ClassUtil. averbraeck
Fix 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. averbraeck
Update 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. averbraeck

Release 1.02.02 – 2019-08-16

Type Changes By
Add ClassUtil has resolveAnnotation methods. averbraeck
Add CliUtil also resolved @Command and @Option annotations in a superclass. averbraeck

Release 1.02.01 – 2019-08-13

Type Changes By
Add ClassUtil got extra methods to retrieve information about a class file, e.g. the last changed date. averbraeck
Fix CliIUtil has been renamed to the correct CliUtil. averbraeck
Add Several helper methods have been added to CliUtil to change some of the @Options and @Command settings. averbraeck

Release 1.02.00 – 2019-08-11

Type Changes By
Add A project for more utility classes that require more dependencies called djutils-ext has been added. averbraeck
Add Classes for Command Line Interface parsing have been added. The classes are based on picocli. averbraeck
Add 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. averbraeck

Release 1.01.03 – 2019-07-04

Type Changes By
Fix The byte[][] serialization destroyed the underlying data -- this has been repaired. averbraeck
Update 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. averbraeck

Release 1.01.02 – 2019-07-02

Type Changes By
Fix The ImmutableLinkedHashMap.values() was overriding a non-reproducible values() method from the ImmutableAbstractMap. The ImmutableLinkedHashMap now has its own values() method. averbraeck

Release 1.01.01 – 2019-07-01

Type Changes By
Fix The ImmutableLinkedHashMap returned a non-linked HashSet as EntrySet and as KeySet. This has been repaired. averbraeck
Fix 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. averbraeck
Fix 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. averbraeck
Fix The byte array in djutils-serialization has been repaired. The underlying byte array was nulled during serialization. pknoppers
Add ObjectArraySerializer and ObjectMatrixSerializer added. pknoppers
Add SerialDataDumper added to provide insight into structure of the serialized data. pknoppers

Release 1.01.00 – 2019-06-21

Type Changes By
Add The djunits-serialization project has been added to serialize and deserialize different classes including djunits scalars, vectors and matrices in a strongly typed manner. pknoppers

Release 1.00.06 – 2019-05-10

Type Changes By
Add EntrySets have been added to the ImmutableMap classes. averbraeck
Update The keySet(), values() and entrySet() methods cache the results as these are often called. averbraeck

Release 1.00.05 – 2019-02-26

Type Changes By
Add 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. averbraeck

Release 1.00.04 – 2019-01-29

Type Changes By
Remove Cat class in the logger package belongs in dsol, not in djutils, so removed it. averbraeck

Release 1.00.03 – 2018-12-18

Type Changes By
Add The 'decoderdumper' package has been added to the djutils project, extending and replacing HexDump. pknoppers

Release 1.00.02 – 2019-01-17

Type Changes By
Add The CategoryLogger has been extended with a 'when(condition)' static method. A call like CategoryLogger.when(ok).always().info("Ok"); is now possible. averbraeck
Add The HexDump class has been added to djutils to create hexadecimal dumps of data. pknoppers
Update Copyright message changed to 2019. averbraeck

Release 1.00.01 – 2018-12-15

Type Changes By
Add The 'means' package has been added to the djutils project. pknoppers

Release 1.00.00 – 2018-11-17

Type Changes By
Add 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. averbraeck