Eventsourcing for Java v0.4.0 Release Notes

Release Date: 2016-07-15 // almost 8 years ago
  • Backwards-incompatible changes

    • 🚚 [Core] Entity, Command and Event are now interfaces, the classes were moved to to StandardEntity, StandardCommand and StandardEvent (#67)
    • [Core] Model#id() has been renamed to Model#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 with Layout.forClass(klass) (#83)
    • [Core] Command<Result> signature has been changed to Command<State,Result>, Command#events return type has changed to EventStream to hold the state and Command#onCompletion has been renamed to #result (#77, #84)
    • [Core] New index definition syntax via SimpleIndex and MultiValue 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 to LocalLockProvider (#69, #70)
    • 🚚 [Core] Journal#commandEventsIterator has been removed (#69)
    • 🚚 [Core] MemoryJournal has been moved to eventsourcing-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 records EntityLayoutIntroduced (#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)