- [chg] Java 21 support.
- [chg] Update Seed version to 3.15.0.
- [new] Support qualifiers for repositories and factories in FluentAssembler DSL.
- [new] Support
@identitygenerators in composite embedded identifiers.
- [new] Shortcut to combine two specifications in the specification builder DSL.
- [fix] Accept Guice-specific
@Namedannotation as qualifier, in addition to all JSR-330 qualifiers.
- [new] FluentAssembler now has a String based argument on the DSL chain to simplify the use of
NamedAssemblers - [new] DomainEventHandler has a priority field to allow fine-grained control over execution order
- [new] Events can now be annotated with
@PriorizedEvent, that allows an instance ofDomainEventInterceptorto take control of event handlers that are launched (By default,PriorityEventHandlerInterceptoris being used if not stated explicitly) - [chg]
BaseAssemblerandBaseTupleAssemblernow has a default implementation that simplifies the creation of one way assemblers - [chg] Built and tested with OpenJDK 11 (target is still 1.8).
- [chg] Updated Seed version to 3.9.1
- [fix] Fix potential resource leak in
DataManagerImpl.
- [new] Java 9 compatibility.
- [new] Add sorting support to
BaseInMemoryRepository. - [chg] Make
SizePicker(specialization for page-based pagination) extendLimitPicker. - [fix]
ComparableSpecificationand its descendant were not properly evaluating the comparison result.
- [new] Paginator can now paginate streams and iterables of arbitrary objects (not only aggregates through repositories).
- [chg] The class configuration
defaultRepositoryanddefaultAssemblerare now real defaults and don't clash with code-based bindings anymore.
- [new] Add
business-migratemodule to help migration from 3.x based projects.
- [new] A default implementation of
getId()has been added inBaseEntitywhich searches for a field named "id" or annotated with@Identity. - [new] DDD specifications have been added.
- [new] A specification builder allows to create DDD specifications with a fluent DSL.
- [new] Add SPI and base infrastructure for specification translation.
- [new] New methods in the
Repositoryinterface allow to work on multiple aggregates with specifications. - [new] Business framework now takes advantage of Java 8 features (notably streams and optional).
- [new]
FluentAssemblercan now assemble and merge streams of objects among other useful types (arrays, lists, sets, slices, pages and arbitrary collections). - [new] A pagination DSL injectable through the
Paginatorinterface has been added. - [new] Add an in-memory default implementation of repository (useful for testing or other specific use-cases).
- [new] Annotating an implementation with
@Overridingwill allow it to override an existing similar implementation. - [new] It is now possible to specify the qualifier of the identity generator directly on the identity field.
- [chg] Extracted ModelMapper automatic assemblers to a separate add-on.
- [brk] The
@MatchingFactoryParameterannotation has been renamed to@FactoryArgument. - [brk] The
@MatchingEntityIdannotation has been renamed to@AggregateId. - [brk] The
typeIndex()method of@FactoryArgumentand@AggregateIdannotations has been renamed toaggregateIndex(). - [brk] The
AssemblermethodsassembleDtoFromAggregate(),assembleDtoFromAggregate()andmergeAggregateWithDto()have been renamed tocreateDtoFromAggregate(),mergeAggregateIntoDto()andmergeDtoIntoAggregate()respectively. - [brk] The
BaseAssemblerandBaseTupleAssemblernow follow theAssemblerinterface (no moredo*()methods). - [brk] The
getEntityId()method ofEntityhas been renamed togetId(). - [brk] The
Repositoryinterface has been refactored as a collection-like interface. - [brk] The
FactoryandGenericFactoryinterfaces are merged into a uniqueFactoryinterface. - [brk] The
DomainObjectinterface has been removed. - [brk] The old pagination API has been removed.
- [brk] Intermediate interfaces of
FluentAssemblerDSL have been renamed. - [brk] Generic events have been replaced by domain-only events.
- [brk] The interface
IdentityHandlerhas been renamed toIdentityGeneratorto better reflect its responsibility. - [brk] The
sourceparameter from@Identityannotation has been removed. This is better done in class configuration. - [brk] The
handlerparameter of the@Identityannotation has been renamedgenerator.
- [new] It is now possible to assemble a list of DTOs to aggregates coming both from repository and factory.
- [chg] When assembling a DTO list, aggregates coming both from repository and factory are allowed by default.
- [fix] Fix transitive dependency to poms SNAPSHOT.
- [brk]
DomainEventclass is renamedBaseDomainEventand implements a new interface namedDomainEvent.
- [brk] Update to SeedStack 16.11 new configuration system.
- [brk] The class configuration property
identity.handler-qualifierbecomesidentityHandler. - [brk] The class configuration property
default-repositorybecomesdefaultRepository. - [brk] The qualifier for
SimpleUUIDHandleridentity handler is renamed fromsimple-UUIDtosimpleUUID. - [brk] The qualifier for
InMemorySequenceHandleridentity handler is renamed frominmemory-sequencetoinMemorySequence. - [chg] Base classes containing implementation have been moved from the
specsmodule to thecoremodule.
- [fix] Delay call of
configure*()methods inModelMapperAssemblerto allow field and method injection to occur before.
- [fix] Also bind event handler classes which ancestors implement the
EventHandlerinterface
- [fix] Prevent binding of abstract classes and interfaces extending/implementing
EventHandler
- [chg] Updated the signature of the
handle()method ofIdentityHandler. - [fix] Avoid sending domain events multiple times when multiple handlers are registered.
- [new] Add methods
exists(),count()andclear()onRepository - [brk] The
Comparableinterface have been removed fromBaseValueObject - [brk] Methods
do*()onBaseRepositoryhave been removed. Directly implement their matching method onRepository. - [chg] Remove
finalqualifier onequals()andhashCode()methods ofBaseValueObjectandBaseEntity. - [chg] Changed the default
toString()ofBaseValueObjectandBaseEntitywith more concise output. - [chg] The
business-webmodule has been merged intobusiness-coremodule (the dependency can be safely removed from your poms). - [chg]
serialVersionUIDof event classes (org.seedstack.business.domain.eventspackage) has been changed to 1L. - [chg] Default repositories are now also created for parent classes of aggregate roots
- [new]
BaseRangeFinderis a persistence-agnostic base class for paginated finders. It notably replacesBaseJpaRangeFinderfrom the JPA add-on.
- [brk] Remove
org.seedstack.business.api.BaseClassSpecifications. Useorg.seedstack.seed.core.utils.BaseClassSpecificationsinstead. - [brk]
business-testmodule is merged intobusiness-coremodule. - [brk]
business-jpamodule is merged intojpaaddon.
- [nfo] Initial Open-Source version.