Repository navigation
Release v19.52.0
Summary
Every Chronicle artifact can now be registered explicitly in ChronicleOptions.ExplicitArtifacts, without attributes or marker interfaces. Contract assemblies no longer need a Chronicle reference, and existing markers keep working with the same identifiers. See Explicit artifacts.
Added
RegisterEventType<T>()andRegisterEventType(Type)register event types, with optionalWithId,Generation,Public,Private,ForEventStoreandPublishTosettings. Defaults match the identifiers markers produce today. (#4732)RegisterReactor,RegisterReducer,RegisterConstraint,RegisterEventSourceandRegisterMigrationregister plain classes withoutIReactor,IReducerFor<T>,IConstraint,IEventSourceor migration markers. A reducer's read model is inferred from its methods, and a constraint only needsDefine(IConstraintBuilder). (#4732)- A plain migration class with typed
UpcastandDowncastmethods can be registered explicitly, andEventTypeMigration<TUpgrade, TPrevious>gains a constructor that takes the store'sIEventTypes, so migrations between unmarked event generations resolve their identifiers from the owning store. (#4732) IReactorsandIReducersgainType-basedRegister,GetStateForandReplayoperations, plus generic extension methods for plain observer classes. (#4732)IJsonSchemaGeneratorgains overloads that take the store'sIEventTypes, so compensation schemas resolve explicitly registered target events. Existing generators keep their current output. (#4732)ReadModelScenario,ReactorScenarioandEventScenariohonor explicitly registered artifacts, andReactorScenarioaccepts plain reactor classes. (#4732)- Analyzers CHR0001, CHR0002, CHR0003, CHR0005 and CHR0007 accept event types registered through
RegisterEventTypein the same compilation. (#4732)
Changed
- Conflicting explicit registrations, such as two different identifiers or generations for the same type, or two types sharing an identifier and generation, now fail at startup with
ConflictingArtifactDeclarationorConflictingArtifactKindinstead of registering silently. (#4732) - A store registers nothing with the kernel until all of its artifacts have been prepared successfully. A preparation failure is reported through the registration outcome and is not retried as a connection failure. (#4732)