Posted on March 08, 2020

Spine 1.5.0

Base

This release includes numerous API updates and performance improvements.

The most noticeable are listed below.

  • Time.currentTime() now returns the time with microsecond precision. The values are emulated, increasing for each consequent call (#504, #512).
  • (constraint_for) is now supported by the Spine compiler (#505).
  • Support for the new Column API has been added to the Spine compiler (#508).
  • Logging API has been extended (#513).

For more details please navigate to the list of the closed pull requests and their descriptions.

Core Java

This major update of the library brings a number of new features and performance improvements.

  • Projections now support an automated run-time catch-up (#1221).
  • The client API was made less error-prone by enforcing the strong typing for the columns and properties of Entities and Events. The list of the model fields is generated as Java code by the Spine compiler at build-time (#1229, #1246).
  • A data migration API is now available for ProcessManagers and Projections. It automates the process of updating the existing data upon the changes in the domain model (#1241).
  • The logging records made from within the Entity handlers now print the full signature of the called method (#1242).
  • It is now possible to specify an actor when composing a test scenario with BlackBoxBoundedContext API (#1242).
  • CommandBus is no longer responsible for validating the first field of the transmitted Commands; instead, this is a job of the Repository for the target Entity (#1245).

The API of InboxMessage has been changed so that any of the existing InboxMessages become incompatible (#1239). Please make sure to deliver the messages from all of your production Inboxes prior to updating to the new version.

Also, a number of minor improvements and issues were addressed. Please see the list of closed pull requests for more details.


Bootstrap, Web, JDBC Storage, Google Cloud Java, Time, Money libraries’ artifacts were published as compatible with the Spine framework in version 1.5.0.