Posted on March 03, 2017
This version is a finalization of the framework API and most of the core features, that are scheduled for 1.0 release.
It also includes a lot of API polishing. Some of the changes are breaking, some are not.
The inner code structure (packaging, visibility of classes etc) has been modified significantly in order to follow the Onion architecture and become easier for understanding.
Below is a list of the most valuable changes and the references to the corresponding pull requests. More feature details are available upon the PR link.
- Multitenancy support. Please see
org.spine3.server.tenantpackage for the details.
ActorRequestFactoryis introduced as a single client-side utility to produce Commands, Queries and Topics: #431.
- IDs now belong to
Failure, not to their contexts: #450, #452.
- An ability to define the custom
Commandattributes is introduced to the public API (#448). Also,
Commandnow has the system-only properties hidden from the public access (#455).
ActorContextis now a unified context, reflecting the properties of an environment, where a
Topicinstance is created.
Commandcreation is available via
ValidatingBuilders. They are automatically generated for each
Commandand serve to validate the field values while building
Standinput parameters are now validated according to the Protobuf annotations set for the requests: #437.
- It is now possible to
@Subscribeto Failures: #362, #299.
FailureThrowableAPI simplification: #454.
- Entity lifecycle:
- Improvements to entity versioning: #346.
AggregateRootAPI improvements: #347.
- Changes to
Commanddispatchers and handlers: #354, #358.
- Simpler routing of commands for Process Managers: #313.
StorageFactoryis made more configurable for different environments. In particular, it is now easier to provide different Storage implementations for testing and production deployment cases: #289, #290.
It is now possible to store some of Entity fields separately to allow the further efficient querying: #398.
EventStorageare now Repositories, based upon
RecordStorage: #394, #395.
StringifierRegistryis introduced to organize and simplify string-to-object and object-to-string conversion for Entity state objects and other user-defined types: #389, #382, #383, #378, #423, #436.
- Improvements to Date/Time API: #387.
Lots of less valuable changes were made as well, including performance improvements, extended configurability of the framework building blocks, more helper utilities and object factories for testing.
- gRPC 1.1.2 (#341).
- Gradle 3.5.
New test dependencies: