polygene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Paul Merlin <p...@nosphere.org>
Subject Re: Design flaw in EntityStore SPI?
Date Fri, 21 Oct 2016 17:07:06 GMT
Makes sense to me

Niclas Hedhman a écrit :
> Hi again,
> While looking into the feasibility of implementing a Repository EntityStore
> I realized that the current SPI seems flawed.
>
> The TYPE of an entity is stored with the entity and not the entity type
> that is being processed by the outside world. And then type lookup is used
> via the current Module associated to the current UnitOfWork.
>
> It seems more logical to me that an EnttyDscriptor is passed down to the
> EntityStore, so that the type doesn't need to be looked up. For ES, this
> seems to work well, although this doesn't solve a similar issue in the
> Query system.
>
> I would like to change the EntityStoreSPI from
>
>
> public interface EntityStoreSPI
> {
>     EntityState newEntityState( EntityStoreUnitOfWork unitOfWork,
>                                 EntityReference identity,
>                                 EntityDescriptor entityDescriptor
>     );
>
>     EntityState entityStateOf( EntityStoreUnitOfWork unitOfWork,
>                                ModuleDescriptor module,
>                                EntityReference identity );
>
>     String versionOf( EntityStoreUnitOfWork unitOfWork,
>                       EntityReference identity );
>
>     StateCommitter applyChanges( EntityStoreUnitOfWork unitOfWork,
>                                  Iterable<EntityState> state );
> }
>
> to
>
> public interface EntityStoreSPI
> {
>     EntityState newEntityState( EntityStoreUnitOfWork unitOfWork,
>                                 EntityReference identity,
>                                 EntityDescriptor entityDescriptor
>     );
>
>     EntityState entityStateOf( EntityStoreUnitOfWork unitOfWork,
>                                EntityReference identity,
>                                EntityDescriptor entityDescriptor );
>
>     String versionOf( EntityStoreUnitOfWork unitOfWork,
>                       EntityReference identity,
>                       EntityDescriptor entityDescriptor );
>
>     StateCommitter applyChanges( EntityStoreUnitOfWork unitOfWork,
>                                  Iterable<EntityState> state );
> }
>
>
> which I think can handle the requirements of Repository ES more elegantly.
>
> WDYT?
>
> Cheers

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message