Eventsourcing for Java v0.4.0 Release Notes
Release Date: 2016-07-15 // almost 8 years ago-
Backwards-incompatible changes
- 🚚 [Core]
Entity
,Command
andEvent
are now interfaces, the classes were moved to toStandardEntity
,StandardCommand
andStandardEvent
(#67) - [Core]
Model#id()
has been renamed toModel#getId()
for consistency of the interface (#114) - [Core] Entity layouts are now constructor + getters driven, allowing for immutable entities (#83, #87)
- [Layout]
new Layout<>(klass)
has been replaced withLayout.forClass(klass)
(#83) - [Core]
Command<Result>
signature has been changed toCommand<State,Result>
,Command#events
return type has changed toEventStream
to hold the state andCommand#onCompletion
has been renamed to#result
(#77, #84) - [Core] New index definition syntax via
SimpleIndex
andMultiValue
index (#133) - 🚚 [Core] Most of repository implementation related code was moved to
com.eventsourcing.repository
(#64) - [Core]
new StandardRepository()
now will use localhost NTP server (#76, #66) - [Core] Renamed
MemoryLockProvider
toLocalLockProvider
(#69, #70) - 🚚 [Core]
Journal#commandEventsIterator
has been removed (#69) - 🚚 [Core]
MemoryJournal
has been moved toeventsourcing-inmem
(#69) - [Layout] Layout serialization/deserialization framework can be extended to other byte-oriented encodings (#74)
🛠 Bugfixes
- [Core] Plugging in indices did not work (#94)
- [Core] Entity static initialization can no longer hang the current thread (#65)
- [H2] MVStoreJournal#journal will no longer into an infinite recursion on
👻 having an exception during
CommandTerminatedExceptionally
journalling (#82) - [Core] OSGi
StandardRepository#activate()
now waits until repository is started (#92) - [Core] byte[] equality did not work in MemoryIndexEngine (#100)
- ⚡️ [HLC] Fixed initialization of HybridTimestamp and updating with another HybridTimestamp (#112)
🔋 Features
- [CEP] Migrated es4j-cep into the project to maintain version parity (#60)
- [Migrations] Implemented 8/EMT and
LayoutMigration
to standardize migrations (#69) - [Core]
EventCausalityEstablished
event-command causality indexing has been implemented (#69) - 👍 [Core] Better support for Kotlin in
Repository
(#72) - [Queries] Composable model collection queries (#123)
- ✅ [Queries]
LatestAssociatedEntryQuery
query has been added (#115) - ✅ [Queries]
IsLatestEntity
query has been added (#117) - [Queries]
ModelQueries.lookup
helper for looking up an entity by ID has been added (#116) - [PostgreSQL] Implemented PostgreSQL journal (#79)
- [PostgreSQL] Implemented PostgreSQL equality and navigable indices (#94, #104)
- 🔒 [PostgreSQL] Implemented PostgreSQL-based lock provider
PostgreSQLLockProvider
(#98) - [Core] Expose CascadingIndexEngine index decisions through JMX (#94)
- 👍 [Kotlin] Add basic support for Kotlin (#88, #99)
Specification compliance
- [Core] Layout and Property are now 7/LDL compliant (#61)
- [Repository]
AbstractRepository
now adheres to 8/EMT and recordsEntityLayoutIntroduced
(#91) - 👻 [Repository]
AbstractRepository
now adheres to the exception reporting specified in 9/RIG (#102)
⬆️ Upgrades
- cqengine 2.7.0 (#135)
Misc
- Source and javadoc jars are now included into distribution (#78)
- 🚚 [Core]