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 -- Niclas Hedhman, Software Developer http://zest.apache.org - New Energy for Java